cmake: Fix possible issues with librt during configure
[platform/upstream/cmocka.git] / src / CMakeLists.txt
1 project(cmocka-library C)
2
3 set(CMOCKA_PLATFORM_INCLUDE CACHE PATH "Path to include directory for cmocka_platform.h")
4
5 set(CMOCKA_PUBLIC_INCLUDE_DIRS
6     ${CMAKE_SOURCE_DIR}/include
7     ${CMOCKA_PLATFORM_INCLUDE}
8     CACHE INTERNAL "cmocka public include directories"
9 )
10
11 set(CMOCKA_PRIVATE_INCLUDE_DIRS
12     ${CMAKE_BINARY_DIR}
13 )
14
15 set(CMOCKA_SHARED_LIBRARY
16     cmocka_shared
17     CACHE INTERNAL "cmocka shared library"
18 )
19
20 if (WITH_STATIC_LIB)
21     set(CMOCKA_STATIC_LIBRARY
22         cmocka_static
23         CACHE INTERNAL "cmocka static library"
24     )
25 endif (WITH_STATIC_LIB)
26
27 set(CMOCKA_LINK_LIBRARIES
28     ${CMOCKA_REQUIRED_LIBRARIES}
29     CACHE INTERNAL "cmocka link libraries"
30 )
31
32 set(cmocka_SRCS
33     cmocka.c
34 )
35
36 if (WIN32)
37     set(cmocka_SRCS
38         ${cmocka_SRCS}
39         cmocka.def
40     )
41 endif (WIN32)
42
43 include_directories(
44     ${CMOCKA_PUBLIC_INCLUDE_DIRS}
45     ${CMOCKA_PRIVATE_INCLUDE_DIRS}
46 )
47
48 add_definitions(-DHAVE_CONFIG_H=1)
49 if (CMOCKA_PLATFORM_INCLUDE)
50     add_definitions(-DCMOCKA_PLATFORM_INCLUDE=1)
51 endif()
52
53 add_library(${CMOCKA_SHARED_LIBRARY} SHARED ${cmocka_SRCS})
54
55 target_link_libraries(${CMOCKA_SHARED_LIBRARY} ${CMOCKA_LINK_LIBRARIES})
56 set_target_properties(
57     ${CMOCKA_SHARED_LIBRARY}
58         PROPERTIES
59             OUTPUT_NAME
60                 cmocka
61             DEFINE_SYMBOL
62                 CMOCKA_EXPORTS
63 )
64
65 if (NOT WIN32)
66     set_target_properties(
67         ${CMOCKA_SHARED_LIBRARY}
68             PROPERTIES
69                 VERSION
70                     ${LIBRARY_VERSION}
71                 SOVERSION
72                     ${LIBRARY_SOVERSION}
73     )
74 endif (NOT WIN32)
75
76 install(
77     TARGETS ${CMOCKA_SHARED_LIBRARY}
78     RUNTIME DESTINATION ${BIN_INSTALL_DIR}
79     LIBRARY DESTINATION ${LIB_INSTALL_DIR}
80     ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
81     COMPONENT libraries
82 )
83
84 if (WITH_STATIC_LIB)
85     add_library(${CMOCKA_STATIC_LIBRARY} STATIC ${cmocka_SRCS})
86
87     set_target_properties(
88         ${CMOCKA_STATIC_LIBRARY}
89             PROPERTIES
90                 VERSION
91                     ${LIBRARY_VERSION}
92                 SOVERSION
93                     ${LIBRARY_SOVERSION}
94                 OUTPUT_NAME
95                     cmocka
96     )
97
98     install(
99         TARGETS ${CMOCKA_STATIC_LIBRARY}
100         DESTINATION ${LIB_INSTALL_DIR}
101         COMPONENT libraries
102     )
103 endif (WITH_STATIC_LIB)
104
105 if (POLICY CMP0026)
106     cmake_policy(SET CMP0026 OLD)
107 endif()
108
109 #
110 # In order to run tests we will need to set the approriate environment
111 # variable so that the test program can locate its dependent DLL's. First
112 # we want to know what directory our dependent DLL was installed into:
113 #
114 get_target_property(_cmocka_dir cmocka_shared LOCATION_${CMOCKA_BUILD_TYPE})
115 get_filename_component(_cmocka_path "${_cmocka_dir}" PATH)
116 file(TO_NATIVE_PATH "${_cmocka_path}" _cmocka_path_native)
117
118 set(CMOCKA_DLL_PATH "${_cmocka_path_native}" PARENT_SCOPE)