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
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
68 REM CALL :process_sqlite
69 CALL :process_postgreSQL
71 REM CALL :process_scons
88 SET MAKE_SRC_ENABLE=%3
91 IF NOT "%SRC_DIR%"=="" GOTO :get_source_make_src
92 FOR %%I IN ( %URL% ) DO (SET BASENAME=%%~nI & IF NOT "%%~xI"==".gz" IF NOT "%%~xI"==".bz2" SET SRC_DIR=%%~nI)
93 IF "%SRC_DIR%"=="" FOR %%I IN ( %BASENAME% ) DO SET SRC_DIR=%%~nI
97 IF /I "%MAKE_SRC_ENABLE:~0,1%"=="y" SET MAKE_SRC_DIR=true
98 IF /I "%MAKE_SRC_ENABLE:~0,1%"=="t" SET MAKE_SRC_DIR=true
99 IF /I "%MAKE_SRC_ENABLE:~0,1%"=="1" SET MAKE_SRC_DIR=true
101 FOR %%I IN ( %URL% ) DO SET ARCHIVE=%%~nxI
105 IF EXIST %ARCHIVE% GOTO :get_source_check_srcdir
106 ECHO Downloading %URL%
107 wget -nv --passive-ftp "%URL%"
108 IF NOT ERRORLEVEL 1 GOTO :get_source_extract
109 ECHO Unable to download %ARCHIVE%
112 :get_source_check_srcdir
113 IF NOT EXIST %SRC_DIR%\nul GOTO :get_source_extract
114 IF NOT "%CLOBBER_SOURCE%"=="true" GOTO :get_source_skipped
115 IF EXIST "%SRC_DIR%\nul" RD /s /q "%SRC_DIR%"
118 FOR %%I IN ( "%ARCHIVE%" ) do IF "%%~xI"==".gz" SET TAR_ARCHIVE=%%~nI
119 FOR %%I IN ( "%ARCHIVE%" ) do IF "%%~xI"==".bz2" SET TAR_ARCHIVE=%%~nI
122 IF DEFINED MAKE_SRC_DIR IF NOT EXIST "%SRC_DIR%\nul" MKDIR %SRC_DIR%
123 IF DEFINED MAKE_SRC_DIR SET TARGET_DIR=%SRC_DIR%
125 ECHO Extracting %ARCHIVE%
126 7z x -bd -y -o"%TARGET_DIR%" "%ARCHIVE%" 2>&1 > "%ARCHIVE%.log"
127 IF ERRORLEVEL 1 EXIT /B 2
128 IF NOT DEFINED TAR_ARCHIVE GOTO :get_source_done
129 ECHO Extracting %TAR_ARCHIVE%
130 7z x -bd -y -o"%TARGET_DIR%" "%TARGET_DIR%\%TAR_ARCHIVE%" & del /q "%TAR_ARCHIVE%" 2>&1 >> "%ARCHIVE%.log"
141 CALL :get_source %URL_ZLIB% %DIR_ZLIB% %MKD_ZLIB%
144 REM XCOPY contrib\masmx86\gvmat32.asm . /Y
145 REM XCOPY contrib\masmx86\gvmat32c.c . /Y
146 REM XCOPY contrib\masmx86\inffas32.asm . /Y
147 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
148 CALL :do_nmake win32\Makefile.msc LOC="-D_CRT_SECURE_NO_DEPRECATE" all
150 XCOPY zlib1.dll.manifest %DEPPKG_DIR%\bin\ /Y
151 XCOPY zlib1.dll %DEPPKG_DIR%\bin\ /Y
152 XCOPY zlib.lib %DEPPKG_DIR%\lib\ /Y
153 XCOPY zdll.lib %DEPPKG_DIR%\lib\ /Y
154 XCOPY zlib.h %DEPPKG_DIR%\include\ /Y
155 XCOPY zconf.h %DEPPKG_DIR%\include\ /Y
159 CALL :get_source %URL_PCRE% %DIR_PCRE% %MKD_PCRE%
160 REM ECHO Patching PCRE
161 REM COPY /Y nul patch.log
162 REM do_patch pcre.patch
163 ECHO Configuring PCRE
164 ./configure CC_FOR_BUILD=gcc CXX_FOR_BUILD=g++ --host=mingw32 --prefix=%DEPPKG_DIR% --enable-utf8 --enable-unicode-properties 2>&1 > make.log
166 do_make Makefile PREFIX=%DEPPKG_DIR% all
168 do_make Makefile PREFIX=%DEPPKG_DIR% install
172 CALL :get_source %URL_PTHREADS% %DIR_PTHREADS% %MKD_PTHREADS%
173 ECHO Installing pthreads
174 XCOPY Pre-built\include\*.h %DEPPKG_DIR%\include\ /Y
175 XCOPY Pre-built\lib\pthreadVCE.lib %DEPPKG_DIR%\lib\ /Y
176 XCOPY Pre-built\lib\pthreadVCE.dll %DEPPKG_DIR%\bin\ /Y
180 CALL :get_source %URL_OPENSSL% %DIR_OPENSSL% %MKD_OPENSSL%
181 IF ERRORLEVEL 2 GOTO :OpenSSLError
182 ECHO Configuring openssl
183 perl Configure VC-WIN32 --prefix=%DEPPKG_DIR:\=/% > make.log
184 ECHO Building openssl
187 CALL :do_nmake ms\ntdll.mak
189 ECHO Installing openssl
190 CALL :do_nmake ms\ntdll.mak install
193 ECHO Unable to download OpenSSL source from %URL_OPENSSL%
197 CALL :get_source %URL_MYSQL% %DIR_MYSQL% %MKD_MYSQL%
198 ECHO Installing mysql
199 IF EXIST ..\..\include\mysql\nul RD /s /q ..\..\include\mysql
200 XCOPY include\* ..\..\include\mysql\ /e/h/k/y 2>&1
201 XCOPY lib\opt\libmysql.lib ..\..\lib\ /y
202 XCOPY lib\opt\libmysql.dll ..\..\bin\ /y
206 CALL :get_source %URL_POSTGRESQL% %DIR_POSTGRESQL% %MKD_POSTGRESQL%
207 IF ERRORLEVEL 2 GOTO :pstgreSQL_Error1
208 CALL :get_source %URL_POSTGRESQL_SRC% %DIR_POSTGRESQL_SRC% %MKD_POSTGRESQL_SRC%
209 IF ERRORLEVEL 2 GOTO :pstgreSQL_Error2
210 REM ECHO Patching postgreSQL
211 REM COPY /Y nul patch.log
212 REM do_patch postgresql.patch
213 ECHO Installing postgreSQL
214 XCOPY ..\pgsql\include\libpq-fe.h ..\..\include\ /Y 2>&1
215 XCOPY ..\pgsql\include\postgres_ext.h ..\..\include\ /Y 2>&1
216 LIB /def:src\interfaces\libpq\libpqdll.def /out:..\..\lib\libpqdll.lib /machine:x86 /subsystem:console
217 XCOPY ..\pgsql\lib\libpq.dll ..\..\bin\ /Y
218 XCOPY ..\pgsql\lib\comerr32.dll ..\..\bin\ /Y
219 XCOPY ..\pgsql\lib\krb5_32.dll ..\..\bin\ /Y
220 XCOPY ..\pgsql\lib\libintl-2.dll ..\..\bin\ /Y
221 XCOPY ..\pgsql\lib\libiconv-2.dll ..\..\bin\ /Y
224 ECHO Unable to download postgreSQL binaries from %URL_POSTGRESQL%
227 ECHO Unable to download postgreSQL source from %URL_POSTGRESQL_SRC%
231 CALL :get_source %URL_SQLITE% %DIR_SQLITE% %MKD_SQLITE%
232 CALL :get_source %URL_SQLITE_WINSRC% %DIR_SQLITE_WINSRC% %MKD_SQLITE_WINSRC%
233 REM ECHO Patching SQLite
234 REM COPY /Y nul patch.log
235 REM do_patch sqlite.patch
236 ECHO Configuring SQLite
237 IF NOT EXIST bld/nul MKDIR bld
241 do_make ../Makefile.mingw32 CROSSTOOLS=%BIN_DIR% TLIBS="-L%DEPPKG_DIR%/lib" TCL_FLAGS="-I%DEPPKG_DIR%/include" clean all
242 ECHO Installing SQLite
243 cp -p sqlite3.exe %DEPPKG_DIR%/bin
244 cp -p libsqlite3.a %DEPPKG_DIR%/lib
245 cp -p sqlite3.h %DEPPKG_DIR%/include
249 CALL :get_source %URL_WX% %DIR_WX% %MKD_WX%
250 IF ERRORLEVEL 2 GOTO :wx_error
251 REM IF ERRORLEVEL 1 GOTO :wx_skip_patch
252 REM ECHO Patching wxWidgets
253 REM COPY /Y nul patch.log
254 REM do_patch wx1.patch -o build/msw/config.mingw32
255 REM do_patch wx2.patch
256 REM find . -name makefile.gcc -exec sh -c "sed -f %SCRIPT_DIR%/patches/wx.sed {% > \`ECHO {% | sed s/\.gcc$/\.mingw32/\`" \;
257 ECHO Building wxWidgets
260 CALL :do_nmake makefile.vc BUILD=release SHARED=1 VENDOR=bacula DEBUG_INFO=1 CPPFLAGS=-D_USE_32BIT_TIME_T
261 ECHO Installing wxWidgets
263 IF EXIST ..\..\include\wx\nul RD /s /q ..\..\include\wx
264 XCOPY include\wx ..\..\include\wx\ 2>&1
265 XCOPY include\wx\generic ..\..\include\wx\generic\ /e 2>&1
266 XCOPY include\wx\msw ..\..\include\wx\msw\ /e 2>&1
267 XCOPY lib\vc_dll\*.dll ..\..\bin\ /y
268 IF EXIST ..\..\lib\wx_dll\nul RD /s /q ..\..\lib\wx_dll
269 XCOPY lib\vc_dll\*.lib ..\..\lib\wx_dll\
270 XCOPY lib\vc_dll\msw ..\..\lib\wx_dll\msw\ /e 2>&1
273 ECHO Unable to download wxWidgets source from %URL_MTX%
277 CALL :get_source %URL_NSIS_BIN% %DIR_NSIS_BIN% %MKD_NSIS_BIN%
279 IF EXIST ..\nsis\nul RD /s /q ..\nsis
280 MOVE nsis-2.17 ..\nsis
284 CALL :get_source %URL_MTX% %DIR_MTX% %MKD_MTX%
285 IF ERRORLEVEL 2 GOTO :mtx_error
286 IF ERRORLEVEL 1 GOTO :mtx_skip_patch
288 COPY /Y config.h.in config.h
289 COPY /Y Makefile.in Makefile
290 COPY /Y nul patch.log
291 CALL :do_patch mtx.patch
292 CALL :do_patch mtx-msvc1.patch
293 CALL :do_patch mtx-msvc2.patch
296 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% all
298 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% install
301 ECHO Unable to download mtx source from %URL_MTX%
305 CALL :get_source %URL_MT% %DIR_MT% %MKD_MT%
306 IF ERRORLEVEL 2 GOTO :mt_error
307 IF ERRORLEVEL 1 GOTO :mt_skip_patch
309 COPY /Y nul patch.log
310 CALL :do_patch mt.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 mt source from %URL_MT%
322 CALL :get_source %URL_SED% %DIR_SED% %MKD_SED%
323 IF ERRORLEVEL 2 GOTO :sed_error
324 IF ERRORLEVEL 1 GOTO :sed_skip_patch
326 COPY /Y nul patch.log
327 CALL :do_patch sed_msc.patch
330 CALL :do_nmake Makefile.msc all
332 CALL :do_nmake Makefile.msc install
335 ECHO Unable to download sed source from %URL_MT%
339 SET PATCH_FILE=%SCRIPT_DIR%\patches\%1
341 patch -f -p0 %2 %3 %4 %5 %6 %7 %8 %9 >>patch.log < %PATCH_FILE%
342 IF NOT ERRORLEVEL 1 EXIT/B 0
343 ECHO Patch failed - Check %CD%\patch.log > con
347 nmake /nologo -f %* 2>&1 | tee -a make.log | sed -nf "%DEPPKG_DIR%\src\parse_output.sed"
348 IF NOT ERRORLEVEL 1 EXIT/B 0
349 ECHO Make failed - Check %CD%\make.log > con
353 #Need to download from Microsoft