#
#    Copyright (c) 2014-2017 Nest Labs, Inc.
#    All rights reserved.
#
#    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 template for the Nest Weave
#      test applications
#

include $(abs_top_nlbuild_autotools_dir)/automake/pre.am

LOG_DRIVER=$(abs_srcdir)/weave-parallel-test-engine

#
# Local headers to build against and distribute but not to install
# since they are not part of the Weave SDK public API.
#
noinst_HEADERS                                 = \
    CASEOptions.h                                \
    KeyExportOptions.h                           \
    ToolCommonOptions.h                          \
    TAKEOptions.h                                \
    DeviceDescOptions.h                          \
    DMTestClient.h                               \
    MockAlarmOriginator.h                        \
    MockAlarmRemote.h                            \
    MockDCLPServer.h                             \
    MockDCServer.h                               \
    MockDDServer.h                               \
    MockDMPublisher.h                            \
    MockExternalEvents.h                         \
    MockFPServer.h                               \
    MockNPServer.h                               \
    MockOpActions.h                              \
    MockPairingServer.h                          \
    MockSinkTraits.h                             \
    MockSPServer.h                               \
    MockSDServer.h                               \
    MockSWUServer.h                              \
    MockTimeSyncUtil.h                           \
    MockTimeSyncServer.h                         \
    MockTimeSyncClient.h                         \
    MockTimeSyncCoordinator.h                    \
    MockTokenPairingServer.h                     \
    MockWdmViewServer.h                          \
    MockWdmViewClient.h                          \
    MockWdmTestVerifier.h                        \
    MockWdmSubscriptionInitiator.h               \
    MockWdmSubscriptionResponder.h               \
    TestGroupKeyStore.h                          \
    TestDRBG.h                                   \
    TestPersistedStorageImplementation.h         \
    TestEventLoggingSchemaExamples.h             \
    TestProfile.h                                \
    TestWRMP.h                                   \
    TestWeaveTunnel.h                            \
    ToolCommon.h                                 \
    TestWeaveCertData.h                          \
    mock-tunnel-service.h                        \
    nlweavebdxclient.h                           \
    nlweavebdxclient-development.h               \
    nlweavebdxserver-development.h               \
    nlweaveswuclient.h                           \
    weave-bdx-common-development.h               \
    MockIAServer.h                               \
    $(NULL)

if CONFIG_NETWORK_LAYER_BLE

noinst_HEADERS                                += \
    MockBleApplicationDelegate.h                 \
    MockBlePlatformDelegate.h                    \
    $(NULL)

endif # CONFIG_NETWORK_LAYER_BLE

#
# Other files we do want to distribute with the Weave source SDK.
#
# XXX - Should these be sanitized out for external distribution? If so,
#       which?
#
EXTRA_DIST                                     =	\
    AndroidTest.cpp					\
    ComplexMockTrait.proto				\
    SimpleMockTrait.proto				\
    TestDNS.cpp						\
    TestWeaveDeviceMangerJNI				\
    connect-BR-Svc-ns.sh				\
    happy-service-tests					\
    weave-parallel-test-engine				\
    happy-tests						\
    remove-weave-devs.sh				\
    setup-weave-devs.sh					\
    test-weave-device-descriptor-encode.sh		\
    nlweavebdxclient.cpp				\
    nlweavebdxclient-development.cpp			\
    nlweavebdxserver-development.cpp			\
    nlweavebdxserver.h					\
    remove-tunnel-intf.sh				\
    setup-network-namespaces.sh				\
    setup-tunnel-intf.sh				\
    test-bdx-development.sh				\
    test-file-development.txt				\
    weave-bdx-client.cpp				\
    $(NULL)

if WEAVE_BUILD_TESTS
# A non-installed common library that may be used for all test
# applications in this directory.
#
# This will NOT be part of the externally-consumable binary SDK.

noinst_LIBRARIES                               = \
    libWeaveCryptoTests.a                        \
    libWeaveTestCommon.a                         \
    libWeaveTestPlatform.a                       \
    libWeaveTestGroupKeyStore.a                  \
    $(NULL)

# C preprocessor option flags that will apply to all compiled objects in this
# makefile.

AM_CPPFLAGS                                    = \
    -I$(top_srcdir)/src/include                  \
    $(LWIP_CPPFLAGS)                             \
    $(SOCKETS_CPPFLAGS)                          \
    $(PTHREAD_CFLAGS)                            \
    $(NULL)

libWeaveCryptoTests_a_SOURCES                  = \
    crypto-tests/WeaveCryptoAESTests.cpp         \
    crypto-tests/WeaveCryptoHKDFTests.cpp        \
    crypto-tests/WeaveCryptoHMACTests.cpp        \
    crypto-tests/WeaveCryptoSHATests.cpp         \
    $(NULL)

libWeaveTestCommon_a_SOURCES                   = \
    CASEOptions.cpp                              \
    KeyExportOptions.cpp                         \
    TAKEOptions.cpp                              \
    DeviceDescOptions.cpp                        \
    Certs.cpp                                    \
    TestGroupKeyStore.cpp                        \
    ToolCommon.cpp                               \
    ToolCommonOptions.cpp                        \
    $(NULL)

libWeaveTestPlatform_a_SOURCES                 = \
    TestPlatformTime.cpp                         \
    TestPersistedStorageImplementation.cpp       \
    $(NULL)

libWeaveTestGroupKeyStore_a_SOURCES            = \
    TestGroupKeyStore.cpp                        \
    $(NULL)

WEAVE_LDADD                                    = \
    $(top_builddir)/src/lib/libWeave.a           \
    $(NULL)

MOCKBLE_LDADD                                  = \
    $(NULL)

if CONFIG_NETWORK_LAYER_BLE

if CONFIG_BLE_PLATFORM_BLUEZ

AM_CPPFLAGS                                   += \
    -I$(top_srcdir)/src/platform/ble/bluez       \
    $(NULL)

libMockBlePlatformDelegate_a_DEPENDENCIES      = \
    $(top_builddir)/src/platform/ble/bluez/libBluezBleDelegates.a \
    $(NULL)

MOCKBLE_LDADD                                 += \
    libMockBlePlatformDelegate.a                 \
    $(top_builddir)/src/platform/ble/bluez/libBluezBleDelegates.a \
    $(BLUEZ_BUILD_DIRECTORY)/gdbus/libgdbus-internal.la \
    @GLIB_LIBS@ @DBUS_LIBS@ -ldl -lrt      \
    $(NULL)

else

libMockBleApplicationDelegate_a_SOURCES	       = \
    MockBleApplicationDelegate.cpp               \
    $(NULL)

MOCKBLE_LDADD                                 += \
    libMockBlePlatformDelegate.a                 \
    libMockBleApplicationDelegate.a              \
    $(NULL)

endif #CONFIG_BLE_PLATFORM_BLUEZ

noinst_LIBRARIES                              += \
    libMockBlePlatformDelegate.a                 \
    libMockBleApplicationDelegate.a              \
    $(NULL)

TEST_PLATFORM_LDADD                            = \
    libWeaveTestPlatform.a                       \
    $(NULL)

libMockBlePlatformDelegate_a_SOURCES           = \
    MockBlePlatformDelegate.cpp                  \
    $(NULL)

endif # CONFIG_NETWORK_LAYER_BLE

COMMON_LDADD                                   = \
    $(COMMON_LDFLAGS)                            \
    $(WEAVE_LDADD)                               \
    $(MOCKBLE_LDADD)                             \
    $(LWIP_LDFLAGS) $(LWIP_LIBS)                 \
    $(SOCKETS_LDFLAGS) $(SOCKETS_LIBS)           \
    $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)            \
    $(NULL)

# Test applications that should be installed when the 'install' target is run.
#
# These will be part of the externally-consumable binary SDK.
#
# These need to go in libexec since they need to be "trampolined"
# through the 'weave-run' script due to runtime dependencies on
# DLLs/DSOs that the runtime linker / loader will need to resolve when
# they invoked.

libexec_PROGRAMS                               = \
    $(NULL)

if WEAVE_BUILD_DEVICE_MANAGER
libexec_PROGRAMS                              += \
    mock-device                                  \
    $(NULL)
