aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Gelas <arnaud.gelas@sensefly.com>2019-08-21 09:30:37 +0200
committerAndreas Schneider <asn@cryptomilk.org>2019-10-16 09:05:18 +0200
commit86681906ba64b21010282ab81405e67165f80d0f (patch)
treefa9e3e29a335cc487bce23e830649e47b1062cd3
parentc151f45ed0fd0f2f9b5d5d1526d208471009b0fe (diff)
downloadcmocka-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.cmake8
-rw-r--r--cmake/Modules/AddCMockaTest.cmake23
-rw-r--r--example/CMakeLists.txt31
-rw-r--r--example/mock/chef_wrap/CMakeLists.txt2
-rw-r--r--example/mock/uptime/CMakeLists.txt2
-rw-r--r--src/CMakeLists.txt96
-rw-r--r--tests/CMakeLists.txt16
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}
)