diff options
author | Arnaud Gelas <arnaud.gelas@sensefly.com> | 2019-08-21 09:30:37 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2019-10-16 09:05:18 +0200 |
commit | 86681906ba64b21010282ab81405e67165f80d0f (patch) | |
tree | fa9e3e29a335cc487bce23e830649e47b1062cd3 | |
parent | c151f45ed0fd0f2f9b5d5d1526d208471009b0fe (diff) | |
download | cmocka-86681906ba64b21010282ab81405e67165f80d0f.tar.gz cmocka-86681906ba64b21010282ab81405e67165f80d0f.tar.xz cmocka-86681906ba64b21010282ab81405e67165f80d0f.zip |
cmake: Make shared lib optional
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
-rw-r--r-- | DefineOptions.cmake | 8 | ||||
-rw-r--r-- | cmake/Modules/AddCMockaTest.cmake | 23 | ||||
-rw-r--r-- | example/CMakeLists.txt | 31 | ||||
-rw-r--r-- | example/mock/chef_wrap/CMakeLists.txt | 2 | ||||
-rw-r--r-- | example/mock/uptime/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/CMakeLists.txt | 96 | ||||
-rw-r--r-- | tests/CMakeLists.txt | 16 |
7 files changed, 76 insertions, 102 deletions
diff --git a/DefineOptions.cmake b/DefineOptions.cmake index 911ff1d..d281128 100644 --- a/DefineOptions.cmake +++ b/DefineOptions.cmake @@ -5,9 +5,7 @@ option(UNIT_TESTING "Build with unit testing" OFF) option(PICKY_DEVELOPER "Build with picky developer flags" OFF) if (WITH_STATIC_LIB) - set(BUILD_STATIC_LIB ON) + set(BUILD_SHARED_LIBS OFF) +else (WITH_STATIC_LIB) + set(BUILD_SHARED_LIBS ON) endif (WITH_STATIC_LIB) - -if (UNIT_TESTING) - set(BUILD_STATIC_LIB ON) -endif (UNIT_TESTING) diff --git a/cmake/Modules/AddCMockaTest.cmake b/cmake/Modules/AddCMockaTest.cmake index 2f45e1a..a347148 100644 --- a/cmake/Modules/AddCMockaTest.cmake +++ b/cmake/Modules/AddCMockaTest.cmake @@ -118,3 +118,26 @@ function(ADD_CMOCKA_TEST _TARGET_NAME) ) endfunction (ADD_CMOCKA_TEST) + +function(ADD_CMOCKA_TEST_ENVIRONMENT _TARGET_NAME) + if (WIN32 OR CYGWIN OR MINGW) + file(TO_NATIVE_PATH "${cmocka-library_BINARY_DIR}" CMOCKA_DLL_PATH) + + if (TARGET_SYSTEM_EMULATOR) + set(DLL_PATH_ENV "WINEPATH=${CMOCKA_DLL_PATH};$ENV{WINEPATH}") + else() + set(DLL_PATH_ENV "PATH=${CMOCKA_DLL_PATH};$ENV{PATH}") + endif() + # + # IMPORTANT NOTE: The set_tests_properties(), below, internally + # stores its name/value pairs with a semicolon delimiter. + # because of this we must protect the semicolons in the path + # + string(REPLACE ";" "\\;" DLL_PATH_ENV "${DLL_PATH_ENV}") + + set_tests_properties(${_TARGET_NAME} + PROPERTIES + ENVIRONMENT + "${DLL_PATH_ENV}") + endif() +endfunction() diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt index 8e80ee2..f983035 100644 --- a/example/CMakeLists.txt +++ b/example/CMakeLists.txt @@ -1,28 +1,5 @@ project(cmocka-examples C) -function(ADD_CMOCKA_TEST_ENVIRONMENT _TARGET_NAME) - if (WIN32 OR CYGWIN OR MINGW) - file(TO_NATIVE_PATH "${cmocka-library_BINARY_DIR}" CMOCKA_DLL_PATH) - - if (TARGET_SYSTEM_EMULATOR) - set(DLL_PATH_ENV "WINEPATH=${CMOCKA_DLL_PATH};$ENV{WINEPATH}") - else() - set(DLL_PATH_ENV "PATH=${CMOCKA_DLL_PATH};$ENV{PATH}") - endif() - # - # IMPORTANT NOTE: The set_tests_properties(), below, internally - # stores its name/value pairs with a semicolon delimiter. - # because of this we must protect the semicolons in the path - # - string(REPLACE ";" "\\;" DLL_PATH_ENV "${DLL_PATH_ENV}") - - set_tests_properties(${_TARGET_NAME} - PROPERTIES - ENVIRONMENT - "${DLL_PATH_ENV}") - endif() -endfunction() - set_source_files_properties(calculator.c allocate_module.c assert_module.c @@ -35,13 +12,13 @@ set_source_files_properties(calculator.c add_cmocka_test(simple_test SOURCES simple_test.c COMPILE_OPTIONS ${DEFAULT_C_COMPILE_FLAGS} - LINK_LIBRARIES ${CMOCKA_SHARED_LIBRARY}) + LINK_LIBRARIES cmocka::cmocka) add_cmocka_test_environment(simple_test) ### Allocate module test add_cmocka_test(allocate_module_test SOURCES allocate_module.c allocate_module_test.c - LINK_LIBRARIES ${CMOCKA_SHARED_LIBRARY}) + LINK_LIBRARIES cmocka::cmocka) add_cmocka_test_environment(allocate_module_test) set_tests_properties(allocate_module_test @@ -51,7 +28,7 @@ set_tests_properties(allocate_module_test ### Assert macro test add_cmocka_test(assert_macro_test SOURCES assert_macro.c assert_macro_test.c - LINK_LIBRARIES ${CMOCKA_SHARED_LIBRARY}) + LINK_LIBRARIES cmocka::cmocka) add_cmocka_test_environment(assert_macro_test) set_tests_properties(assert_macro_test @@ -61,7 +38,7 @@ set_tests_properties(assert_macro_test ### Assert module test add_cmocka_test(assert_module_test SOURCES assert_module.c assert_module_test.c - LINK_LIBRARIES ${CMOCKA_SHARED_LIBRARY}) + LINK_LIBRARIES cmocka::cmocka) add_cmocka_test_environment(assert_module_test) set_tests_properties(assert_module_test diff --git a/example/mock/chef_wrap/CMakeLists.txt b/example/mock/chef_wrap/CMakeLists.txt index 68afec0..205ccd4 100644 --- a/example/mock/chef_wrap/CMakeLists.txt +++ b/example/mock/chef_wrap/CMakeLists.txt @@ -7,7 +7,7 @@ include_directories( ) add_executable(waiter_test_wrap waiter_test_wrap.c chef.c) -target_link_libraries(waiter_test_wrap ${CMOCKA_SHARED_LIBRARY}) +target_link_libraries(waiter_test_wrap cmocka::cmocka) add_test(waiter_test_wrap ${CMAKE_CURRENT_BINARY_DIR}/waiter_test_wrap) diff --git a/example/mock/uptime/CMakeLists.txt b/example/mock/uptime/CMakeLists.txt index 2464559..967185f 100644 --- a/example/mock/uptime/CMakeLists.txt +++ b/example/mock/uptime/CMakeLists.txt @@ -12,7 +12,7 @@ set_property(TARGET add_cmocka_test(test_uptime SOURCES test_uptime.c COMPILE_OPTIONS ${DEFAULT_C_COMPILE_FLAGS} - LINK_LIBRARIES ${CMOCKA_SHARED_LIBRARY}) + LINK_LIBRARIES cmocka::cmocka) set_property(TARGET test_uptime PROPERTY diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5684685..b7f723d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,17 +3,20 @@ project(cmocka-library C) set(CMOCKA_PLATFORM_INCLUDE CACHE PATH "Path to include directory for cmocka_platform.h") mark_as_advanced(CMOCKA_PLATFORM_INCLUDE) -set(CMOCKA_SHARED_LIBRARY - cmocka - CACHE INTERNAL "cmocka shared library" -) - -if (BUILD_STATIC_LIB) +set(cmocka_library_name) +if (BUILD_SHARED_LIBS) + set(CMOCKA_SHARED_LIBRARY + cmocka + CACHE INTERNAL "cmocka shared library" + ) + set(cmocka_library_name ${CMOCKA_SHARED_LIBRARY}) +else (BUILD_SHARED_LIBS) set(CMOCKA_STATIC_LIBRARY cmocka-static CACHE INTERNAL "cmocka static library" ) -endif() + set(cmocka_library_name ${CMOCKA_STATIC_LIBRARY}) +endif (BUILD_SHARED_LIBS) set(CMOCKA_LINK_LIBRARIES ${CMOCKA_REQUIRED_LIBRARIES} @@ -31,9 +34,9 @@ if (WIN32) ) endif (WIN32) -add_library(${CMOCKA_SHARED_LIBRARY} SHARED ${cmocka_SRCS}) +add_library(${cmocka_library_name} ${cmocka_SRCS}) -target_include_directories(${CMOCKA_SHARED_LIBRARY} +target_include_directories(${cmocka_library_name} PRIVATE ${CMOCKA_PLATFORM_INCLUDE} ${cmocka_BINARY_DIR} @@ -41,39 +44,46 @@ target_include_directories(${CMOCKA_SHARED_LIBRARY} ${cmocka-header_SOURCE_DIR}) -target_compile_options(${CMOCKA_SHARED_LIBRARY} +target_compile_options(${cmocka_library_name} PRIVATE ${DEFAULT_C_COMPILE_FLAGS} -DHAVE_CONFIG_H) if (CMOCKA_PLATFORM_INCLUDE) - target_compile_options(${CMOCKA_SHARED_LIBRARY} + target_compile_options(${cmocka_library_name} PRIVATE -DCMOCKA_PLATFORM_INCLUDE) endif() -target_link_libraries(${CMOCKA_SHARED_LIBRARY} ${CMOCKA_LINK_LIBRARIES}) +target_link_libraries(${cmocka_library_name} ${CMOCKA_LINK_LIBRARIES}) set_property(TARGET - ${CMOCKA_SHARED_LIBRARY} + ${cmocka_library_name} PROPERTY DEFINE_SYMBOL CMOCKA_EXPORTS - PROPERTY - LINKER_FLAGS - "${DEFAULT_LINK_FLAGS}") +) -if (NOT WIN32) - set_target_properties( - ${CMOCKA_SHARED_LIBRARY} - PROPERTIES +set_property(TARGET + ${cmocka_library_name} + PROPERTY VERSION ${LIBRARY_VERSION} +) +set_property(TARGET + ${cmocka_library_name} + PROPERTY SOVERSION - ${LIBRARY_SOVERSION} - ) -endif (NOT WIN32) + ${LIBRARY_SOVERSION}) + +set_property(TARGET + ${cmocka_library_name} + PROPERTY + LINK_FLAGS + "${DEFAULT_LINK_FLAGS}") + +add_library(cmocka::cmocka ALIAS ${cmocka_library_name}) install(TARGETS - ${CMOCKA_SHARED_LIBRARY} + ${cmocka_library_name} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION @@ -83,41 +93,3 @@ install(TARGETS COMPONENT ${PROJECT_NAME}) -if (BUILD_STATIC_LIB) - add_library(${CMOCKA_STATIC_LIBRARY} STATIC ${cmocka_SRCS}) - - target_include_directories(${CMOCKA_STATIC_LIBRARY} - PRIVATE - ${CMOCKA_PLATFORM_INCLUDE} - ${cmocka_BINARY_DIR} - PUBLIC - ${cmocka-header_SOURCE_DIR}) - - target_compile_options(${CMOCKA_STATIC_LIBRARY} - PRIVATE - ${DEFAULT_C_COMPILE_FLAGS} - -DHAVE_CONFIG_H) - if (CMOCKA_PLATFORM_INCLUDE) - target_compile_options(${CMOCKA_STATIC_LIBRARY} - PRIVATE - -DCMOCKA_PLATFORM_INCLUDE) - endif() - - set_property(TARGET - ${CMOCKA_STATIC_LIBRARY} - PROPERTY - DEFINE_SYMBOL - CMOCKA_EXPORTS - PROPERTY - LINK_FLAGS - "${DEFAULT_LINK_FLAGS}") - - if (WITH_STATIC_LIB) - install(TARGETS - ${CMOCKA_STATIC_LIBRARY} - ARCHIVE DESTINATION - ${CMAKE_INSTALL_LIBDIR} - COMPONENT - ${PROJECT_NAME}) - endif() -endif (BUILD_STATIC_LIB) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8d53f51..c4eacf2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -28,6 +28,7 @@ set(CMOCKA_TESTS test_returns_fail test_wildcard test_skip_filter + test_cmockery ) if (TEST_EXCEPTION_HANDLER) @@ -38,20 +39,17 @@ foreach(_CMOCKA_TEST ${CMOCKA_TESTS}) add_cmocka_test(${_CMOCKA_TEST} SOURCES ${_CMOCKA_TEST}.c COMPILE_OPTIONS ${DEFAULT_C_COMPILE_FLAGS} - LINK_LIBRARIES ${CMOCKA_STATIC_LIBRARY} + LINK_LIBRARIES cmocka::cmocka LINK_OPTIONS ${DEFAULT_LINK_FLAGS}) target_include_directories(${_CMOCKA_TEST} PRIVATE ${cmocka_BINARY_DIR}) + + add_cmocka_test_environment(${_CMOCKA_TEST}) endforeach() ### Special Cases if (${CMAKE_C_COMPILER_ID} MATCHES "(GNU|Clang)") set_source_files_properties(test_cmockery.c PROPERTIES COMPILE_FLAGS "-Wno-deprecated-declarations") endif() -add_cmocka_test(test_cmockery - SOURCES test_cmockery.c - COMPILE_OPTIONS ${DEFAULT_C_COMPILE_FLAGS} - LINK_LIBRARIES ${CMOCKA_STATIC_LIBRARY} - LINK_OPTIONS ${DEFAULT_LINK_FLAGS}) ### Exceptions @@ -124,6 +122,7 @@ set_tests_properties( ) add_test(test_setup_fail_1_failed ${TARGET_SYSTEM_EMULATOR} test_setup_fail) +add_cmocka_test_environment(test_setup_fail_1_failed) set_tests_properties( test_setup_fail_1_failed PROPERTIES @@ -132,6 +131,7 @@ set_tests_properties( ) add_test (test_setup_fail_1_passed ${TARGET_SYSTEM_EMULATOR} test_setup_fail) +add_cmocka_test_environment(test_setup_fail_1_passed) set_tests_properties( test_setup_fail_1_passed PROPERTIES @@ -140,6 +140,7 @@ set_tests_properties( ) add_test (test_setup_fail_match_failed ${TARGET_SYSTEM_EMULATOR} test_setup_fail) +add_cmocka_test_environment(test_setup_fail_match_failed) set_tests_properties( test_setup_fail_match_failed PROPERTIES @@ -148,6 +149,7 @@ set_tests_properties( ) add_test (test_setup_fail_match_passed ${TARGET_SYSTEM_EMULATOR} test_setup_fail) +add_cmocka_test_environment(test_setup_fail_match_passed) set_tests_properties( test_setup_fail_match_passed PROPERTIES @@ -234,10 +236,12 @@ foreach(_TEST_OUTPUT_FMT ${TEST_OUTPUT_FMTS}) foreach(_OUTPUT_TEST ${OUTPUT_TESTS}) set(TEST_NAME ${_OUTPUT_TEST}_${_TEST_OUTPUT_FMT}) add_test(${TEST_NAME} ${TARGET_SYSTEM_EMULATOR} ${_OUTPUT_TEST}) + add_cmocka_test_environment(${TEST_NAME}) set_property( TEST ${TEST_NAME} + APPEND PROPERTY ENVIRONMENT CMOCKA_MESSAGE_OUTPUT=${_TEST_OUTPUT_FMT} ) |