]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/win32/build-depkgs-msvc.cmd
Use SQLite 3.3.8 in both build environments.
[bacula/bacula] / bacula / src / win32 / build-depkgs-msvc.cmd
1 @echo off
2 SETLOCAL
3
4 SET PERL_PATH=
5 FOR /F "tokens=1" %%I in ( "perl.exe" ) DO SET PERL_PATH=%%~$PATH:I
6
7 IF NOT "%PERL_PATH%"=="" GOTO :PERL_OK
8 ECHO Perl must be in your PATH.  Please fix and rerun this script!
9 EXIT /B 1
10
11 :PERL_OK
12
13 IF "%CLOBBER_SOURCE%"=="" SET CLOBBER_SOURCE=false
14
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
16
17 SET CWD=%CD%
18 FOR %%I IN ( %0 ) DO CD %%~dpI
19 SET SCRIPT_DIR=%CD%
20
21 CD ..\..\..
22 set TOP_DIR=%CD%
23
24 IF NOT EXIST %TOP_DIR%\depkgs-msvc\nul MD %TOP_DIR%\depkgs-msvc
25
26 cd %TOP_DIR%\depkgs-msvc
27 set DEPPKG_DIR=%CD%
28
29 cd %DEPPKG_DIR%
30
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
34
35 SET PATH=%DEPPKG_DIR%\tools;%PATH%
36 SET INCLUDE=%INCLUDE%;%DEPPKG_DIR%\include
37 SET LIB=%LIB%;%DEPPKG_DIR%\lib
38
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
43
44 CD src
45
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
61
62 IF NOT "%1"=="" GOTO :ProcessArgs
63         CALL :process_zlib
64 REM     CALL :process_pcre
65         CALL :process_pthreads
66         CALL :process_openssl
67         CALL :process_mysql
68         CALL :process_sqlite
69         CALL :process_postgreSQL
70         CALL :process_wx
71 REM     CALL :process_scons
72         CALL :process_nsis
73         CALL :process_mtx
74         CALL :process_mt
75         CALL :process_sed
76         CALL :process_cmd_utils
77         CALL :process_mkisofs
78         CALL :process_dvd_rw_tools
79         GOTO :EOF
80
81 :ProcessArgs
82         IF "%1"=="" GOTO :EOF
83         
84         CALL :process_%1
85         SHIFT
86         GOTO :ProcessArgs
87
88 :get_source
89         SET URL=%1
90         SET SRC_DIR=%2
91         SET MAKE_SRC_ENABLE=%3
92         SET BASENAME=
93
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
97
98 :get_source_make_src
99         SET MAKE_SRC_DIR=
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
103
104         FOR %%I IN ( %URL% ) DO ( SET ARCHIVE=%%~nxI& SET ARCHIVE_EXT=%%~xI)
105         
106         CD %DEPPKG_DIR%\src
107         
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%
113         EXIT /B 2
114
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%"
120 :get_source_extract
121         IF /I "%ARCHIVE_EXT%"==".exe" EXIT /B 0
122         SET TAR_ARCHIVE=
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
125
126         SET TARGET_DIR=.
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%
129
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"
136
137 :get_source_done
138         CD "%SRC_DIR%"
139         EXIT /B 0
140
141 :get_source_skipped
142         CD %SRC_DIR%
143         EXIT /B 1
144
145 :process_zlib
146         CALL :get_source %URL_ZLIB% %DIR_ZLIB% %MKD_ZLIB%
147         ECHO Building zlib
148         COPY /Y nul make.log
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
154         ECHO Installing zlib
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
161         EXIT /B 0
162
163 :process_pcre
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
170         ECHO Building PCRE
171         do_make Makefile PREFIX=%DEPPKG_DIR% all
172         ECHO Installing PCRE
173         do_make Makefile PREFIX=%DEPPKG_DIR% install
174         EXIT /B 0
175
176 :process_pthreads
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
182         EXIT /B 0
183
184 :process_openssl
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
190         CALL ms\do_nasm
191         @ECHO off
192         CALL :do_nmake ms\ntdll.mak 
193         @ECHO off
194         ECHO Installing openssl
195         CALL :do_nmake ms\ntdll.mak install
196         EXIT /B 0
197 :OpenSSLError
198         ECHO Unable to download OpenSSL source from %URL_OPENSSL%
199         EXIT /B 1
200
201 :process_mysql
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
208         EXIT /B 0
209
210 :process_postgreSQL
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
227         EXIT /B 0
228 :pstgreSQL_Error1
229         ECHO Unable to download postgreSQL binaries from %URL_POSTGRESQL%
230         EXIT /B 1
231 :pstgreSQL_Error2
232         ECHO Unable to download postgreSQL source from %URL_POSTGRESQL_SRC%
233         EXIT /B 1
234
235 :process_sqlite
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
239         ECHO Patching SQLite
240         COPY /Y nul patch.log
241         CALL :do_patch sqlite_msc.patch
242 :sqlite_skip_patch
243         ECHO Configuring SQLite
244         IF NOT EXIST bld/nul MKDIR bld
245         CD bld
246         ECHO Building SQLite
247         COPY /Y nul make.log
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
253         EXIT /B 0
254 :sqlite_error
255         ECHO Unable to download sqlite source from %URL_SQLITE%
256         EXIT /B 1
257
258 :process_wx
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
268         cd build\msw
269         COPY /Y nul make.log
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
272         cd ..\..
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
281         EXIT /B 0
282 :wx_error
283         ECHO Unable to download wxWidgets source from %URL_MTX%
284         EXIT /B 1
285
286 :process_nsis
287         CALL :get_source %URL_NSIS_BIN% %DIR_NSIS_BIN% %MKD_NSIS_BIN%
288         CD ..
289         IF EXIST ..\nsis\nul RD /s /q ..\nsis
290         MOVE nsis-2.17 ..\nsis
291         EXIT /B 0
292
293 :process_mtx
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
297         ECHO Patching mtx
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
304 :mtx_skip_patch
305         ECHO Building mtx
306         CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% all
307         ECHO Installing mtx
308         CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% install
309         EXIT /B 0
310 :mtx_error
311         ECHO Unable to download mtx source from %URL_MTX%
312         EXIT /B 1
313
314 :process_mt
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
318         ECHO Patching mt
319         COPY /Y nul patch.log
320         CALL :do_patch mt.patch
321 :mt_skip_patch
322         ECHO Building mt
323         CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% all
324         ECHO Installing mt
325         CALL :do_nmake Makefile.msc PREFIX=%DEPPKG_DIR% install
326         EXIT /B 0
327 :mt_error
328         ECHO Unable to download mt source from %URL_MT%
329         EXIT /B 1
330
331 :process_sed
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
335         ECHO Patching sed
336         COPY /Y nul patch.log
337         CALL :do_patch sed_msc.patch
338 :sed_skip_patch
339         ECHO Building sed
340         CALL :do_nmake Makefile.msc all
341         ECHO Installing sed
342         CALL :do_nmake Makefile.msc install
343         EXIT /B 0
344 :sed_error
345         ECHO Unable to download sed source from %URL_MT%
346         EXIT /B 1
347
348 :process_cmd_utils
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
361         EXIT /B 0
362 :cmd_utils_build_error
363         ECHO Make failed - Check %CD%\make.log > con
364         EXIT /B 1
365 :cmd_utils_error
366         ECHO Unable to download cmd-utils source from %URL_MT%
367         EXIT /B 1
368
369 :process_mkisofs
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
374         EXIT /B 0
375 :mkisofs_error
376         ECHO Unable to download mkisofs source from %URL_MKISOFS%
377         EXIT /B 1
378
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
392         EXIT /B 0
393 :dvd_rw_tools_error
394         ECHO Unable to download dvd+rw-tools source from %URL_DVD_RW_TOOLS%
395         EXIT /B 1
396
397 :do_patch
398         SET PATCH_FILE=%SCRIPT_DIR%\patches\%1
399         SHIFT
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
403         EXIT /B 1
404
405 :do_nmake
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
409         EXIT /B 1
410
411 #vss
412 #Need to download from Microsoft