123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- @echo off
- rem
- rem AWL simulator - Windows frozen package build script
- rem
- rem Copyright 2012-2018 Michael Buesch <m@bues.ch>
- rem
- rem This program is free software; you can redistribute it and/or modify
- rem it under the terms of the GNU General Public License as published by
- rem the Free Software Foundation; either version 2 of the License, or
- rem (at your option) any later version.
- rem
- rem This program is distributed in the hope that it will be useful,
- rem but WITHOUT ANY WARRANTY; without even the implied warranty of
- rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- rem GNU General Public License for more details.
- rem
- rem You should have received a copy of the GNU General Public License along
- rem with this program; if not, write to the Free Software Foundation, Inc.,
- rem 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- rem
- setlocal ENABLEDELAYEDEXPANSION
- set project=awlsim
- set PATH=%PATH%;C:\WINDOWS;C:\WINDOWS\SYSTEM32
- for /D %%f in ( "C:\PYTHON*" ) do set PATH=!PATH!;%%f
- for /D %%f in ( "%USERPROFILE%\AppData\Local\Programs\Python\Python*" ) do set PATH=!PATH!;%%f;%%f\Scripts
- set PATH=%PATH%;%ProgramFiles%\7-Zip
- cd ..
- if ERRORLEVEL 1 goto error_basedir
- call :detect_version
- if "%PROCESSOR_ARCHITECTURE%" == "x86" (
- set winprefix=win32
- ) else (
- set winprefix=win64
- )
- set distdir=%project%-%winprefix%-standalone-%version%
- set sfxfile=%project%-%winprefix%-%version%.package.exe
- set bindirname=%project%-bin
- set bindir=%distdir%\%bindirname%
- set builddir=%bindir%\build
- set licensedirname=licenses
- set licensedir=%distdir%\%licensedirname%
- echo Building standalone Windows executable for %project%-%version%
- call :select_buildcython
- call :prepare_env
- call :build_cxfreeze
- call :copy_files
- call :gen_startup_wrapper
- call :make_archive
- echo ---
- echo finished
- pause
- exit /B 0
- :detect_version
- py -c "from awlsim.common.version import VERSION_STRING; print(VERSION_STRING)" > version.txt
- if ERRORLEVEL 1 goto error_version
- set /p version= < version.txt
- del version.txt
- exit /B 0
- :select_buildcython
- echo.
- echo Build optimized Cython modules?
- echo 1) Do not build Cython modules (default)
- echo 2) Build Cython modules
- set /p buildcython=Selection:
- if "%buildcython%" == "" goto buildcython_no
- if "%buildcython%" == "1" goto buildcython_no
- if "%buildcython%" == "2" goto buildcython_yes
- echo "Error: Invalid selection"
- goto error
- :buildcython_yes
- echo Building Cython modules
- set AWLSIM_CYTHON_BUILD=1
- exit /B 0
- :buildcython_no
- echo Not building Cython modules
- set AWLSIM_CYTHON_BUILD=0
- exit /B 0
- :prepare_env
- echo === Preparing distribution environment
- rd /S /Q build 2>NUL
- rd /S /Q %distdir% 2>NUL
- del %sfxfile% 2>NUL
- timeout /T 2 /NOBREAK >NUL
- mkdir %distdir%
- if ERRORLEVEL 1 goto error_prep
- mkdir %bindir%
- if ERRORLEVEL 1 goto error_prep
- exit /B 0
- :build_cxfreeze
- echo === Creating the cx_Freeze distribution
- py setup.py ^
- build ^
- --build-base=%builddir% ^
- build_exe ^
- --build-exe=%bindir%
- if ERRORLEVEL 1 goto error_exe
- exit /B 0
- :copy_files
- echo === Copying additional files
- if %AWLSIM_CYTHON_BUILD% NEQ 0 (
- rem Copy Cython modules from builddir to bindir
- for /D %%f in ( "%builddir%\lib*" ) do (
- for /D %%i in ( "%%f\*_cython" ) do (
- xcopy /E /I %%i %bindir%\lib\%%~ni
- if ERRORLEVEL 1 goto error_copy
- )
- )
- )
- mkdir %licensedir%
- if ERRORLEVEL 1 goto error_copy
- copy examples\*.awlpro %distdir%\
- if ERRORLEVEL 1 goto error_copy
- copy *.html %distdir%\
- if ERRORLEVEL 1 goto error_copy
- xcopy /E /I doc %distdir%\doc
- if ERRORLEVEL 1 goto error_copy
- rmdir /S /Q %distdir%\doc\foreign-licenses
- if ERRORLEVEL 1 goto error_copy
- copy doc\foreign-licenses\*.txt %licensedir%\
- if ERRORLEVEL 1 goto error_copy
- copy COPYING.txt %licensedir%\AWLSIM-LICENSE.txt
- if ERRORLEVEL 1 goto error_copy
- for /D %%f in ( "progs\putty\*" ) do (
- copy %%f\putty\PUTTY.EXE %bindir%\
- if ERRORLEVEL 1 goto error_copy
- copy %%f\putty\PLINK.EXE %bindir%\
- if ERRORLEVEL 1 goto error_copy
- copy %%f\LICENCE %licensedir%\PUTTY-LICENSE.txt
- if ERRORLEVEL 1 goto error_copy
- )
- rd /S /Q %builddir%
- if ERRORLEVEL 1 goto error_copy
- exit /B 0
- :gen_startup_wrapper
- echo === Generating startup wrapper
- set wrapper=%distdir%\%project%.cmd
- echo @set PATH=%bindirname%;%bindirname%\lib;%bindirname%\platforms;%bindirname%\imageformats;%%PATH%% > %wrapper%
- echo @set AWLSIM_CYTHON=%AWLSIM_CYTHON_BUILD% >> %wrapper%
- echo @start %project%-bin\awlsim-gui.exe %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9 >> %wrapper%
- if ERRORLEVEL 1 goto error_wrapper
- exit /B 0
- :make_archive
- echo === Creating the distribution archive
- 7z a -mx=9 -sfx7z.sfx %sfxfile% %distdir%
- if ERRORLEVEL 1 goto error_7z
- exit /B 0
- :error_basedir
- echo FAILED to CD to base directory
- goto error
- :error_version
- echo FAILED to detect version
- goto error
- :error_prep
- echo FAILED to prepare environment
- goto error
- :error_exe
- echo FAILED to build exe
- goto error
- :error_copy
- echo FAILED to copy files
- goto error
- :error_wrapper
- echo FAILED to create wrapper
- goto error
- :error_7z
- echo FAILED to create archive
- goto error
- :error
- pause
- exit 1
|