Welcome to mirror list, hosted at ThFree Co, Russian Federation.

build.bat - github.com/mpc-hc/mpc-hc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 32f32f64a6a57243882cc49b29b61353967a79ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
@ECHO OFF
REM (C) 2009-2012 see Authors.txt
REM
REM This file is part of MPC-HC.
REM
REM MPC-HC 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 3 of the License, or
REM (at your option) any later version.
REM
REM MPC-HC 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
REM along with this program.  If not, see <http://www.gnu.org/licenses/>.

REM $Id$

CLS
SETLOCAL
CD /D %~dp0

IF /I "%~1"=="help"   GOTO ShowHelp
IF /I "%~1"=="/help"  GOTO ShowHelp
IF /I "%~1"=="-help"  GOTO ShowHelp
IF /I "%~1"=="--help" GOTO ShowHelp
IF /I "%~1"=="/?"     GOTO ShowHelp


REM pre-build checks
IF "%VS100COMNTOOLS%"=="" GOTO MissingVar
IF "%MINGW32%"==""        GOTO MissingVar
IF "%MINGW64%"==""        GOTO MissingVar


REM Check for the first switch
IF "%~1" == "" (
  SET "BUILDTYPE=Build"
) ELSE (
  IF /I "%~1" == "Build"     SET "BUILDTYPE=Build"   & GOTO CheckSecondArg
  IF /I "%~1" == "/Build"    SET "BUILDTYPE=Build"   & GOTO CheckSecondArg
  IF /I "%~1" == "-Build"    SET "BUILDTYPE=Build"   & GOTO CheckSecondArg
  IF /I "%~1" == "--Build"   SET "BUILDTYPE=Build"   & GOTO CheckSecondArg
  IF /I "%~1" == "Clean"     SET "BUILDTYPE=Clean"   & GOTO CheckSecondArg
  IF /I "%~1" == "/Clean"    SET "BUILDTYPE=Clean"   & GOTO CheckSecondArg
  IF /I "%~1" == "-Clean"    SET "BUILDTYPE=Clean"   & GOTO CheckSecondArg
  IF /I "%~1" == "--Clean"   SET "BUILDTYPE=Clean"   & GOTO CheckSecondArg
  IF /I "%~1" == "Rebuild"   SET "BUILDTYPE=Rebuild" & GOTO CheckSecondArg
  IF /I "%~1" == "/Rebuild"  SET "BUILDTYPE=Rebuild" & GOTO CheckSecondArg
  IF /I "%~1" == "-Rebuild"  SET "BUILDTYPE=Rebuild" & GOTO CheckSecondArg
  IF /I "%~1" == "--Rebuild" SET "BUILDTYPE=Rebuild" & GOTO CheckSecondArg

  ECHO.
  ECHO Unsupported commandline switch!
  ECHO Run "%~nx0 help" for details about the commandline switches.
  CALL :SubMsg "ERROR" "Compilation failed!"
)


:CheckSecondArg
REM Check for the second switch
IF "%~2" == "" (
  SET "PLATFORM=all"
) ELSE (
  IF /I "%~2" == "x86"   SET "PLATFORM=Win32" & GOTO CheckThirdArg
  IF /I "%~2" == "/x86"  SET "PLATFORM=Win32" & GOTO CheckThirdArg
  IF /I "%~2" == "-x86"  SET "PLATFORM=Win32" & GOTO CheckThirdArg
  IF /I "%~2" == "--x86" SET "PLATFORM=Win32" & GOTO CheckThirdArg
  IF /I "%~2" == "x64"   SET "PLATFORM=x64"   & GOTO CheckThirdArg
  IF /I "%~2" == "/x64"  SET "PLATFORM=x64"   & GOTO CheckThirdArg
  IF /I "%~2" == "-x64"  SET "PLATFORM=x64"   & GOTO CheckThirdArg
  IF /I "%~2" == "--x64" SET "PLATFORM=x64"   & GOTO CheckThirdArg
  IF /I "%~2" == "all"   SET "PLATFORM=all"   & GOTO CheckThirdArg
  IF /I "%~2" == "/all"  SET "PLATFORM=all"   & GOTO CheckThirdArg
  IF /I "%~2" == "-all"  SET "PLATFORM=all"   & GOTO CheckThirdArg
  IF /I "%~2" == "--all" SET "PLATFORM=all"   & GOTO CheckThirdArg

  ECHO.
  ECHO Unsupported commandline switch!
  ECHO Run "%~nx0 help" for details about the commandline switches.
  CALL :SubMsg "ERROR" "Compilation failed!"
)