endif

libexec_PROGRAMS                              += \
    weave-device-descriptor                      \
    weave-key-export                             \
    weave-ping                                   \
    weave-heartbeat                              \
    $(NULL)

# Test applications that should be run when the 'check' target is run.
#
# These will NOT be part of the externally-consumable binary SDK.

check_PROGRAMS                                 = \
    TestASN1                                     \
    TestAppKeys                                  \
    TestArgParser                                \
    TestCASE                                     \
    TestCodeUtils                                \
    TestCrypto                                   \
    TestDRBG                                     \
    TestDeviceDescriptor                         \
    TestDNSResolution                            \
    TestECDH                                     \
    TestECDSA                                    \
    TestECMath                                   \
    TestEventLogging                             \
    TestFabricStateDelegate                      \
    TestInetAddress                              \
    TestInetBuffer                               \
    TestInetEndPoint                             \
    TestInetTimer                                \
    TestKeyExport                                \
    TestKeyIds                                   \
    TestMsgEnc                                   \
    TestPASE                                     \
    TestPacketBuffer                             \
    TestPasscodeEnc                              \
    TestPersistedCounter                         \
    TestPersistedStorage                         \
    TestProfileStringSupport                     \
    TestProvHash                                 \
    TestRetainedPacketBuffer                     \
    TestSerialNumUtils                           \
    TestSystemObject                             \
    TestSystemTimer                              \
    TestTAKE                                     \
    TestTLV                                      \
    TestTimeUtils                                \
    TestTimeZone                                 \
    TestWeaveAlarmStatusReportStr                \
    TestWeaveCert                                \
    TestWeaveEncoding                            \
    TestWeaveFabricState                         \
    TestWeaveSignature                           \
    infratest                                    \
    wsuptest                                     \
    TestErrorStr                                 \
    TestStatusReportStr                          \
    TestThermostatStatus                         \
    TestPairingCodeUtils                         \
    $(NULL)

if HAVE_CXX11
check_PROGRAMS +=                                \
    TestTDM                                      \
    $(NULL)
endif

check_PROGRAMS +=                                \
    TestTDM                                      \
    $(NULL)

if WEAVE_BUILD_WARM
check_PROGRAMS                                += \
    TestWarm                                     \
    $(NULL)
endif

if WEAVE_WITH_OPENSSL
check_PROGRAMS                                += \
    TestWeaveProvBundle                          \
    $(NULL)
endif

# Test scripts that should be run when the 'check' target is run.
#
# These will NOT be part of the externally-consumable binary SDK.

if WEAVE_RUN_HAPPY_SERVICE
check_SCRIPTS                                  = \
    $(NULL)
else
check_SCRIPTS                                  = \
    test-weave-device-descriptor-encode.sh       \
    test-Verhoeff.sh                             \
    $(NULL)
endif # WEAVE_RUN_HAPPY_SERVICE


# Test applications that should be built but not installed that
# require no network or complicated setup and should always be
# built to ensure overall "build sanity".
#
# These will NOT be part of the externally-consumable binary SDK.

local_test_programs                            = \
    GenerateEventLog                             \
    TestASN1                                     \
    TestAppKeys                                  \
    TestArgParser                                \
    TestCASE                                     \
    TestCodeUtils                                \
    TestCrypto                                   \
    TestDRBG                                     \
    TestDeviceDescriptor                         \
    TestDNSResolution                            \
    TestECDH                                     \
    TestECDSA                                    \
    TestECMath                                   \
    TestFabricStateDelegate                      \
    TestInetAddress                              \
    TestInetBuffer                               \
    TestInetEndPoint                             \
    TestInetTimer                                \
    TestKeyExport                                \
    TestKeyIds                                   \
    TestMsgEnc                                   \
    TestPASE                                     \
    TestPacketBuffer                             \
    TestPasscodeEnc                              \
    TestProfileStringSupport                     \
    TestProvHash                                 \
    TestRetainedPacketBuffer                     \
    TestSerialNumUtils                           \
    TestSystemObject                             \
    TestSystemTimer                              \
    TestTAKE                                     \
    TestTLV                                      \
    TestTimeUtils                                \
    TestTimeZone                                 \
    TestWeaveAlarmStatusReportStr                \
    TestWeaveCert                                \
    TestWeaveEncoding                            \
    TestWeaveFabricState                         \
    TestWeaveProvBundle                          \
    TestWeaveSignature                           \
    infratest                                    \
    TestErrorStr                                 \
    TestStatusReportStr                          \
    TestThermostatStatus                         \
    TestPairingCodeUtils                         \
    $(NULL)

if HAVE_CXX11
local_test_programs                           += \
    TestTDM                                      \
    TestWDM                                      \
    $(NULL)
endif

if WEAVE_BUILD_WARM
local_test_programs                           += \
    TestWarm                                     \
    $(NULL)
endif

# Test applications that should be built but not installed that
# require network or complicated setup and should always be built to
# ensure overall "build sanity".
#
# These will NOT be part of the externally-consumable binary SDK.

network_test_programs                          = \
    TestBinding                                  \
    TestDataManagement                           \
    TestEventLogging                             \
    TestInetLayer                                \
    TestPersistedCounter                         \
    TestPersistedStorage                         \
    TestRADaemon                                 \
    TestWRMP                                     \
    TestWeaveMessageLayer                        \
    TestWeaveTunnelBR                            \
    TestWeaveTunnelServer                        \
    TestWdmNext                                  \
    TestDNSResolution                            \
    mock-device                                  \
    mock-tunnel-service                          \
    mock-weave-bg                                \
    wdmtest                                      \
    weave-bdx-client-development                 \
    weave-bdx-client-v0                          \
    weave-bdx-server-development                 \
    weave-bdx-server-v0                          \
    weave-connection-tunnel                      \
    weave-dd-client                              \
    weave-service-dir                            \
    weave-swu-client                             \
    weave-swu-server                             \
    wsuptest                                     \
    $(NULL)

# Test applications that should be built but not installed and should
# always be built to ensure overall "build sanity".
#
# These will NOT be part of the externally-consumable binary SDK.

noinst_PROGRAMS                                = \
    $(local_test_programs)                       \
    $(network_test_programs)                     \
    $(NULL)

# Test applications and scripts that should be built and run when the
# 'check' target is run.

if WEAVE_RUN_HAPPY_SERVICE
TESTS                                          = \
    $(check_SCRIPTS)                             \
    $(NULL)
else
TESTS                                          = \
    $(check_PROGRAMS)                            \
    $(check_SCRIPTS)                             \
    $(NULL)
endif # WEAVE_RUN_HAPPY_SERVICE

# The additional environment variables and their values that will be
# made available to all programs and scripts in TESTS.

TESTS_ENVIRONMENT                                                 = \
    export                                                          \
    CMP='$(CMP)'                                                    \
    RM='$(RM)'                                                      \
    abs_builddir='$(abs_builddir)'                                  \
    abs_srcdir='$(abs_srcdir)'                                      \
    abs_top_builddir='$(abs_top_builddir)'                          \
    abs_top_srcdir='$(abs_top_srcdir)'                              \
    builddir='$(builddir)'                                          \
    srcdir='$(srcdir)'                                              \
    top_builddir='$(top_builddir)'                                  \
    top_srcdir='$(top_srcdir)'                                      \
    WEAVE_SYSTEM_CONFIG_USE_LWIP='$(WEAVE_SYSTEM_CONFIG_USE_LWIP)'  \
    $(NULL)

if WEAVE_RUN_HAPPY_SERVICE

TESTS_ENVIRONMENT                             += \
    weave_service_address='$(HAPPY_SERVICE)'

endif # WEAVE_RUN_HAPPY_SERVICE

if WEAVE_RUN_HAPPY_DNS

TESTS_ENVIRONMENT                             += \
    happy_dns='$(HAPPY_DNS)'

endif # WEAVE_RUN_HAPPY_DNS

TESTS_ENVIRONMENT                             += \
    PYTHONPATH='$(HAPPY_PATH):$(PYTHONPATH)';    \
    $(NULL)

