-
Notifications
You must be signed in to change notification settings - Fork 2
/
CMakeLists.txt
executable file
·42 lines (36 loc) · 2.35 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
cmake_minimum_required (VERSION 2.8.11)
set(CMAKE_C_STANDARD 11)
find_program (BASH_PROGRAM bash)
find_program (PYTHON3 python3)
project (LLV)
add_custom_target(single_source_header ${PYTHON3} ${PROJECT_SOURCE_DIR}/ssc.py ${PROJECT_SOURCE_DIR}/example/llv.h LLV ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/src WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
add_library(LLV src/collections/dll.c src/collections/ll.c src/helper.c src/llv.c src/list_helper.c src/array_helper.c src/general_collection_helper.c src/types/shared_types.c src/collections/array.c src/collections/queue.c src/collections/stack.c src/collections/list.c src/env_var.c)
add_custom_target(run_tests ${BASH_PROGRAM} ${PROJECT_SOURCE_DIR}/test_runner.sh ${CMAKE_CURRENT_BINARY_DIR} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
add_dependencies(run_tests LLV)
target_link_libraries(LLV m)
file( GLOB COLLECTION_TEST_SOURCES ${PROJECT_SOURCE_DIR}/collection_tests/*.c )
file( GLOB OUTPUT_TEST_SOURCES ${PROJECT_SOURCE_DIR}/output_tests/*.c )
foreach( test_file ${COLLECTION_TEST_SOURCES} )
get_filename_component( filename ${test_file} NAME )
string( REPLACE ".c" ".out" test_name ${filename} )
add_executable( ${test_name} ${test_file} )
target_link_libraries( ${test_name} LLV )
set_target_properties( ${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY collection_tests )
add_dependencies(run_tests ${test_name})
target_link_libraries(${test_name} m)
endforeach( test_file ${COLLECTION_TEST_SOURCES} )
foreach( test_file ${OUTPUT_TEST_SOURCES} )
get_filename_component( filename ${test_file} NAME )
string( REPLACE ".c" ".out" test_name ${filename} )
add_executable( ${test_name} ${test_file} )
target_link_libraries( ${test_name} LLV )
set_target_properties( ${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY output_tests )
add_dependencies(run_tests ${test_name})
target_link_libraries(${test_name} m)
endforeach( test_file ${COLLECTION_TEST_SOURCES} )
add_executable(example_tests ${PROJECT_SOURCE_DIR}/example/examples.c)
target_link_libraries(example_tests LLV)
add_dependencies(run_tests example_tests)
add_dependencies(example_tests single_source_header)
target_compile_definitions(example_tests PRIVATE TESTING=1)
add_custom_command(TARGET example_tests POST_BUILD COMMAND ${BASH_PROGRAM} -c "rm ${PROJECT_SOURCE_DIR}/example/llv.h" WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})