aboutsummaryrefslogtreecommitdiffstats
path: root/capstone/COMPILE_CMAKE.TXT
diff options
context:
space:
mode:
authorAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
committerAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
commitaf1a266670d040d2f4083ff309d732d648afba2a (patch)
tree2fc46203448ddcc6f81546d379abfaeb323575e9 /capstone/COMPILE_CMAKE.TXT
parente02cda008591317b1625707ff8e115a4841aa889 (diff)
Add submodule dependency filesHEADmaster
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'capstone/COMPILE_CMAKE.TXT')
-rw-r--r--capstone/COMPILE_CMAKE.TXT119
1 files changed, 119 insertions, 0 deletions
diff --git a/capstone/COMPILE_CMAKE.TXT b/capstone/COMPILE_CMAKE.TXT
new file mode 100644
index 000000000..bd9d19857
--- /dev/null
+++ b/capstone/COMPILE_CMAKE.TXT
@@ -0,0 +1,119 @@
+This documentation explains how to compile Capstone with CMake, focus on
+using Microsoft Visual C as the compiler.
+
+To compile Capstone on *nix, see COMPILE.TXT.
+
+To compile Capstone on Windows using Visual Studio, see COMPILE_MSVC.TXT.
+
+ *-*-*-*-*-*
+
+This documentation requires CMake & Windows SDK or MS Visual Studio installed on
+your machine.
+
+Get CMake for free from http://www.cmake.org.
+
+
+
+(0) Tailor Capstone to your need.
+
+ Out of archtitectures supported by Capstone, if you just need several selected archs,
+ run "cmake" with the unwanted archs disabled (set to 0) as followings.
+
+ - CAPSTONE_ARM_SUPPORT: support ARM. Run cmake with -DCAPSTONE_ARM_SUPPORT=0 to remove ARM.
+ - CAPSTONE_ARM64_SUPPORT: support ARM64. Run cmake with -DCAPSTONE_ARM64_SUPPORT=0 to remove ARM64.
+ - CAPSTONE_M680X_SUPPORT: support M680X. Run cmake with -DCAPSTONE_M680X_SUPPORT=0 to remove M680X.
+ - CAPSTONE_M68K_SUPPORT: support M68K. Run cmake with -DCAPSTONE_M68K_SUPPORT=0 to remove M68K.
+ - CAPSTONE_MIPS_SUPPORT: support Mips. Run cmake with -DCAPSTONE_MIPS_SUPPORT=0 to remove Mips.
+ - CAPSTONE_MOS65XX_SUPPORT: support MOS65XX. Run cmake with -DCAPSTONE_MOS65XX_SUPPORT=0 to remove MOS65XX.
+ - CAPSTONE_PPC_SUPPORT: support PPC. Run cmake with -DCAPSTONE_PPC_SUPPORT=0 to remove PPC.
+ - CAPSTONE_SPARC_SUPPORT: support Sparc. Run cmake with -DCAPSTONE_SPARC_SUPPORT=0 to remove Sparc.
+ - CAPSTONE_SYSZ_SUPPORT: support SystemZ. Run cmake with -DCAPSTONE_SYSZ_SUPPORT=0 to remove SystemZ.
+ - CAPSTONE_XCORE_SUPPORT: support XCore. Run cmake with -DCAPSTONE_XCORE_SUPPORT=0 to remove XCore.
+ - CAPSTONE_X86_SUPPORT: support X86. Run cmake with -DCAPSTONE_X86_SUPPORT=0 to remove X86.
+ - CAPSTONE_X86_TMS320C64X: support TMS320C64X. Run cmake with -DCAPSTONE_TMS320C64X_SUPPORT=0 to remove TMS320C64X.
+ - CAPSTONE_X86_M680X: support M680X. Run cmake with -DCAPSTONE_M680X_SUPPORT=0 to remove M680X.
+ - CAPSTONE_X86_EVM: support EVM. Run cmake with -DCAPSTONE_EVM_SUPPORT=0 to remove EVM.
+ - CAPSTONE_X86_WASM: support Web Assembly. Run cmake with -DCAPSTONE_WASM_SUPPORT=0 to remove WASM.
+ - CAPSTONE_BPF_SUPPORT: support BPF. Run cmake with -DCAPSTONE_BPF_SUPPORT=0 to remove BPF.
+ - CAPSTONE_ARCHITECUTRE_DEFAULT: Whether architectures are enabled by default.
+ Set this of OFF with -DCAPSTONE_ARCHITECUTRE_DEFAULT=OFF to dissable all architectures by default.
+ You can then enable them again with one of the CAPSTONE_<ARCH>_SUPPORT options.
+
+ By default, all architectures are compiled in.
+
+
+ Besides, Capstone also allows some more customization via following macros.
+
+ - CAPSTONE_USE_SYS_DYN_MEM: change this to OFF to use your own dynamic memory management.
+ - CAPSTONE_BUILD_DIET: change this to ON to make the binaries more compact.
+ - CAPSTONE_X86_REDUCE: change this to ON to make X86 binary smaller.
+ - CAPSTONE_X86_ATT_DISABLE: change this to ON to disable AT&T syntax on x86.
+ - CAPSTONE_DEBUG: change this to ON to enable extra debug assertions.
+
+ By default, Capstone use system dynamic memory management, and both DIET and X86_REDUCE
+ modes are disabled. To use your own memory allocations, turn ON both DIET &
+ X86_REDUCE, run "cmake" with: -DCAPSTONE_USE_SYS_DYN_MEM=0 -DCAPSTONE_BUILD_DIET=1 -DCAPSTONE_X86_REDUCE=1
+
+
+ For each option, refer to docs/README for more details.
+
+
+
+(1) CMake allows you to generate different generators to build Capstone. Below is
+ some examples on how to build Capstone on Windows with CMake.
+
+ (*) You can let CMake select a generator for you. Do:
+
+ mkdir build
+ cd build
+ cmake ..
+
+ This last command is also where you can pass additional CMake configuration flags
+ using `-D<key>=<value>`. Then to build use:
+
+ cmake --build . --config Release
+
+
+ (*) To build Capstone using Nmake of Windows SDK, do:
+
+ mkdir build
+ cd build
+ ..\nmake.bat
+
+ After this, find the samples test*.exe, capstone.lib & capstone.dll
+ in the same directory.
+
+
+
+ (*) To build Capstone using Visual Studio, choose the generator accordingly to the
+ version of Visual Studio on your machine. For example, with Visual Studio 2013, do:
+
+ mkdir build
+ cd build
+ cmake -G "Visual Studio 12" ..
+
+ After this, find capstone.sln in the same directory. Open it with Visual Studio
+ and build the solution including libraries & all test as usual.
+
+
+
+(2) You can make sure the prior steps successfully worked by launching one of the
+ testing binary (test*.exe).
+
+(3) You can also enable just one specific architecture by passing the architecture name
+ to either the cmake.sh or nmake.bat scripts. e.g.:
+
+ ../cmake.sh x86
+
+ Will just target the x86 architecture. The list of available architectures is: ARM,
+ ARM64, M68K, MIPS, PowerPC, Sparc, SystemZ, XCore, x86, TMS320C64x, M680x, EVM, MOS65XX,
+ WASM, BPF, RISCV.
+
+(4) You can also create an installation image with cmake, by using the 'install' target.
+ Use:
+
+ cmake --build . --config Release --target install
+
+ This will normally install an image in a default location (`C:\Program Files` on Windows),
+ so it's good to explicitly set this location when configuring CMake. Use: `-DCMAKE_INSTALL_PREFIX=image`
+ for instance, to put the installation in the 'image' subdirectory of the build directory.