if WEAVE_RUN_HAPPY
if WEAVE_RUN_HAPPY_SERVICE

if WEAVE_RUN_HAPPY_TUNNEL
check_SCRIPTS                                 +=             \
    happy-service-tests/tunnel/test_weave_tunnel_01.py       \
    happy-service-tests/tunnel/test_weave_tunnel_02.py       \
    $(NULL)
endif # WEAVE_RUN_HAPPY_TUNNEL

if WEAVE_RUN_HAPPY_TIME
check_SCRIPTS                                 +=             \
    happy-service-tests/time/test_weave_time_01.py           \
    $(NULL)
endif #WEAVE_RUN_HAPPY_TIME

if WEAVE_RUN_HAPPY_ECHO
check_SCRIPTS                                 +=             \
    happy-service-tests/echo/test_weave_echo_01.py           \
    happy-service-tests/echo/test_weave_echo_02.py           \
    happy-service-tests/echo/test_weave_echo_03.py           \
    $(NULL)
endif # WEAVE_RUN_HAPPY_ECHO

if WEAVE_RUN_HAPPY_KEY_EXPORT
check_SCRIPTS                                 +=             \
    happy-service-tests/key_export/test_weave_key_export_01.py \
    $(NULL)
endif # WEAVE_RUN_HAPPY_KEY_EXPORT

if WEAVE_RUN_HAPPY_PAIRING
check_SCRIPTS                                 +=             \
    happy-service-tests/pairing/test_weave_pairing_01.py     \
    $(NULL)
endif # WEAVE_RUN_HAPPY_PAIRING

if WEAVE_RUN_HAPPY_PERF
check_SCRIPTS                                 +=             \
    happy-service-tests/weave_service_perf_run.sh            \
    $(NULL)
endif # WEAVE_RUN_HAPPY_SERVICE_PERF

if WEAVE_RUN_HAPPY_WDM
check_SCRIPTS                                 +=             \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_01.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_02.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_03.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_04.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_05.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_06.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_07.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_08.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_09.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_10.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_11.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_12.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_13.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_14.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_15.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_16.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_17.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_18.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_19.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_20.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_21.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_22.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_23.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_24.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_25.py                              \
    happy-service-tests/wdmNext/test_weave_wdm_next_service_mutual_subscribe_application_key_01.py              \
    $(NULL)
endif # WEAVE_RUN_HAPPY_WDM

else  # WEAVE_RUN_HAPPY_SERVICE

if WEAVE_RUN_LONG_TESTS

if WEAVE_RUN_HAPPY_BDX

# Parse the bdx filename and generate the script:
# e.g: test_weave_bdx_faults_download_v0_v0_1_of_2
happy-tests/bdx/test_weave_bdx_faults_%.sh :
	mkdir -p happy-tests/bdx
	matched_part_of_the_file_name=$(*F) ; \
	IFS='_' tokens=( $${matched_part_of_the_file_name} ) ; \
	echo "#!/bin/bash" > $@ ; \
	echo "${abs_srcdir}/happy-tests/bdx/test_weave_bdx_faults_01.py --direction $${tokens[0]} --versions $${tokens[1]/v/}_$${tokens[2]/v/} --group $${tokens[3]} --numgroups $${tokens[5]}" >> $@ ; \
	echo 'exit $$?' >>$@
	chmod u+x $@

check_SCRIPTS                                 +=                \
    happy-tests/bdx/test_weave_bdx_faults_download_v0_v0_1_of_4.sh     \
    happy-tests/bdx/test_weave_bdx_faults_download_v0_v0_2_of_4.sh     \
    happy-tests/bdx/test_weave_bdx_faults_download_v0_v0_3_of_4.sh     \
    happy-tests/bdx/test_weave_bdx_faults_download_v0_v0_4_of_4.sh     \
	$(NULL)

check_SCRIPTS                                 +=                \
    happy-tests/bdx/test_weave_bdx_faults_download_v0_v1_1_of_4.sh     \
    happy-tests/bdx/test_weave_bdx_faults_download_v0_v1_2_of_4.sh     \
    happy-tests/bdx/test_weave_bdx_faults_download_v0_v1_3_of_4.sh     \
    happy-tests/bdx/test_weave_bdx_faults_download_v0_v1_4_of_4.sh     \
	$(NULL)

check_SCRIPTS                                 +=                \
    happy-tests/bdx/test_weave_bdx_faults_download_v1_v0_1_of_4.sh     \
    happy-tests/bdx/test_weave_bdx_faults_download_v1_v0_2_of_4.sh     \
    happy-tests/bdx/test_weave_bdx_faults_download_v1_v0_3_of_4.sh     \
    happy-tests/bdx/test_weave_bdx_faults_download_v1_v0_4_of_4.sh     \
	$(NULL)

check_SCRIPTS                                 +=                \
    happy-tests/bdx/test_weave_bdx_faults_download_v1_v1_1_of_4.sh     \
    happy-tests/bdx/test_weave_bdx_faults_download_v1_v1_2_of_4.sh     \
    happy-tests/bdx/test_weave_bdx_faults_download_v1_v1_3_of_4.sh     \
    happy-tests/bdx/test_weave_bdx_faults_download_v1_v1_4_of_4.sh     \
	$(NULL)

check_SCRIPTS                                 +=                \
    happy-tests/bdx/test_weave_bdx_faults_upload_v0_v0_1_of_4.sh       \
    happy-tests/bdx/test_weave_bdx_faults_upload_v0_v0_2_of_4.sh       \
    happy-tests/bdx/test_weave_bdx_faults_upload_v0_v0_3_of_4.sh       \
    happy-tests/bdx/test_weave_bdx_faults_upload_v0_v0_4_of_4.sh       \
	$(NULL)

check_SCRIPTS                                 +=                \
    happy-tests/bdx/test_weave_bdx_faults_upload_v0_v1_1_of_4.sh       \
    happy-tests/bdx/test_weave_bdx_faults_upload_v0_v1_2_of_4.sh       \
    happy-tests/bdx/test_weave_bdx_faults_upload_v0_v1_3_of_4.sh       \
    happy-tests/bdx/test_weave_bdx_faults_upload_v0_v1_4_of_4.sh       \
	$(NULL)

check_SCRIPTS                                 +=                \
    happy-tests/bdx/test_weave_bdx_faults_upload_v1_v0_1_of_4.sh       \
    happy-tests/bdx/test_weave_bdx_faults_upload_v1_v0_2_of_4.sh       \
    happy-tests/bdx/test_weave_bdx_faults_upload_v1_v0_3_of_4.sh       \
    happy-tests/bdx/test_weave_bdx_faults_upload_v1_v0_4_of_4.sh       \
	$(NULL)

check_SCRIPTS                                 +=                \
    happy-tests/bdx/test_weave_bdx_faults_upload_v1_v1_1_of_4.sh       \
    happy-tests/bdx/test_weave_bdx_faults_upload_v1_v1_2_of_4.sh       \
    happy-tests/bdx/test_weave_bdx_faults_upload_v1_v1_3_of_4.sh       \
    happy-tests/bdx/test_weave_bdx_faults_upload_v1_v1_4_of_4.sh       \
	$(NULL)

endif # WEAVE_RUN_HAPPY_BDX

if WEAVE_RUN_HAPPY_SECMGR

# Parse the echo filename and generate the script:
# e.g: test_weave_echo_secmgr_faults_case_wrmp_1_of_2.sh
happy-tests/echo/test_weave_echo_secmgr_faults_%.sh :
	mkdir -p happy-tests/echo
	matched_part_of_the_file_name=$(*F) ; \
	IFS='_' tokens=( $${matched_part_of_the_file_name} ) ; \
	echo "#!/bin/bash" > $@ ; \
	echo "${abs_srcdir}/happy-tests/echo/test_weave_echo_secmgr_faults.py --$${tokens[0]} --$${tokens[1]} --group $${tokens[2]} --numgroups $${tokens[4]}" >> $@ ; \
	echo 'exit $$?' >>$@
	chmod u+x $@

