Remove incorrect export declaration
[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 )
11
12 if (PLATFORM MATCHES freebsd)
13 set (SRC_LIST ${SRC_LIST}
14     src/RTposix.c
15     src/RTfreebsd.c 
16     src/RTheap.c 
17     src/RTheap-freebsd.c 
18     src/RTthread.c 
19     src/RTspace.S 
20     src/RTsignal.c 
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     src/RTsignal.c 
31 )
32 elseif (PLATFORM MATCHES nt OR PLATFORM MATCHES windows)
33 set (SRC_LIST ${SRC_LIST}
34     src/RTheap.c 
35     src/RTheap-win.c
36     src/RTwinnt.c
37     src/RTthread.c
38     src/RTthread-x86.c
39 )
40 endif ()
41
42 set (SRC_LIST_i386
43     src/RTthread-x86.c 
44     src/RTtlsgetaddr-x86.S 
45     src/RTstatic_ctors_dtors-x86.c
46 )
47 set (SRC_LIST_x86_64
48     src/RTthread-x86-64.c 
49     src/RTtlsgetaddr-x86.S
50     src/RTstatic_ctors_dtors-x86.c
51 )
52 set (SRC_LIST_ppc32
53     src/RTthread-powerpc.c
54     src/RTthread-powerpc-asm.S
55     src/RTstatic_ctors_dtors-ppc32.c
56 )
57 set (SRC_LIST_ppc64
58     src/RTthread-powerpc.c
59     src/RTthread-powerpc-asm.S
60     src/RTstatic_ctors_dtors-ppc64.c                                                                                         
61 )
62
63
64 # We use gcc to compile the various assembly files, but
65 # cmake doesn't default to knowing that gcc can
66 # handle .S. 
67 file (GLOB SRC_ASSEMBLY "src/*.S")
68 set_source_files_properties(${SRC_ASSEMBLY}
69         PROPERTIES
70         LANGUAGE C)
71
72 # The arch-specific files other than RTthread-x86 are Unix-only.
73 if(UNIX)
74 if (PLATFORM MATCHES amd64 OR PLATFORM MATCHES x86_64)
75 set (SRC_LIST_mabi ${SRC_LIST} ${SRC_LIST_i386})
76 set (SRC_LIST ${SRC_LIST} ${SRC_LIST_x86_64})
77 elseif (PLATFORM MATCHES ppc64)
78 set (SRC_LIST_mabi ${SRC_LIST} ${SRC_LIST_ppc32})
79 set (SRC_LIST ${SRC_LIST} ${SRC_LIST_ppc64}) 
80 elseif (PLATFORM MATCHES i386)
81 set (SRC_LIST ${SRC_LIST} ${SRC_LIST_i386})
82 elseif (PLATFORM MATCHES ppc32)
83 set (SRC_LIST ${SRC_LIST} ${SRC_LIST_ppc32})
84 endif()
85 endif()
86
87 add_library (dyninstAPI_RT SHARED ${SRC_LIST})
88
89 if (NOT PLATFORM MATCHES nt AND NOT PLATFORM MATCHES windows)
90     target_link_libraries (dyninstAPI_RT ${CMAKE_DL_LIBS})
91 else() # windows
92     target_link_libraries (dyninstAPI_RT ws2_32 dbghelp psapi)
93 endif()
94
95 add_library (dyninstAPI_RT_static STATIC ${SRC_LIST})
96
97 # this should carry over from CMakeLists.txt
98 set_target_properties (dyninstAPI_RT dyninstAPI_RT_static
99                       PROPERTIES
100                       SOVERSION ${SOVERSION}
101                       VERSION ${LIBVERSION})
102
103 # this will not
104 set_target_properties (dyninstAPI_RT_static
105                       PROPERTIES
106                       OUTPUT_NAME dyninstAPI_RT)
107
108 message(STATUS "dyninstAPI RT library SOVERSION: ${SOVERSION}")
109 message(STATUS "dyninstAPI RT library LIBVERSION: ${LIBVERSION}")
110
111 get_property(dyninstAPI_RT_location TARGET dyninstAPI_RT PROPERTY LOCATION)
112 message(STATUS "dyninstAPI output location: ${dyninstAPI_RT_location}")
113
114 FILE (GLOB headers "h/*.h")
115 # append, you fool!
116 set_target_properties (dyninstAPI_RT dyninstAPI_RT_static PROPERTIES PUBLIC_HEADER "${headers}")
117
118 INSTALL (TARGETS dyninstAPI_RT dyninstAPI_RT_static
119         EXPORT DyninstTargets
120         RUNTIME DESTINATION ${INSTALL_LIB_DIR}
121         LIBRARY DESTINATION ${INSTALL_LIB_DIR}
122         ARCHIVE DESTINATION ${INSTALL_LIB_DIR}
123         PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDE_DIR})
124
125 # Test to see if we want the 32-bit library
126
127 if (SRC_LIST_mabi) 
128
129 # The following code is from CheckCCompilerFlag.cmake. It uses a
130 # simple program that can be compiled even if 32-bit includes are 
131 # missing; we need to extend it somewhat
132
133 INCLUDE(CheckCSourceCompiles)
134
135 MACRO (CHECK_C_COMPILER_FLAG_EXTENDED _FLAG _RESULT)
136    SET(SAFE_CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
137    SET(CMAKE_C_FLAGS "${_FLAG}")
138
139 # Addition here: use signal.h
140    CHECK_C_SOURCE_COMPILES("#include <signal.h>
141    int main(void) { return 0; }" 
142         ${_RESULT}
143 # End addition
144      # Some compilers do not fail with a bad flag
145      FAIL_REGEX "warning: command line option .* is valid for .* but not for C"
146                                                             # Apple gcc
147      FAIL_REGEX "unrecognized .*option"                     # GNU
148      FAIL_REGEX "unknown .*option"                          # Clang
149      FAIL_REGEX "ignoring unknown option"                   # MSVC
150      FAIL_REGEX "warning D9002"                             # MSVC, any lang
151      FAIL_REGEX "[Uu]nknown option"                         # HP
152      FAIL_REGEX "[Ww]arning: [Oo]ption"                     # SunPro
153      FAIL_REGEX "command option .* is not recognized"       # XL
154      )
155    SET(CMAKE_C_FLAGS "${SAFE_CMAKE_C_FLAGS}")
156 ENDMACRO (CHECK_C_COMPILER_FLAG_EXTENDED)
157
158
159 message (STATUS "Checking for 32-bit runtime library...")
160
161 CHECK_C_COMPILER_FLAG_EXTENDED ("-m32" CHECK_RT_LIB_32)
162 if (CHECK_RT_LIB_32)
163 message (STATUS "Enabling 32-bit runtime library; change BUILD_RTLIB_32 to OFF to disable")
164 SET (BUILD_RTLIB_32 ON CACHE STRING "Build 32-bit version of RT library")
165 ELSE ()
166 SET (BUILD_RTLIB_32 OFF CACHE STRING "Build 32-bit version of RT library")
167 ENDIF()
168
169
170 if (BUILD_RTLIB_32 MATCHES "ON")
171
172 add_library (dyninstAPI_RT_m32 SHARED ${SRC_LIST_mabi})
173 target_link_libraries (dyninstAPI_RT_m32 ${CMAKE_DL_LIBS})
174 add_library (dyninstAPI_RT_m32_static STATIC ${SRC_LIST_mabi})
175
176 set_target_properties (dyninstAPI_RT_m32 dyninstAPI_RT_m32_static
177                       PROPERTIES
178                       COMPILE_FLAGS "-m32"
179                       LINK_FLAGS "-m32"
180                       SOVERSION ${SOVERSION}
181                       VERSION ${LIBVERSION})
182
183 set_target_properties (dyninstAPI_RT_m32_static
184                       PROPERTIES
185                       OUTPUT_NAME dyninstAPI_RT_m32)
186 #                      COMPILE_FLAGS "-m32"
187 #                      LINK_FLAGS "-m32"
188 #                      SOVERSION ${SOVERSION}
189 #                      VERSION ${LIBVERSION})
190
191 INSTALL (TARGETS dyninstAPI_RT_m32 dyninstAPI_RT_m32_static
192         EXPORT DyninstTargets
193         RUNTIME DESTINATION ${INSTALL_LIB_DIR}
194         LIBRARY DESTINATION ${INSTALL_LIB_DIR}
195         ARCHIVE DESTINATION ${INSTALL_LIB_DIR}
196         PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDE_DIR})
197
198
199 endif()
200 endif()