@@ -28,15 +28,13 @@ set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -pipe") # NOTE: -march=nativ
28
28
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /${CMAKE_INSTALL_LIBDIR} )
29
29
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /${CMAKE_INSTALL_BINDIR} )
30
30
31
- # ---- Configure README --------------------------------------------------------
31
+ # ---- Configure ------- --------------------------------------------------------
32
32
33
33
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR} /configure/README.md )
34
34
configure_file (${CMAKE_CURRENT_SOURCE_DIR} /configure/README.md
35
35
${CMAKE_CURRENT_SOURCE_DIR} /README.md )
36
36
endif ()
37
37
38
- # ---- Configure Headers -------------------------------------------------------
39
-
40
38
string (TIMESTAMP ${PROJECT_NAME} _BUILD_DATE "%Y/%m/%d-%H:%M:%S" )
41
39
42
40
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR} /.git)
@@ -96,7 +94,7 @@ target_include_directories(kernel PUBLIC
96
94
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >)
97
95
98
96
target_link_libraries (kernel PRIVATE stdc++fs
99
- PUBLIC ${CMAKE_DL_LIBS}
97
+ PRIVATE ${CMAKE_DL_LIBS}
100
98
PUBLIC gmp)
101
99
102
100
set_target_properties (
@@ -146,14 +144,6 @@ install(EXPORT ${PROJECT_NAME}-config
146
144
install (FILES ${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} -config-version .cmake
147
145
DESTINATION ${CMAKE_INSTALL_DATADIR} /${PROJECT_NAME} )
148
146
149
- # ---- Target uninstall --------------------------------------------------------
150
-
151
- add_custom_target (uninstall
152
- COMMAND sudo rm -rf ${CMAKE_INSTALL_PREFIX} /${CMAKE_INSTALL_BINDIR} /${PROJECT_NAME}
153
- COMMAND sudo rm -rf ${CMAKE_INSTALL_PREFIX} /${CMAKE_INSTALL_INCLUDEDIR} /${PROJECT_NAME}
154
- COMMAND sudo rm -rf ${CMAKE_INSTALL_PREFIX} /${CMAKE_INSTALL_LIBDIR} /${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME} *
155
- COMMAND sudo rm -rf ${CMAKE_INSTALL_PREFIX} /${CMAKE_INSTALL_DATADIR} /${PROJECT_NAME} )
156
-
157
147
# ---- Target package ----------------------------------------------------------
158
148
159
149
set (CPACK_GENERATOR DEB)
@@ -171,23 +161,42 @@ include(CPack)
171
161
172
162
enable_testing ()
173
163
174
- set (MEMCHECK valgrind --error-exitcode=1 # = EXIT_FAILURE
175
- --leak-check=full
176
- --quiet
177
- --show-leak-kinds=all )
178
-
179
- macro (define_test TEST_NAME)
164
+ macro (check TEST_NAME)
180
165
add_test (NAME ${TEST_NAME}
181
- COMMAND ${MEMCHECK}
182
- ${CMAKE_CURRENT_BINARY_DIR} /${CMAKE_INSTALL_BINDIR} /meevax
166
+ COMMAND valgrind --error-exitcode=1 # = EXIT_FAILURE
167
+ --leak-check=full
168
+ --quiet
169
+ --show-leak-kinds=all
170
+ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /meevax
183
171
${CMAKE_CURRENT_SOURCE_DIR} /test /${TEST_NAME} .ss)
184
172
endmacro ()
185
173
186
- define_test(abandoned)
187
- define_test(chibi-basic)
188
- define_test(low-level-macro-facility)
189
- define_test(numerical-operations)
190
- define_test(r4rs)
191
- define_test(r4rs-appendix)
192
- define_test(r7rs)
193
- define_test(sicp-1)
174
+ check(abandoned)
175
+ check(chibi-basic)
176
+ check(low-level-macro-facility)
177
+ check(numerical-operations)
178
+ check(r4rs)
179
+ check(r4rs-appendix)
180
+ check(r7rs)
181
+ check(sicp-1)
182
+
183
+ file (GLOB ${PROJECT_NAME} _TEST_CXX ${CMAKE_CURRENT_SOURCE_DIR} /test /*.cpp)
184
+ foreach (FILEPATH IN LISTS ${PROJECT_NAME} _TEST_CXX)
185
+ get_filename_component (FILENAME ${FILEPATH} NAME_WE )
186
+ add_executable (assert-${FILENAME} ${FILEPATH} )
187
+ target_link_libraries (assert-${FILENAME} PRIVATE kernel)
188
+ add_test (NAME assert-${FILENAME}
189
+ COMMAND valgrind --error-exitcode=1 # = EXIT_FAILURE
190
+ --leak-check=full
191
+ --quiet
192
+ --show-leak-kinds=all
193
+ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /assert-${FILENAME} )
194
+ endforeach ()
195
+
196
+ # ---- Target all+ -------------------------------------------------------------
197
+
198
+ execute_process (COMMAND nproc OUTPUT_VARIABLE NPROC)
199
+
200
+ add_custom_target (all + COMMAND make all -j ${NPROC}
201
+ COMMAND ${CMAKE_CTEST_COMMAND} -j ${NPROC}
202
+ COMMAND ${CMAKE_CPACK_COMMAND} )
0 commit comments