check_SCRIPTS                                 +=                \
	happy-tests/echo/test_weave_echo_secmgr_faults_case_wrmp_1_of_8.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_case_wrmp_2_of_8.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_case_wrmp_3_of_8.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_case_wrmp_4_of_8.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_case_wrmp_5_of_8.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_case_wrmp_6_of_8.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_case_wrmp_7_of_8.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_case_wrmp_8_of_8.sh \
	$(NULL)

check_SCRIPTS                                 +=                \
	happy-tests/echo/test_weave_echo_secmgr_faults_group-key_wrmp_1_of_4.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_group-key_wrmp_2_of_4.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_group-key_wrmp_3_of_4.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_group-key_wrmp_4_of_4.sh \
	$(NULL)

check_SCRIPTS                                 +=                \
	happy-tests/echo/test_weave_echo_secmgr_faults_case_tcp_1_of_4.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_case_tcp_2_of_4.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_case_tcp_3_of_4.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_case_tcp_4_of_4.sh \
	$(NULL)

check_SCRIPTS                                 +=                \
	happy-tests/echo/test_weave_echo_secmgr_faults_pase_tcp_1_of_4.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_pase_tcp_2_of_4.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_pase_tcp_3_of_4.sh \
	happy-tests/echo/test_weave_echo_secmgr_faults_pase_tcp_4_of_4.sh \
	$(NULL)

endif # WEAVE_RUN_HAPPY_SECMGR

if WEAVE_RUN_HAPPY_WDM

# Parse the wdm filename and generate the script:
# e.g: test_weave_echo_secmgr_faults_case_wrmp_1_of_2.sh
happy-tests/wdmNext/test_weave_wdm_next_%.sh :
	mkdir -p happy-tests/wdmNext
	matched_part_of_the_file_name=$(*F) ; \
	IFS='_' tokens=( $${matched_part_of_the_file_name} ) ; \
	echo "#!/bin/bash" > $@ ; \
	echo "${abs_srcdir}/happy-tests/wdmNext/test_weave_wdm_next_$${tokens[0]}_subscribe_faults.py --group $${tokens[3]} --numgroups $${tokens[5]}" >> $@ ; \
	echo 'exit $$?' >>$@
	chmod u+x $@

check_SCRIPTS                                 +=                \
	happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_faults_1_of_12.sh \
	happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_faults_2_of_12.sh \
	happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_faults_3_of_12.sh \
	happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_faults_4_of_12.sh \
	happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_faults_5_of_12.sh \
	happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_faults_6_of_12.sh \
	happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_faults_7_of_12.sh \
	happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_faults_8_of_12.sh \
	happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_faults_9_of_12.sh \
	happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_faults_10_of_12.sh \
	happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_faults_11_of_12.sh \
	happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_faults_12_of_12.sh \
	$(NULL)

check_SCRIPTS                                 +=                \
	happy-tests/wdmNext/test_weave_wdm_next_oneway_subscribe_faults_1_of_8.sh \
	happy-tests/wdmNext/test_weave_wdm_next_oneway_subscribe_faults_2_of_8.sh \
	happy-tests/wdmNext/test_weave_wdm_next_oneway_subscribe_faults_3_of_8.sh \
	happy-tests/wdmNext/test_weave_wdm_next_oneway_subscribe_faults_4_of_8.sh \
	happy-tests/wdmNext/test_weave_wdm_next_oneway_subscribe_faults_5_of_8.sh \
	happy-tests/wdmNext/test_weave_wdm_next_oneway_subscribe_faults_6_of_8.sh \
	happy-tests/wdmNext/test_weave_wdm_next_oneway_subscribe_faults_7_of_8.sh \
	happy-tests/wdmNext/test_weave_wdm_next_oneway_subscribe_faults_8_of_8.sh \
	$(NULL)

endif # WEAVE_RUN_HAPPY_WDM

if WEAVE_RUN_HAPPY_KEY_EXPORT

# Parse the key export filename and generate the script:
# e.g: test_weave_key_export_faults_wrmp_1_of_4.sh
happy-tests/key_export/test_weave_key_export_faults_%.sh :
	mkdir -p happy-tests/key_export
	matched_part_of_the_file_name=$(*F) ; \
	IFS='_' tokens=( $${matched_part_of_the_file_name} ) ; \
	echo "#!/bin/bash" > $@ ; \
	echo "${abs_srcdir}/happy-tests/key_export/test_weave_key_export_faults.py --$${tokens[0]} --group $${tokens[1]} --numgroups $${tokens[3]}" >> $@ ; \
	echo 'exit $$?' >>$@
	chmod u+x $@

check_SCRIPTS                                 +=                \
	happy-tests/key_export/test_weave_key_export_faults_tcp_1_of_2.sh \
	happy-tests/key_export/test_weave_key_export_faults_tcp_2_of_2.sh \
	happy-tests/key_export/test_weave_key_export_faults_wrmp_1_of_4.sh \
	happy-tests/key_export/test_weave_key_export_faults_wrmp_2_of_4.sh \
	happy-tests/key_export/test_weave_key_export_faults_wrmp_3_of_4.sh \
	happy-tests/key_export/test_weave_key_export_faults_wrmp_4_of_4.sh \
	$(NULL)

endif # WEAVE_RUN_HAPPY_KEY_EXPORT

if WEAVE_RUN_HAPPY_SERVICEDIR

# Parse the servicedir filename and generate the script:
# e.g: t_weave_service_directory_faults_1_of_4.sh
happy-tests/servicedir/test_weave_service_directory_faults_%.sh :
	mkdir -p happy-tests/servicedir
	matched_part_of_the_file_name=$(*F) ; \
	IFS='_' tokens=( $${matched_part_of_the_file_name} ) ; \
	echo "#!/bin/bash" > $@ ; \
	echo "${abs_srcdir}/happy-tests/servicedir/test_service_directory_01.py --fault-injection --group $${tokens[0]} --numgroups $${tokens[2]}" >> $@ ; \
	echo 'exit $$?' >>$@
	chmod u+x $@

check_SCRIPTS                                 +=                \
	happy-tests/servicedir/test_weave_service_directory_faults_1_of_4.sh \
	happy-tests/servicedir/test_weave_service_directory_faults_2_of_4.sh \
	happy-tests/servicedir/test_weave_service_directory_faults_3_of_4.sh \
	happy-tests/servicedir/test_weave_service_directory_faults_4_of_4.sh \
	$(NULL)

endif # WEAVE_RUN_HAPPY_SERVICEDIR

if WEAVE_RUN_HAPPY_TUNNEL

# Parse the tunnel filename and generate the script:
# e.g: test_weave_tunnel_faults_1_of_4.sh
happy-tests/tunnel/test_weave_tunnel_faults_%.sh :
	mkdir -p happy-tests/tunnel
	matched_part_of_the_file_name=$(*F) ; \
	IFS='_' tokens=( $${matched_part_of_the_file_name} ) ; \
	echo "#!/bin/bash" > $@ ; \
	echo "${abs_srcdir}/happy-tests/tunnel/test_weave_tunnel_faults.py --group $${tokens[0]} --numgroups $${tokens[2]}" >> $@ ; \
	echo 'exit $$?' >>$@
	chmod u+x $@

check_SCRIPTS                                 +=                \
	happy-tests/tunnel/test_weave_tunnel_faults_1_of_8.sh \
	happy-tests/tunnel/test_weave_tunnel_faults_2_of_8.sh \
	happy-tests/tunnel/test_weave_tunnel_faults_3_of_8.sh \
	happy-tests/tunnel/test_weave_tunnel_faults_4_of_8.sh \
	happy-tests/tunnel/test_weave_tunnel_faults_5_of_8.sh \
	happy-tests/tunnel/test_weave_tunnel_faults_6_of_8.sh \
	happy-tests/tunnel/test_weave_tunnel_faults_7_of_8.sh \
	happy-tests/tunnel/test_weave_tunnel_faults_8_of_8.sh \
	$(NULL)

endif # WEAVE_RUN_HAPPY_TUNNEL

if WEAVE_RUN_HAPPY_TIME

