Files
shooter-demo/tools/emscripten/gen-asm.bat

141 lines
3.3 KiB
Batchfile
Raw Normal View History

2025-11-28 18:11:30 +08:00
@echo off
setlocal enabledelayedexpansion
echo ========================================
2025-11-29 01:42:48 +08:00
echo WASM to asm.js ת<><D7AA><EFBFBD><EFBFBD>
2025-11-28 18:11:30 +08:00
echo ========================================
echo.
2025-11-29 01:42:48 +08:00
:: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-11-28 18:11:30 +08:00
if "%~1"=="" (
2025-11-29 01:42:48 +08:00
echo <20><><EFBFBD><EFBFBD>: ȱ<><C8B1> WASM <20>ļ<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-11-28 18:11:30 +08:00
echo.
2025-11-29 01:42:48 +08:00
echo <20>÷<EFBFBD>: gen-asm.bat ^<wasm<EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD>^> ^<<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>^>
2025-11-28 18:11:30 +08:00
echo.
2025-11-29 01:42:48 +08:00
echo ʾ<><CABE>:
2025-11-28 18:11:30 +08:00
echo gen-asm.bat pinball.wasm output/pinball-asm.js
echo gen-asm.bat ../target/wasm32-unknown-unknown/release/pinball_physics.wasm ../client-cocos/assets/wasm/pinball-asm.js
echo.
goto :error
)
if "%~2"=="" (
2025-11-29 01:42:48 +08:00
echo <20><><EFBFBD><EFBFBD>: ȱ<><C8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-11-28 18:11:30 +08:00
echo.
2025-11-29 01:42:48 +08:00
echo <20>÷<EFBFBD>: gen-asm.bat ^<wasm<EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD>^> ^<<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>^>
2025-11-28 18:11:30 +08:00
echo.
goto :error
)
set WASM_FILE=%~1
set OUTPUT_FILE=%~2
set SCRIPT_DIR=%~dp0
2025-11-29 01:42:48 +08:00
echo <20>ű<EFBFBD>Ŀ¼: %SCRIPT_DIR%
2025-11-28 18:11:30 +08:00
2025-11-29 01:42:48 +08:00
:: ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
2025-11-28 18:11:30 +08:00
for %%i in ("%WASM_FILE%") do set WASM_FILE_ABS=%%~fi
for %%i in ("%OUTPUT_FILE%") do set OUTPUT_FILE_ABS=%%~fi
for %%i in ("%OUTPUT_FILE_ABS%") do set OUTPUT_DIR=%%~dpi
2025-11-29 01:42:48 +08:00
:: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
2025-11-28 18:11:30 +08:00
if not exist "%WASM_FILE_ABS%" (
2025-11-29 01:42:48 +08:00
echo <20><><EFBFBD><EFBFBD>: WASM <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: %WASM_FILE_ABS%
2025-11-28 18:11:30 +08:00
goto :error
)
2025-11-29 01:42:48 +08:00
:: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
2025-11-28 18:11:30 +08:00
if not exist "%OUTPUT_DIR%" (
2025-11-29 01:42:48 +08:00
echo <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼: %OUTPUT_DIR%
2025-11-28 18:11:30 +08:00
mkdir "%OUTPUT_DIR%"
)
2025-11-29 01:42:48 +08:00
echo <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>: %WASM_FILE_ABS%
echo <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>: %OUTPUT_FILE_ABS%
2025-11-28 18:11:30 +08:00
echo.
2025-11-29 01:42:48 +08:00
:: <20><><EFBFBD><EFBFBD> Emscripten <20><><EFBFBD><EFBFBD>
2025-11-28 18:11:30 +08:00
call emcc --version >nul 2>&1
if %errorlevel% neq 0 (
2025-11-29 01:42:48 +08:00
echo Emscripten <20><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>...
2025-11-28 18:11:30 +08:00
if exist "%SCRIPT_DIR%emsdk\emsdk_env.bat" (
2025-11-29 01:42:48 +08:00
echo <20><><EFBFBD><EFBFBD> Emscripten <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...
2025-11-28 18:11:30 +08:00
call "%SCRIPT_DIR%emsdk\emsdk_env.bat"
call emcc --version >nul 2>&1
if %errorlevel% neq 0 (
2025-11-29 01:42:48 +08:00
echo <20><><EFBFBD><EFBFBD>: <20>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD> Emscripten <20><><EFBFBD><EFBFBD>
echo <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> install.bat <20><>װ Emscripten<65><6E><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD> setup-env.bat
2025-11-28 18:11:30 +08:00
goto :error
)
) else (
2025-11-29 01:42:48 +08:00
echo <20><><EFBFBD><EFBFBD>: δ<>ҵ<EFBFBD> Emscripten <20><>װ
echo <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> install.bat <20><>װ Emscripten
2025-11-28 18:11:30 +08:00
goto :error
)
)
2025-11-29 01:42:48 +08:00
echo Emscripten <20><EFBFBD><E6B1BE>Ϣ:
2025-11-28 18:11:30 +08:00
call emcc --version | findstr "emcc"
echo.
2025-11-29 01:42:48 +08:00
echo <20><>ʼת<CABC><D7AA> WASM <20><> asm.js...
:: ʹ<><CAB9> wasm2js <20><><EFBFBD>߽<EFBFBD> WASM ת<><D7AA>Ϊ asm.js
:: wasm2js <20><> Binaryen <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>֣<EFBFBD>Emscripten <20>Դ<EFBFBD>
:: <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>:
:: --pedantic : ʹ<>ø<EFBFBD><C3B8>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>֤
:: -o : <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
set WASM2JS_PATH=%SCRIPT_DIR%emsdk\upstream\bin\wasm2js.exe
:: <20><><EFBFBD><EFBFBD> wasm2js <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
if not exist "%WASM2JS_PATH%" (
echo <20><><EFBFBD><EFBFBD>: δ<>ҵ<EFBFBD> wasm2js <20><><EFBFBD><EFBFBD>
echo ·<><C2B7>: %WASM2JS_PATH%
echo <20><>ȷ<EFBFBD><C8B7> Emscripten <20><><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>װ
goto :error
)
echo ʹ<>ù<EFBFBD><C3B9><EFBFBD>: %WASM2JS_PATH%
echo.
call "%WASM2JS_PATH%" "%WASM_FILE_ABS%" ^
-o "%OUTPUT_FILE_ABS%" ^
--pedantic
2025-11-28 18:11:30 +08:00
if %errorlevel% neq 0 (
2025-11-29 01:42:48 +08:00
echo <20><><EFBFBD><EFBFBD>: wasm2js ת<><D7AA>ʧ<EFBFBD><CAA7>
2025-11-28 18:11:30 +08:00
goto :error
)
echo.
echo ========================================
2025-11-29 01:42:48 +08:00
echo ת<><D7AA><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>
2025-11-28 18:11:30 +08:00
echo ========================================
echo.
2025-11-29 01:42:48 +08:00
echo <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>: %OUTPUT_FILE_ABS%
2025-11-28 18:11:30 +08:00
2025-11-29 01:42:48 +08:00
:: <20><>ʾ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>С
2025-11-28 18:11:30 +08:00
for %%A in ("%OUTPUT_FILE_ABS%") do (
set file_size=%%~zA
set /a size_kb=!file_size!/1024
2025-11-29 01:42:48 +08:00
echo <20>ļ<EFBFBD><C4BC><EFBFBD>С: !size_kb! KB
2025-11-28 18:11:30 +08:00
)
echo.
2025-11-29 01:42:48 +08:00
echo ʹ<>÷<EFBFBD><C3B7><EFBFBD>:
echo <20><> HTML <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD> JS <20>ļ<EFBFBD><C4BC><EFBFBD>Ȼ<EFBFBD><C8BB>ʹ<EFBFBD><CAB9>:
2025-11-28 18:11:30 +08:00
echo PinballModule().then(function(Module) {
2025-11-29 01:42:48 +08:00
echo // ʹ<><CAB9> Module.ccall <20><><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
2025-11-28 18:11:30 +08:00
echo var result = Module.ccall('function_name', 'number', ['number'], [42]);
echo });
echo.
goto :end
:error
echo.
2025-11-29 01:42:48 +08:00
echo ת<><D7AA>ʧ<EFBFBD>ܣ<EFBFBD>
2025-11-28 18:11:30 +08:00
exit /b 1
:end
pause