Spider2/CMakeLists.txt

53 lines
1.9 KiB
CMake

cmake_minimum_required(VERSION 3.10)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE INTERNAL "")
set(CMAKE_C_FLAGS_RELEASE_INIT "-Wall -Wextra -Wpedantic -Wno-language-extension-token -Wno-gnu-statement-expression-from-macro-expansion")
set(CMAKE_C_FLAGS_DEBUG_INIT "${CMAKE_C_FLAGS_RELEASE_INIT} -gdwarf-4")
project(Spider2 VERSION 1.0)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
find_package(CURL REQUIRED)
# Main executable
file(GLOB_RECURSE srcFiles src/*.c)
add_executable(${PROJECT_NAME} ${srcFiles})
target_link_libraries(${PROJECT_NAME} CURL::libcurl)
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_link_options(${PROJECT_NAME} PRIVATE -ltidy)
# Tests
include(CTest)
#file(GLOB_RECURSE testsToRun tests/*.c)
#list(FILTER srcFiles EXCLUDE REGEX main.c)
set(testsToRun tests/dynarr_extensions.c tests/dynarr_get.c tests/dynarr_get1_death.c tests/dynarr_get2_death.c tests/dynarr_get3_death.c tests/dynarr_insert.c tests/deque_push.c tests/deque_pop.c tests/json_write.c tests/hset_iter.c tests/hset_add.c)
create_test_sourcelist(tests CommonTests.c ${testsToRun})
add_executable(CommonTests ${tests} src/util.c src/json.c)
target_link_libraries(CommonTests CURL::libcurl)
target_include_directories(CommonTests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_compile_options(CommonTests PRIVATE -gdwarf-4)
target_link_options(CommonTests PRIVATE -gdwarf-4)
#target_compile_options(CommonTests PRIVATE -gdwarf-4 -pg)
#target_link_options(CommonTests PRIVATE -gdwarf-4 -pg)
foreach(testFile IN LISTS testsToRun)
get_filename_component(testName ${testFile} NAME_WE)
add_test(NAME ${testName} COMMAND CommonTests tests/${testName})
string(REGEX MATCH "_death$" shouldDie ${testName})
if(shouldDie)
set_property(TEST ${testName} PROPERTY WILL_FAIL ON)
endif()
endforeach()
# Install rules
install(TARGETS Spider2)