# Parse the time filename and generate the script:
# e.g: t_weave_time_faults_1_of_8.sh
happy-tests/time/test_weave_time_faults_%.sh :
	mkdir -p happy-tests/time
	matched_part_of_the_file_name=$(*F) ; \
	IFS='_' tokens=( $${matched_part_of_the_file_name} ) ; \
	echo "#!/bin/bash" > $@ ; \
	echo "${abs_srcdir}/happy-tests/time/test_weave_time_01.py --enable-faults --syncmode $${tokens[0]} --group $${tokens[1]} --numgroups $${tokens[3]}" >> $@ ; \
	echo 'exit $$?' >>$@
	chmod u+x $@

check_SCRIPTS                                 +=                \
	happy-tests/time/test_weave_time_faults_local_1_of_4.sh \
	happy-tests/time/test_weave_time_faults_local_2_of_4.sh \
	happy-tests/time/test_weave_time_faults_local_3_of_4.sh \
	happy-tests/time/test_weave_time_faults_local_4_of_4.sh \
	happy-tests/time/test_weave_time_faults_service_1_of_4.sh \
	happy-tests/time/test_weave_time_faults_service_2_of_4.sh \
	happy-tests/time/test_weave_time_faults_service_3_of_4.sh \
	happy-tests/time/test_weave_time_faults_service_4_of_4.sh \
	happy-tests/time/test_weave_time_faults_auto_1_of_8.sh \
	happy-tests/time/test_weave_time_faults_auto_2_of_8.sh \
	happy-tests/time/test_weave_time_faults_auto_3_of_8.sh \
	happy-tests/time/test_weave_time_faults_auto_4_of_8.sh \
	happy-tests/time/test_weave_time_faults_auto_5_of_8.sh \
	happy-tests/time/test_weave_time_faults_auto_6_of_8.sh \
	happy-tests/time/test_weave_time_faults_auto_7_of_8.sh \
	happy-tests/time/test_weave_time_faults_auto_8_of_8.sh \
	$(NULL)

endif # WEAVE_RUN_HAPPY_TIME

endif # WEAVE_RUN_LONG_TESTS

if WEAVE_RUN_HAPPY_WDM

check_SCRIPTS                                 +=                \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_01.py    \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_02.py    \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_03.py    \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_04.py    \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_05.py    \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_06.py    \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_07.py    \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_08.py    \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_09.py    \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_10.py    \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_11.py    \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_12.py    \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_13.py    \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_14.py    \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_15.py    \
    happy-tests/wdmNext/test_weave_wdm_next_one_way_subscribe_16.py    \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_01.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_02.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_03.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_04.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_05.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_06.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_07.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_08.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_09.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_10.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_11.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_12.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_13.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_14.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_15.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_16.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_17.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_18.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_19.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_20.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_21.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_22.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_23.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_24.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_25.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_26.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_27.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_28.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_29.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_30.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_31.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_32.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_33.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_34.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_35.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_36.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_37.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_38.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_39.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_40.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_41.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_42.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_43.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_44.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_45.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_46.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_47.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_48.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_49.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_50.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_51.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_52.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_53.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_54.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_55.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_56.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_57.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_58.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_59.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_60.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_61.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_62.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_63.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_64.py     \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_subscribe_65.py     \
    happy-tests/wdmNext/test_weave_wdm_next_application_key_01.py      \
    happy-tests/wdmNext/test_weave_wdm_next_application_key_02.py      \
    happy-tests/wdmNext/test_weave_wdm_next_oneway_resub.py            \
    happy-tests/wdmNext/test_weave_wdm_next_mutual_resub.py            \
    $(NULL)

endif # WEAVE_RUN_HAPPY_WDM

if WEAVE_RUN_HAPPY_BDX
check_SCRIPTS                                 +=                \
    happy-tests/bdx/test_weave_bdx_01.py                        \
    happy-tests/bdx/test_weave_bdx_02.py                        \
    happy-tests/bdx/test_weave_bdx_03.py                        \
    happy-tests/bdx/test_weave_bdx_04.py                        \
    happy-tests/bdx/test_weave_bdx_05.py                        \
    $(NULL)
endif # WEAVE_RUN_HAPPY_BDX

if WEAVE_RUN_HAPPY_ECHO
check_SCRIPTS                                 +=                \
    happy-tests/echo/test_weave_echo_01.py                      \
    happy-tests/echo/test_weave_echo_03.py                      \
    $(NULL)
endif # WEAVE_RUN_HAPPY_ECHO

if WEAVE_RUN_HAPPY_SECMGR
check_SCRIPTS                                 +=                \
    happy-tests/echo/test_weave_echo_02.py                      \
    $(NULL)
endif # WEAVE_RUN_HAPPY_SECMGR

if WEAVE_RUN_HAPPY_TUNNEL
check_SCRIPTS                                 +=                \
    happy-tests/tunnel/test_weave_tunnel_01.py                  \
    happy-tests/tunnel/test_weave_tunnel_02.py                  \
    happy-tests/tunnel/test_weave_tunnel_03.py                  \
    happy-tests/tunnel/test_weave_tunnel_04.py                  \
    happy-tests/con_tunnel/test_weave_con_tunnel_01.py          \
    $(NULL)
endif # WEAVE_RUN_HAPPY_TUNNEL

if WEAVE_RUN_HAPPY_KEY_EXPORT
check_SCRIPTS                                 +=                \
    happy-tests/key_export/test_weave_key_export_01.py          \
    $(NULL)
endif # WEAVE_RUN_HAPPY_KEY_EXPORT

if WEAVE_RUN_HAPPY_PAIRING
check_SCRIPTS                                 +=                \
    happy-tests/pairing/test_weave_pairing_01.py                \
    $(NULL)
endif # WEAVE_RUN_HAPPY_PAIRING

if WEAVE_RUN_HAPPY_SERVICEDIR
check_SCRIPTS                                 +=                \
    happy-tests/servicedir/test_service_directory_01.py         \
    $(NULL)
endif

if WEAVE_RUN_HAPPY_CORE
check_SCRIPTS                                 +=                \
    happy-tests/wdmv0/test_weave_wdmv0_01.py                    \
    happy-tests/swu/test_weave_swu_01.py                        \
    happy-tests/swu/test_weave_swu_02.py                        \
    happy-tests/alarm/test_weave_alarm_01.py                    \
    happy-tests/messagelayer/test_weave_messagelayer_01.py      \
    happy-tests/time/test_weave_time_01.py                      \
    happy-tests/dd/test_weave_dd_01.py                          \
    happy-tests/inet/test_weave_inet_01.py                      \
    happy-tests/heartbeat/test_weave_heartbeat_01.py            \
    happy-tests/wrmp/test_weave_wrmp_01.py                      \
    $(NULL)
endif # WEAVE_RUN_HAPPY_CORE

endif # WEAVE_RUN_HAPPY_SERVICE
endif # WEAVE_RUN_HAPPY

# The bin_LINKS variable enumerates programs that need to be
# "trampolined" through the 'weave-run' script due to runtime
# dependencies on DLLs/DSOs that the runtime linker / loader will need
# to resolve when they invoked.

bin_LINKS                                      = \
    $(libexec_PROGRAMS)                          \
    $(libexec_SCRIPTS)                           \
    $(NULL)

# Source, compiler, and linker options for test programs.

GenerateEventLog_SOURCES                 = GenerateEventLog.cpp MockEvents.cpp \
                                           schema/weave/trait/telemetry/NetworkWiFiTelemetryTrait.cpp \
                                           schema/nest/test/trait/TestETrait.cpp			\
                                           schema/nest/test/trait/CommonStructEStructSchema.cpp \
                                           schema/nest/test/trait/StructEStructSchema.cpp \
                                           schema/nest/test/trait/NullableEStructSchema.cpp
GenerateEventLog_LDFLAGS                 = $(AM_CPPFLAGS)
GenerateEventLog_CPPFLAGS                = $(AM_CPPFLAGS) -I$(top_srcdir)/src/test-apps/schema
GenerateEventLog_LDADD                   = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestASN1_SOURCES                         = TestASN1.cpp
TestASN1_LDADD                           = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestAppKeys_SOURCES                      = TestAppKeys.cpp
TestAppKeys_LDADD                        = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestArgParser_SOURCES                    = TestArgParser.cpp
TestArgParser_LDADD                      = libWeaveTestCommon.a $(COMMON_LDADD)