:CheckThirdArg
REM Check for the third switch
IF "%~3" == "" (
  SET "CONFIG=all"
) ELSE (
  IF /I "%~3" == "Main"       SET "CONFIG=Main"     & GOTO CheckFourthArg
  IF /I "%~3" == "/Main"      SET "CONFIG=Main"     & GOTO CheckFourthArg
  IF /I "%~3" == "-Main"      SET "CONFIG=Main"     & GOTO CheckFourthArg
  IF /I "%~3" == "--Main"     SET "CONFIG=Main"     & GOTO CheckFourthArg
  IF /I "%~3" == "Resource"   SET "CONFIG=Resource" & GOTO CheckFourthArg
  IF /I "%~3" == "/Resource"  SET "CONFIG=Resource" & GOTO CheckFourthArg
  IF /I "%~3" == "-Resource"  SET "CONFIG=Resource" & GOTO CheckFourthArg
  IF /I "%~3" == "--Resource" SET "CONFIG=Resource" & GOTO CheckFourthArg
  IF /I "%~3" == "all"        SET "CONFIG=all"      & GOTO CheckFourthArg
  IF /I "%~3" == "/all"       SET "CONFIG=all"      & GOTO CheckFourthArg
  IF /I "%~3" == "-all"       SET "CONFIG=all"      & GOTO CheckFourthArg
  IF /I "%~3" == "--all"      SET "CONFIG=all"      & GOTO CheckFourthArg

  ECHO.
  ECHO Unsupported commandline switch!
  ECHO Run "%~nx0 help" for details about the commandline switches.
  CALL :SubMsg "ERROR" "Compilation failed!"
)

:CheckFourthArg
REM Check for the fourth switch
IF "%~4" == "" (
  SET "BUILDCONFIG=Release"
) ELSE (
  IF /I "%~4" == "Debug"   SET "BUILDCONFIG=Debug" & GOTO Start
  IF /I "%~4" == "/Debug"  SET "BUILDCONFIG=Debug" & GOTO Start
  IF /I "%~4" == "-Debug"  SET "BUILDCONFIG=Debug" & GOTO Start
  IF /I "%~4" == "--Debug" SET "BUILDCONFIG=Debug" & GOTO Start

  ECHO.
  ECHO Unsupported commandline switch!
  ECHO Run "%~nx0 help" for details about the commandline switches.
  CALL :SubMsg "ERROR" "Compilation failed!"
)


:Start
SET START_TIME=%DATE%-%TIME%
IF "%PLATFORM%"=="Win32" GOTO Win32
IF "%PLATFORM%"=="x64"   GOTO x64


:Win32
CALL "%VS100COMNTOOLS%..\..\VC\vcvarsall.bat" x86

IF "%CONFIG%"=="Resource" CALL :SubResources Win32 && GOTO x64
CALL :SubMPCHC Win32
IF "%CONFIG%"=="Main" GOTO x64

CALL :SubResources Win32
CALL :SubCreatePackages Win32


:x64
IF "%PLATFORM%"=="Win32" GOTO End

IF DEFINED PROGRAMFILES(x86) (SET build_type=amd64) ELSE (SET build_type=x86_amd64)
CALL "%VS100COMNTOOLS%..\..\VC\vcvarsall.bat" %build_type%

IF "%CONFIG%"=="Resource" CALL :SubResources x64 && GOTO END
CALL :SubMPCHC x64
IF "%CONFIG%"=="Main" GOTO End

CALL :SubResources x64
CALL :SubCreatePackages x64


:End
TITLE Compiling MPC-HC [FINISHED]
CALL :SubMsg "INFO" "MPC-HC's compilation started on %START_TIME% and completed on %DATE%-%TIME%"
ENDLOCAL
EXIT /B


:SubMPCHC
TITLE Compiling MPC-HC - %BUILDCONFIG%^|%1...
devenv /nologo mpc-hc.sln /%BUILDTYPE% "%BUILDCONFIG%|%1"
IF %ERRORLEVEL% NEQ 0 CALL :SubMsg "ERROR" "Compilation failed!"
EXIT /B


:SubResources
TITLE Compiling mpciconlib - Release^|%1...
devenv /nologo mpciconlib.sln /%BUILDTYPE% "Release|%1"
IF %ERRORLEVEL% NEQ 0 CALL :SubMsg "ERROR" "Compilation failed!"

