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
|