TestBinding_SOURCES                      = TestBinding.cpp
TestBinding_LDFLAGS                      = $(AM_CPPFLAGS)
TestBinding_LDADD                        = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestCASE_SOURCES                         = TestCASE.cpp
TestCASE_LDFLAGS                         = $(AM_CPPFLAGS)
TestCASE_LDADD                           = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestCodeUtils_SOURCES                    = TestCodeUtils.cpp
TestCodeUtils_LDADD                      =

TestCrypto_SOURCES                       = TestCrypto.cpp
TestCrypto_CPPFLAGS                      = $(AM_CPPFLAGS) -I$(top_srcdir)/src/test-apps/crypto-tests
TestCrypto_LDADD                         = libWeaveCryptoTests.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestDRBG_SOURCES                         = TestDRBG.cpp
TestDRBG_LDADD                           = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestDataManagement_SOURCES               = TestDataManagement.cpp \
                                           TestProfile.cpp
TestDataManagement_LDFLAGS               = $(AM_CPPFLAGS)
TestDataManagement_LDADD                 = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestDeviceDescriptor_SOURCES             = TestDeviceDescriptor.cpp
TestDeviceDescriptor_LDADD               = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestECDH_SOURCES                         = TestECDH.cpp
TestECDH_LDADD                           = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestECDSA_SOURCES                        = TestECDSA.cpp
TestECDSA_LDADD                          = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestECMath_SOURCES                       = TestECMath.cpp TestECMathParams.cpp
TestECMath_LDADD                         = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestEventLogging_SOURCES                 = schema/nest/test/trait/TestETrait.cpp \
                                           schema/nest/test/trait/CommonStructEStructSchema.cpp \
                                           schema/nest/test/trait/StructEStructSchema.cpp \
                                           schema/nest/test/trait/NullableEStructSchema.cpp \
                                           MockExternalEvents.cpp \
                                           TestEventLogging.cpp
TestEventLogging_CPPFLAGS	         = $(AM_CPPFLAGS) -I$(top_srcdir)/src/test-apps/schema
TestEventLogging_LDFLAGS                 = $(AM_CPPFLAGS)
TestEventLogging_LDADD                   = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

if HAVE_CXX11
TestTDM_SOURCES                          = TestTDM.cpp \
                                           schema/nest/test/trait/TestHTrait.cpp \
                                           schema/nest/test/trait/TestCTrait.cpp \
                                           schema/nest/test/trait/TestBTrait.cpp \
                                           schema/nest/test/trait/StructCStructSchema.cpp \
                                           schema/nest/test/trait/TestMismatchedCTrait.cpp \
                                           schema/nest/test/trait/StructMismatchedCStructSchema.cpp \
                                           MockMismatchedSchemaSinkAndSource.cpp \
                                           TestPersistedStorageImplementation.cpp \
                                           MockTestBTrait.cpp

TestTDM_CPPFLAGS                         = $(AM_CPPFLAGS) -I$(top_srcdir)/src/test-apps/schema
TestTDM_LDFLAGS                          = $(AM_CPPFLAGS)
TestTDM_LDADD                            = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)
endif

TestWDM_SOURCES                          = TestWdm.cpp
TestWDM_CPPFLAGS                         = $(AM_CPPFLAGS)
TestWDM_LDFLAGS                          = $(AM_CPPFLAGS)
TestWDM_LDADD                            = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestFabricStateDelegate_SOURCES          = TestFabricStateDelegate.cpp TestPersistedStorageImplementation.cpp
TestFabricStateDelegate_LDFLAGS          = $(AM_CPPFLAGS)
TestFabricStateDelegate_LDADD            = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestInetEndPoint_SOURCES                 = TestInetEndPoint.cpp
TestInetEndPoint_LDFLAGS                 = $(AM_CPPFLAGS)
TestInetEndPoint_LDADD                   = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestInetBuffer_SOURCES                   = TestInetBuffer.cpp
TestInetBuffer_LDADD                     = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestInetTimer_SOURCES                    = TestInetTimer.cpp
TestInetTimer_LDFLAGS                    = $(AM_CPPFLAGS)
TestInetTimer_LDADD                      = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestInetLayer_SOURCES                    = TestInetLayer.cpp
TestInetLayer_LDFLAGS                    = $(AM_CPPFLAGS)
TestInetLayer_LDADD                      = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestInetAddress_SOURCES                  = TestInetAddress.cpp
TestInetAddress_LDADD                    = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestKeyExport_SOURCES                    = TestKeyExport.cpp
TestKeyExport_LDFLAGS                    = $(AM_CPPFLAGS)
TestKeyExport_LDADD                      = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestKeyIds_SOURCES                       = TestKeyIds.cpp
TestKeyIds_LDFLAGS                       = $(AM_CPPFLAGS)
TestKeyIds_LDADD                         = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestMsgEnc_SOURCES                       = TestMsgEnc.cpp
TestMsgEnc_LDFLAGS                       = $(AM_CPPFLAGS)
TestMsgEnc_LDADD                         = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestPASE_SOURCES                         = TestPASE.cpp
TestPASE_LDFLAGS                         = $(AM_CPPFLAGS)
TestPASE_LDADD                           = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestPacketBuffer_SOURCES                 = TestPacketBuffer.cpp
TestPacketBuffer_LDADD                   = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestPasscodeEnc_SOURCES                  = TestPasscodeEnc.cpp
TestPasscodeEnc_LDADD                    = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestPersistedCounter_SOURCES             = TestPersistedCounter.cpp TestPersistedStorageImplementation.cpp
TestPersistedCounter_LDADD               = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestPersistedStorage_SOURCES             = TestPersistedStorage.cpp TestPersistedStorageImplementation.cpp
TestPersistedStorage_LDADD               = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestProfileStringSupport_SOURCES         = TestProfileStringSupport.cpp
TestProfileStringSupport_LDADD           = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestProvHash_SOURCES                     = TestProvHash.cpp
TestProvHash_LDADD                       = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestRADaemon_SOURCES                     = TestRADaemon.cpp
TestRADaemon_CPPFLAGS                    = $(AM_CPPFLAGS) -I$(top_srcdir)/src/ra-daemon
TestRADaemon_LDADD                       = libWeaveTestCommon.a -L$(top_builddir)/src/ra-daemon -lRADaemon $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestRetainedPacketBuffer_SOURCES         = TestRetainedPacketBuffer.cpp
TestRetainedPacketBuffer_LDADD           = libWeaveTestCommon.a $(COMMON_LDADD)

TestSerialNumUtils_SOURCES               = TestSerialNumUtils.cpp
TestSerialNumUtils_LDADD                 = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestSystemObject_SOURCES                 = TestSystemObject.cpp
TestSystemObject_CPPFLAGS                = $(AM_CPPFLAGS) $(PTHREAD_CFLAGS)
TestSystemObject_LDFLAGS                 = $(PTHREAD_CFLAGS)
TestSystemObject_LDADD                   = libWeaveTestCommon.a $(PTHREAD_LIBS) $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestSystemTimer_SOURCES                  = TestSystemTimer.cpp
TestSystemTimer_LDADD                    = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestTAKE_SOURCES                         = TestTAKE.cpp
TestTAKE_LDFLAGS                         = $(AM_CPPFLAGS)
TestTAKE_LDADD                           = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestTLV_SOURCES                          = TestTLV.cpp
TestTLV_LDADD                            = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestTimeUtils_SOURCES                    = TestTimeUtils.cpp
TestTimeUtils_LDADD                      = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestTimeZone_SOURCES                     = TestTimeZone.cpp
TestTimeZone_LDADD                       = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestWRMP_SOURCES                         = TestWRMP.cpp
TestWRMP_LDFLAGS                         = $(AM_CPPFLAGS)
TestWRMP_LDADD                           = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

