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 ECHO Installing pthreads
179 XCOPY Pre-built\include\*.h %DEPPKG_DIR%\include\ /Y
180 XCOPY Pre-built\lib\pthreadVCE.lib %DEPPKG_DIR%\lib\ /Y
181 XCOPY Pre-built\lib\pthreadVCE.dll %DEPPKG_DIR%\bin\ /Y
185 CALL :get_source %URL_OPENSSL% %DIR_OPENSSL% %MKD_OPENSSL%
186 IF ERRORLEVEL 2 GOTO :OpenSSLError
187 ECHO Configuring openssl
188 perl Configure VC-WIN32 --prefix=%DEPPKG_DIR:\=/% > make.log
189 ECHO Building openssl
192 CALL :do_nmake ms\ntdll.mak
194 ECHO Installing openssl
195 CALL :do_nmake ms\ntdll.mak install
198 ECHO Unable to download OpenSSL source from %URL_OPENSSL%
202 CALL :get_source %URL_MYSQL% %DIR_MYSQL% %MKD_MYSQL%
203 ECHO Installing mysql
204 IF EXIST ..\..\include\mysql\nul RD /s /q ..\..\include\mysql
205 XCOPY include\* ..\..\include\mysql\ /e/h/k/y 2>&1
206 XCOPY lib\opt\libmysql.lib ..\..\lib\ /y
207 XCOPY lib\opt\libmysql.dll ..\..\bin\ /y
211 CALL :get_source %URL_POSTGRESQL% %DIR_POSTGRESQL% %MKD_POSTGRESQL%
212 IF ERRORLEVEL 2 GOTO :pstgreSQL_Error1
213 CALL :get_source %URL_POSTGRESQL_SRC% %DIR_POSTGRESQL_SRC% %MKD_POSTGRESQL_SRC%
214 IF ERRORLEVEL 2 GOTO :pstgreSQL_Error2
215 REM ECHO Patching postgreSQL
216 REM COPY /Y nul patch.log
217 REM do_patch postgresql.patch
218 ECHO Installing postgreSQL
219 XCOPY ..\pgsql\include\libpq-fe.h ..\..\include\ /Y 2>&1
220 XCOPY ..\pgsql\include\postgres_ext.h ..\..\include\ /Y 2>&1
221 LIB /def:src\interfaces\libpq\libpqdll.def /out:..\..\lib\libpqdll.lib /machine:x86 /subsystem:console
222 XCOPY ..\pgsql\lib\libpq.dll ..\..\bin\ /Y
223 XCOPY ..\pgsql\lib\comerr32.dll ..\..\bin\ /Y
224 XCOPY ..\pgsql\lib\krb5_32.dll ..\..\bin\ /Y
225 XCOPY ..\pgsql\lib\libintl-2.dll ..\..\bin\ /Y
226 XCOPY ..\pgsql\lib\libiconv-2.dll ..\..\bin\ /Y
229 ECHO Unable to download postgreSQL binaries from %URL_POSTGRESQL%
232 ECHO Unable to download postgreSQL source from %URL_POSTGRESQL_SRC%
236 CALL :get_source %URL_SQLITE% %DIR_SQLITE% %MKD_SQLITE%
237 IF ERRORLEVEL 2 GOTO :sqlite_error
238 IF ERRORLEVEL 1 GOTO :sqlite_skip_patch
240 COPY /Y nul patch.log
241 CALL :do_patch sqlite_msc.patch
243 ECHO Configuring SQLite
244 IF NOT EXIST bld/nul MKDIR bld
248 CALL :do_nmake ../Makefile.msvc clean all
249 ECHO Installing SQLite
250 COPY sqlite3.exe %DEPPKG_DIR%\bin
251 COPY sqlite3.lib %DEPPKG_DIR%\lib
252 COPY sqlite3.h %DEPPKG_DIR%\include
255 ECHO Unable to download sqlite source from %URL_SQLITE%
259 CALL :get_source %URL_WX% %DIR_WX% %MKD_WX%
260 IF ERRORLEVEL 2 GOTO :wx_error
261 REM IF ERRORLEVEL 1 GOTO :wx_skip_patch
262 REM ECHO Patching wxWidgets
263 REM COPY /Y nul patch.log
264 REM do_patch wx1.patch -o build/msw/config.mingw32
265 REM do_patch wx2.patch
266 REM find . -name makefile.gcc -exec sh -c "sed -f %SCRIPT_DIR%/patches/wx.sed {% > \`ECHO {% | sed s/\.gcc$/\.mingw32/\`" \;
267 ECHO Building wxWidgets
270 CALL :do_nmake makefile.vc BUILD=release SHARED=1 VENDOR=bacula DEBUG_INFO=1 CPPFLAGS=-D_USE_32BIT_TIME_T
271 ECHO Installing wxWidgets
273 IF EXIST ..\..\include\wx\nul RD /s /q ..\..\include\wx
274 XCOPY include\wx ..\..\include\wx\ 2>&1
275 XCOPY include\wx\generic ..\..\include\wx\generic\ /e 2>&1
276 XCOPY include\wx\msw ..\..\include\wx\msw\ /e 2>&1
277 XCOPY lib\vc_dll\*.dll ..\..\bin\ /y
278 IF EXIST ..\..\lib\wx_dll\nul RD /s /q ..\..\lib\wx_dll
279 XCOPY lib\vc_dll\*.lib ..\..\lib\wx_dll\
280 XCOPY lib\vc_dll\msw ..\..\lib\wx_dll\msw\ /e 2>&1
283 ECHO Unable to download wxWidgets source from %URL_MTX%
287 CALL :get_source %URL_NSIS_BIN% %DIR_NSIS_BIN% %MKD_NSIS_BIN%
289 IF EXIST ..\nsis\nul RD /s /q ..\nsis
290 MOVE nsis-2.17 ..\nsis
294 CALL :get_source %URL_MTX% %DIR_MTX% %MKD_MTX%
295 IF ERRORLEVEL 2 GOTO :mtx_error
296 IF ERRORLEVEL 1 GOTO :mtx_skip_patch
298 COPY /Y config.h.in config.h
299 COPY /Y Makefile.in Makefile
300 COPY /Y nul patch.log
301 CALL :do_patch mtx.patch
302 CALL :do_patch mtx-msvc1.patch
303 CALL :do_patch mtx-msvc2.patch
306 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% all
308 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% install
311 ECHO Unable to download mtx source from %URL_MTX%
315 CALL :get_source %URL_MT% %DIR_MT% %MKD_MT%
316 IF ERRORLEVEL 2 GOTO :mt_error
317 IF ERRORLEVEL 1 GOTO :mt_skip_patch
319 COPY /Y nul patch.log
320 CALL :do_patch mt.patch
323 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% all
325 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% install
328 ECHO Unable to download mt source from %URL_MT%
332 CALL :get_source %URL_SED% %DIR_SED% %MKD_SED%
333 IF ERRORLEVEL 2 GOTO :sed_error
334 IF ERRORLEVEL 1 GOTO :sed_skip_patch
336 COPY /Y nul patch.log
337 CALL :do_patch sed_msc.patch
340 CALL :do_nmake Makefile.msc all
342 CALL :do_nmake Makefile.msc install
345 ECHO Unable to download sed source from %URL_MT%
349 CALL :get_source %URL_CMD_UTILS% %DIR_CMD_UTILS% %MKD_CMD_UTILS%
350 IF ERRORLEVEL 2 GOTO :cmd_utils_error
351 IF ERRORLEVEL 1 GOTO :cmd_utils_skip_patch
352 REM ECHO Patching cmd-utils
353 REM COPY /Y nul patch.log
354 REM CALL :do_patch cmd_utils_msc.patch
355 :cmd_utils_skip_patch
356 ECHO Building cmd-utils
357 vcbuild /nologo cmd-utils.sln "Release|WIN32" 2>&1 | tee -a make.log | sed -nf "%DEPPKG_DIR%\src\parse_output.sed"
358 IF ERRORLEVEL 1 GOTO :cmd_utils_build_error
359 ECHO Installing cmd-utils
360 XCOPY Release\*.exe %DEPPKG_DIR%\bin
362 :cmd_utils_build_error
363 ECHO Make failed - Check %CD%\make.log > con
366 ECHO Unable to download cmd-utils source from %URL_MT%
370 CALL :get_source %URL_MKISOFS% %DIR_MKISOFS% %MKD_MKISOFS%
371 IF ERRORLEVEL 2 GOTO :mkisofs_error
372 ECHO Installing mkisofs
373 FOR %%i IN ( %URL_MKISOFS% ) DO XCOPY %DEPPKG_DIR%\src\%%~nxi %DEPPKG_DIR%\bin /Y /Q >nul 2>&1
376 ECHO Unable to download mkisofs source from %URL_MKISOFS%
379 :process_dvd_rw_tools
380 CALL :get_source %URL_DVD_RW_TOOLS% %DIR_DVD_RW_TOOLS% %MKD_DVD_RW_TOOLS%
381 IF ERRORLEVEL 2 GOTO :dvd_rw_tools_error
382 IF ERRORLEVEL 1 GOTO :dvd_rw_tools_skip_patch
383 ECHO Patching dvd+rw-tools
384 COPY /Y nul patch.log
385 CALL :do_patch dvd+rw-tools.patch
386 :dvd_rw_tools_skip_patch
387 ECHO Building dvd+rw-tools
388 IF NOT EXIST Release\nul MKDIR Release
389 CALL :do_nmake Makefile.msc dvd+rw-tools
390 ECHO Installing dvd+rw-tools
391 CALL :do_nmake Makefile.msc prefix=%DEPPKG_DIR% install
394 ECHO Unable to download dvd+rw-tools source from %URL_DVD_RW_TOOLS%
398 SET PATCH_FILE=%SCRIPT_DIR%\patches\%1
400 patch -f -p0 %2 %3 %4 %5 %6 %7 %8 %9 >>patch.log < %PATCH_FILE%
401 IF NOT ERRORLEVEL 1 EXIT/B 0
402 ECHO Patch failed - Check %CD%\patch.log > con
406 nmake /nologo -f %* 2>&1 | tee -a make.log | sed -nf "%DEPPKG_DIR%\src\parse_output.sed"
407 IF NOT ERRORLEVEL 1 EXIT /B 0
408 ECHO Make failed - Check %CD%\make.log > con
412 #Need to download from Microsoft