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
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 IF ERRORLEVEL 2 GOTO :sqlite_error
233 IF ERRORLEVEL 1 GOTO :sqlite_skip_patch
235 COPY /Y nul patch.log
236 CALL :do_patch sqlite_msc.patch
238 ECHO Configuring SQLite
239 IF NOT EXIST bld/nul MKDIR bld
243 CALL :do_nmake ../Makefile.msvc clean all
244 ECHO Installing SQLite
245 COPY sqlite3.exe %DEPPKG_DIR%\bin
246 COPY sqlite3.lib %DEPPKG_DIR%\lib
247 COPY sqlite3.h %DEPPKG_DIR%\include
250 ECHO Unable to download sqlite source from %URL_SQLITE%
254 CALL :get_source %URL_WX% %DIR_WX% %MKD_WX%
255 IF ERRORLEVEL 2 GOTO :wx_error
256 REM IF ERRORLEVEL 1 GOTO :wx_skip_patch
257 REM ECHO Patching wxWidgets
258 REM COPY /Y nul patch.log
259 REM do_patch wx1.patch -o build/msw/config.mingw32
260 REM do_patch wx2.patch
261 REM find . -name makefile.gcc -exec sh -c "sed -f %SCRIPT_DIR%/patches/wx.sed {% > \`ECHO {% | sed s/\.gcc$/\.mingw32/\`" \;
262 ECHO Building wxWidgets
265 CALL :do_nmake makefile.vc BUILD=release SHARED=1 VENDOR=bacula DEBUG_INFO=1 CPPFLAGS=-D_USE_32BIT_TIME_T
266 ECHO Installing wxWidgets
268 IF EXIST ..\..\include\wx\nul RD /s /q ..\..\include\wx
269 XCOPY include\wx ..\..\include\wx\ 2>&1
270 XCOPY include\wx\generic ..\..\include\wx\generic\ /e 2>&1
271 XCOPY include\wx\msw ..\..\include\wx\msw\ /e 2>&1
272 XCOPY lib\vc_dll\*.dll ..\..\bin\ /y
273 IF EXIST ..\..\lib\wx_dll\nul RD /s /q ..\..\lib\wx_dll
274 XCOPY lib\vc_dll\*.lib ..\..\lib\wx_dll\
275 XCOPY lib\vc_dll\msw ..\..\lib\wx_dll\msw\ /e 2>&1
278 ECHO Unable to download wxWidgets source from %URL_MTX%
282 CALL :get_source %URL_NSIS_BIN% %DIR_NSIS_BIN% %MKD_NSIS_BIN%
284 IF EXIST ..\nsis\nul RD /s /q ..\nsis
285 MOVE nsis-2.17 ..\nsis
289 CALL :get_source %URL_MTX% %DIR_MTX% %MKD_MTX%
290 IF ERRORLEVEL 2 GOTO :mtx_error
291 IF ERRORLEVEL 1 GOTO :mtx_skip_patch
293 COPY /Y config.h.in config.h
294 COPY /Y Makefile.in Makefile
295 COPY /Y nul patch.log
296 CALL :do_patch mtx.patch
297 CALL :do_patch mtx-msvc1.patch
298 CALL :do_patch mtx-msvc2.patch
301 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% all
303 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% install
306 ECHO Unable to download mtx source from %URL_MTX%
310 CALL :get_source %URL_MT% %DIR_MT% %MKD_MT%
311 IF ERRORLEVEL 2 GOTO :mt_error
312 IF ERRORLEVEL 1 GOTO :mt_skip_patch
314 COPY /Y nul patch.log
315 CALL :do_patch mt.patch
318 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% all
320 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% install
323 ECHO Unable to download mt source from %URL_MT%
327 CALL :get_source %URL_SED% %DIR_SED% %MKD_SED%
328 IF ERRORLEVEL 2 GOTO :sed_error
329 IF ERRORLEVEL 1 GOTO :sed_skip_patch
331 COPY /Y nul patch.log
332 CALL :do_patch sed_msc.patch
335 CALL :do_nmake Makefile.msc all
337 CALL :do_nmake Makefile.msc install
340 ECHO Unable to download sed source from %URL_MT%
344 SET PATCH_FILE=%SCRIPT_DIR%\patches\%1
346 patch -f -p0 %2 %3 %4 %5 %6 %7 %8 %9 >>patch.log < %PATCH_FILE%
347 IF NOT ERRORLEVEL 1 EXIT/B 0
348 ECHO Patch failed - Check %CD%\patch.log > con
352 nmake /nologo -f %* 2>&1 | tee -a make.log | sed -nf "%DEPPKG_DIR%\src\parse_output.sed"
353 IF NOT ERRORLEVEL 1 EXIT/B 0
354 ECHO Make failed - Check %CD%\make.log > con
358 #Need to download from Microsoft