From d163648a4d94f836589c9f627d5888f97673e13d Mon Sep 17 00:00:00 2001 From: Gwendolyn Date: Tue, 11 Jan 2022 19:30:53 +0100 Subject: [PATCH] rework cmake a bit --- CMakeLists.txt | 20 +++++--------------- examples/CMakeLists.txt | 31 ++++++++++++++++--------------- src/CMakeLists.txt | 17 +++++++++++++---- 3 files changed, 34 insertions(+), 34 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 902d724..b5973b3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,21 +15,11 @@ option(XTEST_ENABLE_PRNG "enable prng functions" ON) add_subdirectory(src) - -function(add_xtest_executable TARGET) - add_executable(${TARGET} ${ARGN}) - set(XTEST_COMPILE_DEFS XTEST) - if (XTEST_ENABLE_PRNG) - set(XTEST_COMPILE_DEFS ${XTEST_COMPILE_DEFS} XTEST_PRNG) - endif () - target_compile_definitions(${TARGET} PRIVATE ${XTEST_COMPILE_DEFS}) - target_include_directories(${TARGET} AFTER PRIVATE "${XTEST_SOURCE_DIR}/include/xtest") - target_include_directories(${TARGET} SYSTEM BEFORE PRIVATE "${XTEST_SOURCE_DIR}/include/xtest-assert") - target_link_libraries(${TARGET} xtest) -endfunction() - +add_library(xtest-assert INTERFACE) +target_include_directories(xtest-assert SYSTEM BEFORE INTERFACE "${XTEST_SOURCE_DIR}/include/xtest-assert") +target_compile_definitions(xtest-assert INTERFACE XTEST) option(XTEST_BUILD_EXAMPLES "build the xtest examples" OFF) -if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) +if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND XTEST_BUILD_EXAMPLES) add_subdirectory(examples) -endif() \ No newline at end of file +endif () diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 5ae8e71..4705c35 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,21 +1,22 @@ +add_library(tested-code source.c) +target_link_libraries(tested-code xtest-assert) + function(xtest_define_example NAME) set(TARGET_NAME "example-${NAME}") - add_xtest_executable(${TARGET_NAME} source.c ${NAME}.c ${ARGN}) + add_executable(${TARGET_NAME} ${NAME}.c ${ARGN}) if (NAME STREQUAL "all") - set(EXAMPLE_COMPILE_DEFINITIONS ${EXAMPLE_COMPILE_DEFINITIONS} XTEST_ALL_EXAMPLES) + target_compile_definitions(${TARGET_NAME} PRIVATE XTEST_ALL_EXAMPLES) endif () - target_compile_definitions(${TARGET_NAME} PRIVATE ${EXAMPLE_COMPILE_DEFINITIONS}) - target_compile_options(${TARGET_NAME} PRIVATE -Wall -Wextra -pedantic) + target_link_libraries(${TARGET_NAME} xtest tested-code) endfunction() -if (XTEST_BUILD_EXAMPLES) - xtest_define_example(all assertions.c expect_assertions.c fail.c float.c groups.c parameterized.c prng.c skip.c) - xtest_define_example(assertions) - xtest_define_example(expect_assertions) - xtest_define_example(fail) - xtest_define_example(float) - xtest_define_example(groups) - xtest_define_example(parameterized) - xtest_define_example(prng) - xtest_define_example(skip) -endif () \ No newline at end of file + +xtest_define_example(all assertions.c expect_assertions.c fail.c float.c groups.c parameterized.c prng.c skip.c) +xtest_define_example(assertions) +xtest_define_example(expect_assertions) +xtest_define_example(fail) +xtest_define_example(float) +xtest_define_example(groups) +xtest_define_example(parameterized) +xtest_define_example(prng) +xtest_define_example(skip) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 25bbdce..1390711 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,11 +1,20 @@ +set(XTEST_LINK_LIBRARIES "") + if(XTEST_ENABLE_PRNG) - set(XTEST_ADDITIONAL_SOURCES ${XTEST_SOURCE_DIR}/extern/pcg/pcg_basic.c) + add_library(pcg ${XTEST_SOURCE_DIR}/extern/pcg/pcg_basic.c) + set(XTEST_LINK_LIBRARIES ${XTEST_LINK_LIBRARIES} pcg) set(XTEST_ADDITIONAL_DEFINES XTEST_PRNG) + find_library(MATH_LIBRARY m) + if(MATH_LIBRARY) + set(XTEST_LINK_LIBRARIES ${XTEST_LINK_LIBRARIES} ${MATH_LIBRARY}) + endif() endif() -add_library(xtest xtest.c ${XTEST_ADDITIONAL_SOURCES}) -target_compile_definitions(xtest PRIVATE XTEST ${XTEST_ADDITIONAL_DEFINES}) +add_library(xtest xtest.c) target_compile_options(xtest PRIVATE -Wall -Wextra -pedantic) -target_include_directories(xtest PRIVATE ${XTEST_SOURCE_DIR}/extern/pcg ${XTEST_SOURCE_DIR}/include/xtest) +target_include_directories(xtest PRIVATE ${XTEST_SOURCE_DIR}/extern/pcg) +target_link_libraries(xtest PRIVATE ${XTEST_LINK_LIBRARIES}) +target_compile_definitions(xtest PUBLIC XTEST ${XTEST_ADDITIONAL_DEFINES}) +target_include_directories(xtest PUBLIC ${XTEST_SOURCE_DIR}/include/xtest)