xref: /aosp_15_r20/external/capstone/config.mk (revision 9a0e4156d50a75a99ec4f1653a0e9602a5d45c18)
1*9a0e4156SSadaf Ebrahimi# This file contains all customized compile options for Capstone.
2*9a0e4156SSadaf Ebrahimi# Consult COMPILE.TXT & docs/README for details.
3*9a0e4156SSadaf Ebrahimi
4*9a0e4156SSadaf Ebrahimi################################################################################
5*9a0e4156SSadaf Ebrahimi# Specify which archs you want to compile in. By default, we build all archs.
6*9a0e4156SSadaf Ebrahimi
7*9a0e4156SSadaf EbrahimiCAPSTONE_ARCHS ?= arm aarch64 m68k mips powerpc sparc systemz x86 xcore tms320c64x m680x evm mos65xx
8*9a0e4156SSadaf Ebrahimi
9*9a0e4156SSadaf Ebrahimi
10*9a0e4156SSadaf Ebrahimi################################################################################
11*9a0e4156SSadaf Ebrahimi# Comment out the line below ('CAPSTONE_USE_SYS_DYN_MEM = yes'), or change it to
12*9a0e4156SSadaf Ebrahimi# 'CAPSTONE_USE_SYS_DYN_MEM = no' if do NOT use malloc/calloc/realloc/free/
13*9a0e4156SSadaf Ebrahimi# vsnprintf() provided by system for internal dynamic memory management.
14*9a0e4156SSadaf Ebrahimi#
15*9a0e4156SSadaf Ebrahimi# NOTE: in that case, specify your own malloc/calloc/realloc/free/vsnprintf()
16*9a0e4156SSadaf Ebrahimi# functions in your program via API cs_option(), using CS_OPT_MEM option type.
17*9a0e4156SSadaf Ebrahimi
18*9a0e4156SSadaf EbrahimiCAPSTONE_USE_SYS_DYN_MEM ?= yes
19*9a0e4156SSadaf Ebrahimi
20*9a0e4156SSadaf Ebrahimi
21*9a0e4156SSadaf Ebrahimi################################################################################
22*9a0e4156SSadaf Ebrahimi# Change 'CAPSTONE_DIET = no' to 'CAPSTONE_DIET = yes' to make the library
23*9a0e4156SSadaf Ebrahimi# more compact: use less memory & smaller in binary size.
24*9a0e4156SSadaf Ebrahimi# This setup will remove the @mnemonic & @op_str data, plus semantic information
25*9a0e4156SSadaf Ebrahimi# such as @regs_read/write & @group. The amount of binary size reduced is
26*9a0e4156SSadaf Ebrahimi# up to 50% in some individual archs.
27*9a0e4156SSadaf Ebrahimi#
28*9a0e4156SSadaf Ebrahimi# NOTE: we still keep all those related fileds @mnemonic, @op_str, @regs_read,
29*9a0e4156SSadaf Ebrahimi# @regs_write, @groups, etc in fields in cs_insn structure regardless, but they
30*9a0e4156SSadaf Ebrahimi# will not be updated (i.e empty), thus become irrelevant.
31*9a0e4156SSadaf Ebrahimi
32*9a0e4156SSadaf EbrahimiCAPSTONE_DIET ?= no
33*9a0e4156SSadaf Ebrahimi
34*9a0e4156SSadaf Ebrahimi
35*9a0e4156SSadaf Ebrahimi################################################################################
36*9a0e4156SSadaf Ebrahimi# Change 'CAPSTONE_X86_REDUCE = no' to 'CAPSTONE_X86_REDUCE = yes' to remove
37*9a0e4156SSadaf Ebrahimi# non-critical instruction sets of X86, making the binary size smaller by ~60%.
38*9a0e4156SSadaf Ebrahimi# This is desired in special cases, such as OS kernel, where these kind of
39*9a0e4156SSadaf Ebrahimi# instructions are not used.
40*9a0e4156SSadaf Ebrahimi#
41*9a0e4156SSadaf Ebrahimi# The list of instruction sets to be removed includes:
42*9a0e4156SSadaf Ebrahimi# - Floating Point Unit (FPU)
43*9a0e4156SSadaf Ebrahimi# - MultiMedia eXtension (MMX)
44*9a0e4156SSadaf Ebrahimi# - Streaming SIMD Extensions (SSE)
45*9a0e4156SSadaf Ebrahimi# - 3DNow
46*9a0e4156SSadaf Ebrahimi# - Advanced Vector Extensions (AVX)
47*9a0e4156SSadaf Ebrahimi# - Fused Multiply Add Operations (FMA)
48*9a0e4156SSadaf Ebrahimi# - eXtended Operations (XOP)
49*9a0e4156SSadaf Ebrahimi# - Transactional Synchronization Extensions (TSX)
50*9a0e4156SSadaf Ebrahimi#
51*9a0e4156SSadaf Ebrahimi# Due to this removal, the related instructions are nolonger supported.
52*9a0e4156SSadaf Ebrahimi#
53*9a0e4156SSadaf Ebrahimi# By default, Capstone is compiled with 'CAPSTONE_X86_REDUCE = no',
54*9a0e4156SSadaf Ebrahimi# thus supports complete X86 instructions.
55*9a0e4156SSadaf Ebrahimi
56*9a0e4156SSadaf EbrahimiCAPSTONE_X86_REDUCE ?= no
57*9a0e4156SSadaf Ebrahimi
58*9a0e4156SSadaf Ebrahimi################################################################################
59*9a0e4156SSadaf Ebrahimi# Change 'CAPSTONE_X86_ATT_DISABLE = no' to 'CAPSTONE_X86_ATT_DISABLE = yes' to
60*9a0e4156SSadaf Ebrahimi# disable AT&T syntax on x86 to reduce library size.
61*9a0e4156SSadaf Ebrahimi
62*9a0e4156SSadaf EbrahimiCAPSTONE_X86_ATT_DISABLE ?= no
63*9a0e4156SSadaf Ebrahimi
64*9a0e4156SSadaf Ebrahimi################################################################################
65*9a0e4156SSadaf Ebrahimi# Change 'CAPSTONE_STATIC = yes' to 'CAPSTONE_STATIC = no' to avoid building
66*9a0e4156SSadaf Ebrahimi# a static library.
67*9a0e4156SSadaf Ebrahimi
68*9a0e4156SSadaf EbrahimiCAPSTONE_STATIC ?= yes
69*9a0e4156SSadaf Ebrahimi
70*9a0e4156SSadaf Ebrahimi
71*9a0e4156SSadaf Ebrahimi################################################################################
72*9a0e4156SSadaf Ebrahimi# Change 'CAPSTONE_SHARED = yes' to 'CAPSTONE_SHARED = no' to avoid building
73*9a0e4156SSadaf Ebrahimi# a shared library.
74*9a0e4156SSadaf Ebrahimi
75*9a0e4156SSadaf EbrahimiCAPSTONE_SHARED ?= yes
76*9a0e4156SSadaf Ebrahimi
77*9a0e4156SSadaf Ebrahimi################################################################################
78*9a0e4156SSadaf Ebrahimi# Change 'CAPSTONE_HAS_OSXKERNEL = no' to 'CAPSTONE_HAS_OSXKERNEL = yes' to
79*9a0e4156SSadaf Ebrahimi# enable OS X kernel embedding support. If 'CAPSTONE_USE_SYS_DYN_MEM = yes',
80*9a0e4156SSadaf Ebrahimi# then kern_os_* functions are used for memory management.
81*9a0e4156SSadaf Ebrahimi
82*9a0e4156SSadaf EbrahimiCAPSTONE_HAS_OSXKERNEL ?= no
83