mirror of
https://github.com/xenia-project/xenia.git
synced 2026-07-11 01:24:34 +02:00
'xb gentest' to generate test binaries on Windows.
This commit is contained in:
@@ -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 ============================================================================
|
||||
|
||||
Reference in New Issue
Block a user