Add auto-PLATFORM check; add flag for building 32-bit RTlib on 64-bit platforms.
[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 include (CheckCCompilerFlag)
91 message ("Checking for 32-bit runtime library...")
92
93 # For some reason this test borks with HAS_M32
94 CHECK_C_COMPILER_FLAG ("-O2" BUILD_MABI_RTLIB)
95
96 if (BUILD_MABI_RTLIB)
97 SET (BUILD_RTLIB_32 ON CACHE STRING "Build 32-bit version of RT library")
98
99 if (BUILD_RTLIB_32)
100 add_library (dyninstAPI_RT_m32 SHARED ${SRC_LIST_mabi})
101 add_library (dyninstAPI_RT_m32_static STATIC ${SRC_LIST_mabi})
102
103 set_target_properties (dyninstAPI_RT_m32
104                       PROPERTIES
105                       COMPILE_FLAGS "-m32"
106                       LINK_FLAGS "-m32"
107                       SOVERSION ${SOVERSION}
108                       VERSION ${LIBVERSION})
109
110 set_target_properties (dyninstAPI_RT_m32_static
111                       PROPERTIES
112                       OUTPUT_NAME dyninstAPI_RT_m32
113                       COMPILE_FLAGS "-m32"
114                       LINK_FLAGS "-m32"
115                       SOVERSION ${SOVERSION}
116                       VERSION ${LIBVERSION})
117 INSTALL (TARGETS dyninstAPI_RT_m32 dyninstAPI_RT_m32_static
118          LIBRARY DESTINATION lib
119          ARCHIVE DESTINATION lib)
120 endif()
121 endif()
122 endif()
123