This documentation explains how to compile Capstone for:
To build Capstone for a different platform, please refer to COMPILE.TXT
.
We support the following scenario regarding the build machine:
Before building Capstone for Windows CE 7 (respectively, Windows CE 8), the build script windowsce/make_windowsce7-armv7.bat
(respectively, windowsce/make_windowsce8-armv7.bat
) needs to be modified. The variables specified in the rest of this section are set in this script file.
The following information need to be specified in the build script in order to perform the build:
set WINCE_TOOLCHAIN_ROOT=
is the path of the root directory of the Windows CE toolchain. To build for Windows CE 7, this should be set to the Windows Embedded Compact 7 toolchain. To build for Windows CE 8, this should be set to the device toolchain. Examples:
set WINCE_TOOLCHAIN_ROOT=C:\WINCE700\sdk
set WINCE_TOOLCHAIN_ROOT=C:\Windows_CE_Tools\SDKs\SDK_HW90270\Sdk
set TOOLCHAIN=
is a semicolon-separated list of the paths of the directories containing the binaries of the Windows CE toolchain. For example:
set TOOLCHAIN=%WINCE_TOOLCHAIN_ROOT%\Bin\i386\Arm;%WINCE_TOOLCHAIN_ROOT%\Bin\i386
set INCLUDE=
is a semicolon-separated list of the paths of the directories containing the C header files of the Windows CE device SDK. To build for Windows CE 7, this should also include the directories containing the C header files of the Windows Embedded Compact 7 toolchain. Examples:
set INCLUDE=C:\Program Files (x86)\Windows CE Tools\SDKs\Symbol MC3200c70 Windows CE 7.0 PSDK\Include\Armv4i;C:\WINCE700\public\common\sdk\inc
set INCLUDE=%WINCE_TOOLCHAIN_ROOT%\Inc;%WINCE_TOOLCHAIN_ROOT%\crt\Include
set LIBPATH=
is a semicolon-separated list of the paths of the directories containing the library (i.e., .LIB
) files of the Windows CE 7 device SDK. Examples:
set LIBPATH=C:\Program Files (x86)\Windows CE Tools\SDKs\Symbol MC3200c70 Windows CE 7.0 PSDK\Lib\ARMv4I
set LIBPATH=%WINCE_TOOLCHAIN_ROOT%\Lib\ARMV7\retail;%WINCE_TOOLCHAIN_ROOT%\Crt\Lib\ARM
set LIBS=
is a space-separated list of linker directives controlling library search. Examples:
set LIBS=-nodefaultlib:oldnames.lib -nodefaultlib:libcmtd.lib -nodefaultlib:libcmt.lib coredll.lib corelibc.lib
set LIBS=coredll.lib
By default, the build script produces a dynamic link library (i.e., .DLL
). In order to produce a static library (i.e., .LIB
) instead, the SHARED
variable needs to be set to 0
, i.e.:
set SHARED=0
Capstone supports the following architectures: ARM, ARM64 (AArch64), M68K, MIPS, PowerPC, Sparc, SystemZ, x86 and XCore. However, Capstone can be configured in order to select which architectures need to be supported at runtime. This is controlled via the variable DISASM_ARCH_LIST
, which is a space-separated list that is a combination of the following names:
ARM
ARM64
M68K
MIPS
POWERPC
SPARC
SYSZ
X86
XCORE
.By default, DISASM_ARCH_LIST
includes support for all architectures supported by Capstone. For example:
set DISASM_ARCH_LIST=ARM ARM64 X86
will produce a Capstone binary that supports the following architectures: ARM, ARM64 and x86.
Capstone has a list of features that can be controlled when needed. Each feature is controlled through setting a variable from the following list:
In order to produce a smaller binary that provides a subset of the features of Capstone, but still supports all the selected architectures, please specify the following:
set DIET_MODE=1
By default, this variable is set to 0
.
By default, Capstone uses the default system-provided dynamic memory management functions (e.g., malloc()
, realloc()
, free()
) for its internal memory management. However, Capstone can instead be configured to call custom memory management functions provided by client applications. In order to enable this behavior, set the following:
set USE_SYS_DYN_MEM=0
In order to produce a smaller Capstone binary, support for the x86
architecture can be more limited. In order to do so, set the following:
set X86_REDUCE=1
By default, this is set to 0
.
If the AT&T disassembly style of the x86
architecture is never needed at runtime, then disabling support for it can produce a smaller Capstone binary. To do this, please set the following:
set X86_ATT_DISABLE=1
By default, this is set to 0
.
Please refer to docs/README
for more details on these features.