if WEAVE_BUILD_WARM
TestWarm_SOURCES                         = TestWarm.cpp TestPersistedStorageImplementation.cpp
TestWarm_LDFLAGS                         = $(AM_CPPFLAGS)
TestWarm_LDADD                           = libWeaveTestGroupKeyStore.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)
endif

TestWeaveAlarmStatusReportStr_SOURCES    = TestWeaveAlarmStatusReportStr.cpp
TestWeaveAlarmStatusReportStr_LDADD      = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestWeaveCert_SOURCES                    = TestWeaveCert.cpp TestWeaveCertData.cpp
TestWeaveCert_LDADD                      = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestWeaveEncoding_SOURCES                = TestWeaveEncoding.cpp
TestWeaveEncoding_LDADD                  =

TestWeaveFabricState_SOURCES             = TestWeaveFabricState.cpp TestPersistedStorageImplementation.cpp
TestWeaveFabricState_LDFLAGS             = $(AM_CPPFLAGS)
TestWeaveFabricState_LDADD               = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestWeaveMessageLayer_SOURCES            = TestWeaveMessageLayer.cpp
TestWeaveMessageLayer_LDFLAGS            = $(AM_CPPFLAGS)
TestWeaveMessageLayer_LDADD              = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestWeaveProvBundle_SOURCES              = TestWeaveProvBundle.cpp
TestWeaveProvBundle_LDFLAGS              = $(AM_CPPFLAGS)
TestWeaveProvBundle_LDADD                = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestWeaveSignature_SOURCES               = TestWeaveSignature.cpp
TestWeaveSignature_LDFLAGS               = $(AM_CPPFLAGS)
TestWeaveSignature_LDADD                 = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestWeaveTunnelBR_SOURCES                = TestWeaveTunnelBR.cpp
TestWeaveTunnelBR_LDFLAGS                = $(AM_CPPFLAGS)
TestWeaveTunnelBR_LDADD                  = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestWeaveTunnelServer_SOURCES            = TestWeaveTunnelServer.cpp
TestWeaveTunnelServer_LDFLAGS            = $(AM_CPPFLAGS)
TestWeaveTunnelServer_LDADD              = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)


TestWdmNext_SOURCES                      = TestWdmNext.cpp						\
                                           MockSinkTraits.cpp						\
                                           MockSourceTraits.cpp						\
                                           MockLoggingManager.cpp					\
                                           MockEvents.cpp                                               \
                                           schema/nest/test/trait/TestATrait.cpp			\
                                           schema/nest/test/trait/TestBTrait.cpp			\
                                           schema/nest/test/trait/TestETrait.cpp			\
                                           schema/nest/test/trait/CommonStructEStructSchema.cpp \
                                           schema/nest/test/trait/StructEStructSchema.cpp \
                                           schema/nest/test/trait/NullableEStructSchema.cpp \
                                           schema/weave/trait/locale/LocaleSettingsTrait.cpp		\
                                           schema/weave/trait/locale/LocaleCapabilitiesTrait.cpp	\
                                           schema/weave/trait/security/BoltLockSettingsTrait.cpp	\
                                           schema/weave/trait/telemetry/NetworkWiFiTelemetryTrait.cpp	\
                                           MockWdmViewServer.cpp					\
                                           MockWdmViewClient.cpp					\
                                           MockWdmSubscriptionInitiator.cpp				\
                                           MockWdmTestVerifier.cpp	        			\
                                           MockWdmSubscriptionResponder.cpp				\
                                           WdmNextPerfUtility.cpp					\
                                           TestProfile.cpp

TestWdmNext_CPPFLAGS                     = $(AM_CPPFLAGS) -I$(top_srcdir)/src/test-apps/schema
TestWdmNext_LDFLAGS                      = $(AM_CPPFLAGS)
TestWdmNext_LDADD                        = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

infratest_SOURCES                        = infratest.cpp
infratest_LDADD                          = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

mock_device_SOURCES                      = mock-device.cpp                                          \
                                           MockDCLPServer.cpp                                       \
                                           MockDCServer.cpp                                         \
                                           MockDDServer.cpp                                         \
                                           MockDMPublisher.cpp                                      \
                                           MockFPServer.cpp                                         \
                                           MockNPServer.cpp                                         \
                                           MockOpActions.cpp                                        \
                                           MockPairingServer.cpp                                    \
                                           MockSPServer.cpp                                         \
                                           MockTimeSyncServer.cpp                                   \
                                           MockTimeSyncClient.cpp                                   \
                                           MockTimeSyncCoordinator.cpp                              \
                                           MockTimeSyncUtil.cpp                                     \
                                           MockTokenPairingServer.cpp                               \
                                           MockAlarmOriginator.cpp                                  \
                                           MockAlarmRemote.cpp                                      \
                                           MockSinkTraits.cpp                                       \
                                           MockSourceTraits.cpp                                     \
                                           schema/nest/test/trait/TestATrait.cpp                    \
                                           schema/nest/test/trait/TestBTrait.cpp                    \
                                           schema/nest/test/trait/TestETrait.cpp                    \
                                           schema/nest/test/trait/CommonStructEStructSchema.cpp \
                                           schema/nest/test/trait/StructEStructSchema.cpp \
                                           schema/nest/test/trait/NullableEStructSchema.cpp \
                                           schema/weave/trait/locale/LocaleSettingsTrait.cpp        \
                                           schema/weave/trait/locale/LocaleCapabilitiesTrait.cpp    \
                                           schema/weave/trait/security/BoltLockSettingsTrait.cpp    \
                                           schema/weave/trait/telemetry/NetworkWiFiTelemetryTrait.cpp \
                                           MockWdmViewServer.cpp                                    \
                                           MockWdmViewClient.cpp                                    \
                                           MockWdmSubscriptionInitiator.cpp                         \
                                           MockWdmTestVerifier.cpp	                            \
                                           MockWdmSubscriptionResponder.cpp                         \
                                           MockLoggingManager.cpp                                   \
                                           MockEvents.cpp                                           \
                                           TestProfile.cpp

TestErrorStr_SOURCES                     = TestErrorStr.cpp
TestErrorStr_LDADD                       = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestStatusReportStr_SOURCES              = TestStatusReportStr.cpp
TestStatusReportStr_LDADD                = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestThermostatStatus_SOURCES             = TestThermostatStatus.cpp
TestThermostatStatus_LDADD               = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestPairingCodeUtils_SOURCES             = TestPairingCodeUtils.cpp
TestPairingCodeUtils_LDADD               = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

TestDNSResolution_SOURCES                = TestDNSResolution.cpp
TestDNSResolution_LDFLAGS                = $(AM_CPPFLAGS)
TestDNSResolution_LDADD                  = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

mock_device_CPPFLAGS                     = $(AM_CPPFLAGS) -I$(top_srcdir)/src/test-apps/schema
mock_device_LDADD                        = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

if CONFIG_BLE_PLATFORM_BLUEZ
mock_device_LDADD                       +=  @GLIB_LIBS@ @DBUS_LIBS@ -ldl -lrt
endif

mock_device_LDFLAGS                      = $(AM_CPPFLAGS)

mock_tunnel_service_SOURCES              = mock-tunnel-service.cpp
mock_tunnel_service_LDFLAGS              = $(AM_CPPFLAGS)
mock_tunnel_service_LDADD                = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

mock_weave_bg_SOURCES                    = mock-weave-bg.cpp
mock_weave_bg_LDFLAGS                    = $(AM_CPPFLAGS)
mock_weave_bg_LDADD                      = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

wdmtest_SOURCES                          = wdmtest.cpp
wdmtest_LDFLAGS                          = $(AM_CPPFLAGS)
wdmtest_LDADD                            = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

weave_bdx_client_development_SOURCES     = weave-bdx-client-development.cpp  \
                                           weave-bdx-common-development.cpp
weave_bdx_client_development_LDFLAGS     = $(AM_CPPFLAGS)
weave_bdx_client_development_LDADD       = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

weave_bdx_server_development_SOURCES     = weave-bdx-server-development.cpp  \
                                           weave-bdx-common-development.cpp
weave_bdx_server_development_LDFLAGS     = $(AM_CPPFLAGS)

weave_bdx_server_development_LDADD       = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

