#
#    Copyright (c) 2020 Project CHIP Authors
#    Copyright (c) 2016-2017 Nest Labs, Inc.
#
#    Licensed under the Apache License, Version 2.0 (the "License");
#    you may not use this file except in compliance with the License.
#    You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
#

#
#   Description:
#       This file is the GNU automake header for the CHIP System Layer library sources.
#       These sources are shared by other SDK makefiles and consequently must be anchored
#       relative to the top build directory.
#

CHIP_BUILD_SYSTEM_LAYER_SOURCE_FILES                  = \
    @top_builddir@/src/system/SystemClock.cpp           \
    @top_builddir@/src/system/SystemError.cpp           \
    @top_builddir@/src/system/SystemLayer.cpp           \
    @top_builddir@/src/system/SystemMutex.cpp           \
    @top_builddir@/src/system/SystemObject.cpp          \
    @top_builddir@/src/system/SystemWakeEvent.cpp       \
    @top_builddir@/src/system/SystemTimer.cpp           \
    @top_builddir@/src/system/SystemPacketBuffer.cpp    \
    @top_builddir@/src/system/SystemStats.cpp           \
    $(NULL)

if CHIP_WITH_NLFAULTINJECTION
CHIP_BUILD_SYSTEM_LAYER_SOURCE_FILES += @top_builddir@/src/system/SystemFaultInjection.cpp
endif # CHIP_WITH_NLFAULTINJECTION

CHIP_BUILD_SYSTEM_LAYER_HEADER_FILES                  = \
    @top_builddir@/src/system/SystemAlignSize.h         \
    @top_builddir@/src/system/SystemClock.h             \
    @top_builddir@/src/system/SystemConfig.h            \
    @top_builddir@/src/system/SystemError.h             \
    @top_builddir@/src/system/SystemEvent.h             \
    @top_builddir@/src/system/SystemFaultInjection.h    \
    @top_builddir@/src/system/SystemStats.h             \
    @top_builddir@/src/system/SystemLayer.h             \
    @top_builddir@/src/system/SystemMutex.h             \
    @top_builddir@/src/system/SystemObject.h            \
    @top_builddir@/src/system/SystemWakeEvent.h         \
    @top_builddir@/src/system/SystemTimer.h             \
    @top_builddir@/src/system/SystemPacketBuffer.h      \
    @top_builddir@/src/system/TimeSource.h              \
    $(NULL)
