blob: 5d8885d126630744e0291afdb31ae2d91c2aeec8 [file] [log] [blame]
daniel96ecc332014-05-18 02:03:15 -07001cmake_minimum_required(VERSION 2.6)
2project(capstone)
3
Nguyen Anh Quynhe4c0f6c2015-01-30 11:25:24 +08004set(VERSION_MAJOR 3)
5set(VERSION_MINOR 0)
Nguyen Anh Quynh33bf2d12015-06-08 22:29:55 +08006set(VERSION_PATCH 4)
Nguyen Anh Quynh56e4efd2014-05-28 16:27:53 +08007
Nguyen Anh Quynh758fcbe2014-05-31 10:44:27 +08008# to configure the options specify them in in the command line or change them in the cmake UI.
9# Don't edit the makefile!
Nguyen Anh Quynh4822f992015-02-03 18:25:12 +080010option(CAPSTONE_BUILD_STATIC_RUNTIME "Embed static runtime" OFF)
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +020011option(CAPSTONE_BUILD_STATIC "Build static library" ON)
12option(CAPSTONE_BUILD_SHARED "Build shared library" ON)
13option(CAPSTONE_BUILD_DIET "Build diet library" OFF)
14option(CAPSTONE_BUILD_TESTS "Build tests" ON)
15option(CAPSTONE_USE_DEFAULT_ALLOC "Use default memory allocation functions" ON)
Nguyen Anh Quynha71a27b2014-05-28 21:20:30 +080016
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +020017option(CAPSTONE_ARM_SUPPORT "ARM support" ON)
18option(CAPSTONE_ARM64_SUPPORT "ARM64 support" ON)
19option(CAPSTONE_MIPS_SUPPORT "MIPS support" ON)
20option(CAPSTONE_PPC_SUPPORT "PowerPC support" ON)
Yegor Derevenetsebc4ced2014-09-21 19:52:57 +020021option(CAPSTONE_SPARC_SUPPORT "Sparc support" ON)
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +020022option(CAPSTONE_SYSZ_SUPPORT "SystemZ support" ON)
23option(CAPSTONE_XCORE_SUPPORT "XCore support" ON)
24option(CAPSTONE_X86_SUPPORT "x86 support" ON)
25option(CAPSTONE_X86_REDUCE "x86 with reduce instruction sets to minimize library" OFF)
Nguyen Anh Quynha8fd71f2014-10-14 07:55:30 +080026option(CAPSTONE_X86_ATT_DISABLE "Disable x86 AT&T syntax" OFF)
reverserbcf09f42015-04-09 18:28:19 +010027option(CAPSTONE_OSXKERNEL_SUPPORT "Support to embed Capstone into OS X Kernel extensions" OFF)
Nguyen Anh Quynha71a27b2014-05-28 21:20:30 +080028
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +020029if (CAPSTONE_BUILD_DIET)
Nguyen Anh Quynh758fcbe2014-05-31 10:44:27 +080030 add_definitions(-DCAPSTONE_DIET)
31endif ()
daniel96ecc332014-05-18 02:03:15 -070032
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +020033if (CAPSTONE_USE_DEFAULT_ALLOC)
Nguyen Anh Quynhd765ab22014-06-03 17:38:29 +080034 add_definitions(-DCAPSTONE_USE_SYS_DYN_MEM)
Nguyen Anh Quynh758fcbe2014-05-31 10:44:27 +080035endif ()
36
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +020037if (CAPSTONE_X86_REDUCE)
Nguyen Anh Quynh758fcbe2014-05-31 10:44:27 +080038 add_definitions(-DCAPSTONE_X86_REDUCE)
daniel96ecc332014-05-18 02:03:15 -070039endif ()
40
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +020041if (CAPSTONE_X86_ATT_DISABLE)
baguette86e84502014-08-17 20:59:05 +020042 add_definitions(-DCAPSTONE_X86_ATT_DISABLE)
43endif ()
44
Ali Rizvi-Santiago10053ba2014-06-03 21:04:23 +000045## sources
learn_more317682b2015-04-15 20:31:32 +020046set(SOURCES_ENGINE
daniel96ecc332014-05-18 02:03:15 -070047 cs.c
48 MCInst.c
49 MCInstrDesc.c
50 MCRegisterInfo.c
51 SStream.c
52 utils.c
53 )
Nguyen Anh Quynhf6af5092014-05-28 14:29:20 +080054
learn_more317682b2015-04-15 20:31:32 +020055set(HEADERS_ENGINE
learn_more43f8ac12015-04-15 12:15:26 +020056 include/capstone.h
57 utils.h
58 MCRegisterInfo.h
59 MCInst.h
60 MCInstrDesc.h
61 SStream.h
62 cs_priv.h
learn_more43f8ac12015-04-15 12:15:26 +020063 include/platform.h
64 )
65
learn_morecaf47a52015-04-23 20:39:48 +020066set(HEADERS_COMMON
67 include/arm64.h
68 include/arm.h
69 include/capstone.h
70 include/mips.h
71 include/ppc.h
72 include/x86.h
73 include/sparc.h
74 include/systemz.h
75 include/xcore.h
76 include/platform.h
77 )
78
learn_more43f8ac12015-04-15 12:15:26 +020079
Nguyen Anh Quynh0a2eca72014-10-11 00:36:16 +080080set(TEST_SOURCES test.c test_detail.c test_skipdata.c test_iter.c)
Nguyen Anh Quynhf6af5092014-05-28 14:29:20 +080081
Ali Rizvi-Santiago10053ba2014-06-03 21:04:23 +000082## architecture support
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +020083if (CAPSTONE_ARM_SUPPORT)
daniel96ecc332014-05-18 02:03:15 -070084 add_definitions(-DCAPSTONE_HAS_ARM)
learn_more43f8ac12015-04-15 12:15:26 +020085 set(SOURCES_ARM
daniel96ecc332014-05-18 02:03:15 -070086 arch/ARM/ARMDisassembler.c
87 arch/ARM/ARMInstPrinter.c
88 arch/ARM/ARMMapping.c
89 arch/ARM/ARMModule.c
90 )
learn_more317682b2015-04-15 20:31:32 +020091 set(HEADERS_ARM
92 arch/ARM/ARMAddressingModes.h
93 arch/ARM/ARMBaseInfo.h
94 arch/ARM/ARMDisassembler.h
95 arch/ARM/ARMGenAsmWriter.inc
96 arch/ARM/ARMGenDisassemblerTables.inc
97 arch/ARM/ARMGenInstrInfo.inc
98 arch/ARM/ARMGenRegisterInfo.inc
99 arch/ARM/ARMGenSubtargetInfo.inc
100 arch/ARM/ARMInstPrinter.h
101 arch/ARM/ARMMapping.h
102 )
daniel96ecc332014-05-18 02:03:15 -0700103 set(TEST_SOURCES ${TEST_SOURCES} test_arm.c)
104endif ()
Nguyen Anh Quynhf6af5092014-05-28 14:29:20 +0800105
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +0200106if (CAPSTONE_ARM64_SUPPORT)
daniel96ecc332014-05-18 02:03:15 -0700107 add_definitions(-DCAPSTONE_HAS_ARM64)
learn_more43f8ac12015-04-15 12:15:26 +0200108 set(SOURCES_ARM64
daniel96ecc332014-05-18 02:03:15 -0700109 arch/AArch64/AArch64BaseInfo.c
110 arch/AArch64/AArch64Disassembler.c
111 arch/AArch64/AArch64InstPrinter.c
112 arch/AArch64/AArch64Mapping.c
113 arch/AArch64/AArch64Module.c
114 )
learn_more317682b2015-04-15 20:31:32 +0200115 set(HEADERS_ARM64
116 arch/AArch64/AArch64AddressingModes.h
117 arch/AArch64/AArch64BaseInfo.h
118 arch/AArch64/AArch64Disassembler.h
119 arch/AArch64/AArch64GenAsmWriter.inc
120 arch/AArch64/AArch64GenDisassemblerTables.inc
121 arch/AArch64/AArch64GenInstrInfo.inc
122 arch/AArch64/AArch64GenRegisterInfo.inc
123 arch/AArch64/AArch64GenSubtargetInfo.inc
124 arch/AArch64/AArch64InstPrinter.h
125 arch/AArch64/AArch64Mapping.h
126 )
daniel96ecc332014-05-18 02:03:15 -0700127 set(TEST_SOURCES ${TEST_SOURCES} test_arm64.c)
128endif ()
129
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +0200130if (CAPSTONE_MIPS_SUPPORT)
daniel96ecc332014-05-18 02:03:15 -0700131 add_definitions(-DCAPSTONE_HAS_MIPS)
learn_more43f8ac12015-04-15 12:15:26 +0200132 set(SOURCES_MIPS
daniel96ecc332014-05-18 02:03:15 -0700133 arch/Mips/MipsDisassembler.c
Nguyen Anh Quynhf6af5092014-05-28 14:29:20 +0800134 arch/Mips/MipsInstPrinter.c
daniel96ecc332014-05-18 02:03:15 -0700135 arch/Mips/MipsMapping.c
136 arch/Mips/MipsModule.c
137 )
learn_more317682b2015-04-15 20:31:32 +0200138 set(HEADERS_MIPS
139 arch/Mips/MipsDisassembler.h
140 arch/Mips/MipsGenAsmWriter.inc
141 arch/Mips/MipsGenDisassemblerTables.inc
142 arch/Mips/MipsGenInstrInfo.inc
143 arch/Mips/MipsGenRegisterInfo.inc
144 arch/Mips/MipsGenSubtargetInfo.inc
145 arch/Mips/MipsInstPrinter.h
146 arch/Mips/MipsMapping.h
147 )
daniel96ecc332014-05-18 02:03:15 -0700148 set(TEST_SOURCES ${TEST_SOURCES} test_mips.c)
149endif ()
150
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +0200151if (CAPSTONE_PPC_SUPPORT)
daniel96ecc332014-05-18 02:03:15 -0700152 add_definitions(-DCAPSTONE_HAS_POWERPC)
learn_more43f8ac12015-04-15 12:15:26 +0200153 set(SOURCES_PPC
daniel96ecc332014-05-18 02:03:15 -0700154 arch/PowerPC/PPCDisassembler.c
155 arch/PowerPC/PPCInstPrinter.c
156 arch/PowerPC/PPCMapping.c
157 arch/PowerPC/PPCModule.c
158 )
learn_more317682b2015-04-15 20:31:32 +0200159 set(HEADERS_PPC
160 arch/PowerPC/PPCDisassembler.h
161 arch/PowerPC/PPCGenAsmWriter.inc
162 arch/PowerPC/PPCGenDisassemblerTables.inc
163 arch/PowerPC/PPCGenInstrInfo.inc
164 arch/PowerPC/PPCGenRegisterInfo.inc
165 arch/PowerPC/PPCGenSubtargetInfo.inc
166 arch/PowerPC/PPCInstPrinter.h
167 arch/PowerPC/PPCMapping.h
168 arch/PowerPC/PPCPredicates.h
169 )
daniel96ecc332014-05-18 02:03:15 -0700170 set(TEST_SOURCES ${TEST_SOURCES} test_ppc.c)
171endif ()
172
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +0200173if (CAPSTONE_X86_SUPPORT)
daniel96ecc332014-05-18 02:03:15 -0700174 add_definitions(-DCAPSTONE_HAS_X86)
learn_more43f8ac12015-04-15 12:15:26 +0200175 set(SOURCES_X86
Nguyen Anh Quynha71a27b2014-05-28 21:20:30 +0800176 arch/X86/X86Disassembler.c
177 arch/X86/X86DisassemblerDecoder.c
178 arch/X86/X86IntelInstPrinter.c
179 arch/X86/X86Mapping.c
180 arch/X86/X86Module.c
181 )
learn_more317682b2015-04-15 20:31:32 +0200182 set(HEADERS_X86
183 arch/X86/X86BaseInfo.h
184 arch/X86/X86Disassembler.h
185 arch/X86/X86DisassemblerDecoder.h
186 arch/X86/X86DisassemblerDecoderCommon.h
187 arch/X86/X86GenAsmWriter.inc
188 arch/X86/X86GenAsmWriter1.inc
189 arch/X86/X86GenAsmWriter1_reduce.inc
190 arch/X86/X86GenAsmWriter_reduce.inc
191 arch/X86/X86GenDisassemblerTables.inc
192 arch/X86/X86GenDisassemblerTables_reduce.inc
193 arch/X86/X86GenInstrInfo.inc
194 arch/X86/X86GenInstrInfo_reduce.inc
195 arch/X86/X86GenRegisterInfo.inc
196 arch/X86/X86InstPrinter.h
197 arch/X86/X86Mapping.h
198 )
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +0200199 if (NOT CAPSTONE_BUILD_DIET)
learn_more07499302015-04-15 21:39:10 +0200200 set(SOURCES_X86 ${SOURCES_X86} arch/X86/X86ATTInstPrinter.c)
Nguyen Anh Quynh758fcbe2014-05-31 10:44:27 +0800201 endif ()
daniel96ecc332014-05-18 02:03:15 -0700202 set(TEST_SOURCES ${TEST_SOURCES} test_x86.c)
203endif ()
Nguyen Anh Quynhf6af5092014-05-28 14:29:20 +0800204
Yegor Derevenetsebc4ced2014-09-21 19:52:57 +0200205if (CAPSTONE_SPARC_SUPPORT)
Nguyen Anh Quynhd0023192014-05-28 15:15:00 +0800206 add_definitions(-DCAPSTONE_HAS_SPARC)
learn_more43f8ac12015-04-15 12:15:26 +0200207 set(SOURCES_SPARC
208 arch/Sparc/SparcDisassembler.c
209 arch/Sparc/SparcInstPrinter.c
210 arch/Sparc/SparcMapping.c
211 arch/Sparc/SparcModule.c
Nguyen Anh Quynhd0023192014-05-28 15:15:00 +0800212 )
learn_more317682b2015-04-15 20:31:32 +0200213 set(HEADERS_SPARC
214 arch/Sparc/Sparc.h
215 arch/Sparc/SparcDisassembler.h
216 arch/Sparc/SparcGenAsmWriter.inc
217 arch/Sparc/SparcGenDisassemblerTables.inc
218 arch/Sparc/SparcGenInstrInfo.inc
219 arch/Sparc/SparcGenRegisterInfo.inc
220 arch/Sparc/SparcGenSubtargetInfo.inc
221 arch/Sparc/SparcInstPrinter.h
222 arch/Sparc/SparcMapping.h
223 )
Nguyen Anh Quynhd0023192014-05-28 15:15:00 +0800224 set(TEST_SOURCES ${TEST_SOURCES} test_sparc.c)
225endif ()
226
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +0200227if (CAPSTONE_SYSZ_SUPPORT)
Nguyen Anh Quynhd0023192014-05-28 15:15:00 +0800228 add_definitions(-DCAPSTONE_HAS_SYSZ)
learn_more43f8ac12015-04-15 12:15:26 +0200229 set(SOURCES_SYSZ
230 arch/SystemZ/SystemZDisassembler.c
231 arch/SystemZ/SystemZInstPrinter.c
232 arch/SystemZ/SystemZMapping.c
233 arch/SystemZ/SystemZModule.c
234 arch/SystemZ/SystemZMCTargetDesc.c
Nguyen Anh Quynhd0023192014-05-28 15:15:00 +0800235 )
learn_more317682b2015-04-15 20:31:32 +0200236 set(HEADERS_SYSZ
237 arch/SystemZ/SystemZDisassembler.h
238 arch/SystemZ/SystemZGenAsmWriter.inc
239 arch/SystemZ/SystemZGenDisassemblerTables.inc
240 arch/SystemZ/SystemZGenInstrInfo.inc
241 arch/SystemZ/SystemZGenRegisterInfo.inc
242 arch/SystemZ/SystemZGenSubtargetInfo.inc
243 arch/SystemZ/SystemZInstPrinter.h
244 arch/SystemZ/SystemZMCTargetDesc.h
245 arch/SystemZ/SystemZMapping.h
246 )
Nguyen Anh Quynhd0023192014-05-28 15:15:00 +0800247 set(TEST_SOURCES ${TEST_SOURCES} test_systemz.c)
248endif ()
249
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +0200250if (CAPSTONE_XCORE_SUPPORT)
Nguyen Anh Quynhd0023192014-05-28 15:15:00 +0800251 add_definitions(-DCAPSTONE_HAS_XCORE)
learn_more43f8ac12015-04-15 12:15:26 +0200252 set(SOURCES_XCORE
253 arch/XCore/XCoreDisassembler.c
254 arch/XCore/XCoreInstPrinter.c
255 arch/XCore/XCoreMapping.c
256 arch/XCore/XCoreModule.c
Nguyen Anh Quynhd0023192014-05-28 15:15:00 +0800257 )
learn_more317682b2015-04-15 20:31:32 +0200258 set(HEADERS_XCORE
259 arch/XCore/XCoreDisassembler.h
260 arch/XCore/XCoreGenAsmWriter.inc
261 arch/XCore/XCoreGenDisassemblerTables.inc
262 arch/XCore/XCoreGenInstrInfo.inc
263 arch/XCore/XCoreGenRegisterInfo.inc
264 arch/XCore/XCoreInstPrinter.h
265 arch/XCore/XCoreMapping.h
266 )
Nguyen Anh Quynhd0023192014-05-28 15:15:00 +0800267 set(TEST_SOURCES ${TEST_SOURCES} test_xcore.c)
268endif ()
269
reverserbcf09f42015-04-09 18:28:19 +0100270if (CAPSTONE_OSXKERNEL_SUPPORT)
271 add_definitions(-DCAPSTONE_HAS_OSXKERNEL)
272endif ()
273
learn_more43f8ac12015-04-15 12:15:26 +0200274set(ALL_SOURCES
learn_more317682b2015-04-15 20:31:32 +0200275 ${SOURCES_ENGINE}
learn_more43f8ac12015-04-15 12:15:26 +0200276 ${SOURCES_ARM}
277 ${SOURCES_ARM64}
278 ${SOURCES_MIPS}
279 ${SOURCES_PPC}
280 ${SOURCES_X86}
281 ${SOURCES_SPARC}
282 ${SOURCES_SYSZ}
283 ${SOURCES_XCORE}
284 )
285
learn_more317682b2015-04-15 20:31:32 +0200286set(ALL_HEADERS
learn_morecaf47a52015-04-23 20:39:48 +0200287 ${HEADERS_COMMON}
learn_more317682b2015-04-15 20:31:32 +0200288 ${HEADERS_ENGINE}
289 ${HEADERS_ARM}
290 ${HEADERS_ARM64}
291 ${HEADERS_MIPS}
292 ${HEADERS_PPC}
293 ${HEADERS_X86}
294 ${HEADERS_SPARC}
295 ${HEADERS_SYSZ}
296 ${HEADERS_XCORE}
297 )
298
daniel96ecc332014-05-18 02:03:15 -0700299include_directories("${PROJECT_SOURCE_DIR}/include")
300
Ali Rizvi-Santiago10053ba2014-06-03 21:04:23 +0000301## properties
302# version info
303set_property(GLOBAL PROPERTY VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
304set_property(GLOBAL PROPERTY SOVERSION SOVERSION ${VERSION_MAJOR})
305
306## targets
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +0200307if (CAPSTONE_BUILD_STATIC)
learn_more317682b2015-04-15 20:31:32 +0200308 add_library(capstone-static STATIC ${ALL_SOURCES} ${ALL_HEADERS})
Ali Rizvi-Santiago10053ba2014-06-03 21:04:23 +0000309 set_property(TARGET capstone-static PROPERTY OUTPUT_NAME capstone)
Ali Rizvi-Santiago10053ba2014-06-03 21:04:23 +0000310 set(default-target capstone-static)
Nguyen Anh Quynhd0023192014-05-28 15:15:00 +0800311endif ()
312
Nguyen Anh Quynh4822f992015-02-03 18:25:12 +0800313# Force static runtime libraries
314if (CAPSTONE_BUILD_STATIC_RUNTIME)
315 FOREACH(flag
learn_more43f8ac12015-04-15 12:15:26 +0200316 CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO
317 CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_DEBUG_INIT
318 CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO
319 CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG_INIT)
320 STRING(REPLACE "/MD" "/MT" "${flag}" "${${flag}}")
321 SET("${flag}" "${${flag}} /EHsc")
Nguyen Anh Quynh4822f992015-02-03 18:25:12 +0800322 ENDFOREACH()
323endif ()
324
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +0200325if (CAPSTONE_BUILD_SHARED)
learn_more317682b2015-04-15 20:31:32 +0200326 add_library(capstone-shared SHARED ${ALL_SOURCES} ${ALL_HEADERS})
Ali Rizvi-Santiago10053ba2014-06-03 21:04:23 +0000327 set_property(TARGET capstone-shared PROPERTY OUTPUT_NAME capstone)
328 set_property(TARGET capstone-shared PROPERTY COMPILE_FLAGS -DCAPSTONE_SHARED)
329
learn_more455fa062015-04-14 17:00:57 +0200330 if (MSVC)
learn_morec85e3c32015-04-14 15:39:07 +0200331 set_target_properties(capstone-shared PROPERTIES IMPORT_SUFFIX _dll.lib)
learn_more455fa062015-04-14 17:00:57 +0200332 endif ()
learn_morec85e3c32015-04-14 15:39:07 +0200333
Ali Rizvi-Santiago10053ba2014-06-03 21:04:23 +0000334 if(NOT DEFINED default-target) # honor `capstone-static` for tests first.
learn_more43f8ac12015-04-15 12:15:26 +0200335 set(default-target capstone-shared)
336 add_definitions(-DCAPSTONE_SHARED)
Ali Rizvi-Santiago10053ba2014-06-03 21:04:23 +0000337 endif ()
338endif ()
daniel96ecc332014-05-18 02:03:15 -0700339
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +0200340if (CAPSTONE_BUILD_TESTS)
daniel96ecc332014-05-18 02:03:15 -0700341 foreach (TSRC ${TEST_SOURCES})
flyingsymbolsd91f9642014-10-22 03:21:43 -0400342 STRING(REGEX REPLACE ".c$" "" TBIN ${TSRC})
343 add_executable(${TBIN} "tests/${TSRC}")
344 target_link_libraries(${TBIN} ${default-target})
daniel96ecc332014-05-18 02:03:15 -0700345 endforeach ()
flyingsymbolsd91f9642014-10-22 03:21:43 -0400346 if (CAPSTONE_ARM_SUPPORT)
347 set(ARM_REGRESS_TEST test_arm_regression.c)
348 STRING(REGEX REPLACE ".c$" "" ARM_REGRESS_BIN ${ARM_REGRESS_TEST})
349 add_executable(${ARM_REGRESS_BIN} "suite/arm/${ARM_REGRESS_TEST}")
350 target_link_libraries(${ARM_REGRESS_BIN} ${default-target})
351 endif()
daniel96ecc332014-05-18 02:03:15 -0700352endif ()
353
learn_more317682b2015-04-15 20:31:32 +0200354source_group("Source\\Engine" FILES ${SOURCES_ENGINE})
355source_group("Source\\ARM" FILES ${SOURCES_ARM})
356source_group("Source\\ARM64" FILES ${SOURCES_ARM64})
357source_group("Source\\Mips" FILES ${SOURCES_MIPS})
358source_group("Source\\PowerPC" FILES ${SOURCES_PPC})
learn_more6e760372015-04-16 19:15:14 +0200359source_group("Source\\Sparc" FILES ${SOURCES_SPARC})
360source_group("Source\\SystemZ" FILES ${SOURCES_SYSZ})
361source_group("Source\\X86" FILES ${SOURCES_X86})
learn_more317682b2015-04-15 20:31:32 +0200362source_group("Source\\XCore" FILES ${SOURCES_XCORE})
363
learn_morecaf47a52015-04-23 20:39:48 +0200364source_group("Include\\Common" FILES ${HEADERS_COMMON})
learn_more317682b2015-04-15 20:31:32 +0200365source_group("Include\\Engine" FILES ${HEADERS_ENGINE})
366source_group("Include\\ARM" FILES ${HEADERS_ARM})
367source_group("Include\\ARM64" FILES ${HEADERS_ARM64})
368source_group("Include\\Mips" FILES ${HEADERS_MIPS})
369source_group("Include\\PowerPC" FILES ${HEADERS_PPC})
learn_more6e760372015-04-16 19:15:14 +0200370source_group("Include\\Sparc" FILES ${HEADERS_SPARC})
371source_group("Include\\SystemZ" FILES ${HEADERS_SYSZ})
372source_group("Include\\X86" FILES ${HEADERS_X86})
learn_more317682b2015-04-15 20:31:32 +0200373source_group("Include\\XCore" FILES ${HEADERS_XCORE})
374
Ali Rizvi-Santiago10053ba2014-06-03 21:04:23 +0000375## installation
learn_morecaf47a52015-04-23 20:39:48 +0200376install(FILES ${HEADERS_COMMON} DESTINATION include/capstone)
Nguyen Anh Quynh73438482014-05-28 21:55:37 +0800377
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +0200378if (CAPSTONE_BUILD_STATIC)
Ali Rizvi-Santiago10053ba2014-06-03 21:04:23 +0000379 install(TARGETS capstone-static
380 RUNTIME DESTINATION bin
381 LIBRARY DESTINATION lib
382 ARCHIVE DESTINATION lib)
383endif ()
384
Yegor Derevenetsb4d78d92014-09-19 18:39:22 +0200385if (CAPSTONE_BUILD_SHARED)
Ali Rizvi-Santiago10053ba2014-06-03 21:04:23 +0000386 install(TARGETS capstone-shared
387 RUNTIME DESTINATION bin
388 LIBRARY DESTINATION lib
389 ARCHIVE DESTINATION lib)
390endif ()
Nguyen Anh Quynhf7ff8f62016-10-11 16:50:51 +0800391
Nguyen Anh Quynhae02bf12016-10-11 23:21:12 +0800392if (CAPSTONE_BUILD_SHARED)
Nguyen Anh Quynhfbd3bcb2016-10-19 23:01:31 +0800393FILE(GLOB CSTOOL_SRC cstool/*.c)
394add_executable(cstool ${CSTOOL_SRC})
Nguyen Anh Quynhae02bf12016-10-11 23:21:12 +0800395target_link_libraries(cstool ${default-target})
396
397install(TARGETS cstool DESTINATION bin)
398endif ()