if WEAVE_WITH_CURL
weave_bdx_client_development_LDADD      += $(CURL_LIBS)
weave_bdx_server_development_LDADD      += $(CURL_LIBS)
endif # WEAVE_WITH_CURL

weave_bdx_client_v0_SOURCES              = weave-bdx-client-v0.cpp
weave_bdx_client_v0_LDFLAGS              = ${AM_CPPFLAGS}
weave_bdx_client_v0_LDADD                = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

weave_bdx_server_v0_SOURCES              = weave-bdx-server-v0.cpp              \
                                           nlweavebdxserver.cpp
weave_bdx_server_v0_LDFLAGS              = ${AM_CPPFLAGS}
weave_bdx_server_v0_LDADD                = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

weave_connection_tunnel_SOURCES          = weave-connection-tunnel.cpp
weave_connection_tunnel_LDFLAGS          = ${AM_CPPFLAGS}
weave_connection_tunnel_LDADD            = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

weave_dd_client_SOURCES                  = weave-dd-client.cpp
weave_dd_client_LDFLAGS                  = ${AM_CPPFLAGS}
weave_dd_client_LDADD                    = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

weave_device_descriptor_SOURCES          = weave-device-descriptor.cpp
weave_device_descriptor_LDFLAGS          = ${AM_CPPFLAGS}
weave_device_descriptor_LDADD            = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

weave_heartbeat_SOURCES                  = weave-heartbeat.cpp
weave_heartbeat_LDFLAGS                  = ${AM_CPPFLAGS}
weave_heartbeat_LDADD                    = libWeaveTestCommon.a  $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

weave_key_export_SOURCES                 = weave-key-export.cpp
weave_key_export_LDFLAGS                 = ${AM_CPPFLAGS}
weave_key_export_LDADD                   = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

weave_ping_SOURCES                       = weave-ping.cpp
weave_ping_LDFLAGS                       = ${AM_CPPFLAGS}
weave_ping_LDADD                         = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

weave_service_dir_SOURCES                = weave-service-dir.cpp \
                                           MockSDServer.cpp
weave_service_dir_LDFLAGS                = ${AM_CPPFLAGS}
weave_service_dir_LDADD                  = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

weave_swu_client_SOURCES                 = weave-swu-client.cpp  \
                                           nlweaveswuclient.cpp  \
                                           MockIAServer.cpp
weave_swu_client_LDFLAGS                 = ${AM_CPPFLAGS}
weave_swu_client_LDADD                   = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

weave_swu_server_SOURCES                 = weave-swu-server.cpp  \
                                           MockSWUServer.cpp
weave_swu_server_LDFLAGS                 = ${AM_CPPFLAGS}
weave_swu_server_LDADD                   = libWeaveTestCommon.a $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

wsuptest_SOURCES                         = wsuptest.cpp
wsuptest_LDADD                           = $(COMMON_LDADD) $(TEST_PLATFORM_LDADD)

if WEAVE_BUILD_COVERAGE
CLEANFILES                               = $(wildcard *.gcda *.gcno)

if WEAVE_BUILD_COVERAGE_REPORTS
# The bundle should positively be qualified with the absolute build
# path. Otherwise, VPATH will get auto-prefixed to it if there is
# already such a directory in the non-colocated source tree.

WEAVE_COVERAGE_BUNDLE                    = ${abs_builddir}/${PACKAGE}${NL_COVERAGE_BUNDLE_SUFFIX}
WEAVE_COVERAGE_INFO                      = ${WEAVE_COVERAGE_BUNDLE}/${PACKAGE}${NL_COVERAGE_INFO_SUFFIX}

WEAVE_LIBS_COVERAGE_BUNDLE               = ${abs_builddir}/${PACKAGE}-libs${NL_COVERAGE_BUNDLE_SUFFIX}
WEAVE_LIBS_COVERAGE_SOURCE               = ${abs_builddir}/${PACKAGE}-libs
WEAVE_LIBS_COVERAGE_INFO                 = ${WEAVE_LIBS_COVERAGE_BUNDLE}/${PACKAGE}-libs${NL_COVERAGE_INFO_SUFFIX}

$(WEAVE_COVERAGE_BUNDLE):
	$(call create-directory)

$(WEAVE_LIBS_COVERAGE_SOURCE):
	$(call create-directory)

$(WEAVE_LIBS_COVERAGE_BUNDLE):
	$(call create-directory)

$(WEAVE_COVERAGE_INFO): check | $(WEAVE_COVERAGE_BUNDLE)
	$(call generate-coverage-report,${abs_top_builddir})

# collect all the *.gcno & *gcda files of libWeave.a for Weave Library coverage analysis, rename the *h file paths to make it a clean report
$(WEAVE_LIBS_COVERAGE_INFO): $(WEAVE_COVERAGE_INFO) | $(WEAVE_LIBS_COVERAGE_BUNDLE) $(WEAVE_LIBS_COVERAGE_SOURCE)
	$(AM_V_at)find ${abs_top_builddir} -name "libWeave_a*.gc*" ! -path "${WEAVE_LIBS_COVERAGE_SOURCE}/*" | xargs -i cp {} ${WEAVE_LIBS_COVERAGE_SOURCE}
	$(call generate-coverage-report,${WEAVE_LIBS_COVERAGE_SOURCE})
	$(AM_V_at)$(SED) \
	    -e 's,${abs_top_builddir},$(abspath ${abs_top_srcdir}),g' \
	    -e 's,include/BleLayer/,ble/,g' \
	    -e 's,include/InetLayer/,inet/,g' \
	    -e 's,include/SystemLayer/,system/,g' \
	    -e 's,include/Warm/,warm/,g' \
	    -e 's,include/Weave/Core/,lib/core/,g' \
	    -e 's,include/Weave/Profiles/,lib/profiles/,g' \
	    -e 's,include/Weave/Support/,lib/support/,g' \
	    -e '/\/nlio/,/end_of_record/'d \
	    < $(@) \
	    > $(@).clean
	$(NL_V_GENHTML)$(GENHTML) $(NL_V_GENHTML_FLAGS) --config-file="$(abs_top_nlbuild_autotools_dir)/etc/lcov.config" $(WEAVE_LIBS_COVERAGE_INFO).clean --output-directory $(WEAVE_LIBS_COVERAGE_BUNDLE)
	$(AM_V_at)rm -rf $(WEAVE_LIBS_COVERAGE_SOURCE)

coverage: $(WEAVE_LIBS_COVERAGE_INFO)

clean-local: clean-local-coverage

.PHONY: clean-local-coverage
clean-local-coverage:
	-$(AM_V_at)rm -rf $(WEAVE_COVERAGE_BUNDLE)
	-$(AM_V_at)rm -rf $(WEAVE_LIBS_COVERAGE_BUNDLE)
endif # WEAVE_BUILD_COVERAGE_REPORTS
endif # WEAVE_BUILD_COVERAGE

# Targets and commands for installing and uninstalling the bin_LINKS
# programs as symbolic links which are trampolined through an
# execution script.

install-exec-local: install-exec-binLINKS

uninstall-local: uninstall-exec-binLINKS

install-exec-binLINKS: $(bin_LINKS)
	@$(NORMAL_INSTALL)
	@list='$(bin_LINKS)'; test -n "$(bindir)" || list=; \
	if test -n "$$list"; then \
          echo "  MKDIR    $(DESTDIR)$(bindir)"; \
	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
	fi; \
	for link in $${list}; do \
            echo "  LN       $${link}"; \
	    $(LN_S) -f "../`echo ${libexecdir} | sed -e 's,${exec_prefix}/,,g'`/weave-run" "$(DESTDIR)$(bindir)/$${link}"; \
        done

uninstall-exec-binLINKS: $(bin_LINKS)
	@$(NORMAL_UNINSTALL)
	@list='$(bin_LINKS)'; test -n "$(bindir)" || exit 0; \
	files=`for p in $$list; do echo "$$p"; done | \
	       sed -e 's,.*/,,;$(transform)'`; \
	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
endif # WEAVE_BUILD_TESTS

include $(abs_top_nlbuild_autotools_dir)/automake/post.am
