5 FOR /F "tokens=1" %%I in ( "perl.exe" ) DO SET PERL_PATH=%%~$PATH:I
7 IF NOT "%PERL_PATH%"=="" GOTO :PERL_OK
8 ECHO Perl must be in your PATH. Please fix and rerun this script!
13 IF "%CLOBBER_SOURCE%"=="" SET CLOBBER_SOURCE=false
15 FOR /F "eol=# delims=| tokens=1-4" %%I in ( External-msvc ) DO SET URL_%%I=%%J& SET DIR_%%I=%%K& SET MKD_%%I=%%L
18 FOR %%I IN ( %0 ) DO CD %%~dpI
24 IF NOT EXIST %TOP_DIR%\depkgs-msvc\nul MD %TOP_DIR%\depkgs-msvc
26 cd %TOP_DIR%\depkgs-msvc
31 IF /I "%CLOBBER_SOURCE:~0,1%"=="y" SET CLOBBER_SOURCE=true
32 IF /I "%CLOBBER_SOURCE:~0,1%"=="t" SET CLOBBER_SOURCE=true
33 IF /I "%CLOBBER_SOURCE:~0,1%"=="1" SET CLOBBER_SOURCE=true
35 SET PATH=%DEPPKG_DIR%\tools;%PATH%
36 SET INCLUDE=%INCLUDE%;%DEPPKG_DIR%\include
37 SET LIB=%LIB%;%DEPPKG_DIR%\lib
39 IF NOT EXIST bin\nul MKDIR bin
40 IF NOT EXIST src\nul MKDIR src
41 IF NOT EXIST include\nul MKDIR include
42 IF NOT EXIST lib\nul MKDIR lib
46 COPY NUL parse_output.sed >nul 2>&1
47 REM ECHO /\\$/N >>parse_output.sed
48 REM ECHO s/\\\n// >>parse_output.sed
49 ECHO s/\t\+/ /g >>parse_output.sed
50 ECHO s/ \+/ /g >>parse_output.sed
51 ECHO / [Ee]rror: /p >>parse_output.sed
52 REM ECHO s;.*Entering directory[ ]\+.%DEPPKG_DIR%/\([^^ ]\+\).;Entering \1;p >>parse_output.sed
53 REM ECHO s;.*Leaving directory[ ]\+.%DEPPKG_DIR%/\([^^ ]\+.\).;Leaving \1;p >>parse_output.sed
54 ECHO /[Cc][Ll] \^|[Ll][Ii][Nn][Kk] \^|[Ll][Ii][Bb] /!d >>parse_output.sed
55 ECHO s; \(\.\.\\\)\+; ;g >>parse_output.sed
56 ECHO s; \.\\; ;g >>parse_output.sed
57 ECHO s/.* \([^^ ]\+\(\.[Cc]\^|\.[Cc][Pp][Pp]\^|\.[Cc][Cc]\^|\.[Cc][Xx][Xx]\)\)\( .*\^|\)$/Compiling \1/p >>parse_output.sed
58 ECHO s/.* \([^^ ]\+\.[Aa][Ss][Mm]\)\( .*\^|\)$/Assembling \1/p >>parse_output.sed
59 ECHO s/.* \/[Oo][Uu][Tt]:\(\.\\\)*\(\.\.\\\)*\([^^ ]\+\)\( .*\^|\)$/Linking \3/p >>parse_output.sed
60 REM ECHO s/.*[Ll][Ii][Bb] [^^ ]\+ \([^^ ]\+\)\(\( [^^ ]\+\.o\)\+\)/Updating \1 -\2/p >>parse_output.sed
62 IF NOT "%1"=="" GOTO :ProcessArgs
64 REM CALL :process_pcre
65 CALL :process_pthreads
69 CALL :process_postgreSQL
71 REM CALL :process_scons
76 CALL :process_cmd_utils
78 CALL :process_dvd_rw_tools
91 SET MAKE_SRC_ENABLE=%3
94 IF NOT "%SRC_DIR%"=="" GOTO :get_source_make_src
95 FOR %%I IN ( %URL% ) DO (SET BASENAME=%%~nI& IF NOT "%%~xI"==".gz" IF NOT "%%~xI"==".bz2" SET SRC_DIR=%%~nI)
96 IF "%SRC_DIR%"=="" FOR %%I IN ( %BASENAME% ) DO SET SRC_DIR=%%~nI
100 IF /I "%MAKE_SRC_ENABLE:~0,1%"=="y" SET MAKE_SRC_DIR=true
101 IF /I "%MAKE_SRC_ENABLE:~0,1%"=="t" SET MAKE_SRC_DIR=true
102 IF /I "%MAKE_SRC_ENABLE:~0,1%"=="1" SET MAKE_SRC_DIR=true
104 FOR %%I IN ( %URL% ) DO ( SET ARCHIVE=%%~nxI& SET ARCHIVE_EXT=%%~xI)
108 IF EXIST %ARCHIVE% GOTO :get_source_check_srcdir
109 ECHO Downloading %URL%
110 wget -nv --passive-ftp "%URL%"
111 IF NOT ERRORLEVEL 1 GOTO :get_source_extract
112 ECHO Unable to download %ARCHIVE%
115 :get_source_check_srcdir
116 IF /I "%ARCHIVE_EXT%"==".exe" EXIT /B 0
117 IF NOT EXIST %SRC_DIR%\nul GOTO :get_source_extract
118 IF NOT "%CLOBBER_SOURCE%"=="true" GOTO :get_source_skipped
119 IF EXIST %SRC_DIR%\nul RD /s /q "%SRC_DIR%"
121 IF /I "%ARCHIVE_EXT%"==".exe" EXIT /B 0
123 FOR %%I IN ( "%ARCHIVE%" ) do IF "%%~xI"==".gz" SET TAR_ARCHIVE=%%~nI
124 FOR %%I IN ( "%ARCHIVE%" ) do IF "%%~xI"==".bz2" SET TAR_ARCHIVE=%%~nI
127 IF DEFINED MAKE_SRC_DIR IF NOT EXIST %SRC_DIR%\nul MKDIR %SRC_DIR%
128 IF DEFINED MAKE_SRC_DIR SET TARGET_DIR=%SRC_DIR%
130 ECHO Extracting %ARCHIVE%
131 7z x -bd -y -o"%TARGET_DIR%" "%ARCHIVE%" 2>&1 > "%ARCHIVE%.log"
132 IF ERRORLEVEL 1 EXIT /B 2
133 IF NOT DEFINED TAR_ARCHIVE GOTO :get_source_done
134 ECHO Extracting %TAR_ARCHIVE%
135 7z x -bd -y -o"%TARGET_DIR%" "%TARGET_DIR%\%TAR_ARCHIVE%" & del /q "%TAR_ARCHIVE%" 2>&1 >> "%ARCHIVE%.log"
146 CALL :get_source %URL_ZLIB% %DIR_ZLIB% %MKD_ZLIB%
149 REM XCOPY contrib\masmx86\gvmat32.asm . /Y
150 REM XCOPY contrib\masmx86\gvmat32c.c . /Y
151 REM XCOPY contrib\masmx86\inffas32.asm . /Y
152 REM CALL :do_nmake win32\Makefile.msc AS=nasmw ASFLAGS= LOC="-D_CRT_SECURE_NO_DEPRECATE -DASMV -DASMINF" OBJA="gvmat32c.obj gvmat32.obj inffas32.obj" all
153 CALL :do_nmake win32\Makefile.msc LOC="-D_CRT_SECURE_NO_DEPRECATE" all
155 XCOPY zlib1.dll.manifest %DEPPKG_DIR%\bin\ /Y
156 XCOPY zlib1.dll %DEPPKG_DIR%\bin\ /Y
157 XCOPY zlib.lib %DEPPKG_DIR%\lib\ /Y
158 XCOPY zdll.lib %DEPPKG_DIR%\lib\ /Y
159 XCOPY zlib.h %DEPPKG_DIR%\include\ /Y
160 XCOPY zconf.h %DEPPKG_DIR%\include\ /Y
164 CALL :get_source %URL_PCRE% %DIR_PCRE% %MKD_PCRE%
165 REM ECHO Patching PCRE
166 REM COPY /Y nul patch.log
167 REM do_patch pcre.patch
168 ECHO Configuring PCRE
169 ./configure CC_FOR_BUILD=gcc CXX_FOR_BUILD=g++ --host=mingw32 --prefix=%DEPPKG_DIR% --enable-utf8 --enable-unicode-properties 2>&1 > make.log
171 do_make Makefile PREFIX=%DEPPKG_DIR% all
173 do_make Makefile PREFIX=%DEPPKG_DIR% install
177 CALL :get_source %URL_PTHREADS% %DIR_PTHREADS% %MKD_PTHREADS%
178 FOR %%I IN ( %URL_PTHREADS% ) DO (SET ARCHIVE=%%~nxI)
179 IF EXIST %SRC_DIR%\nul GOTO :install_pthreads
180 ECHO Extracting %ARCHIVE%
181 7z x -bd -y -o"%DIR_PTHREADS%" "%ARCHIVE%" 2>&1 > "%ARCHIVE%.log"
184 ECHO Installing pthreads
185 XCOPY Pre-built\include\*.h %DEPPKG_DIR%\include\ /Y
186 XCOPY Pre-built\lib\pthreadVCE.lib %DEPPKG_DIR%\lib\ /Y
187 XCOPY Pre-built\lib\pthreadVCE.dll %DEPPKG_DIR%\bin\ /Y
191 CALL :get_source %URL_OPENSSL% %DIR_OPENSSL% %MKD_OPENSSL%
192 IF ERRORLEVEL 2 GOTO :OpenSSLError
193 ECHO Configuring openssl
194 perl Configure VC-WIN32 --prefix=%DEPPKG_DIR:\=/% > make.log
195 ECHO Building openssl
198 CALL :do_nmake ms\ntdll.mak
200 ECHO Installing openssl
201 CALL :do_nmake ms\ntdll.mak install
204 ECHO Unable to download OpenSSL source from %URL_OPENSSL%
208 CALL :get_source %URL_MYSQL% %DIR_MYSQL% %MKD_MYSQL%
209 ECHO Installing mysql
210 IF EXIST ..\..\include\mysql\nul RD /s /q ..\..\include\mysql
211 XCOPY include\* ..\..\include\mysql\ /e/h/k/y 2>&1
212 XCOPY lib\opt\libmysql.lib ..\..\lib\ /y
213 XCOPY lib\opt\libmysql.dll ..\..\bin\ /y
217 CALL :get_source %URL_POSTGRESQL% %DIR_POSTGRESQL% %MKD_POSTGRESQL%
218 IF ERRORLEVEL 2 GOTO :pstgreSQL_Error1
219 CALL :get_source %URL_POSTGRESQL_SRC% %DIR_POSTGRESQL_SRC% %MKD_POSTGRESQL_SRC%
220 IF ERRORLEVEL 2 GOTO :pstgreSQL_Error2
221 REM ECHO Patching postgreSQL
222 REM COPY /Y nul patch.log
223 REM do_patch postgresql.patch
224 ECHO Installing postgreSQL
225 XCOPY ..\pgsql\include\libpq-fe.h ..\..\include\ /Y 2>&1
226 XCOPY ..\pgsql\include\postgres_ext.h ..\..\include\ /Y 2>&1
227 LIB /def:src\interfaces\libpq\libpqdll.def /out:..\..\lib\libpqdll.lib /machine:x86 /subsystem:console
228 XCOPY ..\pgsql\lib\libpq.dll ..\..\bin\ /Y
229 XCOPY ..\pgsql\lib\comerr32.dll ..\..\bin\ /Y
230 XCOPY ..\pgsql\lib\krb5_32.dll ..\..\bin\ /Y
231 XCOPY ..\pgsql\lib\libintl-2.dll ..\..\bin\ /Y
232 XCOPY ..\pgsql\lib\libiconv-2.dll ..\..\bin\ /Y
235 ECHO Unable to download postgreSQL binaries from %URL_POSTGRESQL%
238 ECHO Unable to download postgreSQL source from %URL_POSTGRESQL_SRC%
242 CALL :get_source %URL_SQLITE% %DIR_SQLITE% %MKD_SQLITE%
243 IF ERRORLEVEL 2 GOTO :sqlite_error
244 IF ERRORLEVEL 1 GOTO :sqlite_skip_patch
246 COPY /Y nul patch.log
247 CALL :do_patch sqlite_msc.patch
249 ECHO Configuring SQLite
250 IF NOT EXIST bld/nul MKDIR bld
254 CALL :do_nmake ../Makefile.msvc clean all
255 ECHO Installing SQLite
256 COPY sqlite3.exe %DEPPKG_DIR%\bin
257 COPY sqlite3.exe.manifest %DEPPKG_DIR%\bin
258 COPY sqlite3.lib %DEPPKG_DIR%\lib
259 COPY sqlite3.h %DEPPKG_DIR%\include
262 ECHO Unable to download sqlite source from %URL_SQLITE%
266 CALL :get_source %URL_WX% %DIR_WX% %MKD_WX%
267 IF ERRORLEVEL 2 GOTO :wx_error
268 REM IF ERRORLEVEL 1 GOTO :wx_skip_patch
269 REM ECHO Patching wxWidgets
270 REM COPY /Y nul patch.log
271 REM do_patch wx1.patch -o build/msw/config.mingw32
272 REM do_patch wx2.patch
273 REM find . -name makefile.gcc -exec sh -c "sed -f %SCRIPT_DIR%/patches/wx.sed {% > \`ECHO {% | sed s/\.gcc$/\.mingw32/\`" \;
274 ECHO Building wxWidgets
277 CALL :do_nmake makefile.vc BUILD=release SHARED=1 VENDOR=bacula DEBUG_INFO=1 CPPFLAGS=-D_USE_32BIT_TIME_T
278 ECHO Installing wxWidgets
280 IF EXIST ..\..\include\wx\nul RD /s /q ..\..\include\wx
281 XCOPY include\wx ..\..\include\wx\ 2>&1
282 XCOPY include\wx\generic ..\..\include\wx\generic\ /e 2>&1
283 XCOPY include\wx\msw ..\..\include\wx\msw\ /e 2>&1
284 XCOPY lib\vc_dll\*.dll ..\..\bin\ /y
285 IF EXIST ..\..\lib\wx_dll\nul RD /s /q ..\..\lib\wx_dll
286 XCOPY lib\vc_dll\*.lib ..\..\lib\wx_dll\
287 XCOPY lib\vc_dll\msw ..\..\lib\wx_dll\msw\ /e 2>&1
290 ECHO Unable to download wxWidgets source from %URL_MTX%
294 CALL :get_source %URL_NSIS_BIN% %DIR_NSIS_BIN% %MKD_NSIS_BIN%
296 IF EXIST ..\nsis\nul RD /s /q ..\nsis
297 MOVE nsis-2.17 ..\nsis
301 CALL :get_source %URL_MTX% %DIR_MTX% %MKD_MTX%
302 IF ERRORLEVEL 2 GOTO :mtx_error
303 IF ERRORLEVEL 1 GOTO :mtx_skip_patch
305 COPY /Y config.h.in config.h
306 COPY /Y Makefile.in Makefile
307 COPY /Y nul patch.log
308 CALL :do_patch mtx.patch
309 CALL :do_patch mtx-msvc1.patch
310 CALL :do_patch mtx-msvc2.patch
313 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% all
315 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% install
318 ECHO Unable to download mtx source from %URL_MTX%
322 CALL :get_source %URL_MT% %DIR_MT% %MKD_MT%
323 IF ERRORLEVEL 2 GOTO :mt_error
324 IF ERRORLEVEL 1 GOTO :mt_skip_patch
326 COPY /Y nul patch.log
327 CALL :do_patch mt.patch
330 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% all
332 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% install
335 ECHO Unable to download mt source from %URL_MT%
339 CALL :get_source %URL_SED% %DIR_SED% %MKD_SED%
340 IF ERRORLEVEL 2 GOTO :sed_error
341 IF ERRORLEVEL 1 GOTO :sed_skip_patch
343 COPY /Y nul patch.log
344 CALL :do_patch sed_msc.patch
347 CALL :do_nmake Makefile.msc all
349 CALL :do_nmake Makefile.msc install
352 ECHO Unable to download sed source from %URL_MT%
356 CALL :get_source %URL_CMD_UTILS% %DIR_CMD_UTILS% %MKD_CMD_UTILS%
357 IF ERRORLEVEL 2 GOTO :cmd_utils_error
358 IF ERRORLEVEL 1 GOTO :cmd_utils_skip_patch
359 REM ECHO Patching cmd-utils
360 REM COPY /Y nul patch.log
361 REM CALL :do_patch cmd_utils_msc.patch
362 :cmd_utils_skip_patch
363 ECHO Building cmd-utils
364 vcbuild /nologo cmd-utils.sln "Release|WIN32" 2>&1 | tee -a make.log | sed -nf "%DEPPKG_DIR%\src\parse_output.sed"
365 IF ERRORLEVEL 1 GOTO :cmd_utils_build_error
366 ECHO Installing cmd-utils
367 XCOPY Release\*.exe %DEPPKG_DIR%\bin
369 :cmd_utils_build_error
370 ECHO Make failed - Check %CD%\make.log > con
373 ECHO Unable to download cmd-utils source from %URL_MT%
377 CALL :get_source %URL_MKISOFS% %DIR_MKISOFS% %MKD_MKISOFS%
378 IF ERRORLEVEL 2 GOTO :mkisofs_error
379 ECHO Installing mkisofs
380 FOR %%i IN ( %URL_MKISOFS% ) DO XCOPY %DEPPKG_DIR%\src\%%~nxi %DEPPKG_DIR%\bin /Y /Q >nul 2>&1
383 ECHO Unable to download mkisofs source from %URL_MKISOFS%
386 :process_dvd_rw_tools
387 CALL :get_source %URL_DVD_RW_TOOLS% %DIR_DVD_RW_TOOLS% %MKD_DVD_RW_TOOLS%
388 IF ERRORLEVEL 2 GOTO :dvd_rw_tools_error
389 IF ERRORLEVEL 1 GOTO :dvd_rw_tools_skip_patch
390 ECHO Patching dvd+rw-tools
391 COPY /Y nul patch.log
392 CALL :do_patch dvd+rw-tools.patch
393 :dvd_rw_tools_skip_patch
394 ECHO Building dvd+rw-tools
395 IF NOT EXIST Release\nul MKDIR Release
396 CALL :do_nmake Makefile.msc dvd+rw-tools
397 ECHO Installing dvd+rw-tools
398 CALL :do_nmake Makefile.msc prefix=%DEPPKG_DIR% install
401 ECHO Unable to download dvd+rw-tools source from %URL_DVD_RW_TOOLS%
405 SET PATCH_FILE=%SCRIPT_DIR%\patches\%1
407 patch -f -p0 %2 %3 %4 %5 %6 %7 %8 %9 >>patch.log < %PATCH_FILE%
408 IF NOT ERRORLEVEL 1 EXIT/B 0
409 ECHO Patch failed - Check %CD%\patch.log > con
413 nmake /nologo -f %* 2>&1 | tee -a make.log | sed -nf "%DEPPKG_DIR%\src\parse_output.sed"
414 IF NOT ERRORLEVEL 1 EXIT /B 0
415 ECHO Make failed - Check %CD%\make.log > con
419 #Need to download from Microsoft