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