'xb gentest' to generate test binaries on Windows.

This commit is contained in:
Ben Vanik
2015-05-12 21:40:44 -07:00
parent c00ded9fbc
commit a72dc93b92
92 changed files with 1149 additions and 1495 deletions
+62
View File
@@ -92,6 +92,10 @@ ECHO.
ECHO xb build [--checked OR --debug OR --release] [--force]
ECHO Initializes dependencies and prepares build environment.
ECHO.
ECHO xb gentest
ECHO Generates test binaries (under src/xenia/cpu/frontend/test/bin/).
ECHO Run after modifying test .s files.
ECHO.
ECHO xb test [--checked OR --debug OR --release] [--continue]
ECHO Runs automated tests. Tests must have been built with `xb build`.
ECHO.
@@ -257,6 +261,64 @@ ENDLOCAL & SET _RESULT=0
GOTO :eof
REM ============================================================================
REM xb gentest
REM ============================================================================
:perform_gentest
SETLOCAL EnableDelayedExpansion
ECHO Generating test binaries...
SET BINUTILS=third_party\binutils-ppc-cygwin
SET PPC_AS=%BINUTILS%\powerpc-none-elf-as.exe
SET PPC_LD=%BINUTILS%\powerpc-none-elf-ld.exe
SET PPC_OBJDUMP=%BINUTILS%\powerpc-none-elf-objdump.exe
SET PPC_NM=%BINUTILS%\powerpc-none-elf-nm.exe
SET TEST_SRC=src\xenia\cpu\frontend\test\
SET TEST_BIN=%TEST_SRC%\bin
IF NOT EXIST %TEST_BIN% (mkdir %TEST_BIN%)
SET ANY_ERRORS=0
PUSHD %TEST_SRC%
FOR %%G in (*.s) DO (
ECHO ^> generating %%~nG...
POPD
SET SRC_FILE=%TEST_SRC%\%%G
SET SRC_NAME=%%~nG
SET OBJ_FILE=%TEST_BIN%\!SRC_NAME!.o
%PPC_AS% -a64 -be -mregnames -mpower7 -maltivec -mvsx -mvmx128 -R -o !OBJ_FILE! !SRC_FILE!
IF !ERRORLEVEL! NEQ 0 (
SET ANY_ERRORS=1
)
%PPC_OBJDUMP% --adjust-vma=0x100000 -Mpower7 -Mvmx128 -D -EB !OBJ_FILE! > %TEST_BIN%\!SRC_NAME!.dis.tmp
IF !ERRORLEVEL! NEQ 0 (
SET ANY_ERRORS=1
)
REM Eat the first 4 lines to kill the file path that'll differ across machines.
MORE +4 %TEST_BIN%\!SRC_NAME!.dis.tmp > %TEST_BIN%\!SRC_NAME!.dis
DEL %TEST_BIN%\!SRC_NAME!.dis.tmp
%PPC_LD% -A powerpc:common64 -melf64ppc -EB -nostdlib --oformat binary -Ttext 0x100000 -e 0x100000 -o %TEST_BIN%\!SRC_NAME!.bin !OBJ_FILE!
IF !ERRORLEVEL! NEQ 0 (
SET ANY_ERRORS=1
)
%PPC_NM% --numeric-sort !OBJ_FILE! > %TEST_BIN%\!SRC_NAME!.map
IF !ERRORLEVEL! NEQ 0 (
SET ANY_ERRORS=1
)
PUSHD %TEST_SRC%
)
POPD
IF %ANY_ERRORS% NEQ 0 (
ECHO.
ECHO ERROR: failed to build one or more tests
ENDLOCAL & SET _RESULT=1
GOTO :eof
)
ENDLOCAL & SET _RESULT=0
GOTO :eof
REM ============================================================================
REM xb test
REM ============================================================================