mirror of
https://github.com/capstone-engine/capstone.git
synced 2024-11-26 23:10:32 +00:00
af1ed2fb3d
Some checks failed
Run Test / ${{ matrix.config.name }} (map[arch:x64 build-system:cmake diet-build:OFF enable-asan:OFF name:ubuntu-22.04 x64 cmake os:ubuntu-22.04]) (push) Failing after 0s
Run Test / ${{ matrix.config.name }} (map[arch:x64 build-system:make diet-build:OFF enable-asan:OFF name:ubuntu-22.04 x64 make os:ubuntu-22.04]) (push) Failing after 0s
RELEASE BUILD - PyPI 📦 Distribution / Build wheels on ${{ matrix.os }} (ubuntu-latest) (push) Failing after 0s
RELEASE BUILD - PyPI 📦 Distribution / Make SDist (push) Failing after 0s
Run Test / ${{ matrix.config.name }} (map[arch:x64 build-system:cmake diet-build:OFF enable-asan:ON name:ubuntu-24.04 x64 ASAN os:ubuntu-24.04]) (push) Has been cancelled
Run Test / ${{ matrix.config.name }} (map[arch:x64 name:windows x64 MSVC 64bit os:windows-latest platform:windows python-arch:x64 python-version:3.9]) (push) Has been cancelled
Auto-Sync / check (push) Has been cancelled
Run clang-tidy / clang-tidy (push) Has been cancelled
RELEASE BUILD - PyPI 📦 Distribution / Build wheels on ${{ matrix.os }} (macos-latest) (push) Has been cancelled
RELEASE BUILD - PyPI 📦 Distribution / Build wheels on ${{ matrix.os }} (windows-latest) (push) Has been cancelled
Python Package CI / build (macOS-14, 3.12) (push) Has been cancelled
Python Package CI / build (macOS-14, 3.8) (push) Has been cancelled
Python Package CI / build (ubuntu-24.04, 3.12) (push) Has been cancelled
Python Package CI / build (ubuntu-24.04, 3.8) (push) Has been cancelled
Python Package CI / build (windows-2022, 3.12) (push) Has been cancelled
Python Package CI / build (windows-2022, 3.8) (push) Has been cancelled
RELEASE BUILD - PyPI 📦 Distribution / publish (push) Has been cancelled
132 lines
6.5 KiB
Plaintext
132 lines
6.5 KiB
Plaintext
This documentation explains how to compile Capstone with CMake, focus on
|
|
using Microsoft Visual C as the compiler.
|
|
|
|
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 architectures 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_AARCH64_SUPPORT: support AARCH64. Run cmake with -DCAPSTONE_AARCH64_SUPPORT=0 to remove AARCH64.
|
|
- CAPSTONE_ALPHA_SUPPORT: support Alpha. Run cmake with -DCAPSTONE_ALPHA_SUPPORT=0 to remove Alpha.
|
|
- CAPSTONE_HPPA_SUPPORT: support HPPA. Run cmake with -DCAPSTONE_HPPA_SUPPORT=0 to remove HPPA.
|
|
- CAPSTONE_LOONGARCH_SUPPORT: support LoongArch. Run cmake with -DCAPSTONE_LOONGARCH_SUPPORT=0 to remove LoongArch.
|
|
- 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_SYSTEMZ_SUPPORT: support SystemZ. Run cmake with -DCAPSTONE_SYSTEMZ_SUPPORT=0 to remove SystemZ.
|
|
- CAPSTONE_XCORE_SUPPORT: support XCore. Run cmake with -DCAPSTONE_XCORE_SUPPORT=0 to remove XCore.
|
|
- CAPSTONE_TRICORE_SUPPORT: support TriCore. Run cmake with -DCAPSTONE_TRICORE_SUPPORT=0 to remove TriCore.
|
|
- CAPSTONE_X86_SUPPORT: support X86. Run cmake with -DCAPSTONE_X86_SUPPORT=0 to remove X86.
|
|
- CAPSTONE_TMS320C64X_SUPPORT: support TMS320C64X. Run cmake with -DCAPSTONE_TMS320C64X_SUPPORT=0 to remove TMS320C64X.
|
|
- CAPSTONE_M680X_SUPPORT: support M680X. Run cmake with -DCAPSTONE_M680X_SUPPORT=0 to remove M680X.
|
|
- CAPSTONE_EVM_SUPPORT: support EVM. Run cmake with -DCAPSTONE_EVM_SUPPORT=0 to remove EVM.
|
|
- CAPSTONE_WASM_SUPPORT: 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_RISCV_SUPPORT: support RISCV. Run cmake with -DCAPSTONE_RISCV_SUPPORT=0 to remove RISCV.
|
|
- CAPSTONE_ARCHITECTURE_DEFAULT: Whether architectures are enabled by default.
|
|
Set this of OFF with -DCAPSTONE_ARCHITECTURE_DEFAULT=OFF to disable 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. If you're building a static library that you intend to link into
|
|
multiple consumers, and they have differing architecture requirements, you may want -DCAPSTONE_USE_ARCH_REGISTRATION=1
|
|
and call cs_arch_register_*() for the architectures you need in each particular consumer. In this way you only pay
|
|
footprint size for the architectures you're actually using in each consumer, without having to compile Capstone
|
|
multiple times.
|
|
|
|
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.
|
|
- CAPSTONE_BUILD_CSTEST: Build `cstest` in `suite/cstest/`. `cstest` requires `libyaml` on your system.
|
|
- ENABLE_ASAN: Compiles Capstone with the address sanitizer.
|
|
|
|
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>`.
|
|
For a debug build add `-DCMAKE_BUILD_TYPE=Debug`.
|
|
To export `compile_commands.json` add `-DCMAKE_EXPORT_COMPILE_COMMANDS=ON`.
|
|
|
|
Then to build use:
|
|
|
|
cmake --build . --config [Release/Debug]
|
|
|
|
|
|
(*) 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,
|
|
AARCH64, M68K, MIPS, PowerPC, Sparc, SystemZ, XCore, x86, TMS320C64x, M680x, EVM, MOS65XX,
|
|
WASM, BPF, RISCV, Alpha, HPPA, LoongArch.
|
|
|
|
(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.
|