blob: cf1a7e7e31118cba9e9b99926723b4236e187861 [file] [log] [blame]
daniel96ecc332014-05-18 02:03:15 -07001cmake_minimum_required(VERSION 2.6)
2project(capstone)
3
Nguyen Anh Quynha71a27b2014-05-28 21:20:30 +08004# Compile-time options
5# Modify the following options to customize Capstone engine
Nguyen Anh Quynh56e4efd2014-05-28 16:27:53 +08006
7option(BUILD_DIET "Build diet library" OFF)
daniel96ecc332014-05-18 02:03:15 -07008option(BUILD_TESTS "Build tests" ON)
9option(USE_DEFAULT_ALLOC "Use default memory allocation functions" ON)
Nguyen Anh Quynha71a27b2014-05-28 21:20:30 +080010
daniel96ecc332014-05-18 02:03:15 -070011option(ARM_SUPPORT "ARM support" ON)
12option(ARM64_SUPPORT "ARM64 support" ON)
13option(MIPS_SUPPORT "MIPS support" ON)
14option(PPC_SUPPORT "PowerPC support" ON)
Nguyen Anh Quynhd0023192014-05-28 15:15:00 +080015option(SPARC_SUPPORT "Sparc support" ON)
16option(SYSZ_SUPPORT "SystemZ support" ON)
17option(XCORE_SUPPORT "XCore support" ON)
Nguyen Anh Quynha71a27b2014-05-28 21:20:30 +080018option(X86_SUPPORT "X86 support" ON)
19option(X86_REDUCE "X86 with reduce instruction sets to minimize library" OFF)
20# End of compile-time option
21# DO NOT modify anything below
22
23set(VERSION_MAJOR 2)
24set(VERSION_MINOR 1)
25set(VERSION_PATCH 2)
daniel96ecc332014-05-18 02:03:15 -070026
27if (USE_DEFAULT_ALLOC)
Nguyen Anh Quynh2f661e02014-05-28 14:41:39 +080028 add_definitions(-DCAPSTONE_USE_SYS_DYN_MEM)
daniel96ecc332014-05-18 02:03:15 -070029endif ()
30
31set(SOURCES
32 cs.c
33 MCInst.c
34 MCInstrDesc.c
35 MCRegisterInfo.c
36 SStream.c
37 utils.c
38 )
Nguyen Anh Quynhf6af5092014-05-28 14:29:20 +080039
Nguyen Anh Quynh6a899ff2014-05-28 16:09:09 +080040set(TEST_SOURCES test.c test_detail.c test_skipdata.c)
Nguyen Anh Quynhf6af5092014-05-28 14:29:20 +080041
daniel96ecc332014-05-18 02:03:15 -070042if (ARM_SUPPORT)
43 add_definitions(-DCAPSTONE_HAS_ARM)
44 set(SOURCES
45 ${SOURCES}
46 arch/ARM/ARMDisassembler.c
47 arch/ARM/ARMInstPrinter.c
48 arch/ARM/ARMMapping.c
49 arch/ARM/ARMModule.c
50 )
51 set(TEST_SOURCES ${TEST_SOURCES} test_arm.c)
52endif ()
Nguyen Anh Quynhf6af5092014-05-28 14:29:20 +080053
daniel96ecc332014-05-18 02:03:15 -070054if (ARM64_SUPPORT)
55 add_definitions(-DCAPSTONE_HAS_ARM64)
56 set(SOURCES
57 ${SOURCES}
58 arch/AArch64/AArch64BaseInfo.c
59 arch/AArch64/AArch64Disassembler.c
60 arch/AArch64/AArch64InstPrinter.c
61 arch/AArch64/AArch64Mapping.c
62 arch/AArch64/AArch64Module.c
63 )
64 set(TEST_SOURCES ${TEST_SOURCES} test_arm64.c)
65endif ()
66
67if (MIPS_SUPPORT)
68 add_definitions(-DCAPSTONE_HAS_MIPS)
69 set(SOURCES
70 ${SOURCES}
71 arch/Mips/MipsDisassembler.c
Nguyen Anh Quynhf6af5092014-05-28 14:29:20 +080072 arch/Mips/MipsInstPrinter.c
daniel96ecc332014-05-18 02:03:15 -070073 arch/Mips/MipsMapping.c
74 arch/Mips/MipsModule.c
75 )
76 set(TEST_SOURCES ${TEST_SOURCES} test_mips.c)
77endif ()
78
79if (PPC_SUPPORT)
80 add_definitions(-DCAPSTONE_HAS_POWERPC)
81 set(SOURCES
82 ${SOURCES}
83 arch/PowerPC/PPCDisassembler.c
84 arch/PowerPC/PPCInstPrinter.c
85 arch/PowerPC/PPCMapping.c
86 arch/PowerPC/PPCModule.c
87 )
88 set(TEST_SOURCES ${TEST_SOURCES} test_ppc.c)
89endif ()
90
91if (X86_SUPPORT)
92 add_definitions(-DCAPSTONE_HAS_X86)
Nguyen Anh Quynha71a27b2014-05-28 21:20:30 +080093if (BUILD_DIET)
94 set(SOURCES
95 ${SOURCES}
96 arch/X86/X86Disassembler.c
97 arch/X86/X86DisassemblerDecoder.c
98 arch/X86/X86IntelInstPrinter.c
99 arch/X86/X86Mapping.c
100 arch/X86/X86Module.c
101 )
102else ()
daniel96ecc332014-05-18 02:03:15 -0700103 set(SOURCES
104 ${SOURCES}
105 arch/X86/X86ATTInstPrinter.c
106 arch/X86/X86Disassembler.c
107 arch/X86/X86DisassemblerDecoder.c
108 arch/X86/X86IntelInstPrinter.c
109 arch/X86/X86Mapping.c
110 arch/X86/X86Module.c
111 )
Nguyen Anh Quynha71a27b2014-05-28 21:20:30 +0800112endif ()
daniel96ecc332014-05-18 02:03:15 -0700113 set(TEST_SOURCES ${TEST_SOURCES} test_x86.c)
114endif ()
Nguyen Anh Quynhf6af5092014-05-28 14:29:20 +0800115
Nguyen Anh Quynhd0023192014-05-28 15:15:00 +0800116if (SPARC_SUPPORT)
117 add_definitions(-DCAPSTONE_HAS_SPARC)
118 set(SOURCES
119 ${SOURCES}
120 arch/Sparc/SparcDisassembler.c
121 arch/Sparc/SparcInstPrinter.c
122 arch/Sparc/SparcMapping.c
123 arch/Sparc/SparcModule.c
124 )
125 set(TEST_SOURCES ${TEST_SOURCES} test_sparc.c)
126endif ()
127
128if (SYSZ_SUPPORT)
129 add_definitions(-DCAPSTONE_HAS_SYSZ)
130 set(SOURCES
131 ${SOURCES}
132 arch/SystemZ/SystemZDisassembler.c
133 arch/SystemZ/SystemZInstPrinter.c
134 arch/SystemZ/SystemZMapping.c
135 arch/SystemZ/SystemZModule.c
136 arch/SystemZ/SystemZMCTargetDesc.c
137 )
138 set(TEST_SOURCES ${TEST_SOURCES} test_systemz.c)
139endif ()
140
141if (XCORE_SUPPORT)
142 add_definitions(-DCAPSTONE_HAS_XCORE)
143 set(SOURCES
144 ${SOURCES}
145 arch/XCore/XCoreDisassembler.c
146 arch/XCore/XCoreInstPrinter.c
147 arch/XCore/XCoreMapping.c
148 arch/XCore/XCoreModule.c
149 )
150 set(TEST_SOURCES ${TEST_SOURCES} test_xcore.c)
151endif ()
152
daniel96ecc332014-05-18 02:03:15 -0700153include_directories("${PROJECT_SOURCE_DIR}/include")
154
Nguyen Anh Quynhd0023192014-05-28 15:15:00 +0800155if (BUILD_DIET)
156 add_definitions(-DCAPSTONE_DIET)
157endif ()
158
Nguyen Anh Quynh31ec5422014-05-28 15:58:35 +0800159if (X86_REDUCE)
160 add_definitions(-DCAPSTONE_X86_REDUCE)
161endif ()
162
Nguyen Anh Quynh73438482014-05-28 21:55:37 +0800163add_library(libcapstone_static STATIC ${SOURCES})
164add_library(libcapstone SHARED ${SOURCES})
Nguyen Anh Quynhd0023192014-05-28 15:15:00 +0800165
Nguyen Anh Quynhf6af5092014-05-28 14:29:20 +0800166set_target_properties(libcapstone PROPERTIES
daniel96ecc332014-05-18 02:03:15 -0700167 VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
168 SOVERSION ${VERSION_MAJOR})
169
170if (BUILD_TESTS)
171 foreach (TSRC ${TEST_SOURCES})
172 STRING(REGEX REPLACE ".c$" "" TBIN ${TSRC})
173 add_executable(${TBIN} "tests/${TSRC}")
Nguyen Anh Quynh73438482014-05-28 21:55:37 +0800174 target_link_libraries(${TBIN} libcapstone_static)
daniel96ecc332014-05-18 02:03:15 -0700175 endforeach ()
176endif ()
177
Nguyen Anh Quynhd0023192014-05-28 15:15:00 +0800178set(INCLUDES arm64.h arm.h capstone.h mips.h ppc.h x86.h sparc.h systemz.h xcore.h)
daniel96ecc332014-05-18 02:03:15 -0700179foreach (INC ${INCLUDES})
180 install(FILES "include/${INC}" DESTINATION include/capstone)
181endforeach ()
Nguyen Anh Quynh73438482014-05-28 21:55:37 +0800182
Nguyen Anh Quynhf6af5092014-05-28 14:29:20 +0800183install(TARGETS libcapstone
daniel96ecc332014-05-18 02:03:15 -0700184 RUNTIME DESTINATION bin
185 LIBRARY DESTINATION lib
186 ARCHIVE DESTINATION lib)