#
#    Copyright (c) 2013 Nest Labs, Inc.
#    All rights reserved.
#
#    This document is the property of Nest Labs. It is considered
#    confidential and proprietary information.
#
#    This document may not be reproduced or transmitted in any form,
#    in whole or in part, without the express written permission of
#    Nest Labs.
#
#    Description:
#      This file is a make file for the Network Manager gtest tests.
#
include pre.mak

VPATH                             += .                                                        \
                                    /nlnetworkmanager

IncludeFiles                       = networkmanager-gtest-config.h

ARCHIVES                           = gtest-tests

gtest-tests_SOURCES                = \
                                     nlgtest-test-lists.cpp 

gtest-tests-simulator_INCLUDES     = $(FreeRTOSIncludePaths)                                  \
                                     $(LwIPIncludePaths)

gtest-tests-darwin_INCLUDES        = $(gtest-tests-simulator_INCLUDES)

gtest-tests-linux_INCLUDES         = $(gtest-tests-simulator_INCLUDES)

gtest-tests-freertos_INCLUDES      = $(FreeRTOSIncludePaths)                                  \
                                     $(LwIPIncludePaths)                                      \
                                     $(WicedIncludePaths)                                     \
                                     $(SilabsIncludePaths)                                    \
                                     $(NlWicedIncludePath)                                    \
                                     $(NlEmberIncludePath)

gtest-tests_INCLUDES              += \
                                    $(NlNetworkManagerIncludePaths)                         \
                                    $(CMSISIncludePaths)                                    \
                                    $(NlCompilerIncludePath)                                \
                                    $(NlInetIncludePath)                                    \
                                    $(NlFsmIncludePath)                                     \
                                    $(NlLogIncludePath)                                     \
                                    $(NlLwipIncludePath)                                    \
                                    $(NlSystemIncludePath)                                  \
                                    $(NlTlvIncludePath)                                     \
                                    $(NlPlatformIncludePath)                                \
                                    $(NlTemplatesIncludePath)                               \
                                    $(NlAssertIncludePaths)                                 \
                                    $(NlUtilitiesIncludePath)                               \
                                    $(NlIoIncludePaths)                                     \
                                    $(NlWeaveIncludePath)                                   \
                                    $(NlWeaveProjectIncludePath)                            \
                                    $(NlWirelessRegIncludePath)                             \
                                    $(NlWirelessCalIncludePath)                             \
                                    $(NlWirelessCalPlatformIncludePath)                     \
                                    $(NlWpanIncludePath)                                    \
                                    $(RADaemonIncludePath)                                  \
                                    $(NLERIncludePaths)                                     \
                                    $(NlDataStructuresIncludePath)                          \
                                    $(addprefix $(BuildRoot)/,$(NlNMPlatformIncludeDirs))   \
                                    $(NlConnectIPIncludePath)                               \
                                    $(AppsIncludePaths)                                     \
                                    $(NlEnvIncludePaths)                                    \
                                    $(NlShellCommandsIncludePaths)                          \
                                    $(GTestIncludePaths)

gtest-tests_INCLUDES	           += $(gtest-tests-$(TargetOS)_INCLUDES)

gtest_DEFINES  += $(SilabsDefines)

include post.mak
