mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-05 16:35:33 +00:00
* 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
198 lines
7.6 KiB
Batchfile
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
|