-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathCMakeLists.txt
137 lines (122 loc) · 4.33 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
cmake_minimum_required(VERSION 2.8)
project(nbdl_project)
enable_testing()
add_custom_target(check
COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure --exclude-regex "individual"
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Running high level tests."
)
#TODO require
set(dom_test_dir ${CMAKE_BINARY_DIR}/tool/dom_test)
add_subdirectory(tool/dom_test)
if (EMSCRIPTEN)
set(NBDL_TEST_COMMAND "node")
endif(EMSCRIPTEN)
function(nbdl_add_test name_)
string(REPLACE "/" "." name ${name_})
add_executable("${name}" EXCLUDE_FROM_ALL ${ARGN})
add_dependencies(check "${name}")
if (NBDL_ENABLE_MEMCHECK)
add_test(
NAME ${name}
COMMAND ${Valgrind_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/${name} --leak-check=full --error-exitcode=1
)
else()
add_test(
NAME ${name}
COMMAND ${NBDL_TEST_COMMAND} ./${name}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
endif()
add_custom_target(run.${name}
COMMAND ${NBDL_TEST_COMMAND} ./${name}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Build and run test: ${name}"
)
add_dependencies(run.${name} ${name})
endfunction()
function(nbdl_catch_test_suite out suite_name)
set(_catch_main ${nbdl_project_SOURCE_DIR}/test/catch_main.cpp)
foreach(_source IN ITEMS ${ARGN})
string(REPLACE ".cpp" "" __name ${_source})
string(REPLACE "/" "." _name ${__name})
list(APPEND _build_targets "individual.${suite_name}.${_name}")
nbdl_add_test("individual.${suite_name}.${_name}" ${_catch_main} ${_source})
endforeach()
nbdl_add_test(${suite_name} ${_catch_main} ${ARGN})
list(APPEND _build_targets "${suite_name}")
set(${out} ${_build_targets} PARENT_SCOPE)
endfunction()
function(nbdl_add_dom_test name_)
string(REPLACE "/" "." name ${name_})
if (NOT EMSCRIPTEN)
nbdl_add_test(${ARGV})
return()
endif(NOT EMSCRIPTEN)
add_executable("${name}" EXCLUDE_FROM_ALL ${ARGN})
add_dependencies(check "${name}")
add_dependencies(${name} tool.dom_test)
get_target_property(link_flags_ ${name} LINK_FLAGS)
set_target_properties(${name} PROPERTIES LINK_FLAGS
"${link_flags} -lembind -s ASSERTIONS=1 -s ENVIRONMENT=node "
)
add_test(
NAME ${name}
COMMAND ${NBDL_TEST_COMMAND} ${dom_test_dir}/index.js ./${name}.js
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
add_custom_target(run.${name}
COMMAND ${NBDL_TEST_COMMAND} ${dom_test_dir}/index.js ./${name}.js
DEPENDS ${name} tool.dom_test
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Build and run test: ${name}"
)
endfunction()
function(nbdl_catch_dom_test_suite out suite_name)
if (NOT EMSCRIPTEN)
nbdl_catch_test_suite(${ARGV})
return()
endif(NOT EMSCRIPTEN)
set(_catch_main ${nbdl_project_SOURCE_DIR}/test/catch_main.cpp)
foreach(_source IN ITEMS ${ARGN})
string(REPLACE ".cpp" "" _name ${_source})
list(APPEND _build_targets "individual.${suite_name}.${_name}")
nbdl_add_dom_test("individual.${suite_name}.${_name}" ${_catch_main} ${_source})
endforeach()
nbdl_add_dom_test(${suite_name} ${_catch_main} ${ARGN})
list(APPEND _build_targets "${suite_name}")
set(${out} ${_build_targets} PARENT_SCOPE)
endfunction()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++23") # -fheavy
add_definitions(-DBOOST_HANA_CONFIG_ENABLE_STRING_UDL)
add_definitions(-ftemplate-backtrace-limit=0)
add_definitions(-Wall)
add_definitions(-Wextra)
add_definitions(-DBOOST_ASIO_NO_TYPEID)
if (${NBDL_USE_CATCH})
add_definitions(-DNBDL_USE_CATCH)
endif (${NBDL_USE_CATCH})
if (${EMSCRIPTEN})
# TODO don't use stringToAscii
set(
CMAKE_EXE_LINKER_FLAGS
"${CMAKE_EXE_LINKER_FLAGS} -s EXPORTED_RUNTIME_METHODS=\"['stringToAscii']\" -s EXPORTED_FUNCTIONS=\"['_main', '_malloc', '_free']\"")
else (${EMSCRIPTEN})
find_package(Threads)
endif (${EMSCRIPTEN})
find_library(JsonCpp jsoncpp)
if (${NBDL_HAS_UIKIT})
#add_definitions(-fmodules)
include_directories(
/opt/sysroot/System/Library/Frameworks/UIKit.framework/Headers
/opt/sysroot/System/Library/Frameworks
)
endif (${NBDL_HAS_UIKIT})
include_directories(${nbdl_project_SOURCE_DIR}/include)
add_subdirectory(test)
add_subdirectory(example/tiles)
add_subdirectory(example/pipes)
#add_subdirectory(metabench)
install(FILES include/nbdl.hpp DESTINATION include)
install(DIRECTORY include/nbdl DESTINATION include)
install(DIRECTORY include/mpdef DESTINATION include)