]>
Commit | Line | Data |
---|---|---|
1 | @echo OFF\r | |
2 | :: License: CC0\r | |
3 | ::\r | |
4 | :: Setup wget first - this has to be done manually\r | |
5 | :: http://gnuwin32.sourceforge.net/packages/wget.htm\r | |
6 | :: http://downloads.sourceforge.net/gnuwin32/wget-1.11.4-1-setup.exe\r | |
7 | ::\r | |
8 | :: Simple script to check required built environment in default locations\r | |
9 | :: Versions downloaded are specified absolutely as otherwise it's tricky to try and work out the latest/stable version\r | |
10 | :: In principal the idea is to try and automate the process as much as possible\r | |
11 | ::\r | |
12 | set PATH=%PATH%;%ProgramFiles%\GnuWin32\bin\r | |
13 | \r | |
14 | set MINGW=%SystemDrive%\MinGW\r | |
15 | set MINGW_BIN=%MinGW%\bin\r | |
16 | \r | |
17 | set ERRORLEVEL=0\r | |
18 | \r | |
19 | if not exist cache mkdir cache\r | |
20 | pushd cache\r | |
21 | \r | |
22 | :: We need a program to be able to extract not only zips, but bz2 and *lzma* | |
23 | set PATH=%PATH%;%ProgramFiles%\7-Zip | |
24 | echo =+=+= | |
25 | echo Checking 7Zip is Available... | |
26 | echo =+=+= | |
27 | set ZIP_INST=7z920.exe | |
28 | if not exist "%ProgramFiles%\7-Zip\7z.exe" ( | |
29 | call :Download %ZIP_INST% http://downloads.sourceforge.net/sevenzip/%ZIP_INST% | |
30 | %ZIP_INST% /S | |
31 | if ERRORLEVEL 1 goto Error | |
32 | ) | |
33 | \r | |
34 | echo =+=+=\r | |
35 | echo Checking mingw...\r | |
36 | echo =+=+=\r | |
37 | set MINGW_BASE_URL=http://sourceforge.net/projects/mingw/files/MinGW/Base | |
38 | set BIN_UTILS_LZ=binutils-2.23.2-1-mingw32-bin.tar.lzma | |
39 | set BIN_UTILS_URL=%MINGW_BASE_URL%/binutils/binutils-2.23.2-1/%BIN_UTILS_LZ%/download | |
40 | ::GCC dependencies:: | |
41 | set MPC_DEV_LZ=mpc-1.0.1-2-mingw32-dev.tar.lzma | |
42 | set MPC_DEV_URL=%MINGW_BASE_URL%/mpc/mpc-1.0.1-2/%MPC_DEV_LZ%/download | |
43 | set MPC_DLL_LZ=mpc-1.0.1-2-mingw32-dll.tar.lzma | |
44 | set MPC_DLL_URL=%MINGW_BASE_URL%/mpc/mpc-1.0.1-2/%MPC_DLL_LZ%/download | |
45 | set MPFR_DEV_LZ=mpfr-3.1.2-2-mingw32-dev.tar.lzma | |
46 | set MPFR_DEV_URL=%MINGW_BASE_URL%/mpfr/mpfr-3.1.2-2/%MPFR_DEV_LZ%/download | |
47 | set MPFR_DLL_LZ=mpfr-3.1.2-2-mingw32-dll.tar.lzma | |
48 | set MPFR_DLL_URL=%MINGW_BASE_URL%/mpfr/mpfr-3.1.2-2/%MPFR_DLL_LZ%/download | |
49 | set GMP_DEV_LZ=gmp-5.1.2-1-mingw32-dev.tar.lzma | |
50 | set GMP_DEV_URL=%MINGW_BASE_URL%/gmp/gmp-5.1.2/%GMP_DEV_LZ%/download | |
51 | set GMP_DLL_LZ=gmp-5.1.2-1-mingw32-dll.tar.lzma | |
52 | set GMP_DLL_URL=%MINGW_BASE_URL%/gmp/gmp-5.1.2/%GMP_DLL_LZ%/download | |
53 | set PTHREADS_DEV_LZ=pthreads-w32-2.9.1-1-mingw32-dev.tar.lzma | |
54 | set PTHREADS_DEV_URL=%MINGW_BASE_URL%/pthreads-w32/pthreads-w32-2.9.1/%PTHREADS_DEV_LZ%/download | |
55 | set PTHREADS_DLL_LZ=pthreads-w32-2.9.1-1-mingw32-dll.tar.lzma | |
56 | set PTHREADS_DLL_URL=%MINGW_BASE_URL%/pthreads-w32/pthreads-w32-2.9.1/%PTHREADS_DLL_LZ%/download | |
57 | set ICONV_DEV_LZ=libiconv-1.14-3-mingw32-dev.tar.lzma | |
58 | set ICONV_DEV_URL=%MINGW_BASE_URL%/libiconv/libiconv-1.14-3/%ICONV_DEV_LZ%/download | |
59 | set ICONV_DLL_LZ=libiconv-1.14-3-mingw32-dll.tar.lzma | |
60 | set ICONV_DLL_URL=%MINGW_BASE_URL%/libiconv/libiconv-1.14-3/%ICONV_DLL_LZ%/download | |
61 | set GCC_CORE_BIN_LZ=gcc-core-4.8.1-4-mingw32-bin.tar.lzma | |
62 | set GCC_CORE_BIN_URL=%MINGW_BASE_URL%/gcc/Version4/gcc-4.8.1-4/%GCC_CORE_BIN_LZ%/download | |
63 | set GCC_CORE_DEV_LZ=gcc-core-4.8.1-4-mingw32-dev.tar.lzma | |
64 | set GCC_CORE_DEV_URL=%MINGW_BASE_URL%/gcc/Version4/gcc-4.8.1-4/%GCC_CORE_DEV_LZ%/download | |
65 | set GCC_CORE_DLL_LZ=gcc-core-4.8.1-4-mingw32-dll.tar.lzma | |
66 | set GCC_CORE_DLL_URL=%MINGW_BASE_URL%/gcc/Version4/gcc-4.8.1-4/%GCC_CORE_DLL_LZ%/download | |
67 | set MINGWRTDLL_LZ=mingwrt-4.0.3-1-mingw32-dll.tar.lzma | |
68 | set MINGWRTDLL_URL=%MINGW_BASE_URL%/mingw-rt/mingwrt-4.0.3/%MINGWRTDLL_LZ%/download | |
69 | set MINGWRTDEV_LZ=mingwrt-4.0.3-1-mingw32-dev.tar.lzma | |
70 | set MINGWRTDEV_URL=%MINGW_BASE_URL%/mingw-rt/mingwrt-4.0.3/%MINGWRTDEV_LZ%/download | |
71 | set W32API_LZ=w32api-4.0.3-1-mingw32-dev.tar.lzma | |
72 | set W32API_URL=%MINGW_BASE_URL%/w32api/w32api-4.0.3/%W32API_LZ%/download | |
73 | set ZLIB_LZ=zlib-1.2.8-1-mingw32-dll.tar.lzma | |
74 | set ZLIB_URL=%MINGW_BASE_URL%/zlib/zlib-1.2.8/%ZLIB_LZ%/download | |
75 | set GETTEXT_LZ=gettext-0.18.3.1-1-mingw32-dll.tar.lzma | |
76 | set GETTEXT_URL=%MINGW_BASE_URL%/gettext/gettext-0.18.3.1-1/%GETTEXT_LZ%/download\r | |
77 | \r | |
78 | set GCC-CPP_BIN_LZ=gcc-c++-4.8.1-4-mingw32-bin.tar.lzma\r | |
79 | set GCC-CPP_BIN_URL=%MINGW_BASE_URL%/gcc/Version4/gcc-4.8.1-4/%GCC-CPP_BIN_LZ%/download\r | |
80 | set GCC-CPP_DEV_LZ=gcc-c++-4.8.1-4-mingw32-dev.tar.lzma\r | |
81 | set GCC-CPP_DEV_URL=%MINGW_BASE_URL%/gcc/Version4/gcc-4.8.1-4/%GCC-CPP_DEV_LZ%/download\r | |
82 | set GCC-CPP_DLL_LZ=gcc-c++-4.8.1-4-mingw32-dll.tar.lzma\r | |
83 | set GCC-CPP_DLL_URL=%MINGW_BASE_URL%/gcc/Version4/gcc-4.8.1-4/%GCC-CPP_DLL_LZ%/download\r | |
84 | \r | |
85 | if not exist "%MINGW_BIN%" (\r | |
86 | :: Here we download all default components manually in an attempt to get autoinstall to work...\r | |
87 | call :Download "%BIN_UTILS_LZ%" "%BIN_UTILS_URL%" | |
88 | call :InstallLZMA "%BIN_UTILS_LZ%" | |
89 | ||
90 | call :Download "%MPC_DLL_LZ%" "%MPC_DLL_URL%" | |
91 | call :InstallLZMA "%MPC_DLL_LZ%" | |
92 | ||
93 | call :Download "%MPC_DEV_LZ%" "%MPC_DEV_URL%" | |
94 | call :InstallLZMA "%MPC_DEV_LZ%" | |
95 | ||
96 | call :Download "%MPFR_DLL_LZ%" "%MPFR_DLL_URL%" | |
97 | call :InstallLZMA "%MPFR_DLL_LZ%" | |
98 | ||
99 | call :Download "%MPFR_DEV_LZ%" "%MPFR_DEV_URL%" | |
100 | call :InstallLZMA "%MPFR_DEV_LZ%" | |
101 | ||
102 | call :Download "%GMP_DEV_LZ%" "%GMP_DEV_URL%" | |
103 | call :InstallLZMA "%GMP_DEV_LZ%" | |
104 | ||
105 | call :Download "%GMP_DLL_LZ%" "%GMP_DLL_URL%" | |
106 | call :InstallLZMA "%GMP_DLL_LZ%" | |
107 | ||
108 | call :Download "%PTHREADS_DLL_LZ%" "%PTHREADS_DLL_URL%" | |
109 | call :InstallLZMA "%PTHREADS_DLL_LZ%" | |
110 | ||
111 | call :Download "%PTHREADS_DEV_LZ%" "%PTHREADS_DEV_URL%" | |
112 | call :InstallLZMA "%PTHREADS_DEV_LZ%" | |
113 | ||
114 | call :Download "%ICONV_DEV_LZ%" "%ICONV_DEV_URL%" | |
115 | call :InstallLZMA "%ICONV_DEV_LZ%" | |
116 | ||
117 | call :Download "%ICONV_DLL_LZ%" "%ICONV_DLL_URL%" | |
118 | call :InstallLZMA "%ICONV_DLL_LZ%" | |
119 | ||
120 | call :Download "%GCC_CORE_DEV_LZ%" "%GCC_CORE_DEV_URL%" | |
121 | call :InstallLZMA "%GCC_CORE_DEV_LZ%" | |
122 | ||
123 | call :Download "%GCC_CORE_DLL_LZ%" "%GCC_CORE_DLL_URL%" | |
124 | call :InstallLZMA "%GCC_CORE_DLL_LZ%" | |
125 | ||
126 | call :Download "%GCC_CORE_BIN_LZ%" "%GCC_CORE_BIN_URL%" | |
127 | call :InstallLZMA "%GCC_CORE_BIN_LZ%" | |
128 | ||
129 | call :Download "%MINGWRTDEV_LZ%" "%MINGWRTDEV_URL%" | |
130 | call :InstallLZMA "%MINGWRTDEV_LZ%" | |
131 | ||
132 | call :Download "%MINGWRTDLL_LZ%" "%MINGWRTDLL_URL%" | |
133 | call :InstallLZMA "%MINGWRTDLL_LZ%" | |
134 | ||
135 | call :Download "%W32API_LZ%" "%W32API_URL%" | |
136 | call :InstallLZMA "%W32API_LZ%" | |
137 | ||
138 | call :Download "%ZLIB_LZ%" "%ZLIB_URL%" | |
139 | call :InstallLZMA "%ZLIB_LZ%" | |
140 | ||
141 | call :Download "%GETTEXT_LZ%" "%GETTEXT_URL%" | |
142 | call :InstallLZMA "%GETTEXT_LZ%" | |
143 | \r | |
144 | REM Seems '+' in the filename screws things up for script function calls :(\r | |
145 | REM call :Download "%GCC_CPP_DEV_LZ%" "%GCC_CPP_DEV_URL%"\r | |
146 | REM call :InstallLZMA "%GCC_CPP_DEV_LZ%"\r | |
147 | \r | |
148 | REM call :Download "%GCC_CPP_DLL_LZ%" "%GCC_CPP_DLL_URL%"\r | |
149 | REM call :InstallLZMA "%GCC_CPP_DLL_LZ%"\r | |
150 | \r | |
151 | REM call :Download "%GCC_CPP_BIN_LZ%" "%GCC_CPP_BIN_URL%"\r | |
152 | REM call :InstallLZMA "%GCC_CPP_BIN_LZ%"\r | |
153 | \r | |
154 | REM Do it every time...\r | |
155 | wget http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.8.1-4/gcc-c++-4.8.1-4-mingw32-bin.tar.lzma/download\r | |
156 | wget http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.8.1-4/gcc-c++-4.8.1-4-mingw32-dev.tar.lzma/download\r | |
157 | wget http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.8.1-4/gcc-c++-4.8.1-4-mingw32-dll.tar.lzma/download\r | |
158 | 7z e gcc-c++-4.8.1-4-mingw32-bin.tar.lzma\r | |
159 | 7z e gcc-c++-4.8.1-4-mingw32-dev.tar.lzma\r | |
160 | 7z e gcc-c++-4.8.1-4-mingw32-dll.tar.lzma\r | |
161 | 7z x gcc-c++-4.8.1-4-mingw32-bin.tar -o"%MinGW%" -y\r | |
162 | 7z x gcc-c++-4.8.1-4-mingw32-dev.tar -o"%MinGW%" -y\r | |
163 | 7z x gcc-c++-4.8.1-4-mingw32-dll.tar -o"%MinGW%" -y\r | |
164 | )\r | |
165 | \r | |
166 | echo =+=+=\r | |
167 | echo Checking MSYS...\r | |
168 | echo =+=+=\r | |
169 | set MSYS_EXE=MSYS-1.0.11.exe\r | |
170 | if not exist "%SystemDrive%\msys" (\r | |
171 | if not exist %MSYS_EXE% (\r | |
172 | wget http://downloads.sourceforge.net/mingw/%MSYS_EXE%\r | |
173 | )\r | |
174 | if not [%WINELOADERNOEXEC%]==[] ( | |
175 | echo Running under WINE - Requires MSYS install fixes: run msys-pi-wine.sh when msys install halts..."\r | |
176 | echo Ctrl-C to stop and then rerun the installation if necessary\r | |
177 | )\r | |
178 | %MSYS_EXE% /sp- /silent\r | |
179 | if ERRORLEVEL 1 goto Error\r | |
180 | )\r | |
181 | \r | |
182 | ::\r | |
183 | echo =+=+=\r | |
184 | echo Checking gtk+-bundle...\r | |
185 | echo =+=+=\r | |
186 | set GTK_ZIP=gtk+-bundle_2.24.10-20120208_win32.zip\r | |
187 | if not exist "%MINGW_BIN%\gtk-update-icon-cache.exe" (\r | |
188 | call :Download %GTK_ZIP% http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/%GTK_ZIP% | |
189 | 7z x %GTK_ZIP% -o"%MinGW%" -y | |
190 | if ERRORLEVEL 1 goto Error\r | |
191 | )\r | |
192 | \r | |
193 | set EXPAT_ZIP=expat-dev_2.0.1-1_win32.zip\r | |
194 | echo =+=+=\r | |
195 | echo Checking expat-dev...\r | |
196 | echo =+=+=\r | |
197 | if not exist "%MINGW%\include\expat.h" (\r | |
198 | call :Download %EXPAT_ZIP% http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/%EXPAT_ZIP% | |
199 | 7z x %EXPAT_ZIP% -o"%MinGW%"\r | |
200 | if ERRORLEVEL 1 goto Error\r | |
201 | )\r | |
202 | \r | |
203 | ::set GTT_ZIP=gettext-tools-dev_0.18.1.1-2_win32.zip | |
204 | ::echo =+=+= | |
205 | ::echo Checking gettext-tools-dev... | |
206 | ::echo =+=+= | |
207 | ::if not exist "%MINGW_BIN%\libgettextlib-0-18-1.dll" ( | |
208 | :: if not exist %GTT_ZIP% ( | |
209 | :: wget http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/%GTT_ZIP% | |
210 | :: ) | |
211 | :: 7z x -y %GTT_ZIP% -o"%MinGW%" | |
212 | :: if ERRORLEVEL 1 goto Error | |
213 | ::) | |
214 | \r | |
215 | echo =+=+=\r | |
216 | echo Checking intltool...\r | |
217 | echo =+=+=\r | |
218 | set INTLTOOL_ZIP=intltool_0.40.4-1_win32.zip\r | |
219 | if not exist "%MINGW_BIN%\intltoolize" (\r | |
220 | call :Download %INTLTOOL_ZIP% http://ftp.acc.umu.se/pub/GNOME/binaries/win32/intltool/0.40/%INTLTOOL_ZIP% | |
221 | 7z x %INTLTOOL_ZIP% -o"%MinGW%"\r | |
222 | if ERRORLEVEL 1 goto Error\r | |
223 | )\r | |
224 | \r | |
225 | echo =+=+=\r | |
226 | echo Checking iconv...\r | |
227 | echo =+=+=\r | |
228 | set ICONV_ZIP=libiconv-1.9.2-1-bin.zip\r | |
229 | if not exist "%MINGW_BIN%\iconv.exe" (\r | |
230 | call :Download %ICONV_ZIP% http://sourceforge.net/projects/gnuwin32/files/libiconv/1.9.2-1/%ICONV_ZIP% | |
231 | 7z x -y %ICONV_ZIP% -o"%MinGW%"\r | |
232 | if ERRORLEVEL 1 goto Error\r | |
233 | )\r | |
234 | \r | |
235 | echo =+=+=\r | |
236 | echo Checking libintl...\r | |
237 | echo =+=+=\r | |
238 | :: Needed by iconv\r | |
239 | set LIBINTL_ZIP=libintl-0.14.4-bin.zip\r | |
240 | if not exist "%MINGW_BIN%\libintl3.dll" (\r | |
241 | call :Download %LIBINTL_ZIP% http://sourceforge.net/projects/gnuwin32/files/libintl/0.14.4/%LIBINTL_ZIP% | |
242 | 7z x -y %LIBINTL_ZIP% -o"%MinGW%"\r | |
243 | if ERRORLEVEL 1 goto Error\r | |
244 | )\r | |
245 | \r | |
246 | echo =+=+=\r | |
247 | echo Checking gettext tools... | |
248 | echo =+=+= | |
249 | :: Needed by intltool | |
250 | set GETTEXT_BIN_LZ=gettext-0.18.3.1-1-mingw32-bin.tar.lzma | |
251 | set GETTEXT_BIN_URL=%MINGW_BASE_URL%/gettext/gettext-0.18.3.1-1/%GETTEXT_BIN_LZ%/download | |
252 | if not exist "%MINGW_BIN%\xgettext.exe" ( | |
253 | call :Download %GETTEXT_BIN_LZ% %GETTEXT_BIN_URL% | |
254 | call :InstallLZMA "%GETTEXT_BIN_LZ%" | |
255 | ) | |
256 | ||
257 | echo =+=+= | |
258 | echo Checking libcurl...\r | |
259 | echo =+=+=\r | |
260 | REM Win32 - Generic - http://curl.haxx.se/download.html | |
261 | set CURL=curl-7.34.0-devel-mingw32 | |
262 | set CURL_ZIP=%CURL%.zip | |
263 | if not exist "%MINGW_BIN%\libcurl.dll" (\r | |
264 | call :Download %CURL_ZIP% http://curl.haxx.se/gknw.net/7.34.0/dist-w32/%CURL_ZIP% | |
265 | echo Extracting libcurl...\r | |
266 | 7z x -y %CURL_ZIP% -o"libcurl" | |
267 | if ERRORLEVEL 1 goto Error\r | |
268 | @echo ON\r | |
269 | xcopy /S /Y libcurl\%CURL%\include\*.* "%MinGW%\include" | |
270 | xcopy /S /Y libcurl\%CURL%\bin\*.* "%MinGW_BIN%" | |
271 | xcopy /S /Y libcurl\%CURL%\lib\*.a "%MinGW%\lib" | |
272 | copy /Y libcurl\%CURL%\COPYING "%MinGW%\COPYING_curl.txt" | |
273 | rmdir /S /Q libcurl\r | |
274 | @echo OFF\r | |
275 | )\r | |
276 | \r | |
277 | echo =+=+=\r | |
278 | echo Checking libexif...\r | |
279 | echo =+=+=\r | |
280 | set EXIF=libexif-0.6.21.1_winxp_mingw | |
281 | set EXIF_7Z=%EXIF%.7z\r | |
282 | if not exist "%MINGW_BIN%\libexif-12.dll" (\r | |
283 | :: Space in URL so function call doesn't work ATM | |
284 | ::call :Download %EXIF_7Z% "http://sourceforge.net/projects/maille/files/Extern libs/%EXIF_7Z%/download" | |
285 | if not exist "%EXIF_7Z%" ( | |
286 | wget "http://sourceforge.net/projects/maille/files/Extern libs/%EXIF_7Z%/download"\r | |
287 | if ERRORLEVEL 1 goto Error | |
288 | )\r | |
289 | ||
290 | echo Extracting libexif...\r | |
291 | 7z x %EXIF_7Z%\r | |
292 | if ERRORLEVEL 1 goto Error\r | |
293 | \r | |
294 | echo Using xcopy to get all subdirs of libexif into place... | |
295 | @echo ON\r | |
296 | xcopy /Y /S %EXIF%\*.* "%MinGW%"\r | |
297 | rmdir /S /Q %EXIF%\r | |
298 | @echo OFF\r | |
299 | )\r | |
300 | \r | |
301 | echo =+=+=\r | |
302 | echo Checking libstdc++...\r | |
303 | echo =+=+=\r | |
304 | set STDCPP_TAR=gcc-c++-4.8.1-4-mingw32-dll.tar | |
305 | set STDCPP_LZ=%STDCPP_TAR%.lzma\r | |
306 | if not exist "%MINGW_BIN%\libstdc++-6.dll" (\r | |
307 | call :Download "%STDCPP_LZ%" "http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.8.1-4/%STDCPP_LZ%/download" | |
308 | call :InstallLZMA "%STDCPP_LZ%" | |
309 | )\r | |
310 | \r | |
311 | echo =+=+=\r | |
312 | echo Checking libbz2 header...\r | |
313 | echo =+=+=\r | |
314 | set BZ2_TAR=bzip2-1.0.6-4-mingw32-dev.tar\r | |
315 | set BZ2_LZ=%BZ2_TAR%.lzma\r | |
316 | if not exist "%MINGW%\include\bzlib.h" (\r | |
317 | call :Download %BZ2_LZ% "http://sourceforge.net/projects/mingw/files/MinGW/Extension/bzip2/bzip2-1.0.6-4/%BZ2_LZ%" | |
318 | call :InstallLZMA "%BZ2_LZ%" | |
319 | )\r | |
320 | \r | |
321 | echo =+=+=\r | |
322 | echo Checking libbz2...\r | |
323 | echo =+=+=\r | |
324 | set BZ2DLL_TAR=libbz2-1.0.6-4-mingw32-dll-2.tar\r | |
325 | set BZ2DLL_LZ=%BZ2DLL_TAR%.lzma\r | |
326 | if not exist "%MINGW_BIN%\libbz2-2.dll" (\r | |
327 | call :Download %BZ2DLL_LZ% "http://sourceforge.net/projects/mingw/files/MinGW/Extension/bzip2/bzip2-1.0.6-4/%BZ2DLL_LZ%" | |
328 | call :InstallLZMA "%BZ2DLL_LZ%" | |
329 | )\r | |
330 | \r | |
331 | echo =+=+=\r | |
332 | echo Checking magic dev...\r | |
333 | echo =+=+=\r | |
334 | set MAGIC_ZIP=file-5.03-lib.zip\r | |
335 | if not exist "%MINGW%\include\magic.h" (\r | |
336 | call :Download %MAGIC_ZIP% http://downloads.sourceforge.net/gnuwin32/%MAGIC_ZIP% | |
337 | 7z x %MAGIC_ZIP% -o"%MinGW%"\r | |
338 | if ERRORLEVEL 1 goto Error\r | |
339 | )\r | |
340 | \r | |
341 | echo =+=+=\r | |
342 | echo Checking magic DLL...\r | |
343 | echo =+=+=\r | |
344 | set MAGICDLL_ZIP=file-5.03-bin.zip\r | |
345 | if not exist "%MINGW_BIN%\magic1.dll" (\r | |
346 | call :Download %MAGICDLL_ZIP% http://downloads.sourceforge.net/gnuwin32/%MAGICDLL_ZIP% | |
347 | 7z x %MAGICDLL_ZIP% -o"%MinGW%"\r | |
348 | if ERRORLEVEL 1 goto Error\r | |
349 | )\r | |
350 | \r | |
351 | echo =+=+=\r | |
352 | echo Checking regex DLL (required by magic)...\r | |
353 | echo =+=+=\r | |
354 | set REGDLL_ZIP=regex-2.7-bin.zip\r | |
355 | if not exist "%MINGW_BIN%\regex2.dll" (\r | |
356 | call :Download %REGDLL_ZIP% http://downloads.sourceforge.net/gnuwin32/%REGDLL_ZIP% | |
357 | 7z x %REGDLL_ZIP% -o"%MinGW%"\r | |
358 | if ERRORLEVEL 1 goto Error\r | |
359 | )\r | |
360 | \r | |
361 | echo =+=+=\r | |
362 | echo Checking SQLite dev...\r | |
363 | echo =+=+=\r | |
364 | set SQL_ZIP=sqlite-amalgamation-3080002.zip\r | |
365 | if not exist "%MINGW%\include\sqlite3.h" (\r | |
366 | call :Download %SQL_ZIP% http://www.sqlite.org/2013/%SQL_ZIP% | |
367 | 7z x %SQL_ZIP%\r | |
368 | if ERRORLEVEL 1 goto Error\r | |
369 | copy /Y sqlite-amalgamation-3080002\s* "%MinGW%\include"\r | |
370 | rmdir /S /Q sqlite-amalgamation-3080002\r | |
371 | )\r | |
372 | \r | |
373 | echo =+=+=\r | |
374 | echo Checking SQL DLL...\r | |
375 | echo =+=+=\r | |
376 | set SQLDLL_ZIP=sqlite-dll-win32-x86-3080002.zip\r | |
377 | if not exist "%MINGW_BIN%\sqlite3.dll" (\r | |
378 | call :Download %SQLDLL_ZIP% http://www.sqlite.org/2013/%SQLDLL_ZIP% | |
379 | 7z x %SQLDLL_ZIP% -o"%MinGW_BIN%"\r | |
380 | if ERRORLEVEL 1 goto Error\r | |
381 | REM Annoyingly SQL doesn't come with a .lib file so have to generate it ourselves:\r | |
382 | REM Possibly need to insert the line 'LIBRARY sqlite3.dll' at the beginning of the def file?\r | |
383 | REM but this may not be needed as the --dllname option may suffice\r | |
384 | set PATH=%PATH%;%MinGW_BIN% | |
385 | dlltool.exe -d %MinGW_BIN%\sqlite3.def --dllname %MinGW_BIN%\sqlite3.dll -l %MinGW%\lib\sqlite3.lib | |
386 | if ERRORLEVEL 1 goto Error | |
387 | )\r | |
388 | \r | |
389 | \r | |
390 | echo =+=+=\r | |
391 | echo Mapnik...\r | |
392 | echo =+=+=\r | |
393 | set MAPNIK_ZIP=mapnik-win-sdk-v2.2.0.zip\r | |
394 | set MAPNIK_URL=http://mapnik.s3.amazonaws.com/dist/v2.2.0/%MAPNIK_ZIP%\r | |
395 | if not exist "%MINGW_BIN%\mapnik.dll" (\r | |
396 | call :Download "%MAPNIK_ZIP%" "%MAPNIK_URL%"\r | |
397 | 7z x %MAPNIK_ZIP%\r | |
398 | if ERRORLEVEL 1 goto Error\r | |
399 | copy /Y mapnik-v2.2.0\include\* "%MinGW%\include"\r | |
400 | copy /Y mapnik-v2.2.0\lib\*.lib "%MinGW%\lib\"\r | |
401 | copy /Y mapnik-v2.2.0\lib\*.dll "%MinGW%\bin"\r | |
402 | copy /Y mapnik-v2.2.0\lib\mapnik\input "\"\r | |
403 | rmdir /S /Q mapnik-v2.2.0\r | |
404 | REM Mapnik 2.2.0 seems to ship with a unicode copy which is missing ptypes.h\r | |
405 | REM Copy headers from a known good version...\r | |
406 | REM See fix in calling shell script when using wine\r | |
407 | )\r | |
408 | \r | |
409 | ::\r | |
410 | :: Ideally building the code on Windows shouldn't need Doc Utils or the Help processor stuff\r | |
411 | :: But ATM it's too hard to avoid.\r | |
412 | ::\r | |
413 | echo =+=+=\r | |
414 | echo Checking Gnome Doc Utils...\r | |
415 | echo =+=+=\r | |
416 | set GNOME_DOC_ZIP=gnome-doc-utils-0.12.0.zip\r | |
417 | if not exist "%MINGW_BIN%\gnome-doc-prepare" (\r | |
418 | call :Download %GNOME_DOC_ZIP% http://ftp.gnome.org/pub/gnome/binaries/win32/gnome-doc-utils/0.12/%GNOME_DOC_ZIP% | |
419 | echo Extracting Gnome Doc Utils...\r | |
420 | 7z x %GNOME_DOC_ZIP% -o"%MinGW%"\r | |
421 | if ERRORLEVEL 1 goto Error\r | |
422 | )\r | |
423 | \r | |
424 | echo =+=+=\r | |
425 | echo Checking xsltproc...\r | |
426 | echo =+=+=\r | |
427 | set XLST=libxslt-1.1.26.win32\r | |
428 | set XLST_ZIP=%XLST%.zip\r | |
429 | if not exist "%MINGW_BIN%\xsltproc.exe" (\r | |
430 | call :Download %XLST_ZIP% ftp://ftp.zlatkovic.com/libxml/%XLST_ZIP% | |
431 | echo Extracting XLST...\r | |
432 | 7z x %XLST_ZIP%\r | |
433 | xcopy /Y /S "%XLST%\bin\*" "%MinGW_BIN%"\r | |
434 | if ERRORLEVEL 1 goto Error\r | |
435 | rmdir /Q /S %XLST%\r | |
436 | )\r | |
437 | \r | |
438 | echo =+=+=\r | |
439 | echo Checking xmllint...\r | |
440 | echo =+=+=\r | |
441 | set XML2=libxml2-2.7.8.win32\r | |
442 | set XML2_ZIP=%XML2%.zip\r | |
443 | if not exist "%MINGW_BIN%\xmllint.exe" (\r | |
444 | call :Download %XML2_ZIP% ftp://ftp.zlatkovic.com/libxml/%XML2_ZIP% | |
445 | echo Extracting xmllint...\r | |
446 | 7z x %XML2_ZIP%\r | |
447 | xcopy /Y /S "%XML2%\bin\*" "%MinGW_BIN%"\r | |
448 | if ERRORLEVEL 1 goto Error\r | |
449 | rmdir /Q /S %XML2%\r | |
450 | )\r | |
451 | \r | |
452 | echo =+=+=\r | |
453 | echo Checking iconv...\r | |
454 | echo =+=+=\r | |
455 | set ICONV=iconv-1.9.2.win32\r | |
456 | set ICONV_ZIP=%ICONV%.zip\r | |
457 | if not exist "%MINGW_BIN%\iconv.dll" (\r | |
458 | call :Download %ICONV_ZIP% ftp://ftp.zlatkovic.com/libxml/%ICONV_ZIP% | |
459 | echo Extracting iconv...\r | |
460 | 7z x %ICONV_ZIP%\r | |
461 | xcopy /Y /S "%ICONV%\bin\*" "%MinGW_BIN%"\r | |
462 | if ERRORLEVEL 1 goto Error\r | |
463 | rmdir /Q /S %ICONV%\r | |
464 | )\r | |
465 | \r | |
466 | \r | |
467 | echo =+=+=\r | |
468 | echo Checking libzip...\r | |
469 | echo =+=+=\r | |
470 | REM Originally planned to extract from an existing MINGW32 RPM,\r | |
471 | REM which worked OK to compile+link but Viking did not run up after install\r | |
472 | REM I think the dll is linked to a different gcc runtime\r | |
473 | set LIBZIP=mingw32-libzip-1.0.1-3\r | |
474 | set LIBZIP_RPM=mingw32-libzip-1.0.1-3.fc24.noarch.rpm\r | |
475 | if not exist "%MINGW_BIN%\libzip.dll" (\r | |
476 | echo MANUALLY NEED TO ACQUIRE AND INSTALL LIBZIP\r | |
477 | EXIT\r | |
478 | REM Instead build libzip from source\r | |
479 | REM http://www.nih.at/libzip/ - download latest source (31d625ae55b5 on 16/11/15)\r | |
480 | REM Use CMake (v3.4.0) on Windows\r | |
481 | REM wine cmd\r | |
482 | REM set CC=gcc\r | |
483 | REM set PATH=%PATH%;%SystemDrive%\Mingw\bin\r | |
484 | REM cmake -DCMAKE_C_COMPILER:FILEPATH='gcc' -G "MSYS Makefiles" .\r | |
485 | REM set PATH=%PATH%;%SystemDrive%\msys\1.0\bin\r | |
486 | REM make\r | |
487 | REM (needed to fix zipint.h to include limits.h for a successful compile)\r | |
488 | REM Copy libzip.dll.a,libzip.dll,zip.h+zipconf.h to appropraite places.\r | |
489 | )\r | |
490 | \r | |
491 | :: Note GPSBabel can not be directly downloaded via wget\r | |
492 | :: ATM get it manually from here:\r | |
493 | :: http://www.gpsbabel.org/download.html\r | |
494 | set GPSBABEL_INST=GPSBabel-1.5.2-Setup.exe | |
495 | if not exist %GPSBABEL_INST% ( | |
496 | echo Required %GPSBABEL_INST% not found. Exitting | |
497 | exit /b | |
498 | )\r | |
499 | \r | |
500 | echo =+=+=\r | |
501 | echo Checking Perl Installation...\r | |
502 | echo =+=+=\r | |
503 | set PERL_MSI=ActivePerl-5.18.2.1802-MSWin32-x86-64int-298023.msi | |
504 | if not exist "%SystemDrive%\Perl" (\r | |
505 | call :Download %PERL_MSI% http://downloads.activestate.com/ActivePerl/releases/5.18.2.1802/%PERL_MSI% | |
506 | echo Installing Perl takes a little time...\r | |
507 | msiexec /qb /i %PERL_MSI% PERL_PATH=Yes PERL_EXT=Yes\r | |
508 | if ERRORLEVEL 1 goto Error\r | |
509 | )\r | |
510 | \r | |
511 | echo =+=+=\r | |
512 | echo Checking NSIS installed...\r | |
513 | echo =+=+=\r | |
514 | set NSIS_INST=nsis-2.46-setup.exe\r | |
515 | if not exist "%ProgramFiles%\NSIS" (\r | |
516 | call :Download %NSIS_INST% http://prdownloads.sourceforge.net/nsis/nsis-2.46-setup.exe?download | |
517 | echo Installing NSIS...\r | |
518 | %NSIS_INST% /S\r | |
519 | if ERRORLEVEL 1 goto Error\r | |
520 | )\r | |
521 | \r | |
522 | echo =+=+=\r | |
523 | echo Checking NSIS Plugins installed...\r | |
524 | echo =+=+=\r | |
525 | set FPDLLZIP=FindProc.zip\r | |
526 | if not exist "%ProgramFiles%\NSIS\Plugins\FindProcDLL.dll" (\r | |
527 | call :Download %FPDLLZIP% http://nsis.sourceforge.net/mediawiki/images/3/3c/%FPDLLZIP% | |
528 | echo Extracting NSIS Plugins...\r | |
529 | 7z e %FPDLLZIP% -o"%ProgramFiles%\NSIS\Plugins"\r | |
530 | if ERRORLEVEL 1 goto Error\r | |
531 | )\r | |
532 | \r | |
533 | popd\r | |
534 | \r | |
535 | echo Fixing Perl reference\r | |
536 | ||
537 | set PATH=%PATH%;C:\msys\1.0\bin\r | |
538 | ||
539 | call :FixPerlRef %MINGW_BIN%\glib-mkenums s:/bin/perl:perl: | |
540 | call :FixPerlRef %MINGW_BIN%\intltool-extract s:/opt/perl/bin/perl:perl: | |
541 | call :FixPerlRef %MINGW_BIN%\intltool-merge s:/opt/perl/bin/perl:perl: | |
542 | call :FixPerlRef %MINGW_BIN%\intltool-prepare s:/opt/perl/bin/perl:perl: | |
543 | call :FixPerlRef %MINGW_BIN%\intltool-update s:/opt/perl/bin/perl:perl: | |
544 | ||
545 | goto End | |
546 | ||
547 | :FixPerlRef | |
548 | :: Param %1 = File | |
549 | :: Param %2 = sed command | |
550 | :: Sadly '-i' for in place changes doesn't seem available with Windows sed 3.02 | |
551 | sed -e '%2' %1 > %1.tmp | |
552 | if ERRORLEVEL 1 goto Error\r | |
553 | xcopy /Y %1.tmp %1 | |
554 | if ERRORLEVEL 1 goto Error\r | |
555 | del %1.tmp | |
556 | :: End function | |
557 | exit /b | |
558 | \r | |
559 | :: Potentially Clean Up\r | |
560 | :: If any parameters given on the command line then remove all downloaded items\r | |
561 | :Clean\r | |
562 | if not [%1]==[] (\r | |
563 | echo Removing downloaded files\r | |
564 | if exist cache rmdir /S /Q cache\r | |
565 | )\r | |
566 | \r | |
567 | goto End\r | |
568 | \r | |
569 | ||
570 | ::Function to try to download something via wget | |
571 | :: (obviously needs 7zip to be installed first and available on the path!) | |
572 | :: Param %1 = File | |
573 | :: Param %2 = URL (which should retrieve %1) [ URL can't contain a space or %20:( ] | |
574 | :Download | |
575 | if not exist "%1" ( | |
576 | wget "%2" | |
577 | if ERRORLEVEL 1 goto Error | |
578 | ) | |
579 | :: End function | |
580 | exit /b | |
581 | ||
582 | ::Function to install something via 7zip | |
583 | :: (obviously needs 7zip to be installed first and available on the path!) | |
584 | :: Param %1 = LZMA file | |
585 | :: Param %2 = Internal file (normally the .tar file) | |
586 | :InstallBy7Zip | |
587 | echo Extracting "%1" from "%2" | |
588 | 7z e "%1" | |
589 | if ERRORLEVEL 1 goto Error | |
590 | 7z x "%2" -o"%MinGW%" | |
591 | if ERRORLEVEL 1 goto Error | |
592 | del "%2" | |
593 | if ERRORLEVEL 1 goto Error | |
594 | :: End function | |
595 | exit /b | |
596 | ||
597 | ::Function to install LZMA file containing a tar file (via 7zip) | |
598 | :: (obviously needs 7zip to be installed first and available on the path!) | |
599 | :: Param %1 = LZMA file | |
600 | :InstallLZMA | |
601 | 7z e "%1" | |
602 | if ERRORLEVEL 1 goto Error | |
603 | set param=%1 | |
604 | :: Remove the .lzma extension to get the tar file | |
605 | set file=%param:.lzma=% | |
606 | 7z x "%file%" -o"%MinGW%" -y | |
607 | if ERRORLEVEL 1 goto Error | |
608 | del "%file%" | |
609 | if ERRORLEVEL 1 goto Error | |
610 | :: End function | |
611 | exit /b | |
612 | ||
613 | :Error\r | |
614 | echo exitting due to error: %ERRORLEVEL%\r | |
615 | exit /b | |
616 | \r | |
617 | :End\r | |
618 | echo Finished\r |