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!
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 cd %TOP_DIR%/depkgs-msvc
29 IF /I "%CLOBBER_SOURCE:~0,1%"=="y" SET CLOBBER_SOURCE=true
30 IF /I "%CLOBBER_SOURCE:~0,1%"=="t" SET CLOBBER_SOURCE=true
31 IF /I "%CLOBBER_SOURCE:~0,1%"=="1" SET CLOBBER_SOURCE=true
33 SET PATH=%DEPPKG_DIR%\tools;%PATH%
34 SET INCLUDE=%INCLUDE%;%DEPPKG_DIR%\include
35 SET LIB=%LIB%;%DEPPKG_DIR%\lib
37 IF NOT EXIST bin\nul MKDIR bin
38 IF NOT EXIST src\nul MKDIR src
39 IF NOT EXIST include\nul MKDIR include
40 IF NOT EXIST lib\nul MKDIR lib
44 COPY NUL parse_output.sed
45 REM ECHO /\\$/N >>parse_output.sed
46 REM ECHO s/\\\n// >>parse_output.sed
47 ECHO s/\t\+/ /g >>parse_output.sed
48 ECHO s/ \+/ /g >>parse_output.sed
49 ECHO / [Ee]rror: /p >>parse_output.sed
50 REM ECHO s;.*Entering directory[ ]\+.%DEPPKG_DIR%/\([^^ ]\+\).;Entering \1;p >>parse_output.sed
51 REM ECHO s;.*Leaving directory[ ]\+.%DEPPKG_DIR%/\([^^ ]\+.\).;Leaving \1;p >>parse_output.sed
52 ECHO /[Cc][Ll] \^|[Ll][Ii][Nn][Kk] \^|[Ll][Ii][Bb] /!d >>parse_output.sed
53 ECHO s; \(\.\.\\\)\+; ;g >>parse_output.sed
54 ECHO s; \.\\; ;g >>parse_output.sed
55 ECHO s/.* \([^^ ]\+\(\.[Cc]\^|\.[Cc][Pp][Pp]\^|\.[Cc][Cc]\^|\.[Cc][Xx][Xx]\)\)\( .*\^|\)$/Compiling \1/p >>parse_output.sed
56 ECHO s/.* \([^^ ]\+\.[Aa][Ss][Mm]\)\( .*\^|\)$/Assembling \1/p >>parse_output.sed
57 ECHO s/.* \/[Oo][Uu][Tt]:\(\.\\\)*\(\.\.\\\)*\([^^ ]\+\)\( .*\^|\)$/Linking \3/p >>parse_output.sed
58 REM ECHO s/.*[Ll][Ii][Bb] [^^ ]\+ \([^^ ]\+\)\(\( [^^ ]\+\.o\)\+\)/Updating \1 -\2/p >>parse_output.sed
60 IF NOT "%1"=="" GOTO :ProcessArgs
62 REM CALL :process_pcre
63 CALL :process_pthreads
66 REM CALL :process_sqlite
67 CALL :process_postgreSQL
69 REM CALL :process_scons
86 SET MAKE_SRC_ENABLE=%3
89 IF NOT "%SRC_DIR%"=="" GOTO :get_source_make_src
90 FOR %%I IN ( %URL% ) DO (SET BASENAME=%%~nI & IF NOT "%%~xI"==".gz" IF NOT "%%~xI"==".bz2" SET SRC_DIR=%%~nI)
91 IF "%SRC_DIR%"=="" FOR %%I IN ( %BASENAME% ) DO SET SRC_DIR=%%~nI
95 IF /I "%MAKE_SRC_ENABLE:~0,1%"=="y" SET MAKE_SRC_DIR=true
96 IF /I "%MAKE_SRC_ENABLE:~0,1%"=="t" SET MAKE_SRC_DIR=true
97 IF /I "%MAKE_SRC_ENABLE:~0,1%"=="1" SET MAKE_SRC_DIR=true
99 FOR %%I IN ( %URL% ) DO SET ARCHIVE=%%~nxI
103 IF EXIST %ARCHIVE% GOTO :get_source_check_srcdir
104 ECHO Downloading %URL%
105 wget -nv --passive-ftp "%URL%"
106 IF NOT ERRORLEVEL 1 GOTO :get_source_extract
107 ECHO Unable to download %ARCHIVE%
110 :get_source_check_srcdir
111 IF NOT EXIST %SRC_DIR%\nul GOTO :get_source_extract
112 IF NOT "%CLOBBER_SOURCE%"=="true" GOTO :get_source_skipped
113 IF EXIST "%SRC_DIR%\nul" RD /s /q "%SRC_DIR%"
116 FOR %%I IN ( "%ARCHIVE%" ) do IF "%%~xI"==".gz" SET TAR_ARCHIVE=%%~nI
117 FOR %%I IN ( "%ARCHIVE%" ) do IF "%%~xI"==".bz2" SET TAR_ARCHIVE=%%~nI
120 IF DEFINED MAKE_SRC_DIR IF NOT EXIST "%SRC_DIR%\nul" MKDIR %SRC_DIR%
121 IF DEFINED MAKE_SRC_DIR SET TARGET_DIR=%SRC_DIR%
123 ECHO Extracting %ARCHIVE%
124 7z x -bd -y -o"%TARGET_DIR%" "%ARCHIVE%" 2>&1 > "%ARCHIVE%.log"
125 IF ERRORLEVEL 1 EXIT /B 2
126 IF NOT DEFINED TAR_ARCHIVE GOTO :get_source_done
127 ECHO Extracting %TAR_ARCHIVE%
128 7z x -bd -y -o"%TARGET_DIR%" "%TARGET_DIR%\%TAR_ARCHIVE%" & del /q "%TAR_ARCHIVE%" 2>&1 >> "%ARCHIVE%.log"
139 CALL :get_source %URL_ZLIB% %DIR_ZLIB% %MKD_ZLIB%
142 REM XCOPY contrib\masmx86\gvmat32.asm . /Y
143 REM XCOPY contrib\masmx86\gvmat32c.c . /Y
144 REM XCOPY contrib\masmx86\inffas32.asm . /Y
145 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
146 CALL :do_nmake win32\Makefile.msc LOC="-D_CRT_SECURE_NO_DEPRECATE" all
148 XCOPY zlib1.dll.manifest %DEPPKG_DIR%\bin\ /Y
149 XCOPY zlib1.dll %DEPPKG_DIR%\bin\ /Y
150 XCOPY zlib.lib %DEPPKG_DIR%\lib\ /Y
151 XCOPY zdll.lib %DEPPKG_DIR%\lib\ /Y
152 XCOPY zlib.h %DEPPKG_DIR%\include\ /Y
153 XCOPY zconf.h %DEPPKG_DIR%\include\ /Y
157 CALL :get_source %URL_PCRE% %DIR_PCRE% %MKD_PCRE%
158 REM ECHO Patching PCRE
159 REM COPY /Y nul patch.log
160 REM do_patch pcre.patch
161 ECHO Configuring PCRE
162 ./configure CC_FOR_BUILD=gcc CXX_FOR_BUILD=g++ --host=mingw32 --prefix=%DEPPKG_DIR% --enable-utf8 --enable-unicode-properties 2>&1 > make.log
164 do_make Makefile PREFIX=%DEPPKG_DIR% all
166 do_make Makefile PREFIX=%DEPPKG_DIR% install
170 CALL :get_source %URL_PTHREADS% %DIR_PTHREADS% %MKD_PTHREADS%
171 ECHO Installing pthreads
172 XCOPY Pre-built\include\*.h %DEPPKG_DIR%\include\ /Y
173 XCOPY Pre-built\lib\pthreadVCE.lib %DEPPKG_DIR%\lib\ /Y
174 XCOPY Pre-built\lib\pthreadVCE.dll %DEPPKG_DIR%\bin\ /Y
178 CALL :get_source %URL_OPENSSL% %DIR_OPENSSL% %MKD_OPENSSL%
179 IF ERRORLEVEL 2 GOTO :OpenSSLError
180 ECHO Configuring openssl
181 perl Configure VC-WIN32 --prefix=%DEPPKG_DIR:\=/% > make.log
182 ECHO Building openssl
185 CALL :do_nmake ms\ntdll.mak
187 ECHO Installing openssl
188 CALL :do_nmake ms\ntdll.mak install
191 ECHO Unable to download OpenSSL source from %URL_OPENSSL%
195 CALL :get_source %URL_MYSQL% %DIR_MYSQL% %MKD_MYSQL%
196 ECHO Installing mysql
197 IF EXIST ..\..\include\mysql\nul RD /s /q ..\..\include\mysql
198 XCOPY include\* ..\..\include\mysql\ /e/h/k/y 2>&1
199 XCOPY lib\opt\libmysql.lib ..\..\lib\ /y
200 XCOPY lib\opt\libmysql.dll ..\..\bin\ /y
204 CALL :get_source %URL_POSTGRESQL% %DIR_POSTGRESQL% %MKD_POSTGRESQL%
205 IF ERRORLEVEL 2 GOTO :pstgreSQL_Error1
206 CALL :get_source %URL_POSTGRESQL_SRC% %DIR_POSTGRESQL_SRC% %MKD_POSTGRESQL_SRC%
207 IF ERRORLEVEL 2 GOTO :pstgreSQL_Error2
208 REM ECHO Patching postgreSQL
209 REM COPY /Y nul patch.log
210 REM do_patch postgresql.patch
211 ECHO Installing postgreSQL
212 XCOPY ..\pgsql\include\libpq-fe.h ..\..\include\ /Y 2>&1
213 XCOPY ..\pgsql\include\postgres_ext.h ..\..\include\ /Y 2>&1
214 LIB /def:src\interfaces\libpq\libpqdll.def /out:..\..\lib\libpqdll.lib /machine:x86 /subsystem:console
215 XCOPY ..\pgsql\lib\libpq.dll ..\..\bin\ /Y
216 XCOPY ..\pgsql\lib\comerr32.dll ..\..\bin\ /Y
217 XCOPY ..\pgsql\lib\krb5_32.dll ..\..\bin\ /Y
218 XCOPY ..\pgsql\lib\libintl-2.dll ..\..\bin\ /Y
219 XCOPY ..\pgsql\lib\libiconv-2.dll ..\..\bin\ /Y
222 ECHO Unable to download postgreSQL binaries from %URL_POSTGRESQL%
225 ECHO Unable to download postgreSQL source from %URL_POSTGRESQL_SRC%
229 CALL :get_source %URL_SQLITE% %DIR_SQLITE% %MKD_SQLITE%
230 CALL :get_source %URL_SQLITE_WINSRC% %DIR_SQLITE_WINSRC% %MKD_SQLITE_WINSRC%
231 REM ECHO Patching SQLite
232 REM COPY /Y nul patch.log
233 REM do_patch sqlite.patch
234 ECHO Configuring SQLite
235 IF NOT EXIST bld/nul MKDIR bld
239 do_make ../Makefile.mingw32 CROSSTOOLS=%BIN_DIR% TLIBS="-L%DEPPKG_DIR%/lib" TCL_FLAGS="-I%DEPPKG_DIR%/include" clean all
240 ECHO Installing SQLite
241 cp -p sqlite3.exe %DEPPKG_DIR%/bin
242 cp -p libsqlite3.a %DEPPKG_DIR%/lib
243 cp -p sqlite3.h %DEPPKG_DIR%/include
247 CALL :get_source %URL_WX% %DIR_WX% %MKD_WX%
248 IF ERRORLEVEL 2 GOTO :wx_error
249 REM IF ERRORLEVEL 1 GOTO :wx_skip_patch
250 REM ECHO Patching wxWidgets
251 REM COPY /Y nul patch.log
252 REM do_patch wx1.patch -o build/msw/config.mingw32
253 REM do_patch wx2.patch
254 REM find . -name makefile.gcc -exec sh -c "sed -f %SCRIPT_DIR%/patches/wx.sed {% > \`ECHO {% | sed s/\.gcc$/\.mingw32/\`" \;
255 ECHO Building wxWidgets
258 CALL :do_nmake makefile.vc BUILD=release SHARED=1 VENDOR=bacula DEBUG_INFO=1 CPPFLAGS=-D_USE_32BIT_TIME_T
259 ECHO Installing wxWidgets
261 IF EXIST ..\..\include\wx\nul RD /s /q ..\..\include\wx
262 XCOPY include\wx ..\..\include\wx\ 2>&1
263 XCOPY include\wx\generic ..\..\include\wx\generic\ /e 2>&1
264 XCOPY include\wx\msw ..\..\include\wx\msw\ /e 2>&1
265 XCOPY lib\vc_dll\*.dll ..\..\bin\ /y
266 IF EXIST ..\..\lib\wx_dll\nul RD /s /q ..\..\lib\wx_dll
267 XCOPY lib\vc_dll\*.lib ..\..\lib\wx_dll\
268 XCOPY lib\vc_dll\msw ..\..\lib\wx_dll\msw\ /e 2>&1
271 ECHO Unable to download wxWidgets source from %URL_MTX%
275 CALL :get_source %URL_NSIS_BIN% %DIR_NSIS_BIN% %MKD_NSIS_BIN%
277 IF EXIST ..\nsis\nul RD /s /q ..\nsis
278 MOVE nsis-2.17 ..\nsis
282 CALL :get_source %URL_MTX% %DIR_MTX% %MKD_MTX%
283 IF ERRORLEVEL 2 GOTO :mtx_error
284 IF ERRORLEVEL 1 GOTO :mtx_skip_patch
286 COPY /Y config.h.in config.h
287 COPY /Y Makefile.in Makefile
288 COPY /Y nul patch.log
289 CALL :do_patch mtx.patch
290 CALL :do_patch mtx-msvc1.patch
291 CALL :do_patch mtx-msvc2.patch
294 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% all
296 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% install
299 ECHO Unable to download mtx source from %URL_MTX%
303 CALL :get_source %URL_MT% %DIR_MT% %MKD_MT%
304 IF ERRORLEVEL 2 GOTO :mt_error
305 IF ERRORLEVEL 1 GOTO :mt_skip_patch
307 COPY /Y nul patch.log
308 CALL :do_patch mt.patch
311 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% all
313 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% install
316 ECHO Unable to download mt source from %URL_MT%
320 CALL :get_source %URL_SED% %DIR_SED% %MKD_SED%
321 IF ERRORLEVEL 2 GOTO :sed_error
322 IF ERRORLEVEL 1 GOTO :sed_skip_patch
324 COPY /Y nul patch.log
325 CALL :do_patch sed_msc.patch
328 CALL :do_nmake Makefile.msc all
330 CALL :do_nmake Makefile.msc install
333 ECHO Unable to download sed source from %URL_MT%
337 SET PATCH_FILE=%SCRIPT_DIR%\patches\%1
339 patch -f -p0 %2 %3 %4 %5 %6 %7 %8 %9 >>patch.log < %PATCH_FILE%
340 IF NOT ERRORLEVEL 1 EXIT/B 0
341 ECHO Patch failed - Check %CD%\patch.log > con
345 nmake /nologo -f %* 2>&1 | tee -a make.log | sed -nf "%DEPPKG_DIR%\src\parse_output.sed"
346 IF NOT ERRORLEVEL 1 EXIT/B 0
347 ECHO Make failed - Check %CD%\make.log > con
351 #Need to download from Microsoft