Some improvements to the deployment script.
[LameXP.git] / etc / Deployment / make.bat
blob96ea9942200cb966abfacb1c510339d7802ad51f
1 @echo off
2 setlocal ENABLEDELAYEDEXPANSION
4 :: ---------------------------------------------------------------------------
5 :: SETUP ENVIRONMENT
6 :: ---------------------------------------------------------------------------
8 set "_LAMEXP_PATHS_INITIALIZED_="
10 call "%~dp0\_paths.bat"
11 call "%~dp0\_date.bat"
13 if "%LAMEXP_CONFIG%"=="" (
14         set "LAMEXP_CONFIG=Release"
17 if "%LAMEXP_PLATFORM%"=="" (
18         set "LAMEXP_PLATFORM=Win32"
21 if not "%LAMEXP_REDIST%"=="0" (
22         set "LAMEXP_REDIST=1"
25 :: ---------------------------------------------------------------------------
26 :: SETUP PATHS
27 :: ---------------------------------------------------------------------------
29 set "BIN_PATH=%~dp0\..\..\bin\%LAMEXP_PLATFORM%\%LAMEXP_CONFIG%"
30 set "TMP_PATH=%TEMP%\~LameXP.%LAMEXP_CONFIG%.%ISO_DATE%.%RANDOM%.tmp"
32 if "%LAMEXP_SKIP_BUILD%"=="YES" (
33         goto SkipBuildThisTime
36 :: ---------------------------------------------------------------------------
37 :: CLEAN UP
38 :: ---------------------------------------------------------------------------
40 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" cyan "\n==========================================================================="
41 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" cyan "Cleaning up..."
42 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" cyan "===========================================================================\n"
44 for %%i in (bin,obj,tmp,ipch) do (
45         del /Q /S /F "%~dp0\..\..\%%i\*.*"
48 :: ---------------------------------------------------------------------------
49 :: UPDATE LANGUAGE FILES AND DCOS
50 :: ---------------------------------------------------------------------------
52 call "%~dp0\_mkdocs.bat"
53 call "%~dp0\_lupdate.bat"
55 :: ---------------------------------------------------------------------------
56 :: BUILD THE BINARIES
57 :: ---------------------------------------------------------------------------
59 call "%~dp0\_build.bat" "%~dp0\..\..\%PATH_VCPROJ%" "%LAMEXP_PLATFORM%" "%LAMEXP_CONFIG%"
61 :SkipBuildThisTime
63 :: ---------------------------------------------------------------------------
64 :: READ VERSION INFO
65 :: ---------------------------------------------------------------------------
67 call "%~dp0\_version.bat"
68 call "%~dp0\_revision.bat"
70 :: ---------------------------------------------------------------------------
71 :: GENERATE OUTPUT FILE NAME
72 :: ---------------------------------------------------------------------------
74 mkdir "%~dp0\..\..\out" 2> NUL
75 set "OUT_NAME=%VER_LAMEXP_BASENAME%.%ISO_DATE%.%LAMEXP_CONFIG:_=-%.Build-%VER_LAMEXP_BUILD%"
76 set "OUT_FILE=%~dp0\..\..\out\!OUT_NAME!"
77 for /L %%n in (1, 1, 99) do (
78         if exist "!OUT_FILE!.exe" set "OUT_NAME=%VER_LAMEXP_BASENAME%.%ISO_DATE%.%LAMEXP_CONFIG:_=-%.Build-%VER_LAMEXP_BUILD%.Update-%%n"
79         if exist "!OUT_FILE!.zip" set "OUT_NAME=%VER_LAMEXP_BASENAME%.%ISO_DATE%.%LAMEXP_CONFIG:_=-%.Build-%VER_LAMEXP_BUILD%.Update-%%n"
80         set "OUT_FILE=%~dp0\..\..\out\!OUT_NAME!"
83 :: ---------------------------------------------------------------------------
84 :: DELETE OLD OUTPUT FILE
85 :: ---------------------------------------------------------------------------
87 for %%i in (exe,sfx,zip,txt) do (
88         del "%OUT_FILE%.%%i" 2> NUL
89         if exist "%OUT_FILE%.%%i" (
90                 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" red "\nFailed to delete existing output file^!\n"
91                 pause && exit
92         )
95 :: ---------------------------------------------------------------------------
96 :: COPY BINARY FILES AND REDIST
97 :: ---------------------------------------------------------------------------
99 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" cyan "\n==========================================================================="
100 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" cyan "Copying binary files..."
101 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" cyan "===========================================================================\n"
103 rd /S /Q "%TMP_PATH%" 2> NUL
104 mkdir "%TMP_PATH%"
106 call "%~dp0\_copy.bat" "%BIN_PATH%\LameXP.exe" "%TMP_PATH%"
107 call "%~dp0\_copy.bat" "%~dp0\..\..\etc\Manifest\VisualElements.xml" "%TMP_PATH%\LameXP.VisualElementsManifest.xml"
109 if "%LAMEXP_REDIST%"=="1" (
110         call "%~dp0\_copy.bat" "%BIN_PATH%\LameXP.rcc" "%TMP_PATH%"
111         call "%~dp0\_copy.bat" "%BIN_PATH%\MUtils32-?.dll" "%TMP_PATH%"
112         mkdir "%TMP_PATH%\imageformats"
113         for %%i in (Core,Gui,Network,Xml,Svg) do (
114                 call "%~dp0\_copy.bat" "%~dp0\..\..\..\Prerequisites\Qt4\v%PATH_VCTOOL%_xp\Shared\bin\Qt%%i4.dll" "%TMP_PATH%"
115         )
116         for %%i in (gif,ico,jpeg,mng,svg,tga,tiff) do (
117                 call "%~dp0\_copy.bat" "%~dp0\..\..\..\Prerequisites\Qt4\v%PATH_VCTOOL%_xp\Shared\plugins\imageformats\q%%i4.dll" "%TMP_PATH%\imageformats"
118         )
119         call "%~dp0\_copy.bat" "%~dp0\..\..\..\Prerequisites\MSVC\redist\vc\v%PATH_VCTOOL%_xp\x86\*.dll" "%TMP_PATH%"
120         if %PATH_VCTOOL% GEQ 140 (
121                 call "%~dp0\_copy.bat" "%~dp0\..\..\..\Prerequisites\MSVC\redist\ucrt\DLLs\x86\*.dll" "%TMP_PATH%"
122         )
125 for %%e in (LameXP,Qt,MUtils) do (
126         for %%x in (exe,dll) do (
127                 for %%f in (%TMP_PATH%\%%e*.%%x) do (
128                         "%~dp0\..\..\..\Prerequisites\UPX\upx.exe" --best "%%f"
129                 )
130         )
133 call "%~dp0\_copy.bat" "%~dp0\..\..\ReadMe.txt"           "%TMP_PATH%"
134 call "%~dp0\_copy.bat" "%~dp0\..\..\License.txt"          "%TMP_PATH%"
135 call "%~dp0\_copy.bat" "%~dp0\..\..\Copying.txt"          "%TMP_PATH%"
136 call "%~dp0\_copy.bat" "%~dp0\..\..\doc\Changelog.html"   "%TMP_PATH%"
137 call "%~dp0\_copy.bat" "%~dp0\..\..\doc\Translate.html"   "%TMP_PATH%"
138 call "%~dp0\_copy.bat" "%~dp0\..\..\doc\Manual.html"      "%TMP_PATH%"
140 mkdir "%TMP_PATH%\img\lamexp"
141 call "%~dp0\_copy.bat" "%~dp0\..\..\doc\img\lamexp\*.png" "%TMP_PATH%\img\lamexp"
143 if not "%VER_LAMEXP_TYPE%" == "Final" (
144         if not "%VER_LAMEXP_TYPE%" == "Hotfix" (
145                 call "%~dp0\_copy.bat" "%~dp0\..\..\doc\PRE_RELEASE_INFO.txt" "%TMP_PATH%"
146         )
149 if exist "%~dp0\_postproc.bat" (
150         call "%~dp0\_postproc.bat" "%TMP_PATH%"
153 echo Release: %VER_LAMEXP_MAJOR%.%VER_LAMEXP_MINOR_HI%%VER_LAMEXP_MINOR_LO%.%VER_LAMEXP_BUILD%> "%TMP_PATH%\LameXP.tag"
154 echo Git-%GIT_REV_NAME%-r%GIT_REV_NMBR%-%GIT_REV_HASH% [%GIT_REV_DATE%] [%GIT_REV_TIME%]>>      "%TMP_PATH%\LameXP.tag"
156 attrib +R "%TMP_PATH%\*.txt"
157 attrib +R "%TMP_PATH%\*.html"
158 attrib +R "%TMP_PATH%\*.exe"
159 attrib +R "%TMP_PATH%\*.dll"
160 attrib +R "%TMP_PATH%\*.tag"
161 attrib +R "%TMP_PATH%\*.xml"
163 :: ---------------------------------------------------------------------------
164 :: CREATE TAG
165 :: ---------------------------------------------------------------------------
167 echo LameXP - Audio Encoder Front-End> "%OUT_FILE%.txt"
168 echo Release: %VER_LAMEXP_MAJOR%.%VER_LAMEXP_MINOR_HI%%VER_LAMEXP_MINOR_LO% %VER_LAMEXP_TYPE%-%VER_LAMEXP_PATCH%, Build #%VER_LAMEXP_BUILD% [%ISO_DATE%] [%ISO_TIME%]>> "%OUT_FILE%.txt"
169 echo Git-%GIT_REV_NAME%-r%GIT_REV_NMBR%-%GIT_REV_HASH% [%GIT_REV_DATE%] [%GIT_REV_TIME%]>> "%OUT_FILE%.txt"
170 echo.>> "%OUT_FILE%.txt"
172 echo ------------------------------------------------------------------------------>> "%OUT_FILE%.txt"
173 echo README.TXT>> "%OUT_FILE%.txt"
174 echo ------------------------------------------------------------------------------>> "%OUT_FILE%.txt"
175 echo.>> "%OUT_FILE%.txt"
176 "%~dp0\..\..\..\Prerequisites\GnuWin32\cat.exe" "%~dp0\..\..\ReadMe.txt" >> "%OUT_FILE%.txt"
177 echo.>> "%OUT_FILE%.txt"
179 echo ------------------------------------------------------------------------------>> "%OUT_FILE%.txt"
180 echo LICENSE.TXT>> "%OUT_FILE%.txt"
181 echo ------------------------------------------------------------------------------>> "%OUT_FILE%.txt"
182 echo.>> "%OUT_FILE%.txt"
183 "%~dp0\..\..\..\Prerequisites\GnuWin32\cat.exe" "%~dp0\..\..\License.txt" >> "%OUT_FILE%.txt"
184 echo.>> "%OUT_FILE%.txt"
186 :: ---------------------------------------------------------------------------
187 :: BUILD INSTALLER
188 :: ---------------------------------------------------------------------------
190 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" cyan "\n==========================================================================="
191 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" cyan "Creating release packages..."
192 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" cyan "===========================================================================\n"
194 pushd "%TMP_PATH%"
195 "%~dp0\..\..\..\Prerequisites\GnuWin32\zip.exe" -r -9 -z "%OUT_FILE%.zip" "*.*" < "%OUT_FILE%.txt"
196 popd
198 "%~dp0\..\..\..\Prerequisites\NSIS\makensis.exe" "/DLAMEXP_DATE=%ISO_DATE%" "/DLAMEXP_VERSION=%VER_LAMEXP_MAJOR%.%VER_LAMEXP_MINOR_HI%%VER_LAMEXP_MINOR_LO%" "/DLAMEXP_BUILD=%VER_LAMEXP_BUILD%" "/DLAMEXP_INSTTYPE=%VER_LAMEXP_TYPE%" "/DLAMEXP_PATCH=%VER_LAMEXP_PATCH%" "/DLAMEXP_OUTPUT_FILE=%OUT_FILE%.sfx" "/DLAMEXP_SOURCE_PATH=%TMP_PATH%" "%~dp0\..\NSIS\setup.nsi"
199 if %ERRORLEVEL% NEQ 0 (
200         "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" red "\nFailed to build installer^!\n"
201         pause && exit
204 "%~dp0\..\..\..\Prerequisites\NSIS\peheader.exe" "%OUT_FILE%.sfx"
205 if %ERRORLEVEL% NEQ 0 (
206         "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" red "\nFailed to build installer^!\n"
207         pause && exit
210 call "%~dp0\..\..\..\Prerequisites\SevenZip\7zSD.cmd" "%OUT_FILE%.sfx" "%OUT_FILE%.exe" "LameXP Setup" "LameXP-Setup-r%VER_LAMEXP_BUILD%"
211 if %ERRORLEVEL% NEQ 0 (
212         "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" red "\nFailed to build installer^!\n"
213         pause && exit
216 set "VER_FILEVER=%VER_LAMEXP_MAJOR%.%VER_LAMEXP_MINOR_HI%.%VER_LAMEXP_MINOR_LO%.%VER_LAMEXP_PATCH%"
217 set "VER_PRODUCT=LameXP - Audio Encoder Front-End"
218 "%~dp0\..\..\..\Prerequisites\VerPatch\verpatch.exe" "%OUT_FILE%.exe" "%VER_FILEVER%" /pv "%VER_FILEVER%" /fn /s desc "%VER_PRODUCT%" /s product "%VER_PRODUCT%" /s title "LameXP Installer SFX" /s copyright "Copyright (C) LoRd_MuldeR" /s company "Free Software Foundation" /sc "Git-%GIT_REV_NAME%-r%GIT_REV_NMBR%-%GIT_REV_HASH% [%GIT_REV_DATE%] [%GIT_REV_TIME%]"
219 if %ERRORLEVEL% NEQ 0 (
220         "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" red "\nFailed to build installer^!\n"
221         pause && exit
224 "%~dp0\..\..\..\Prerequisites\NSIS\peheader.exe" "%OUT_FILE%.exe"
225 if %ERRORLEVEL% NEQ 0 (
226         "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" red "\nFailed to build installer^!\n"
227         pause && exit
230 :: ---------------------------------------------------------------------------
231 :: CLEAN UP
232 :: ---------------------------------------------------------------------------
234 attrib -R "%TMP_PATH%\*.txt"
235 attrib -R "%TMP_PATH%\*.html"
236 attrib -R "%TMP_PATH%\*.exe"
237 rd /S /Q "%TMP_PATH%"
239 for %%i in (zip,exe) do (
240         if not exist "%OUT_FILE%.%%i" (
241                 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" red "\nFailed to create release packages^!\n"
242                 pause && exit
243         )
246 attrib +R "%OUT_FILE%.zip"
247 attrib +R "%OUT_FILE%.sfx"
248 attrib +R "%OUT_FILE%.exe"
250 :: ---------------------------------------------------------------------------
251 :: SIGN OUTPUT FILE
252 :: ---------------------------------------------------------------------------
254 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" cyan "\n==========================================================================="
255 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" cyan "Signing output file..."
256 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" cyan "===========================================================================\n"
258 "%~dp0\..\..\..\Prerequisites\GnuPG\bin\gpg.exe" -u 0x6CF3FA22 -a -o "%OUT_FILE%.exe.sig"  --detach-sign "%OUT_FILE%.exe"
259 "%~dp0\..\..\..\Prerequisites\GnuPG\bin\gpg.exe" -u 0x5F57E03F -a -o "%OUT_FILE%.exe.sig2" --detach-sign "%OUT_FILE%.exe"
261 attrib +R "%OUT_FILE%.exe.sig"
262 attrib +R "%OUT_FILE%.exe.sig2"
264 :: ---------------------------------------------------------------------------
265 :: COMPLETED
266 :: ---------------------------------------------------------------------------
268 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" green "\n==========================================================================="
269 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" green "Completed successfully :-)"
270 "%~dp0\..\..\..\Prerequisites\CEcho\cecho.exe" green "===========================================================================\n"
272 pause