blob: 5a547117121b4604b0472858647fa0c12220e5ac [file] [log] [blame]
cmake_minimum_required(VERSION 3.4)
project(nativeclient.tests.cppcache)
#TODO move to config.h when not building shared ace
add_definitions(-D__ACE_INLINE__)
add_definitions(-DACE_AS_STATIC_LIBS)
# Common sources for all tests.
set(TEST_UTILS_LIB test-cppcache-utils)
add_library(${TEST_UTILS_LIB} STATIC fw_dunit.cpp BBNamingContext.cpp CacheHelper.cpp)
target_link_libraries(${TEST_UTILS_LIB}
PRIVATE
${ACE_STATIC_LIB}
PUBLIC
gfcppcache
fwk
)
add_dependencies(${TEST_UTILS_LIB} ACE)
add_library(unit_test_callbacks SHARED LibraryCallbacks.cpp)
target_link_libraries(unit_test_callbacks
PRIVATE
${ACE_STATIC_LIB}
PUBLIC
gfcppcache
)
add_dependencies(unit_test_callbacks ACE)
enable_testing()
# Function to resolve both config and generate stage variables.
macro(generate_config INPUT TEMP OUTPUT)
configure_file(${INPUT} ${TEMP})
file(GENERATE OUTPUT ${OUTPUT}
INPUT ${TEMP}
CONDITION 1
)
endmacro()
set (PORT 20000)
file(GLOB SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "test*.cpp")
foreach(FILE ${SOURCES})
string(REGEX REPLACE "\\.cpp" "" TEST ${FILE})
set(TESTS ${TESTS} ${TEST})
add_executable(${TEST} ${FILE})
set_target_properties(${TESTS} PROPERTIES FOLDER test/cppTests)
target_link_libraries(${TEST}
PRIVATE
#TODO ACE only needed for 1 test
${ACE_STATIC_LIB}
PUBLIC
${TEST_UTILS_LIB}
gfcppcache
testobject
fwk
)
# Some tests depend on these library
add_dependencies(${TEST} securityImpl cryptoImpl DHImpl SqLiteImpl)
set(TEST_DIR ${CMAKE_CURRENT_BINARY_DIR}/.tests/${TEST})
math(EXPR PORT "${PORT} + 1")
# TODO path to DYLD ACE
# TODO path to Gemfire
# TODO build javaobject.jar
if (WIN32)
set (TEST_SCRIPT_SUFFIX .bat)
generate_config(${CMAKE_CURRENT_SOURCE_DIR}/test.bat.in ${CMAKE_CURRENT_BINARY_DIR}/.${TEST}.bat.in $<TARGET_FILE:${TEST}>${TEST_SCRIPT_SUFFIX})
set(TEST_COMMAND $<TARGET_FILE:${TEST}>${TEST_SCRIPT_SUFFIX})
else()
set (TEST_SCRIPT_SUFFIX .sh)
generate_config(${CMAKE_CURRENT_SOURCE_DIR}/test.sh.in ${CMAKE_CURRENT_BINARY_DIR}/.${TEST}.sh.in $<TARGET_FILE:${TEST}>${TEST_SCRIPT_SUFFIX})
# TODO fix file permissions on .sh
set(TEST_COMMAND bash $<TARGET_FILE:${TEST}>${TEST_SCRIPT_SUFFIX})
endif()
add_test(NAME ${TEST}
COMMAND ${TEST_COMMAND}
)
endforeach()
configure_file(CTestCustom.cmake.in CTestCustom.cmake)
#TODO is this correct for config.h
include_directories(${CMAKE_BINARY_DIR}/cppcache)
include_directories(${CMAKE_BINARY_DIR}/cppcache/include)
#TODO this is really odd
include_directories(${CMAKE_SOURCE_DIR}/cppcache)
include_directories(${CMAKE_SOURCE_DIR}/cppcache/impl)
#TODO this is really bad that we include the root of tests
include_directories(${CMAKE_SOURCE_DIR}/tests)
#TODO fix dependencies include paths
include_directories(${DEPENDENCIES_ACE_DIR}/include)