Fix up CMake export config file ; remove codeCoverage ; remove testsuite
[dyninst.git] / dyninstAPI_RT / CMakeLists.txt
1 # CMake configuration for dyninstAPI_RT directory
2
3 include_directories (
4     ${PROJECT_SOURCE_DIR}/dyninstAPI_RT/src
5   )
6
7 set (SRC_LIST
8     src/RTcommon.c 
9     src/RTmemEmulator.c
10     src/RTsignal.c 
11 )
12
13 if (PLATFORM MATCHES freebsd)
14 set (SRC_LIST ${SRC_LIST}
15     src/RTposix.c
16     src/RTfreebsd.c 
17     src/RTheap.c 
18     src/RTheap-freebsd.c 
19     src/RTthread.c 
20     src/RTspace.S 
21 )
22 elseif (PLATFORM MATCHES linux OR PLATFORM MATCHES bgq)
23 set (SRC_LIST ${SRC_LIST}
24     src/RTposix.c 
25     src/RTlinux.c 
26     src/RTheap.c 
27     src/RTheap-linux.c 
28     src/RTthread.c 
29     src/RTspace.S 
30 )
31 endif ()
32
33 set (SRC_LIST_i386
34     src/RTthread-x86.c 
35     src/RTtlsgetaddr-x86.S 
36     src/RTstatic_ctors_dtors-x86.c
37 )
38 set (SRC_LIST_x86_64
39     src/RTthread-x86-64.c 
40     src/RTtlsgetaddr-x86.S
41     src/RTstatic_ctors_dtors-x86.c
42 )
43 set (SRC_LIST_ppc32
44     src/RTthread-powerpc.c
45     src/RTthread-powerpc-asm.S
46     src/RTstatic_ctors_dtors-ppc32.c
47 )
48 set (SRC_LIST_ppc64
49     src/RTthread-powerpc.c
50     src/RTthread-powerpc-asm.S
51     src/RTstatic_ctors_dtors-ppc64.c                                                                                         
52 )
53
54 # We use gcc to compile the various assembly files, but
55 # cmake doesn't default to knowing that gcc can
56 # handle .S. 
57 file (GLOB SRC_ASSEMBLY "src/*.S")
58 set_source_files_properties(${SRC_ASSEMBLY}
59         PROPERTIES
60         LANGUAGE C)
61
62 if (PLATFORM MATCHES amd64 OR PLATFORM MATCHES x86_64)
63 set (SRC_LIST_mabi ${SRC_LIST} ${SRC_LIST_i386})
64 set (SRC_LIST ${SRC_LIST} ${SRC_LIST_x86_64})
65 elseif (PLATFORM MATCHES ppc64)
66 set (SRC_LIST_mabi ${SRC_LIST} ${SRC_LIST_ppc32})
67 set (SRC_LIST ${SRC_LIST} ${SRC_LIST_ppc64}) 
68 elseif (PLATFORM MATCHES i386)
69 set (SRC_LIST ${SRC_LIST} ${SRC_LIST_i386})
70 elseif (PLATFORM MATCHES ppc32)
71 set (SRC_LIST ${SRC_LIST} ${SRC_LIST_ppc32})
72 endif()
73
74
75 add_library (dyninstAPI_RT SHARED ${SRC_LIST})
76 target_link_libraries (dyninstAPI_RT dl)
77 add_library (dyninstAPI_RT_static STATIC ${SRC_LIST})
78
79 set_target_properties (dyninstAPI_RT
80                       PROPERTIES
81                       SOVERSION ${SOVERSION}
82                       VERSION ${LIBVERSION})
83
84 set_target_properties (dyninstAPI_RT_static
85                       PROPERTIES
86                       OUTPUT_NAME dyninstAPI_RT
87                       SOVERSION ${SOVERSION}
88                       VERSION ${LIBVERSION})
89
90 FILE (GLOB headers "h/*.h")
91 set_target_properties (dyninstAPI_RT PROPERTIES PUBLIC_HEADER "${headers}")
92
93 INSTALL (TARGETS dyninstAPI_RT dyninstAPI_RT_static
94         EXPORT DyninstTargets
95         LIBRARY DESTINATION ${INSTALL_LIB_DIR}
96         ARCHIVE DESTINATION ${INSTALL_LIB_DIR}
97         PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDE_DIR})
98
99 # Test to see if we want the 32-bit library
100
101 if (SRC_LIST_mabi) 
102
103 # The following code is from CheckCCompilerFlag.cmake. It uses a
104 # simple program that can be compiled even if 32-bit includes are 
105 # missing; we need to extend it somewhat
106
107 INCLUDE(CheckCSourceCompiles)
108
109 MACRO (CHECK_C_COMPILER_FLAG_EXTENDED _FLAG _RESULT)
110    SET(SAFE_CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
111    SET(CMAKE_C_FLAGS "${_FLAG}")
112
113 # Addition here: use signal.h
114    CHECK_C_SOURCE_COMPILES("#include <signal.h>
115    int main(void) { return 0; }" 
116         ${_RESULT}
117 # End addition
118      # Some compilers do not fail with a bad flag
119      FAIL_REGEX "warning: command line option .* is valid for .* but not for C"
120                                                             # Apple gcc
121      FAIL_REGEX "unrecognized .*option"                     # GNU
122      FAIL_REGEX "unknown .*option"                          # Clang
123      FAIL_REGEX "ignoring unknown option"                   # MSVC
124      FAIL_REGEX "warning D9002"                             # MSVC, any lang
125      FAIL_REGEX "[Uu]nknown option"                         # HP
126      FAIL_REGEX "[Ww]arning: [Oo]ption"                     # SunPro
127      FAIL_REGEX "command option .* is not recognized"       # XL
128      )
129    SET(CMAKE_C_FLAGS "${SAFE_CMAKE_C_FLAGS}")
130 ENDMACRO (CHECK_C_COMPILER_FLAG_EXTENDED)
131
132
133 message (STATUS "Checking for 32-bit runtime library...")
134
135 CHECK_C_COMPILER_FLAG_EXTENDED ("-m32" CHECK_RT_LIB_32)
136 if (CHECK_RT_LIB_32)
137 message (STATUS "Enabling 32-bit runtime library; change BUILD_RTLIB_32 to OFF to disable")
138 SET (BUILD_RTLIB_32 ON CACHE STRING "Build 32-bit version of RT library")
139 ELSE ()
140 SET (BUILD_RTLIB_32 OFF CACHE STRING "Build 32-bit version of RT library")
141 ENDIF()
142
143
144 if (BUILD_RTLIB_32 MATCHES "ON")
145
146 add_library (dyninstAPI_RT_m32 SHARED ${SRC_LIST_mabi})
147 target_link_libraries (dyninstAPI_RT_m32 dl)
148 add_library (dyninstAPI_RT_m32_static STATIC ${SRC_LIST_mabi})
149
150 set_target_properties (dyninstAPI_RT_m32
151                       PROPERTIES
152                       COMPILE_FLAGS "-m32"
153                       LINK_FLAGS "-m32"
154                       SOVERSION ${SOVERSION}
155                       VERSION ${LIBVERSION})
156
157 set_target_properties (dyninstAPI_RT_m32_static
158                       PROPERTIES
159                       OUTPUT_NAME dyninstAPI_RT_m32
160                       COMPILE_FLAGS "-m32"
161                       LINK_FLAGS "-m32"
162                       SOVERSION ${SOVERSION}
163                       VERSION ${LIBVERSION})
164
165 INSTALL (TARGETS dyninstAPI_RT_m32 dyninstAPI_RT_m32_static
166         EXPORT DyninstTargets
167         LIBRARY DESTINATION ${INSTALL_LIB_DIR}
168         ARCHIVE DESTINATION ${INSTALL_LIB_DIR}
169         PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDE_DIR})
170
171
172 endif()
173 endif()