FOR %%A IN ("Armenian" "Belarusian" "Catalan" "Chinese simplified" "Chinese traditional"
 "Czech" "Dutch" "French" "German" "Hebrew" "Hungarian" "Italian" "Japanese" "Korean"
 "Polish" "Portuguese" "Russian" "Slovak" "Spanish" "Swedish" "Turkish" "Ukrainian"
) DO (
 CALL :SubMPCRES %%A %1
)
EXIT /B


:SubMPCRES
TITLE Compiling mpcresources - %~1^|%2...
devenv /nologo mpcresources.sln /%BUILDTYPE% "Release %~1|%2"
IF %ERRORLEVEL% NEQ 0 CALL :SubMsg "ERROR" "Compilation failed!"
EXIT /B


:SubCreatePackages
IF "%BUILDTYPE%"=="Clean"   EXIT /B
IF "%BUILDCONFIG%"=="Debug" EXIT /B

IF "%~1"=="Win32" SET OUTDIR=bin\mpc-hc_x86
IF "%~1"=="x64"   SET OUTDIR=bin\mpc-hc_x64 & SET ISDefs=/Dx64Build

XCOPY "COPYING.txt"        "%OUTDIR%\" /Y /V >NUL
XCOPY "docs\Authors.txt"   "%OUTDIR%\" /Y /V >NUL
XCOPY "docs\Changelog.txt" "%OUTDIR%\" /Y /V >NUL
XCOPY "docs\Readme.txt"    "%OUTDIR%\" /Y /V >NUL

CALL :SubDetectInnoSetup

IF DEFINED InnoSetupPath (
  TITLE Compiling %1 installer...
  "%InnoSetupPath%\iscc.exe" /Q /O"bin" "distrib\mpc-hc_setup.iss" %ISDefs%
  IF %ERRORLEVEL% NEQ 0 CALL :SubMsg "ERROR" "Compilation failed!"
  CALL :SubMsg "INFO" "%1 installer successfully built"
) ELSE (
  CALL :SubMsg "INFO" "Inno Setup wasn't found, the %1 installer wasn't built"
)
EXIT /B


:ShowHelp
TITLE %~nx0 %1
ECHO. & ECHO.
ECHO Usage:
ECHO %~nx0 [Clean^|Build^|Rebuild] [x86^|x64^|all] [Main^|Resource^|all] [Debug]
ECHO.
ECHO Notes: You can also prefix the commands with "-", "--" or "/".
ECHO        The arguments are not case sensitive.
ECHO. & ECHO.
ECHO Executing %~nx0 without any arguments will use the default ones:
ECHO "%~nx0 build all all"
ECHO.
ECHO Examples:
ECHO %~nx0 build x86 Resource     -Builds the x86 resources only
ECHO %~nx0 build all Resource     -Builds both x86 and x64 resources only
ECHO %~nx0 build x86              -Builds x86 Main exe and the resources
ECHO %~nx0 build x86 all Debug    -Builds x86 Main Debug exe and resources
ECHO.
ECHO NOTES:
ECHO Debug only applies to Main project [mpc-hc.sln]
ECHO "%~nx0 x86" or "%~nx0 debug" won't work.
ECHO.
ENDLOCAL
EXIT /B


:MissingVar
COLOR 0C
TITLE Compiling MPC-HC [ERROR]
ECHO Not all build dependencies were found. To build MPC-HC you need:
ECHO * Visual Studio 2010 SP1 installed
ECHO * MinGW 32bit with MSYS pointed to in MINGW32 environment variable
ECHO * MinGW 64bit with MSYS pointed to in MINGW64 environment variable
ECHO.
ECHO See "docs\Compilation.txt" for more information.
ECHO. & ECHO.
ECHO Press any key to exit...
PAUSE >NUL
ENDLOCAL
EXIT /B


:SubDetectInnoSetup
REM Detect if we are running on 64bit WIN and use Wow6432Node, and set the path
REM of Inno Setup accordingly
IF DEFINED PROGRAMFILES(x86) (
  SET "U_=HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
) ELSE (
  SET "U_=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
)

FOR /F "delims=" %%a IN (
  'REG QUERY "%U_%\Inno Setup 5_is1" /v "Inno Setup: App Path"2^>Nul^|FIND "REG_"') DO (
  SET "InnoSetupPath=%%a" & CALL :SubInnoSetupPath %%InnoSetupPath:*Z=%%)
EXIT /B


:SubInnoSetupPath
SET InnoSetupPath=%*
EXIT /B


:SubMsg
ECHO. & ECHO ______________________________
ECHO [%~1] %~2
ECHO ______________________________ & ECHO.
IF /I "%~1" == "ERROR" (
  PAUSE
  ENDLOCAL
  EXIT
) ELSE (
  EXIT /B
)