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