spiegel-keyman/web/source/build.bat
Marc Durdin 7125e3a08e KeymanWeb 10.0 alpha (#124)
* Fixes #107 - move __BUILD__ and dfltLayout variables into tavultesoft object

* Cherry-pick fix for error from attachment api rework #114

* Fixup missing __BUILD__ reference

* Update header version number

* Fixup broken getDefaultKeyObject() call so we can release 2.0

* Fixes #118 - longpress menu sometimes missing base key on phone devices (#134)

* Add note to build scripts to remind devs to make changes to both scripts
2017-07-26 07:36:58 +07:00

198 lines
7.6 KiB
Batchfile

@echo off
rem
rem Compile keymanweb and copy compiled javascript and resources to output/embedded folder
rem
rem Note: any changes to this script should be replicated in build.sh
rem
rem Definition of global compile constants
set WEB_OUTPUT="..\output"
set EMBED_OUTPUT="..\embedded"
set SOURCE="."
rem Get build version -- if not building in TeamCity, then always use 300
if "%BUILD_COUNTER%"=="" (
set BUILD=300
) else (
set BUILD=%BUILD_COUNTER%
)
if "%CLOSURECOMPILERPATH%"=="" set CLOSURECOMPILERPATH=..\tools
if "%JAVA%"=="" set JAVA=java
set compiler=%CLOSURECOMPILERPATH%\compiler.jar
set compiler_warnings=--jscomp_error=* --jscomp_off=lintChecks --jscomp_off=unusedLocalVariables
set compilecmd="%JAVA%" -jar "%compiler%" %compiler_warnings%
if not exist %compiler% (
echo File %compiler% does not exist: have you set the environment variable CLOSURECOMPILERPATH?
exit /B 1
)
if "%1" == "-ui" goto ui
if "%1" == "-test" goto web
if "%1" == "-embed" goto embed
if "%1" == "-web" goto web
if "%1" == "-debug_embedded" goto debug_embedded
if not "%1" == "" goto help
echo Compiling build %BUILD%
echo.
rem
rem Check KeymanWeb dependencies before build
rem
:embed
echo Compile KMEI/KMEA build %BUILD%
rem Extended mkdir functionality - can recursively create directories as long as command extensions are enabled.
rem They usually are, but... just in case.
@echo off
setlocal enableextensions
if not exist %EMBED_OUTPUT% mkdir %EMBED_OUTPUT%
if not exist %EMBED_OUTPUT%\resources mkdir %EMBED_OUTPUT%\resources
endlocal
rem Compile supplementary plane string handing extensions
echo Compile SMP string extensions
del %EMBED_OUTPUT%\kmw-smpstring.js 2>nul
%compilecmd% --js %SOURCE%\kmwstring.js --compilation_level SIMPLE_OPTIMIZATIONS --js_output_file %EMBED_OUTPUT%\kmw-smpstring.js --warning_level VERBOSE
if not exist %EMBED_OUTPUT%\kmw-smpstring.js goto fail
del kmwtemp.js 2>nul
%compilecmd% --define tavultesoft.__BUILD__=%BUILD% --externs %SOURCE%\kmwreleasestub.js --js %SOURCE%\kmwbase.js --js %SOURCE%\keymanweb.js --js %SOURCE%\kmwosk.js --js %SOURCE%\kmwembedded.js --js %SOURCE%\kmwcallback.js --js %SOURCE%\kmwkeymaps.js --js %SOURCE%\kmwlayout.js --js %SOURCE%\kmwinit.js --compilation_level SIMPLE_OPTIMIZATIONS --js_output_file kmwtemp.js --warning_level VERBOSE
if not exist kmwtemp.js goto fail
echo Append SMP extensions
copy /B %EMBED_OUTPUT%\kmw-smpstring.js+kmwtemp.js %EMBED_OUTPUT%\keyman.js >nul
del kmwtemp.js
echo Compiled embedded application saved as keyman.js
rem Update any changed resources
echo Copy or update resources
xcopy %SOURCE%\resources\*.* %EMBED_OUTPUT%\resources /E /Y >nul
rem Update build number if successful
echo.
echo KMEA/KMEI build %BUILD% compiled and saved.
echo.
if "%1" == "-embed" goto done
:web
rem Extended mkdir functionality - can recursively create directories as long as command extensions are enabled.
rem They usually are, but... just in case.
@echo off
setlocal enableextensions
if not exist %WEB_OUTPUT% mkdir %WEB_OUTPUT%
if not exist %WEB_OUTPUT%\ui mkdir %WEB_OUTPUT%\ui
if not exist %WEB_OUTPUT%\osk mkdir %WEB_OUTPUT%\osk
if not exist %WEB_OUTPUT%\src mkdir %WEB_OUTPUT%\src
if not exist %WEB_OUTPUT%\src\ui mkdir %WEB_OUTPUT%\src\ui
if not exist %WEB_OUTPUT%\src\osk mkdir %WEB_OUTPUT%\src\osk
endlocal
rem Compile supplementary plane string handing extensions
echo Compile SMP string extensions
del %WEB_OUTPUT%\kmw-smpstring.js 2>nul
%compilecmd% --js %SOURCE%\kmwstring.js --compilation_level SIMPLE_OPTIMIZATIONS --js_output_file %WEB_OUTPUT%\kmw-smpstring.js --warning_level VERBOSE
if not exist %WEB_OUTPUT%\kmw-smpstring.js goto fail
rem Compile KeymanWeb code modules for native keymanweb use, stubbing out and removing references to debug functions
echo Compile Keymanweb
del %WEB_OUTPUT%\kmwtemp.js 2>nul
%compilecmd% --define tavultesoft.__BUILD__=%BUILD% --externs %SOURCE%\kmwreleasestub.js --js %SOURCE%\kmwbase.js --js %SOURCE%\keymanweb.js --js %SOURCE%\kmwosk.js --js %SOURCE%\kmwnative.js --js %SOURCE%\kmwcallback.js --js %SOURCE%\kmwkeymaps.js --js %SOURCE%\kmwlayout.js --js %SOURCE%\kmwinit.js --compilation_level SIMPLE_OPTIMIZATIONS --js_output_file %WEB_OUTPUT%\kmwtemp.js --warning_level VERBOSE
if not exist %WEB_OUTPUT%\kmwtemp.js goto fail
echo Append SMP string extensions to Keymanweb
copy /B %WEB_OUTPUT%\kmw-smpstring.js+%WEB_OUTPUT%\kmwtemp.js %WEB_OUTPUT%\keymanweb.js
del %WEB_OUTPUT%\kmwtemp.js
if "%1" == "-test" goto done
rem Update any changed resources
echo Copy resources to %WEB_OUTPUT%\ui, ...\osk
xcopy %SOURCE%\resources\ui\* %WEB_OUTPUT%\ui /E /Y >nul
xcopy %SOURCE%\resources\osk\* %WEB_OUTPUT%\osk /E /Y >nul
echo Copy source to %WEB_OUTPUT%\src
xcopy %SOURCE%\*.js %WEB_OUTPUT%\src /Y
echo %BUILD% > %WEB_OUTPUT%\src\version.txt
xcopy %SOURCE%\resources\ui\* %WEB_OUTPUT%\src\ui /E /Y >nul
xcopy %SOURCE%\resources\osk\* %WEB_OUTPUT%\src\osk /E /Y >nul
rem Update build number if successful
echo.
echo KeymanWeb 2 build %BUILD% compiled and saved.
echo.
rem echo %BUILD% >version.txt
rem exit /B 0
rem Compile UI code modules (TODO: add date testing, only recompile if needed)
:ui
echo Compile ToolBar UI
del %WEB_OUTPUT%\kmuitoolbar.js 2>nul
%compilecmd% --js %SOURCE%\kmwuitoolbar.js --externs %SOURCE%\kmwreleasestub.js --compilation_level ADVANCED_OPTIMIZATIONS --js_output_file %WEB_OUTPUT%\kmwuitoolbar.js --warning_level VERBOSE --output_wrapper "(function() {%%output%%}());"
if not exist %WEB_OUTPUT%\kmwuitoolbar.js goto fail
echo Compile Toggle UI
del %WEB_OUTPUT%\kmuitoggle.js 2>nul
%compilecmd% --js %SOURCE%\kmwuitoggle.js --externs %SOURCE%\kmwreleasestub.js --compilation_level SIMPLE_OPTIMIZATIONS --js_output_file %WEB_OUTPUT%\kmwuitoggle.js --warning_level VERBOSE --output_wrapper "(function() {%%output%%}());"
if not exist %WEB_OUTPUT%\kmwuitoggle.js goto fail
echo Compile Float UI
del %WEB_OUTPUT%\kmuifloat.js 2>nul
%compilecmd% --js %SOURCE%\kmwuifloat.js --externs %SOURCE%\kmwreleasestub.js --compilation_level ADVANCED_OPTIMIZATIONS --js_output_file %WEB_OUTPUT%\kmwuifloat.js --warning_level VERBOSE --output_wrapper "(function() {%%output%%}());"
if not exist %WEB_OUTPUT%\kmwuifloat.js goto fail
echo Compile Button UI
del %WEB_OUTPUT%\kmuibutton.js 2>nul
%compilecmd% --js %SOURCE%\kmwuibutton.js --externs %SOURCE%\kmwreleasestub.js --compilation_level SIMPLE_OPTIMIZATIONS --js_output_file %WEB_OUTPUT%\kmwuibutton.js --warning_level VERBOSE --output_wrapper "(function() {%%output%%}());"
if not exist %WEB_OUTPUT%\kmwuibutton.js goto fail
echo User interface modules compiled and saved.
exit /B 0
:fail
echo.
echo Build failed
exit /B 2
:debug_embedded
copy /B /Y %SOURCE%\kmwstring.js+%SOURCE%\kmwbase.js+%SOURCE%\keymanweb.js+%SOURCE%\kmwcallback.js+%SOURCE%\kmwosk.js+kmwembedded.js+%SOURCE%\kmwkeymaps.js+%SOURCE%\kmwlayout.js+%SOURCE%\kmwinit.js %EMBED_OUTPUT%\keymanios.js
echo Uncompiled embedded application saved as keymanios.js
goto done
:help
echo.
echo Usage: build to compile keymanweb application code to output folder
echo build -ui to compile desktop user interface modules to output folder
echo build -test to compile for testing without copying resources or
echo updating the saved version number.
echo build -debug_embedded to compile a readable version of the embedded KMEA/KMEI code.
echo build -web to compile only the KeymanWeb engine.
echo build -embed to compile only the KMEA/KMEI embedded engine.
exit /B 1
:done
echo.
exit /B 0
if "%1" == "-ui" goto ui
if "%1" == "-test" goto web
if "%1" == "-embed" goto embed
if "%1" == "-web" goto web
if "%1" == "-debug_embedded" goto debug_embedded
if not "%1" == "" goto help