xref: /aosp_15_r20/external/capstone/windowsce/make_windowsce7-armv7.bat (revision 9a0e4156d50a75a99ec4f1653a0e9602a5d45c18)
1*9a0e4156SSadaf Ebrahimi@echo off
2*9a0e4156SSadaf Ebrahimi
3*9a0e4156SSadaf Ebrahimirem ***************************************************************************
4*9a0e4156SSadaf Ebrahimirem *                       VARIABLES TO SET FOR BUILDING                     *
5*9a0e4156SSadaf Ebrahimirem ***************************************************************************
6*9a0e4156SSadaf Ebrahimi
7*9a0e4156SSadaf Ebrahimiset WINCE_TOOLCHAIN_ROOT=C:\WINCE700\sdk
8*9a0e4156SSadaf Ebrahimiset TOOLCHAIN=%WINCE_TOOLCHAIN_ROOT%\Bin\i386\Arm;%WINCE_TOOLCHAIN_ROOT%\Bin\i386
9*9a0e4156SSadaf Ebrahimiset INCLUDE=C:\Program Files (x86)\Windows CE Tools\SDKs\Symbol MC3200c70 Windows CE 7.0 PSDK\Include\Armv4i;C:\WINCE700\public\common\sdk\inc
10*9a0e4156SSadaf Ebrahimiset LIBPATH=C:\Program Files (x86)\Windows CE Tools\SDKs\Symbol MC3200c70 Windows CE 7.0 PSDK\Lib\ARMv4I
11*9a0e4156SSadaf Ebrahimiset LIBS=-nodefaultlib:oldnames.lib -nodefaultlib:libcmtd.lib -nodefaultlib:libcmt.lib coredll.lib corelibc.lib
12*9a0e4156SSadaf Ebrahimi
13*9a0e4156SSadaf Ebrahimirem ***************************************************************************
14*9a0e4156SSadaf Ebrahimirem *                           CAPSTONE CONFIGURATION                        *
15*9a0e4156SSadaf Ebrahimirem ***************************************************************************
16*9a0e4156SSadaf Ebrahimi
17*9a0e4156SSadaf Ebrahimiset SHARED=1
18*9a0e4156SSadaf Ebrahimiset DIET_MODE=0
19*9a0e4156SSadaf Ebrahimiset USE_SYS_DYN_MEM=1
20*9a0e4156SSadaf Ebrahimiset X86_REDUCE=0
21*9a0e4156SSadaf Ebrahimiset X86_ATT_DISABLE=0
22*9a0e4156SSadaf Ebrahimiset DISASM_ARCH_LIST=ARM ARM64 M68K MIPS POWERPC SPARC SYSZ X86 XCORE
23*9a0e4156SSadaf Ebrahimi
24*9a0e4156SSadaf Ebrahimirem ***************************************************************************
25*9a0e4156SSadaf Ebrahimirem *                              SANITY CHECKS                              *
26*9a0e4156SSadaf Ebrahimirem ***************************************************************************
27*9a0e4156SSadaf Ebrahimi
28*9a0e4156SSadaf Ebrahimisetlocal ENABLEDELAYEDEXPANSION
29*9a0e4156SSadaf Ebrahimi
30*9a0e4156SSadaf Ebrahimiif "%WINCE_TOOLCHAIN_ROOT%"=="" goto check_dir_exist_WINCE_TOOLCHAIN_ROOT
31*9a0e4156SSadaf Ebrahimiif not exist "%WINCE_TOOLCHAIN_ROOT%" goto check_dir_exist_WINCE_TOOLCHAIN_ROOT
32*9a0e4156SSadaf Ebrahimi
33*9a0e4156SSadaf Ebrahimiif "%TOOLCHAIN%"=="" goto check_dir_exist_TOOLCHAIN
34*9a0e4156SSadaf Ebrahimi
35*9a0e4156SSadaf Ebrahimiset CC=
36*9a0e4156SSadaf Ebrahimiset LD=
37*9a0e4156SSadaf Ebrahimiset AR=
38*9a0e4156SSadaf Ebrahimifor /f "tokens=1-8 delims=;" %%a in ("%TOOLCHAIN%") do (
39*9a0e4156SSadaf Ebrahimi  for %%i in (%%a %%b %%c %%d %%e %%f %%g %%h) do (
40*9a0e4156SSadaf Ebrahimi    if not "%%i"=="" (
41*9a0e4156SSadaf Ebrahimi      if not exist "%%i" goto check_dir_exist_TOOLCHAIN
42*9a0e4156SSadaf Ebrahimi      if "%CC%"=="" if exist "%%i\cl.exe" set CC=%%i\cl.exe
43*9a0e4156SSadaf Ebrahimi      if "%LD%"=="" if exist "%%i\link.exe" set LD=%%i\link.exe
44*9a0e4156SSadaf Ebrahimi      if "%AR%"=="" if exist "%%i\lib.exe" set AR=%%i\lib.exe
45*9a0e4156SSadaf Ebrahimi    )
46*9a0e4156SSadaf Ebrahimi  )
47*9a0e4156SSadaf Ebrahimi)
48*9a0e4156SSadaf Ebrahimi
49*9a0e4156SSadaf Ebrahimiif "%CC%"=="" goto check_dir_exist_CC_LD_AR
50*9a0e4156SSadaf Ebrahimiif "%LD%"=="" goto check_dir_exist_CC_LD_AR
51*9a0e4156SSadaf Ebrahimiif "%AR%"=="" goto check_dir_exist_CC_LD_AR
52*9a0e4156SSadaf Ebrahimi
53*9a0e4156SSadaf Ebrahimiif "%INCLUDE%"=="" goto check_dir_exist_INCLUDE
54*9a0e4156SSadaf Ebrahimi
55*9a0e4156SSadaf Ebrahimiset WINDOWS_H=
56*9a0e4156SSadaf Ebrahimi
57*9a0e4156SSadaf Ebrahimiset INCLUDE_SC=%INCLUDE%
58*9a0e4156SSadaf Ebrahimiset INCLUDE=
59*9a0e4156SSadaf Ebrahimifor /f "tokens=1-8 delims=;" %%a in ("%INCLUDE_SC%") do (
60*9a0e4156SSadaf Ebrahimi  for %%i in ("%%a" "%%b" "%%c" "%%d" "%%e" "%%f" "%%g" "%%h") do (
61*9a0e4156SSadaf Ebrahimi    if not %%i=="" (
62*9a0e4156SSadaf Ebrahimi      set INCLUDE=!INCLUDE! -I %%i
63*9a0e4156SSadaf Ebrahimi    )
64*9a0e4156SSadaf Ebrahimi  )
65*9a0e4156SSadaf Ebrahimi)
66*9a0e4156SSadaf Ebrahimi
67*9a0e4156SSadaf Ebrahimiif "%LIBPATH%"=="" goto check_dir_exist_LIBPATH
68*9a0e4156SSadaf Ebrahimi
69*9a0e4156SSadaf Ebrahimiset LIBPATH_SC=%LIBPATH%
70*9a0e4156SSadaf Ebrahimiset LIBPATH=
71*9a0e4156SSadaf Ebrahimifor /f "tokens=1-8 delims=;" %%a in ("%LIBPATH_SC%") do (
72*9a0e4156SSadaf Ebrahimi  for %%i in ("%%a" "%%b" "%%c" "%%d" "%%e" "%%f" "%%g" "%%h") do (
73*9a0e4156SSadaf Ebrahimi    if not %%i=="" (
74*9a0e4156SSadaf Ebrahimi      set LIBPATH=!LIBPATH! -libpath:%%i
75*9a0e4156SSadaf Ebrahimi    )
76*9a0e4156SSadaf Ebrahimi  )
77*9a0e4156SSadaf Ebrahimi)
78*9a0e4156SSadaf Ebrahimi
79*9a0e4156SSadaf Ebrahimirem ***************************************************************************
80*9a0e4156SSadaf Ebrahimirem *                            COMPILATION OPTIONS                          *
81*9a0e4156SSadaf Ebrahimirem ***************************************************************************
82*9a0e4156SSadaf Ebrahimi
83*9a0e4156SSadaf Ebrahimiset OS=windowsce
84*9a0e4156SSadaf Ebrahimiset OS_VERSION=7.0
85*9a0e4156SSadaf Ebrahimiset OS_VERSION_NUMBER=0x700
86*9a0e4156SSadaf Ebrahimiset LIBARCH=arm
87*9a0e4156SSadaf Ebrahimiset MACH=THUMB
88*9a0e4156SSadaf Ebrahimi
89*9a0e4156SSadaf Ebrahimifor /f "delims=" %%i in ('cd') do set THIS_DIR=%%i
90*9a0e4156SSadaf Ebrahimi
91*9a0e4156SSadaf Ebrahimiset SOURCES_ROOT=%THIS_DIR%\..
92*9a0e4156SSadaf Ebrahimiset TARGET_DIR=%THIS_DIR%\bin\%OS%_%OS_VERSION%_%LIBARCH%
93*9a0e4156SSadaf Ebrahimi
94*9a0e4156SSadaf Ebrahimifor /f "tokens=3" %%i in ('findstr /c:"#define CS_API_MAJOR" "%SOURCES_ROOT%\include\capstone\capstone.h"') do set CS_API_MAJOR=%%i
95*9a0e4156SSadaf Ebrahimifor /f "tokens=3" %%i in ('findstr /c:"#define CS_API_MINOR" "%SOURCES_ROOT%\include\capstone\capstone.h"') do set CS_API_MINOR=%%i
96*9a0e4156SSadaf Ebrahimi
97*9a0e4156SSadaf Ebrahimiset TARGET_VERSION=%CS_API_MAJOR%.%CS_API_MINOR%
98*9a0e4156SSadaf Ebrahimiset TAREGET_NAME=capstone-%TARGET_VERSION%
99*9a0e4156SSadaf Ebrahimi
100*9a0e4156SSadaf Ebrahimiset CPPFLAGS=-D LIBARCH_%LIBARCH% -D LIBARCH=L\"%LIBARCH%\"
101*9a0e4156SSadaf Ebrahimiset CPPFLAGS=%CPPFLAGS% -D _CRT_SECURE_NO_DEPRECATE -D _WINDOWS -D WINVER=%OS_VERSION_NUMBER% -D UNDER_CE=%OS_VERSION_NUMBER% -D _WIN32_WCE=%OS_VERSION_NUMBER% -D WINCE -D _UNICODE -D UNICODE -D STANDARDSHELL_UI_MODEL -D _USE_MATH_DEFINES -D ARM -D _ARM -D _ARM_ -D __ARM_ARCH_7__ -D __ARM_ARCH_7A__ -D __VFP_FP__=1
102*9a0e4156SSadaf Ebrahimi
103*9a0e4156SSadaf Ebrahimifor %%a in (%DISASM_ARCH_LIST%) do set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_HAS_%%a
104*9a0e4156SSadaf Ebrahimi
105*9a0e4156SSadaf Ebrahimiif %SHARED%==0 (
106*9a0e4156SSadaf Ebrahimi  set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_STATIC -D LIB_EXT=L\".lib\"
107*9a0e4156SSadaf Ebrahimi) else (
108*9a0e4156SSadaf Ebrahimi  set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_SHARED -D LIB_EXT=L\".dll\"
109*9a0e4156SSadaf Ebrahimi)
110*9a0e4156SSadaf Ebrahimi
111*9a0e4156SSadaf Ebrahimiif not %USE_SYS_DYN_MEM%==0 ( set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_USE_SYS_DYN_MEM )
112*9a0e4156SSadaf Ebrahimiif not %DIET_MODE%==0 ( set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_DIET )
113*9a0e4156SSadaf Ebrahimiif not %X86_REDUCE%==0 ( set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_X86_REDUCE )
114*9a0e4156SSadaf Ebrahimiif not %X86_ATT_DISABLE%==0 ( set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_X86_ATT_DISABLE )
115*9a0e4156SSadaf Ebrahimi
116*9a0e4156SSadaf Ebrahimiset INCLUDE=-I %SOURCES_ROOT%\include -I %SOURCES_ROOT% %INCLUDE%
117*9a0e4156SSadaf Ebrahimi
118*9a0e4156SSadaf Ebrahimiset CFLAGS=%CPPFLAGS% %INCLUDE% -nologo -Zi -MT -Oi -GS -GF -QRarch7 -arch:VFPv3-D32 -QRfpe- -fp:fast -Oy- -W3 -WX
119*9a0e4156SSadaf Ebrahimi
120*9a0e4156SSadaf Ebrahimiset LDFLAGS=-nologo -debug -incremental:no -manifest:no -version:%TARGET_VERSION% -machine:%MACH% -subsystem:WINDOWSCE,%OS_VERSION% %LIBPATH% %LIBS%
121*9a0e4156SSadaf Ebrahimi
122*9a0e4156SSadaf Ebrahimiset ARFLAGS=-nologo -machine:%MACH% -subsystem:WINDOWSCE,%OS_VERSION% %LIBPATH% %LIBS%
123*9a0e4156SSadaf Ebrahimi
124*9a0e4156SSadaf Ebrahimiset SOURCES=
125*9a0e4156SSadaf Ebrahimifor %%f in (%SOURCES_ROOT%\*.c) do set SOURCES=!SOURCES! %%f
126*9a0e4156SSadaf Ebrahimifor /d %%a in (%SOURCES_ROOT%\arch\*) do for %%f in (%%a\*.c) do set SOURCES=!SOURCES! %%f
127*9a0e4156SSadaf Ebrahimi
128*9a0e4156SSadaf Ebrahimirem ***************************************************************************
129*9a0e4156SSadaf Ebrahimirem *                           COMPILATION COMMANDS                          *
130*9a0e4156SSadaf Ebrahimirem ***************************************************************************
131*9a0e4156SSadaf Ebrahimi
132*9a0e4156SSadaf Ebrahimird /q /s "%TARGET_DIR%"
133*9a0e4156SSadaf Ebrahimimd "%TARGET_DIR%"
134*9a0e4156SSadaf Ebrahimi
135*9a0e4156SSadaf Ebrahimiset PATH=%TOOLCHAIN%;%PATH%
136*9a0e4156SSadaf Ebrahimi
137*9a0e4156SSadaf Ebrahimirem %CC% -c %CFLAGS% -D DEBUG -D _DEBUG -Od -Fo"%TARGET_DIR%\\" -Fd"%TARGET_DIR%\%TAREGET_NAME%.pdb" %SOURCES%
138*9a0e4156SSadaf Ebrahimi%CC% -c %CFLAGS% -D NDEBUG -Ox -Fo"%TARGET_DIR%\\" -Fd"%TARGET_DIR%\%TAREGET_NAME%.pdb" %SOURCES%
139*9a0e4156SSadaf Ebrahimiif errorlevel 1 goto compilation_failed
140*9a0e4156SSadaf Ebrahimi
141*9a0e4156SSadaf Ebrahimiif %SHARED%==0 (
142*9a0e4156SSadaf Ebrahimi  %AR% -out:%TARGET_DIR%\%TAREGET_NAME%.lib %ARFLAGS% %TARGET_DIR%\*.obj
143*9a0e4156SSadaf Ebrahimi) else (
144*9a0e4156SSadaf Ebrahimi  %LD% -dll -out:%TARGET_DIR%\%TAREGET_NAME%.dll -map:"%TARGET_DIR%\%TAREGET_NAME%.map" -pdb:"%TARGET_DIR%\%TAREGET_NAME%.pdb" %LDFLAGS% -opt:REF -opt:ICF %TARGET_DIR%\*.obj
145*9a0e4156SSadaf Ebrahimi)
146*9a0e4156SSadaf Ebrahimi
147*9a0e4156SSadaf Ebrahimiendlocal
148*9a0e4156SSadaf Ebrahimigoto done
149*9a0e4156SSadaf Ebrahimi
150*9a0e4156SSadaf Ebrahimirem ***************************************************************************
151*9a0e4156SSadaf Ebrahimirem *                             ERROR REPORTING                             *
152*9a0e4156SSadaf Ebrahimirem ***************************************************************************
153*9a0e4156SSadaf Ebrahimi
154*9a0e4156SSadaf Ebrahimi:check_dir_exist_WINCE_TOOLCHAIN_ROOT
155*9a0e4156SSadaf Ebrahimiecho ERROR: WINCE_TOOLCHAIN_ROOT does not specify an existing directory.
156*9a0e4156SSadaf Ebrahimigoto done
157*9a0e4156SSadaf Ebrahimi
158*9a0e4156SSadaf Ebrahimi:check_dir_exist_TOOLCHAIN
159*9a0e4156SSadaf Ebrahimiecho ERROR: TOOLCHAIN does not specify an existing directory.
160*9a0e4156SSadaf Ebrahimigoto done
161*9a0e4156SSadaf Ebrahimi
162*9a0e4156SSadaf Ebrahimi:check_dir_exist_CC_LD_AR
163*9a0e4156SSadaf Ebrahimiecho ERROR: TOOLCHAIN does not specify a valid toolchain directory.
164*9a0e4156SSadaf Ebrahimigoto done
165*9a0e4156SSadaf Ebrahimi
166*9a0e4156SSadaf Ebrahimi:check_dir_exist_INCLUDE
167*9a0e4156SSadaf Ebrahimiecho ERROR: INCLUDE does not specify an existing directory.
168*9a0e4156SSadaf Ebrahimigoto done
169*9a0e4156SSadaf Ebrahimi
170*9a0e4156SSadaf Ebrahimi:check_dir_exist_LIBPATH
171*9a0e4156SSadaf Ebrahimiecho ERROR: LIBPATH does not specify an existing directory.
172*9a0e4156SSadaf Ebrahimigoto done
173*9a0e4156SSadaf Ebrahimi
174*9a0e4156SSadaf Ebrahimi:compilation_failed
175*9a0e4156SSadaf Ebrahimiecho ERROR: Compilation failed.
176*9a0e4156SSadaf Ebrahimigoto done
177*9a0e4156SSadaf Ebrahimi
178*9a0e4156SSadaf Ebrahimi:done
179*9a0e4156SSadaf Ebrahimipause
180