Define cap_stack_mods and properly limit stack mods to x86,x86_64
[dyninst.git] / cmake / cap_arch_def.cmake
1 # The test suite needs this as a list rather than a bunch
2 # of definitions so that we can append _test to it. 
3
4 set (CAP_DEFINES
5      -Dcap_dynamic_heap 
6      -Dcap_liveness 
7      -Dcap_threads
8 )
9
10 if (${USE_GNU_DEMANGLER} MATCHES 1)
11 set (CAP_DEFINES ${CAP_DEFINES} -Dcap_gnu_demangler)
12 endif()
13
14 if (PLATFORM MATCHES i386)
15 set (ARCH_DEFINES -Darch_x86)
16 set (CAP_DEFINES ${CAP_DEFINES}
17              -Dcap_fixpoint_gen 
18              -Dcap_noaddr_gen 
19              -Dcap_stripped_binaries 
20              -Dcap_tramp_liveness 
21              -Dcap_virtual_registers
22              -Dcap_stack_mods
23     )
24
25 elseif (PLATFORM MATCHES x86_64 OR PLATFORM MATCHES amd64)
26 set (ARCH_DEFINES -Darch_x86_64 -Darch_64bit)
27 set (CAP_DEFINES ${CAP_DEFINES} 
28              -Dcap_32_64
29              -Dcap_fixpoint_gen 
30              -Dcap_noaddr_gen
31              -Dcap_registers
32              -Dcap_stripped_binaries 
33              -Dcap_tramp_liveness
34              -Dcap_stack_mods
35     )
36
37 elseif (PLATFORM MATCHES ppc32)
38 set (ARCH_DEFINES -Darch_power)
39 set (CAP_DEFINES ${CAP_DEFINES} 
40              -Dcap_registers
41     )
42
43 elseif (PLATFORM MATCHES ppc64)
44 set (ARCH_DEFINES -Darch_power -Darch_64bit)
45 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64")
46 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64")
47 set (CAP_DEFINES ${CAP_DEFINES} 
48              -Dcap_32_64
49              -Dcap_registers
50              -Dcap_toc_64
51     )
52 endif (PLATFORM MATCHES i386)
53
54 if (PLATFORM MATCHES linux)
55 set (OS_DEFINES -Dos_linux)
56 set (CAP_DEFINES ${CAP_DEFINES} 
57              -Dcap_async_events
58              -Dcap_binary_rewriter
59              -Dcap_dwarf
60              -Dcap_mutatee_traps
61              -Dcap_ptrace
62     )
63 set (BUG_DEFINES -Dbug_syscall_changepc_rewind -Dbug_force_terminate_failure)
64
65 elseif (PLATFORM MATCHES bgq_ion)
66 set (OS_DEFINES -Dos_bg -Dos_bgq -Dos_bgq_ion -Dos_linux)
67 set (CAP_DEFINES ${CAP_DEFINES} 
68              -Dcap_async_events
69              -Dcap_binary_rewriter
70              -Dcap_dwarf
71              -Dcap_mutatee_traps
72              -Dcap_ptrace
73     )
74 set (BUG_DEFINES -Dbug_syscall_changepc_rewind)
75
76 elseif (PLATFORM MATCHES cnl)
77 set (OS_DEFINES -Dos_linux -Dos_cnl)
78 set (CAP_DEFINES ${CAP_DEFINES} 
79              -Dcap_async_events
80              -Dcap_binary_rewriter
81              -Dcap_dwarf
82              -Dcap_mutatee_traps
83              -Dcap_ptrace
84     )
85 set (BUG_DEFINES -Dbug_syscall_changepc_rewind)
86
87 elseif (PLATFORM MATCHES freebsd)
88 set (OS_DEFINES -Dos_freebsd)
89 set (CAP_DEFINES ${CAP_DEFINES} 
90              -Dcap_binary_rewriter
91              -Dcap_dwarf
92              -Dcap_mutatee_traps
93     )
94 set (BUG_DEFINES -Dbug_freebsd_missing_sigstop 
95              -Dbug_freebsd_mt_suspend 
96              -Dbug_freebsd_change_pc 
97              -Dbug_phdrs_first_page 
98              -Dbug_syscall_changepc_rewind
99     )
100
101 elseif (PLATFORM STREQUAL i386-unknown-nt4.0)
102 set (OS_DEFINES -Dos_windows)
103 set (CAP_DEFINES ${CAP_DEFINES} 
104              -Dcap_mem_emulation
105     )
106 endif (PLATFORM MATCHES linux)
107
108
109 if (PLATFORM STREQUAL i386-unknown-linux2.4)
110 set (OLD_DEFINES -Di386_unknown_linux2_0)
111
112 elseif (PLATFORM STREQUAL x86_64-unknown-linux2.4)
113 set (OLD_DEFINES -Dx86_64_unknown_linux2_4)
114
115 elseif (PLATFORM STREQUAL ppc32_linux)
116 set (OLD_DEFINES -Dppc32_linux)
117 set (BUG_DEFINES ${BUG_DEFINES} -Dbug_registers_after_exit)
118
119 elseif (PLATFORM STREQUAL ppc64_linux)
120 set (OLD_DEFINES -Dppc64_linux)
121 set (BUG_DEFINES ${BUG_DEFINES} -Dbug_registers_after_exit)
122
123 elseif (PLATFORM STREQUAL ppc64_bgq_ion)
124 set (OLD_DEFINES -Dppc64_bluegene -Dppc64_linux)
125
126 elseif (PLATFORM STREQUAL x86_64_cnl)
127 set (OLD_DEFINES -Dx86_64_cnl -Dx86_64_unknown_linux2_4)
128
129 elseif (PLATFORM STREQUAL i386-unknown-freebsd7.2)
130 set (OLD_DEFINES -Di386_unknown_freebsd7_0)
131
132 elseif (PLATFORM STREQUAL amd64-unknown-freebsd7.2)
133 set (OLD_DEFINES -Damd64_unknown_freebsd7_0)
134
135 elseif (PLATFORM STREQUAL i386-unknown-nt4.0)
136 set (OLD_DEFINES -Di386_unknown_nt4_0)
137
138 else (PLATFORM STREQUAL i386-unknown-linux2.4)
139   message (FATAL_ERROR "Unknown platform: $(PLATFORM)")
140 endif (PLATFORM STREQUAL i386-unknown-linux2.4)
141
142 if (THREAD_DB_FOUND)
143 message ("-- Enabling ThreadDB support")
144 set (CAP_DEFINES ${CAP_DEFINES} -Dcap_thread_db)
145 endif (THREAD_DB_FOUND)
146
147 set (UNIFIED_DEFINES ${CAP_DEFINES} ${BUG_DEFINES} ${ARCH_DEFINES} ${OS_DEFINES} ${OLD_DEFINES})
148
149 foreach (def ${UNIFIED_DEFINES})
150   add_definitions (${def})
151 endforeach()
152
153
154 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${UNIFIED_DEF_STRING}")
155 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${UNIFIED_DEF_STRING}")
156
157 message(STATUS "Set arch and platform based definitions")
158