1@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 19set USE_SYS_DYN_MEM=1 20set X86_REDUCE=0 21set X86_ATT_DISABLE=0 22set DISASM_ARCH_LIST=ARM ARM64 M68K MIPS POWERPC SPARC SYSZ X86 XCORE 23 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 126for /d %%a in (%SOURCES_ROOT%\arch\*) do for %%f in (%%a\*.c) do set SOURCES=!SOURCES! %%f 127 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 180