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
85 SET MAKE_SRC_ENABLE=%3
88 IF NOT "%SRC_DIR%"=="" GOTO :get_source_make_src
89 FOR %%I IN ( %URL% ) DO (SET BASENAME=%%~nI & IF NOT "%%~xI"==".gz" IF NOT "%%~xI"==".bz2" SET SRC_DIR=%%~nI)
90 IF "%SRC_DIR%"=="" FOR %%I IN ( %BASENAME% ) DO SET SRC_DIR=%%~nI
94 IF /I "%MAKE_SRC_ENABLE:~0,1%"=="y" SET MAKE_SRC_DIR=true
95 IF /I "%MAKE_SRC_ENABLE:~0,1%"=="t" SET MAKE_SRC_DIR=true
96 IF /I "%MAKE_SRC_ENABLE:~0,1%"=="1" SET MAKE_SRC_DIR=true
98 FOR %%I IN ( %URL% ) DO SET ARCHIVE=%%~nxI
102 IF EXIST %ARCHIVE% GOTO :get_source_check_srcdir
103 ECHO Downloading %URL%
104 wget -nv --passive-ftp "%URL%"
105 IF NOT ERRORLEVEL 1 GOTO :get_source_extract
106 ECHO Unable to download %ARCHIVE%
109 :get_source_check_srcdir
110 IF NOT EXIST %SRC_DIR%\nul GOTO :get_source_extract
111 IF NOT "%CLOBBER_SOURCE%"=="true" GOTO :get_source_skipped
112 IF EXIST "%SRC_DIR%\nul" RD /s /q "%SRC_DIR%"
115 FOR %%I IN ( "%ARCHIVE%" ) do IF "%%~xI"==".gz" SET TAR_ARCHIVE=%%~nI
116 FOR %%I IN ( "%ARCHIVE%" ) do IF "%%~xI"==".bz2" SET TAR_ARCHIVE=%%~nI
119 IF DEFINED MAKE_SRC_DIR IF NOT EXIST "%SRC_DIR%\nul" MKDIR %SRC_DIR%
120 IF DEFINED MAKE_SRC_DIR SET TARGET_DIR=%SRC_DIR%
122 ECHO Extracting %ARCHIVE%
123 7z x -bd -y -o"%TARGET_DIR%" "%ARCHIVE%" 2>&1 > "%ARCHIVE%.log"
124 IF ERRORLEVEL 1 EXIT /B 2
125 IF NOT DEFINED TAR_ARCHIVE GOTO :get_source_done
126 ECHO Extracting %TAR_ARCHIVE%
127 7z x -bd -y -o"%TARGET_DIR%" "%TARGET_DIR%\%TAR_ARCHIVE%" & del /q "%TAR_ARCHIVE%" 2>&1 >> "%ARCHIVE%.log"
138 CALL :get_source %URL_ZLIB% %DIR_ZLIB% %MKD_ZLIB%
141 REM XCOPY contrib\masmx86\gvmat32.asm . /Y
142 REM XCOPY contrib\masmx86\gvmat32c.c . /Y
143 REM XCOPY contrib\masmx86\inffas32.asm . /Y
144 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
145 CALL :do_nmake win32\Makefile.msc LOC="-D_CRT_SECURE_NO_DEPRECATE" all
147 XCOPY zlib1.dll.manifest %DEPPKG_DIR%\bin\ /Y
148 XCOPY zlib1.dll %DEPPKG_DIR%\bin\ /Y
149 XCOPY zlib.lib %DEPPKG_DIR%\lib\ /Y
150 XCOPY zdll.lib %DEPPKG_DIR%\lib\ /Y
151 XCOPY zlib.h %DEPPKG_DIR%\include\ /Y
152 XCOPY zconf.h %DEPPKG_DIR%\include\ /Y
156 CALL :get_source %URL_PCRE% %DIR_PCRE% %MKD_PCRE%
157 REM ECHO Patching PCRE
158 REM COPY /Y nul patch.log
159 REM do_patch pcre.patch
160 ECHO Configuring PCRE
161 ./configure CC_FOR_BUILD=gcc CXX_FOR_BUILD=g++ --host=mingw32 --prefix=%DEPPKG_DIR% --enable-utf8 --enable-unicode-properties 2>&1 > make.log
163 do_make Makefile PREFIX=%DEPPKG_DIR% all
165 do_make Makefile PREFIX=%DEPPKG_DIR% install
169 CALL :get_source %URL_PTHREADS% %DIR_PTHREADS% %MKD_PTHREADS%
170 ECHO Installing pthreads
171 XCOPY Pre-built\include\*.h %DEPPKG_DIR%\include\ /Y
172 XCOPY Pre-built\lib\pthreadVCE.lib %DEPPKG_DIR%\lib\ /Y
173 XCOPY Pre-built\lib\pthreadVCE.dll %DEPPKG_DIR%\bin\ /Y
177 CALL :get_source %URL_OPENSSL% %DIR_OPENSSL% %MKD_OPENSSL%
178 IF ERRORLEVEL 2 GOTO :OpenSSLError
179 ECHO Configuring openssl
180 perl Configure VC-WIN32 --prefix=%DEPPKG_DIR:\=/% > make.log
181 ECHO Building openssl
184 CALL :do_nmake ms\ntdll.mak
186 ECHO Installing openssl
187 CALL :do_nmake ms\ntdll.mak install
190 ECHO Unable to download OpenSSL source from %URL_OPENSSL%
194 CALL :get_source %URL_MYSQL% %DIR_MYSQL% %MKD_MYSQL%
195 ECHO Installing mysql
196 IF EXIST ..\..\include\mysql\nul RD /s /q ..\..\include\mysql
197 XCOPY include\* ..\..\include\mysql\ /e/h/k/y 2>&1
198 XCOPY lib\opt\libmysql.lib ..\..\lib\ /y
199 XCOPY lib\opt\libmysql.dll ..\..\bin\ /y
203 CALL :get_source %URL_POSTGRESQL% %DIR_POSTGRESQL% %MKD_POSTGRESQL%
204 IF ERRORLEVEL 2 GOTO :pstgreSQL_Error1
205 CALL :get_source %URL_POSTGRESQL_SRC% %DIR_POSTGRESQL_SRC% %MKD_POSTGRESQL_SRC%
206 IF ERRORLEVEL 2 GOTO :pstgreSQL_Error2
207 REM ECHO Patching postgreSQL
208 REM COPY /Y nul patch.log
209 REM do_patch postgresql.patch
210 ECHO Installing postgreSQL
211 XCOPY ..\pgsql\include\libpq-fe.h ..\..\include\ /Y 2>&1
212 XCOPY ..\pgsql\include\postgres_ext.h ..\..\include\ /Y 2>&1
213 LIB /def:src\interfaces\libpq\libpqdll.def /out:..\..\lib\libpqdll.lib /machine:x86 /subsystem:console
214 XCOPY ..\pgsql\lib\libpq.dll ..\..\bin\ /Y
215 XCOPY ..\pgsql\lib\comerr32.dll ..\..\bin\ /Y
216 XCOPY ..\pgsql\lib\krb5_32.dll ..\..\bin\ /Y
217 XCOPY ..\pgsql\lib\libintl-2.dll ..\..\bin\ /Y
218 XCOPY ..\pgsql\lib\libiconv-2.dll ..\..\bin\ /Y
221 ECHO Unable to download postgreSQL binaries from %URL_POSTGRESQL%
224 ECHO Unable to download postgreSQL source from %URL_POSTGRESQL_SRC%
228 CALL :get_source %URL_SQLITE% %DIR_SQLITE% %MKD_SQLITE%
229 CALL :get_source %URL_SQLITE_WINSRC% %DIR_SQLITE_WINSRC% %MKD_SQLITE_WINSRC%
230 REM ECHO Patching SQLite
231 REM COPY /Y nul patch.log
232 REM do_patch sqlite.patch
233 ECHO Configuring SQLite
234 IF NOT EXIST bld/nul MKDIR bld
238 do_make ../Makefile.mingw32 CROSSTOOLS=%BIN_DIR% TLIBS="-L%DEPPKG_DIR%/lib" TCL_FLAGS="-I%DEPPKG_DIR%/include" clean all
239 ECHO Installing SQLite
240 cp -p sqlite3.exe %DEPPKG_DIR%/bin
241 cp -p libsqlite3.a %DEPPKG_DIR%/lib
242 cp -p sqlite3.h %DEPPKG_DIR%/include
246 CALL :get_source %URL_WX% %DIR_WX% %MKD_WX%
247 IF ERRORLEVEL 2 GOTO :wx_error
248 REM IF ERRORLEVEL 1 GOTO :wx_skip_patch
249 REM ECHO Patching wxWidgets
250 REM COPY /Y nul patch.log
251 REM do_patch wx1.patch -o build/msw/config.mingw32
252 REM do_patch wx2.patch
253 REM find . -name makefile.gcc -exec sh -c "sed -f %SCRIPT_DIR%/patches/wx.sed {% > \`ECHO {% | sed s/\.gcc$/\.mingw32/\`" \;
254 ECHO Building wxWidgets
257 CALL :do_nmake makefile.vc BUILD=release SHARED=1 VENDOR=bacula DEBUG_INFO=1 CPPFLAGS=-D_USE_32BIT_TIME_T
258 ECHO Installing wxWidgets
260 IF EXIST ..\..\include\wx\nul RD /s /q ..\..\include\wx
261 XCOPY include\wx ..\..\include\wx\ 2>&1
262 XCOPY include\wx\generic ..\..\include\wx\generic\ /e 2>&1
263 XCOPY include\wx\msw ..\..\include\wx\msw\ /e 2>&1
264 XCOPY lib\vc_dll\*.dll ..\..\bin\ /y
265 IF EXIST ..\..\lib\wx_dll\nul RD /s /q ..\..\lib\wx_dll
266 XCOPY lib\vc_dll\*.lib ..\..\lib\wx_dll\
267 XCOPY lib\vc_dll\msw ..\..\lib\wx_dll\msw\ /e 2>&1
270 ECHO Unable to download wxWidgets source from %URL_MTX%
274 CALL :get_source %URL_NSIS_BIN% %DIR_NSIS_BIN% %MKD_NSIS_BIN%
276 IF EXIST ..\nsis\nul RD /s /q ..\nsis
277 MOVE nsis-2.17 ..\nsis
281 CALL :get_source %URL_MTX% %DIR_MTX% %MKD_MTX%
282 IF ERRORLEVEL 2 GOTO :mtx_error
283 IF ERRORLEVEL 1 GOTO :mtx_skip_patch
285 COPY /Y config.h.in config.h
286 COPY /Y Makefile.in Makefile
287 COPY /Y nul patch.log
288 CALL :do_patch mtx.patch
289 CALL :do_patch mtx-msvc1.patch
290 CALL :do_patch mtx-msvc2.patch
293 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% all
295 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% install
298 ECHO Unable to download mtx source from %URL_MTX%
302 CALL :get_source %URL_MT% %DIR_MT% %MKD_MT%
303 IF ERRORLEVEL 2 GOTO :mt_error
304 IF ERRORLEVEL 1 GOTO :mt_skip_patch
306 COPY /Y nul patch.log
307 CALL :do_patch mt.patch
310 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% all
312 CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% install
315 ECHO Unable to download mt source from %URL_MT%
319 SET PATCH_FILE=%SCRIPT_DIR%\patches\%1
321 patch -f -p0 %2 %3 %4 %5 %6 %7 %8 %9 >>patch.log < %PATCH_FILE%
322 IF NOT ERRORLEVEL 1 EXIT/B 0
323 ECHO Patch failed - Check %CD%\patch.log > con
327 nmake /nologo -f %* 2>&1 | tee -a make.log | sed -nf "%DEPPKG_DIR%\src\parse_output.sed"
328 IF NOT ERRORLEVEL 1 EXIT/B 0
329 ECHO Make failed - Check %CD%\make.log > con
333 #Need to download from Microsoft