mirror of
https://github.com/hedge-dev/XenonRecomp.git
synced 2025-07-24 22:13:57 +00:00
Initial Commit
This commit is contained in:
13
thirdparty/capstone/windowsce/.gitignore
vendored
Normal file
13
thirdparty/capstone/windowsce/.gitignore
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
# Object files
|
||||
*.obj
|
||||
|
||||
# Libraries
|
||||
*.lib
|
||||
|
||||
# Shared objects (inc. Windows DLLs)
|
||||
*.dll
|
||||
|
||||
# VisualStudio
|
||||
*.exp
|
||||
*.map
|
||||
*.pdb
|
124
thirdparty/capstone/windowsce/COMPILE.md
vendored
Normal file
124
thirdparty/capstone/windowsce/COMPILE.md
vendored
Normal file
@@ -0,0 +1,124 @@
|
||||
This documentation explains how to compile Capstone for:
|
||||
- Windows CE 7, a.k.a, [Windows Embedded Compact 7](https://www.microsoft.com/windowsembedded/en-us/windows-embedded-compact-7.aspx), on [ARMv7](http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0406c/index.html).
|
||||
- Windows CE 8, a.k.a, [Windows Embedded Compact 2013](https://www.microsoft.com/windowsembedded/en-us/windows-embedded-compact-2013.aspx), on [ARMv7](http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0406c/index.html).
|
||||
|
||||
To build Capstone for a different platform, please refer to `COMPILE_CMAKE.TXT`.
|
||||
|
||||
# Prerequisites
|
||||
|
||||
We support the following scenario regarding the build machine:
|
||||
- Build running on Microsoft Windows.
|
||||
- The C Software Develepment Kit of the target Windows CE **device** installed.
|
||||
- Only for Windows CE 7:
|
||||
- C compiler toolchain installed, targeting **Windows Embedded Compact 7** on **ARMv7**. We recommend the toolchain provided with [Windows Embedded Compact 7 toolkit](https://msdn.microsoft.com/en-us/library/jj200349%28v=winembedded.70%29.aspx), as the toolchain originally provided with **Visual Studio 2008** is relatively old.
|
||||
|
||||
Before building Capstone for Windows CE 7 (respectively, Windows CE 8), the build script `windowsce/make_windowsce7-armv7.bat` (respectively, `windowsce/make_windowsce8-armv7.bat`) needs to be modified. The variables specified in the rest of this section are set in this script file.
|
||||
|
||||
# Toolchain specification
|
||||
|
||||
The following information need to be specified in the build script in order to perform the build:
|
||||
- `set WINCE_TOOLCHAIN_ROOT=` is the path of the root directory of the Windows CE toolchain. To build for Windows CE 7, this should be set to the Windows Embedded Compact 7 toolchain. To build for Windows CE 8, this should be set to the device toolchain.
|
||||
Examples:
|
||||
- For Windows CE 7:
|
||||
```bat
|
||||
set WINCE_TOOLCHAIN_ROOT=C:\WINCE700\sdk
|
||||
```
|
||||
- For Windows CE 8:
|
||||
```bat
|
||||
set WINCE_TOOLCHAIN_ROOT=C:\Windows_CE_Tools\SDKs\SDK_HW90270\Sdk
|
||||
```
|
||||
|
||||
- `set TOOLCHAIN=` is a semicolon-separated list of the paths of the directories containing the binaries of the Windows CE toolchain.
|
||||
For example:
|
||||
```bat
|
||||
set TOOLCHAIN=%WINCE_TOOLCHAIN_ROOT%\Bin\i386\Arm;%WINCE_TOOLCHAIN_ROOT%\Bin\i386
|
||||
```
|
||||
|
||||
- `set INCLUDE=` is a semicolon-separated list of the paths of the directories containing the C header files of the Windows CE device SDK. To build for Windows CE 7, this should also include the directories containing the C header files of the Windows Embedded Compact 7 toolchain.
|
||||
Examples:
|
||||
- For Windows CE 7:
|
||||
```bat
|
||||
set INCLUDE=C:\Program Files (x86)\Windows CE Tools\SDKs\Symbol MC3200c70 Windows CE 7.0 PSDK\Include\Armv4i;C:\WINCE700\public\common\sdk\inc
|
||||
```
|
||||
- For Windows CE 8:
|
||||
```bat
|
||||
set INCLUDE=%WINCE_TOOLCHAIN_ROOT%\Inc;%WINCE_TOOLCHAIN_ROOT%\crt\Include
|
||||
```
|
||||
|
||||
- `set LIBPATH=` is a semicolon-separated list of the paths of the directories containing the library (i.e., `.LIB`) files of the Windows CE 7 device SDK.
|
||||
Examples:
|
||||
- For Windows CE 7:
|
||||
```bat
|
||||
set LIBPATH=C:\Program Files (x86)\Windows CE Tools\SDKs\Symbol MC3200c70 Windows CE 7.0 PSDK\Lib\ARMv4I
|
||||
```
|
||||
- For Windows CE 8:
|
||||
```bat
|
||||
set LIBPATH=%WINCE_TOOLCHAIN_ROOT%\Lib\ARMV7\retail;%WINCE_TOOLCHAIN_ROOT%\Crt\Lib\ARM
|
||||
```
|
||||
|
||||
- `set LIBS=` is a space-separated list of linker directives controlling library search.
|
||||
Examples:
|
||||
- For Windows CE 7:
|
||||
```bat
|
||||
set LIBS=-nodefaultlib:oldnames.lib -nodefaultlib:libcmtd.lib -nodefaultlib:libcmt.lib coredll.lib corelibc.lib
|
||||
```
|
||||
- For Windows CE 8:
|
||||
```bat
|
||||
set LIBS=coredll.lib
|
||||
```
|
||||
|
||||
# Capstone binary format
|
||||
|
||||
By default, the build script produces a **dynamic link library** (i.e., `.DLL`). In order to produce a **static library** (i.e., `.LIB`) instead, the `SHARED` variable needs to be set to `0`, i.e.:
|
||||
```bat
|
||||
set SHARED=0
|
||||
```
|
||||
|
||||
# Architectures supported at runtime
|
||||
|
||||
Capstone supports the following architectures: ARM, ARM64 (AArch64), M68K, MIPS, PowerPC, Sparc, SystemZ, x86 and XCore. However, Capstone can be configured in order to select which architectures need to be supported **at runtime**. This is controlled via the variable `DISASM_ARCH_LIST`, which is a space-separated list that is a combination of the following names:
|
||||
- `ARM`
|
||||
- `ARM64`
|
||||
- `M68K`
|
||||
- `MIPS`
|
||||
- `POWERPC`
|
||||
- `SPARC`
|
||||
- `SYSZ`
|
||||
- `X86`
|
||||
- `XCORE`.
|
||||
|
||||
By default, `DISASM_ARCH_LIST` includes support for **all** architectures supported by Capstone.
|
||||
For example:
|
||||
```bat
|
||||
set DISASM_ARCH_LIST=ARM ARM64 X86
|
||||
```
|
||||
will produce a Capstone binary that supports the following architectures: ARM, ARM64 and x86.
|
||||
|
||||
## Features customization
|
||||
|
||||
Capstone has a list of features that can be controlled when needed. Each feature is controlled through setting a variable from the following list:
|
||||
|
||||
- In order to produce a smaller binary that provides a **subset** of the features of Capstone, but still supports all the selected architectures, please specify the following:
|
||||
```bat
|
||||
set DIET_MODE=1
|
||||
```
|
||||
By default, this variable is set to `0`.
|
||||
|
||||
- By default, Capstone uses the default system-provided **dynamic memory management** functions (e.g., `malloc()`, `realloc()`, `free()`) for its internal memory management. However, Capstone can instead be configured to call **custom** memory management functions provided by client applications. In order to enable this behavior, set the following:
|
||||
```bat
|
||||
set USE_SYS_DYN_MEM=0
|
||||
```
|
||||
|
||||
- In order to produce a **smaller** Capstone binary, support for the `x86` architecture can be more **limited**. In order to do so, set the following:
|
||||
```bat
|
||||
set X86_REDUCE=1
|
||||
```
|
||||
By default, this is set to `0`.
|
||||
|
||||
- If the **AT&T** disassembly style of the `x86` architecture is never needed at runtime, then disabling support for it can produce a **smaller** Capstone binary. To do this, please set the following:
|
||||
```bat
|
||||
set X86_ATT_DISABLE=1
|
||||
```
|
||||
By default, this is set to `0`.
|
||||
|
||||
Please refer to `docs/README` for more details on these features.
|
179
thirdparty/capstone/windowsce/make_windowsce7-armv7.bat
vendored
Normal file
179
thirdparty/capstone/windowsce/make_windowsce7-armv7.bat
vendored
Normal file
@@ -0,0 +1,179 @@
|
||||
@echo off
|
||||
|
||||
rem ***************************************************************************
|
||||
rem * VARIABLES TO SET FOR BUILDING *
|
||||
rem ***************************************************************************
|
||||
|
||||
set WINCE_TOOLCHAIN_ROOT=C:\WINCE700\sdk
|
||||
set TOOLCHAIN=%WINCE_TOOLCHAIN_ROOT%\Bin\i386\Arm;%WINCE_TOOLCHAIN_ROOT%\Bin\i386
|
||||
set INCLUDE=C:\Program Files (x86)\Windows CE Tools\SDKs\Symbol MC3200c70 Windows CE 7.0 PSDK\Include\Armv4i;C:\WINCE700\public\common\sdk\inc
|
||||
set LIBPATH=C:\Program Files (x86)\Windows CE Tools\SDKs\Symbol MC3200c70 Windows CE 7.0 PSDK\Lib\ARMv4I
|
||||
set LIBS=-nodefaultlib:oldnames.lib -nodefaultlib:libcmtd.lib -nodefaultlib:libcmt.lib coredll.lib corelibc.lib
|
||||
|
||||
rem ***************************************************************************
|
||||
rem * CAPSTONE CONFIGURATION *
|
||||
rem ***************************************************************************
|
||||
|
||||
set SHARED=1
|
||||
set DIET_MODE=0
|
||||
set USE_SYS_DYN_MEM=1
|
||||
set X86_REDUCE=0
|
||||
set X86_ATT_DISABLE=0
|
||||
set DISASM_ARCH_LIST=ARM ARM64 M68K MIPS POWERPC SPARC SYSZ X86 XCORE
|
||||
|
||||
rem ***************************************************************************
|
||||
rem * SANITY CHECKS *
|
||||
rem ***************************************************************************
|
||||
|
||||
setlocal ENABLEDELAYEDEXPANSION
|
||||
|
||||
if "%WINCE_TOOLCHAIN_ROOT%"=="" goto check_dir_exist_WINCE_TOOLCHAIN_ROOT
|
||||
if not exist "%WINCE_TOOLCHAIN_ROOT%" goto check_dir_exist_WINCE_TOOLCHAIN_ROOT
|
||||
|
||||
if "%TOOLCHAIN%"=="" goto check_dir_exist_TOOLCHAIN
|
||||
|
||||
set CC=
|
||||
set LD=
|
||||
set AR=
|
||||
for /f "tokens=1-8 delims=;" %%a in ("%TOOLCHAIN%") do (
|
||||
for %%i in (%%a %%b %%c %%d %%e %%f %%g %%h) do (
|
||||
if not "%%i"=="" (
|
||||
if not exist "%%i" goto check_dir_exist_TOOLCHAIN
|
||||
if "%CC%"=="" if exist "%%i\cl.exe" set CC=%%i\cl.exe
|
||||
if "%LD%"=="" if exist "%%i\link.exe" set LD=%%i\link.exe
|
||||
if "%AR%"=="" if exist "%%i\lib.exe" set AR=%%i\lib.exe
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
if "%CC%"=="" goto check_dir_exist_CC_LD_AR
|
||||
if "%LD%"=="" goto check_dir_exist_CC_LD_AR
|
||||
if "%AR%"=="" goto check_dir_exist_CC_LD_AR
|
||||
|
||||
if "%INCLUDE%"=="" goto check_dir_exist_INCLUDE
|
||||
|
||||
set WINDOWS_H=
|
||||
|
||||
set INCLUDE_SC=%INCLUDE%
|
||||
set INCLUDE=
|
||||
for /f "tokens=1-8 delims=;" %%a in ("%INCLUDE_SC%") do (
|
||||
for %%i in ("%%a" "%%b" "%%c" "%%d" "%%e" "%%f" "%%g" "%%h") do (
|
||||
if not %%i=="" (
|
||||
set INCLUDE=!INCLUDE! -I %%i
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
if "%LIBPATH%"=="" goto check_dir_exist_LIBPATH
|
||||
|
||||
set LIBPATH_SC=%LIBPATH%
|
||||
set LIBPATH=
|
||||
for /f "tokens=1-8 delims=;" %%a in ("%LIBPATH_SC%") do (
|
||||
for %%i in ("%%a" "%%b" "%%c" "%%d" "%%e" "%%f" "%%g" "%%h") do (
|
||||
if not %%i=="" (
|
||||
set LIBPATH=!LIBPATH! -libpath:%%i
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
rem ***************************************************************************
|
||||
rem * COMPILATION OPTIONS *
|
||||
rem ***************************************************************************
|
||||
|
||||
set OS=windowsce
|
||||
set OS_VERSION=7.0
|
||||
set OS_VERSION_NUMBER=0x700
|
||||
set LIBARCH=arm
|
||||
set MACH=THUMB
|
||||
|
||||
for /f "delims=" %%i in ('cd') do set THIS_DIR=%%i
|
||||
|
||||
set SOURCES_ROOT=%THIS_DIR%\..
|
||||
set TARGET_DIR=%THIS_DIR%\bin\%OS%_%OS_VERSION%_%LIBARCH%
|
||||
|
||||
for /f "tokens=3" %%i in ('findstr /c:"#define CS_API_MAJOR" "%SOURCES_ROOT%\include\capstone\capstone.h"') do set CS_API_MAJOR=%%i
|
||||
for /f "tokens=3" %%i in ('findstr /c:"#define CS_API_MINOR" "%SOURCES_ROOT%\include\capstone\capstone.h"') do set CS_API_MINOR=%%i
|
||||
|
||||
set TARGET_VERSION=%CS_API_MAJOR%.%CS_API_MINOR%
|
||||
set TAREGET_NAME=capstone-%TARGET_VERSION%
|
||||
|
||||
set CPPFLAGS=-D LIBARCH_%LIBARCH% -D LIBARCH=L\"%LIBARCH%\"
|
||||
set 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
|
||||
|
||||
for %%a in (%DISASM_ARCH_LIST%) do set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_HAS_%%a
|
||||
|
||||
if %SHARED%==0 (
|
||||
set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_STATIC -D LIB_EXT=L\".lib\"
|
||||
) else (
|
||||
set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_SHARED -D LIB_EXT=L\".dll\"
|
||||
)
|
||||
|
||||
if not %USE_SYS_DYN_MEM%==0 ( set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_USE_SYS_DYN_MEM )
|
||||
if not %DIET_MODE%==0 ( set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_DIET )
|
||||
if not %X86_REDUCE%==0 ( set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_X86_REDUCE )
|
||||
if not %X86_ATT_DISABLE%==0 ( set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_X86_ATT_DISABLE )
|
||||
|
||||
set INCLUDE=-I %SOURCES_ROOT%\include -I %SOURCES_ROOT% %INCLUDE%
|
||||
|
||||
set CFLAGS=%CPPFLAGS% %INCLUDE% -nologo -Zi -MT -Oi -GS -GF -QRarch7 -arch:VFPv3-D32 -QRfpe- -fp:fast -Oy- -W3 -WX
|
||||
|
||||
set LDFLAGS=-nologo -debug -incremental:no -manifest:no -version:%TARGET_VERSION% -machine:%MACH% -subsystem:WINDOWSCE,%OS_VERSION% %LIBPATH% %LIBS%
|
||||
|
||||
set ARFLAGS=-nologo -machine:%MACH% -subsystem:WINDOWSCE,%OS_VERSION% %LIBPATH% %LIBS%
|
||||
|
||||
set SOURCES=
|
||||
for %%f in (%SOURCES_ROOT%\*.c) do set SOURCES=!SOURCES! %%f
|
||||
for /d %%a in (%SOURCES_ROOT%\arch\*) do for %%f in (%%a\*.c) do set SOURCES=!SOURCES! %%f
|
||||
|
||||
rem ***************************************************************************
|
||||
rem * COMPILATION COMMANDS *
|
||||
rem ***************************************************************************
|
||||
|
||||
rd /q /s "%TARGET_DIR%"
|
||||
md "%TARGET_DIR%"
|
||||
|
||||
set PATH=%TOOLCHAIN%;%PATH%
|
||||
|
||||
rem %CC% -c %CFLAGS% -D DEBUG -D _DEBUG -Od -Fo"%TARGET_DIR%\\" -Fd"%TARGET_DIR%\%TAREGET_NAME%.pdb" %SOURCES%
|
||||
%CC% -c %CFLAGS% -D NDEBUG -Ox -Fo"%TARGET_DIR%\\" -Fd"%TARGET_DIR%\%TAREGET_NAME%.pdb" %SOURCES%
|
||||
if errorlevel 1 goto compilation_failed
|
||||
|
||||
if %SHARED%==0 (
|
||||
%AR% -out:%TARGET_DIR%\%TAREGET_NAME%.lib %ARFLAGS% %TARGET_DIR%\*.obj
|
||||
) else (
|
||||
%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
|
||||
)
|
||||
|
||||
endlocal
|
||||
goto done
|
||||
|
||||
rem ***************************************************************************
|
||||
rem * ERROR REPORTING *
|
||||
rem ***************************************************************************
|
||||
|
||||
:check_dir_exist_WINCE_TOOLCHAIN_ROOT
|
||||
echo ERROR: WINCE_TOOLCHAIN_ROOT does not specify an existing directory.
|
||||
goto done
|
||||
|
||||
:check_dir_exist_TOOLCHAIN
|
||||
echo ERROR: TOOLCHAIN does not specify an existing directory.
|
||||
goto done
|
||||
|
||||
:check_dir_exist_CC_LD_AR
|
||||
echo ERROR: TOOLCHAIN does not specify a valid toolchain directory.
|
||||
goto done
|
||||
|
||||
:check_dir_exist_INCLUDE
|
||||
echo ERROR: INCLUDE does not specify an existing directory.
|
||||
goto done
|
||||
|
||||
:check_dir_exist_LIBPATH
|
||||
echo ERROR: LIBPATH does not specify an existing directory.
|
||||
goto done
|
||||
|
||||
:compilation_failed
|
||||
echo ERROR: Compilation failed.
|
||||
goto done
|
||||
|
||||
:done
|
||||
pause
|
179
thirdparty/capstone/windowsce/make_windowsce8-armv7.bat
vendored
Normal file
179
thirdparty/capstone/windowsce/make_windowsce8-armv7.bat
vendored
Normal file
@@ -0,0 +1,179 @@
|
||||
@echo off
|
||||
|
||||
rem ***************************************************************************
|
||||
rem * VARIABLES TO SET FOR BUILDING *
|
||||
rem ***************************************************************************
|
||||
|
||||
set WINCE_TOOLCHAIN_ROOT=C:\Windows_CE_Tools\SDKs\SDK_HW90270\Sdk
|
||||
set TOOLCHAIN=%WINCE_TOOLCHAIN_ROOT%\Bin\i386\Arm;%WINCE_TOOLCHAIN_ROOT%\Bin\i386
|
||||
set INCLUDE=%WINCE_TOOLCHAIN_ROOT%\Inc;%WINCE_TOOLCHAIN_ROOT%\crt\Include
|
||||
set LIBPATH=%WINCE_TOOLCHAIN_ROOT%\Lib\ARMV7\retail;%WINCE_TOOLCHAIN_ROOT%\Crt\Lib\ARM
|
||||
set LIBS=coredll.lib
|
||||
|
||||
rem ***************************************************************************
|
||||
rem * CAPSTONE CONFIGURATION *
|
||||
rem ***************************************************************************
|
||||
|
||||
set SHARED=1
|
||||
set DIET_MODE=0
|
||||
set USE_SYS_DYN_MEM=1
|
||||
set X86_REDUCE=0
|
||||
set X86_ATT_DISABLE=0
|
||||
set DISASM_ARCH_LIST=ARM ARM64 M68K MIPS POWERPC SPARC SYSZ X86 XCORE
|
||||
|
||||
rem ***************************************************************************
|
||||
rem * SANITY CHECKS *
|
||||
rem ***************************************************************************
|
||||
|
||||
setlocal ENABLEDELAYEDEXPANSION
|
||||
|
||||
if "%WINCE_TOOLCHAIN_ROOT%"=="" goto check_dir_exist_WINCE_TOOLCHAIN_ROOT
|
||||
if not exist "%WINCE_TOOLCHAIN_ROOT%" goto check_dir_exist_WINCE_TOOLCHAIN_ROOT
|
||||
|
||||
if "%TOOLCHAIN%"=="" goto check_dir_exist_TOOLCHAIN
|
||||
|
||||
set CC=
|
||||
set LD=
|
||||
set AR=
|
||||
for /f "tokens=1-8 delims=;" %%a in ("%TOOLCHAIN%") do (
|
||||
for %%i in (%%a %%b %%c %%d %%e %%f %%g %%h) do (
|
||||
if not "%%i"=="" (
|
||||
if not exist "%%i" goto check_dir_exist_TOOLCHAIN
|
||||
if "%CC%"=="" if exist "%%i\cl.exe" set CC=%%i\cl.exe
|
||||
if "%LD%"=="" if exist "%%i\link.exe" set LD=%%i\link.exe
|
||||
if "%AR%"=="" if exist "%%i\lib.exe" set AR=%%i\lib.exe
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
if "%CC%"=="" goto check_dir_exist_CC_LD_AR
|
||||
if "%LD%"=="" goto check_dir_exist_CC_LD_AR
|
||||
if "%AR%"=="" goto check_dir_exist_CC_LD_AR
|
||||
|
||||
if "%INCLUDE%"=="" goto check_dir_exist_INCLUDE
|
||||
|
||||
set WINDOWS_H=
|
||||
|
||||
set INCLUDE_SC=%INCLUDE%
|
||||
set INCLUDE=
|
||||
for /f "tokens=1-8 delims=;" %%a in ("%INCLUDE_SC%") do (
|
||||
for %%i in ("%%a" "%%b" "%%c" "%%d" "%%e" "%%f" "%%g" "%%h") do (
|
||||
if not %%i=="" (
|
||||
set INCLUDE=!INCLUDE! -I %%i
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
if "%LIBPATH%"=="" goto check_dir_exist_LIBPATH
|
||||
|
||||
set LIBPATH_SC=%LIBPATH%
|
||||
set LIBPATH=
|
||||
for /f "tokens=1-8 delims=;" %%a in ("%LIBPATH_SC%") do (
|
||||
for %%i in ("%%a" "%%b" "%%c" "%%d" "%%e" "%%f" "%%g" "%%h") do (
|
||||
if not %%i=="" (
|
||||
set LIBPATH=!LIBPATH! -libpath:%%i
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
rem ***************************************************************************
|
||||
rem * COMPILATION OPTIONS *
|
||||
rem ***************************************************************************
|
||||
|
||||
set OS=windowsce
|
||||
set OS_VERSION=8.0
|
||||
set OS_VERSION_NUMBER=0x800
|
||||
set LIBARCH=arm
|
||||
set MACH=ARM
|
||||
|
||||
for /f "delims=" %%i in ('cd') do set THIS_DIR=%%i
|
||||
|
||||
set SOURCES_ROOT=%THIS_DIR%\..
|
||||
set TARGET_DIR=%THIS_DIR%\bin\%OS%_%OS_VERSION%_%LIBARCH%
|
||||
|
||||
for /f "tokens=3" %%i in ('findstr /c:"#define CS_API_MAJOR" "%SOURCES_ROOT%\include\capstone\capstone.h"') do set CS_API_MAJOR=%%i
|
||||
for /f "tokens=3" %%i in ('findstr /c:"#define CS_API_MINOR" "%SOURCES_ROOT%\include\capstone\capstone.h"') do set CS_API_MINOR=%%i
|
||||
|
||||
set TARGET_VERSION=%CS_API_MAJOR%.%CS_API_MINOR%
|
||||
set TAREGET_NAME=capstone-%TARGET_VERSION%
|
||||
|
||||
set CPPFLAGS=-D LIBARCH_%LIBARCH% -D LIBARCH=L\"%LIBARCH%\"
|
||||
set 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
|
||||
|
||||
for %%a in (%DISASM_ARCH_LIST%) do set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_HAS_%%a
|
||||
|
||||
if %SHARED%==0 (
|
||||
set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_STATIC -D LIB_EXT=L\".lib\"
|
||||
) else (
|
||||
set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_SHARED -D LIB_EXT=L\".dll\"
|
||||
)
|
||||
|
||||
if not %USE_SYS_DYN_MEM%==0 ( set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_USE_SYS_DYN_MEM )
|
||||
if not %DIET_MODE%==0 ( set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_DIET )
|
||||
if not %X86_REDUCE%==0 ( set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_X86_REDUCE )
|
||||
if not %X86_ATT_DISABLE%==0 ( set CPPFLAGS=!CPPFLAGS! -D CAPSTONE_X86_ATT_DISABLE )
|
||||
|
||||
set INCLUDE=-I %SOURCES_ROOT%\include -I %SOURCES_ROOT% %INCLUDE%
|
||||
|
||||
set CFLAGS=%CPPFLAGS% %INCLUDE% -nologo -MP -Zi -MT -Oi -GS -fp:fast -Oy- -W3 -WX
|
||||
|
||||
set LDFLAGS=-nologo -debug -incremental:no -manifest:no -version:%TARGET_VERSION% -machine:%MACH% -subsystem:WINDOWSCE,%OS_VERSION% %LIBPATH% %LIBS%
|
||||
|
||||
set ARFLAGS=-nologo -machine:%MACH% -subsystem:WINDOWSCE,%OS_VERSION% %LIBPATH% %LIBS%
|
||||
|
||||
set SOURCES=
|
||||
for %%f in (%SOURCES_ROOT%\*.c) do set SOURCES=!SOURCES! %%f
|
||||
for /d %%a in (%SOURCES_ROOT%\arch\*) do for %%f in (%%a\*.c) do set SOURCES=!SOURCES! %%f
|
||||
|
||||
rem ***************************************************************************
|
||||
rem * COMPILATION COMMANDS *
|
||||
rem ***************************************************************************
|
||||
|
||||
rd /q /s "%TARGET_DIR%"
|
||||
md "%TARGET_DIR%"
|
||||
|
||||
set PATH=%TOOLCHAIN%;%PATH%
|
||||
|
||||
rem %CC% -c %CFLAGS% -D DEBUG -D _DEBUG -Od -Fo"%TARGET_DIR%\\" -Fd"%TARGET_DIR%\%TAREGET_NAME%.pdb" %SOURCES%
|
||||
%CC% -c %CFLAGS% -D NDEBUG -Ox -Fo"%TARGET_DIR%\\" -Fd"%TARGET_DIR%\%TAREGET_NAME%.pdb" %SOURCES%
|
||||
if errorlevel 1 goto compilation_failed
|
||||
|
||||
if %SHARED%==0 (
|
||||
%AR% -out:%TARGET_DIR%\%TAREGET_NAME%.lib %ARFLAGS% %TARGET_DIR%\*.obj
|
||||
) else (
|
||||
%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
|
||||
)
|
||||
|
||||
endlocal
|
||||
goto done
|
||||
|
||||
rem ***************************************************************************
|
||||
rem * ERROR REPORTING *
|
||||
rem ***************************************************************************
|
||||
|
||||
:check_dir_exist_WINCE_TOOLCHAIN_ROOT
|
||||
echo ERROR: WINCE_TOOLCHAIN_ROOT does not specify an existing directory.
|
||||
goto done
|
||||
|
||||
:check_dir_exist_TOOLCHAIN
|
||||
echo ERROR: TOOLCHAIN does not specify an existing directory.
|
||||
goto done
|
||||
|
||||
:check_dir_exist_CC_LD_AR
|
||||
echo ERROR: TOOLCHAIN does not specify a valid toolchain directory.
|
||||
goto done
|
||||
|
||||
:check_dir_exist_INCLUDE
|
||||
echo ERROR: INCLUDE does not specify an existing directory.
|
||||
goto done
|
||||
|
||||
:check_dir_exist_LIBPATH
|
||||
echo ERROR: LIBPATH does not specify an existing directory.
|
||||
goto done
|
||||
|
||||
:compilation_failed
|
||||
echo ERROR: Compilation failed.
|
||||
goto done
|
||||
|
||||
:done
|
||||
pause
|
Reference in New Issue
Block a user