Test suite builds on amd-64/linux
[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 if (PLATFORM MATCHES amd64 OR PLATFORM MATCHES x86_64)
55 set (SRC_LIST_mabi ${SRC_LIST} ${SRC_LIST_i386})
56 set (SRC_LIST ${SRC_LIST} ${SRC_LIST_x86_64})
57 elseif (PLATFORM MATCHES ppc64)
58 set (SRC_LIST_mabi ${SRC_LIST} ${SRC_LIST_ppc32})
59 set (SRC_LIST ${SRC_LIST} ${SRC_LIST_ppc64}) 
60 elseif (PLATFORM MATCHES i386)
61 set (SRC_LIST ${SRC_LIST} ${SRC_LIST_i386})
62 elseif (PLATFORM MATCHES ppc32)
63 set (SRC_LIST ${SRC_LIST} ${SRC_LIST_ppc32})
64 endif()
65
66
67 add_library (dyninstAPI_RT SHARED ${SRC_LIST})
68 add_library (dyninstAPI_RT_static STATIC ${SRC_LIST})
69
70 set_target_properties (dyninstAPI_RT
71                       PROPERTIES
72                       SOVERSION ${SOVERSION}
73                       VERSION ${LIBVERSION})
74
75 set_target_properties (dyninstAPI_RT_static
76                       PROPERTIES
77                       OUTPUT_NAME dyninstAPI_RT
78                       SOVERSION ${SOVERSION}
79                       VERSION ${LIBVERSION})
80
81 INSTALL (DIRECTORY h/ DESTINATION include FILES_MATCHING PATTERN "*.h")
82 INSTALL (TARGETS dyninstAPI_RT dyninstAPI_RT_static
83         LIBRARY DESTINATION lib
84         ARCHIVE DESTINATION lib)
85
86 # Test to see if we want the 32-bit library
87
88 if (SRC_LIST_mabi) 
89
90 # The following code is from CheckCCompilerFlag.cmake. It uses a
91 # simple program that can be compiled even if 32-bit includes are 
92 # missing; we need to extend it somewhat
93
94 INCLUDE(CheckCSourceCompiles)
95
96 MACRO (CHECK_C_COMPILER_FLAG_EXTENDED _FLAG _RESULT)
97    SET(SAFE_CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
98    SET(CMAKE_C_FLAGS "${_FLAG}")
99
100 # Addition here: use signal.h
101    CHECK_C_SOURCE_COMPILES("#include <signal.h>
102    int main(void) { return 0; }" 
103         ${_RESULT}
104 # End addition
105      # Some compilers do not fail with a bad flag
106      FAIL_REGEX "warning: command line option .* is valid for .* but not for C"
107                                                             # Apple gcc
108      FAIL_REGEX "unrecognized .*option"                     # GNU
109      FAIL_REGEX "unknown .*option"                          # Clang
110      FAIL_REGEX "ignoring unknown option"                   # MSVC
111      FAIL_REGEX "warning D9002"                             # MSVC, any lang
112      FAIL_REGEX "[Uu]nknown option"                         # HP
113      FAIL_REGEX "[Ww]arning: [Oo]ption"                     # SunPro
114      FAIL_REGEX "command option .* is not recognized"       # XL
115      )
116    SET(CMAKE_C_FLAGS "${SAFE_CMAKE_C_FLAGS}")
117 ENDMACRO (CHECK_C_COMPILER_FLAG_EXTENDED)
118
119
120 message (STATUS "Checking for 32-bit runtime library...")
121
122 CHECK_C_COMPILER_FLAG_EXTENDED ("-m32" CHECK_RT_LIB_32)
123 if (CHECK_RT_LIB_32)
124 message (STATUS "Enabling 32-bit runtime library; change BUILD_RTLIB_32 to OFF to disable")
125 SET (BUILD_RTLIB_32 ON CACHE STRING "Build 32-bit version of RT library")
126 ELSE ()
127 SET (BUILD_RTLIB_32 OFF CACHE STRING "Build 32-bit version of RT library")
128 ENDIF()
129
130
131 if (BUILD_RTLIB_32 MATCHES "ON")
132 set_property(SOURCE src/RTspace.s APPEND PROPERTY COMPILE_FLAGS "--32")
133
134 add_library (dyninstAPI_RT_m32 SHARED ${SRC_LIST_mabi})
135 add_library (dyninstAPI_RT_m32_static STATIC ${SRC_LIST_mabi})
136
137 set_target_properties (dyninstAPI_RT_m32
138                       PROPERTIES
139                       COMPILE_FLAGS "-m32"
140                       LINK_FLAGS "-m32"
141                       SOVERSION ${SOVERSION}
142                       VERSION ${LIBVERSION})
143
144 set_target_properties (dyninstAPI_RT_m32_static
145                       PROPERTIES
146                       OUTPUT_NAME dyninstAPI_RT_m32
147                       COMPILE_FLAGS "-m32"
148                       LINK_FLAGS "-m32"
149                       SOVERSION ${SOVERSION}
150                       VERSION ${LIBVERSION})
151
152 INSTALL (TARGETS dyninstAPI_RT_m32 dyninstAPI_RT_m32_static
153          LIBRARY DESTINATION lib
154          ARCHIVE DESTINATION lib)
155
156
157 endif()
158 endif()