Fix permissions handling (CVE-2010-0825).
[emacs.git] / nt / configure.bat
blob7317416442b3e182483b6de7dbac023840b4d934
1 @echo off\r
2 rem   ----------------------------------------------------------------------\r
3 rem   Configuration script for MS Windows 95/98/Me and NT/2000/XP\r
4 rem   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,\r
5 rem      2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.\r
6 \r
7 rem   This file is part of GNU Emacs.\r
8 \r
9 rem   GNU Emacs is free software: you can redistribute it and/or modify\r
10 rem   it under the terms of the GNU General Public License as published by\r
11 rem   the Free Software Foundation, either version 3 of the License, or\r
12 rem   (at your option) any later version.\r
14 rem   GNU Emacs is distributed in the hope that it will be useful,\r
15 rem   but WITHOUT ANY WARRANTY; without even the implied warranty of\r
16 rem   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
17 rem   GNU General Public License for more details.\r
19 rem   You should have received a copy of the GNU General Public License\r
20 rem   along with GNU Emacs.  If not, see http://www.gnu.org/licenses/.\r
22 rem   ----------------------------------------------------------------------\r
23 rem   YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:\r
24 rem\r
25 rem   + MS Windows 95/98/Me or NT/2000/XP\r
26 rem   + either MSVC 2.x or later, or gcc-2.95 or later (with GNU make 3.75\r
27 rem     or later) and the Mingw32 and W32 API headers and libraries.\r
28 rem   + Visual Studio 2005 is not supported at this time.\r
29 rem\r
30 rem For reference, here is a list of which builds of GNU make are known to\r
31 rem work or not, and whether they work in the presence and/or absence of\r
32 rem sh.exe.\r
33 rem\r
34 rem                                       sh exists     no sh\r
35 rem  cygwin b20.1 make (3.75):            fails[1,5]    fails[2,5]\r
36 rem  MSVC compiled gmake 3.77:            okay          okay\r
37 rem  MSVC compiled gmake 3.78.1:          okay          okay\r
38 rem  MSVC compiled gmake 3.79.1:          okay          okay\r
39 rem  mingw32/gcc-2.92.2 make (3.77):      okay          okay[4]\r
40 rem  cygwin compiled gmake 3.77:          fails[1,5]    fails[2,5]\r
41 rem  cygwin compiled gmake 3.78.1:        fails[5]      fails[2,5]\r
42 rem  cygwin compiled gmake 3.79.1:        fails[3,5]    fails[2?,5]\r
43 rem  cygwin compiled make 3.80:           okay[6]       fails?[7]\r
44 rem  cygwin compiled make 3.81:           fails         fails?[7]\r
45 rem  mingw32 compiled make 3.79.1:        okay          okay\r
46 rem  mingw32 compiled make 3.80:          okay          okay?[7]\r
47 rem  mingw32 compiled make 3.81:          okay          okay[8]\r
48 rem\r
49 rem [1] doesn't cope with makefiles with DOS line endings, so must mount\r
50 rem     emacs source with text!=binary.\r
51 rem [2] fails when needs to invoke shell commands; okay invoking gcc etc.\r
52 rem [3] requires LC_MESSAGES support to build; cannot build with early\r
53 rem     versions of cygwin.\r
54 rem [4] may fail on Windows 9X and Windows ME; if so, install Bash.\r
55 rem [5] fails when building leim due to the use of cygwin style paths.\r
56 rem     May work if building emacs without leim.\r
57 rem [6] need to uncomment 3 lines in nt/gmake.defs that invoke `cygpath';\r
58 rem     look for "cygpath" near line 85 of gmake.defs.\r
59 rem [7] not recommended; please report if you try this combination.\r
60 rem [8] tested only on Windows XP.\r
61 rem\r
63 if exist config.log del config.log\r
65 rem ----------------------------------------------------------------------\r
66 rem   See if the environment is large enough.  We need 43 (?) bytes.\r
67 set $foo$=123456789_123456789_123456789_123456789_123\r
68 if not "%$foo$%" == "123456789_123456789_123456789_123456789_123" goto SmallEnv\r
69 set $foo$=\r
71 rem ----------------------------------------------------------------------\r
72 rem   Make sure we are running in the nt subdir\r
73 if exist configure.bat goto start\r
74 echo You must run configure from the nt subdirectory.\r
75 goto end\r
77 :start\r
78 rem ----------------------------------------------------------------------\r
79 rem   Default settings.\r
80 set prefix=\r
81 set nodebug=N\r
82 set noopt=N\r
83 set profile=N\r
84 set nocygwin=N\r
85 set COMPILER=\r
86 set usercflags=\r
87 set docflags=\r
88 set userldflags=\r
89 set doldflags=\r
90 set sep1=\r
91 set sep2=\r
93 rem ----------------------------------------------------------------------\r
94 rem   Handle arguments.\r
95 :again\r
96 if "%1" == "-h" goto usage\r
97 if "%1" == "--help" goto usage\r
98 if "%1" == "--prefix" goto setprefix\r
99 if "%1" == "--with-gcc" goto withgcc\r
100 if "%1" == "--with-msvc" goto withmsvc\r
101 if "%1" == "--no-debug" goto nodebug\r
102 if "%1" == "--no-opt" goto noopt\r
103 if "%1" == "--profile" goto profile\r
104 if "%1" == "--no-cygwin" goto nocygwin\r
105 if "%1" == "--cflags" goto usercflags\r
106 if "%1" == "--ldflags" goto userldflags\r
107 if "%1" == "--without-png" goto withoutpng\r
108 if "%1" == "--without-jpeg" goto withoutjpeg\r
109 if "%1" == "--without-gif" goto withoutgif\r
110 if "%1" == "--without-tiff" goto withouttiff\r
111 if "%1" == "--without-xpm" goto withoutxpm\r
112 if "%1" == "--with-svg" goto withsvg\r
113 if "%1" == "" goto checkutils\r
114 :usage\r
115 echo Usage: configure [options]\r
116 echo Options:\r
117 echo.   --prefix PREFIX         install Emacs in directory PREFIX\r
118 echo.   --with-gcc              use GCC to compile Emacs\r
119 echo.   --with-msvc             use MSVC to compile Emacs\r
120 echo.   --no-debug              exclude debug info from executables\r
121 echo.   --no-opt                disable optimization\r
122 echo.   --profile               enable profiling\r
123 echo.   --no-cygwin             use -mno-cygwin option with GCC\r
124 echo.   --cflags FLAG           pass FLAG to compiler\r
125 echo.   --ldflags FLAG          pass FLAG to compiler when linking\r
126 echo.   --without-png           do not use PNG library even if it is installed\r
127 echo.   --without-jpeg          do not use JPEG library even if it is installed\r
128 echo.   --without-gif           do not use GIF library even if it is installed\r
129 echo.   --without-tiff          do not use TIFF library even if it is installed\r
130 echo.   --without-xpm           do not use XPM library even if it is installed\r
131 echo.   --with-svg              use the RSVG library (experimental)\r
132 goto end\r
133 rem ----------------------------------------------------------------------\r
134 :setprefix\r
135 shift\r
136 set prefix=%1\r
137 shift\r
138 goto again\r
139 rem ----------------------------------------------------------------------\r
140 :withgcc\r
141 set COMPILER=gcc\r
142 shift\r
143 goto again\r
144 rem ----------------------------------------------------------------------\r
145 :withmsvc\r
146 set COMPILER=cl\r
147 shift\r
148 goto again\r
149 rem ----------------------------------------------------------------------\r
150 :nodebug\r
151 set nodebug=Y\r
152 shift\r
153 goto again\r
154 rem ----------------------------------------------------------------------\r
155 :noopt\r
156 set noopt=Y\r
157 shift\r
158 goto again\r
159 rem ----------------------------------------------------------------------\r
160 :profile\r
161 set profile=Y\r
162 shift\r
163 goto again\r
164 rem ----------------------------------------------------------------------\r
165 :nocygwin\r
166 set nocygwin=Y\r
167 shift\r
168 goto again\r
169 rem ----------------------------------------------------------------------\r
170 :usercflags\r
171 shift\r
172 set usercflags=%usercflags%%sep1%%1\r
173 set sep1= %nothing%\r
174 shift\r
175 goto again\r
176 rem ----------------------------------------------------------------------\r
177 :userldflags\r
178 shift\r
179 set userldflags=%userldflags%%sep2%%1\r
180 set sep2= %nothing%\r
181 shift\r
182 goto again\r
183 rem ----------------------------------------------------------------------\r
185 :withoutpng\r
186 set pngsupport=N\r
187 set HAVE_PNG=\r
188 shift\r
189 goto again\r
191 rem ----------------------------------------------------------------------\r
193 :withoutjpeg\r
194 set jpegsupport=N\r
195 set HAVE_JPEG=\r
196 shift\r
197 goto again\r
199 rem ----------------------------------------------------------------------\r
201 :withoutgif\r
202 set gifsupport=N\r
203 set HAVE_GIF=\r
204 shift\r
205 goto again\r
207 rem ----------------------------------------------------------------------\r
209 :withouttiff\r
210 set tiffsupport=N\r
211 set HAVE_TIFF=\r
212 shift\r
213 goto again\r
215 rem ----------------------------------------------------------------------\r
217 :withoutxpm\r
218 set xpmsupport=N\r
219 set HAVE_XPM=\r
220 shift\r
221 goto again\r
223 :withsvg\r
224 shift\r
225 set svgsupport=Y\r
226 goto again\r
228 rem ----------------------------------------------------------------------\r
229 rem    Check that necessary utilities (cp and rm) are present.\r
230 :checkutils\r
231 echo Checking for 'cp'...\r
232 cp configure.bat junk.bat\r
233 if not exist junk.bat goto needcp\r
234 echo Checking for 'rm'...\r
235 rm junk.bat\r
236 if exist junk.bat goto needrm\r
237 goto checkcompiler\r
238 :needcp\r
239 echo You need 'cp' (the Unix file copy program) to build Emacs.\r
240 goto end\r
241 :needrm\r
242 del junk.bat\r
243 echo You need 'rm' (the Unix file delete program) to build Emacs.\r
244 goto end\r
246 rem ----------------------------------------------------------------------\r
247 rem   Auto-detect compiler if not specified, and validate GCC if chosen.\r
248 :checkcompiler\r
249 if (%COMPILER%)==(cl) goto compilercheckdone\r
250 if (%COMPILER%)==(gcc) goto checkgcc\r
252 echo Checking whether 'gcc' is available...\r
253 echo main(){} >junk.c\r
254 gcc -c junk.c\r
255 if exist junk.o goto checkgcc\r
257 echo Checking whether 'cl' is available...\r
258 cl -nologo -c junk.c\r
259 if exist junk.obj goto clOK\r
260 goto nocompiler\r
262 :checkgcc\r
263 if exist junk.o del junk.o\r
264 Rem WARNING -- COMMAND.COM on some systems only looks at the first\r
265 Rem            8 characters of a label.  So do NOT be tempted to change\r
266 Rem            chkapi* into something fancier like checkw32api\r
267 Rem You HAVE been warned!\r
268 if (%nocygwin%) == (Y) goto chkapiN\r
269 echo Checking whether gcc requires '-mno-cygwin'...\r
270 echo #include "cygwin/version.h" >junk.c\r
271 echo main(){} >>junk.c\r
272 echo gcc -c junk.c >>config.log\r
273 gcc -c junk.c >>config.log 2>&1\r
274 if not exist junk.o goto chkapi\r
275 echo gcc -mno-cygwin -c junk.c >>config.log\r
276 gcc -mno-cygwin -c junk.c >>config.log 2>&1\r
277 if exist junk.o set nocygwin=Y\r
279 :chkapi\r
280 echo The failed program was: >>config.log\r
281 type junk.c >>config.log\r
282 :chkapiN\r
283 rm -f junk.c junk.o\r
284 rem ----------------------------------------------------------------------\r
285 rem   Older versions of the Windows API headers either don't have any of\r
286 rem   the IMAGE_xxx definitions (the headers that come with Cygwin b20.1\r
287 rem   are like this), or have a typo in the definition of\r
288 rem   IMAGE_FIRST_SECTION (the headers with gcc/mingw32 2.95 have this\r
289 rem   problem).  The gcc/mingw32 2.95.2 headers are okay, as are distros\r
290 rem   of w32api-xxx.zip from Anders Norlander since 1999-11-18 at least.\r
291 rem   Beginning with Emacs 23, we need usp10.h.\r
292 rem\r
293 echo Checking whether W32 API headers are too old...\r
294 echo #include "windows.h" >junk.c\r
295 echo #include "usp10.h" >>junk.c\r
296 echo test(PIMAGE_NT_HEADERS pHeader) >>junk.c\r
297 echo {PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader);} >>junk.c\r
298 if (%nocygwin%) == (Y) goto chkapi1\r
299 set cf=%usercflags%\r
300 goto chkapi2\r
301 :chkapi1\r
302 set cf=%usercflags% -mno-cygwin\r
303 :chkapi2\r
304 echo on\r
305 gcc %cf% -c junk.c\r
306 @echo off\r
307 @echo gcc %cf% -c junk.c >>config.log\r
308 gcc %cf% -c junk.c >>config.log 2>&1\r
309 set cf=\r
310 if exist junk.o goto gccOk\r
311 echo The failed program was: >>config.log\r
312 type junk.c >>config.log\r
314 :nocompiler\r
315 echo.\r
316 echo Configure failed.\r
317 echo To configure Emacs for Windows, you need to have either\r
318 echo gcc-2.95 or later with Mingw32 and the W32 API headers,\r
319 echo or MSVC 2.x or later.\r
320 del junk.c\r
321 goto end\r
323 :gccOk\r
324 set COMPILER=gcc\r
325 echo Using 'gcc'\r
326 rm -f junk.c junk.o\r
327 Rem It is not clear what GCC version began supporting -mtune\r
328 Rem and pentium4 on x86, so check this explicitly.\r
329 echo main(){} >junk.c\r
330 echo gcc -c -O2 -mtune=pentium4 junk.c >>config.log\r
331 gcc -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1\r
332 if not errorlevel 1 goto gccMtuneOk\r
333 echo The failed program was: >>config.log\r
334 type junk.c >>config.log\r
335 set mf=-mcpu=i686\r
336 rm -f junk.c junk.o\r
337 goto gccdebug\r
338 :gccMtuneOk\r
339 echo GCC supports -mtune=pentium4 >>config.log\r
340 set mf=-mtune=pentium4\r
341 rm -f junk.c junk.o\r
342 :gccdebug\r
343 rem Check for DWARF-2 debug info support, else default to stabs\r
344 echo main(){} >junk.c\r
345 echo gcc -c -gdwarf-2 -g3 junk.c >>config.log\r
346 gcc -c -gdwarf-2 -g3 junk.c >>config.log 2>&1\r
347 if not errorlevel 1 goto gccdwarf\r
348 echo The failed program was: >>config.log\r
349 type junk.c >>config.log\r
350 set dbginfo=-gstabs+\r
351 rm -f junk.c junk.o\r
352 goto compilercheckdone\r
353 :gccdwarf\r
354 echo GCC supports DWARF-2 >>config.log\r
355 set dbginfo=-gdwarf-2 -g3\r
356 rm -f junk.c junk.o\r
357 goto compilercheckdone\r
359 :clOk\r
360 set COMPILER=cl\r
361 rm -f junk.c junk.obj\r
362 echo Using 'MSVC'\r
364 :compilercheckdone\r
366 rem ----------------------------------------------------------------------\r
367 rem   Check for external image libraries. Since they are loaded\r
368 rem   dynamically, the libraries themselves do not need to be present\r
369 rem   at compile time, but the header files are required.\r
371 set mingwflag=\r
373 if (%nocygwin%) == (N) goto flagsOK\r
374 set mingwflag=-mno-cygwin\r
376 :flagsOK\r
378 if (%pngsupport%) == (N) goto pngDone\r
380 echo Checking for libpng...\r
381 echo #include "png.h" >junk.c\r
382 echo main (){} >>junk.c\r
383 rem   -o option is ignored with cl, but allows result to be consistent.\r
384 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
385 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
386 if exist junk.obj goto havePng\r
388 echo ...png.h not found, building without PNG support.\r
389 echo The failed program was: >>config.log\r
390 type junk.c >>config.log\r
391 set HAVE_PNG=\r
392 goto :pngDone\r
394 :havePng\r
395 echo ...PNG header available, building with PNG support.\r
396 set HAVE_PNG=1\r
398 :pngDone\r
399 rm -f junk.c junk.obj\r
401 if (%jpegsupport%) == (N) goto jpegDone\r
403 echo Checking for jpeg-6b...\r
404 echo #include "jconfig.h" >junk.c\r
405 echo main (){} >>junk.c\r
406 rem   -o option is ignored with cl, but allows result to be consistent.\r
407 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
408 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
409 if exist junk.obj goto haveJpeg\r
411 echo ...jconfig.h not found, building without JPEG support.\r
412 echo The failed program was: >>config.log\r
413 type junk.c >>config.log\r
414 set HAVE_JPEG=\r
415 goto :jpegDone\r
417 :haveJpeg\r
418 echo ...JPEG header available, building with JPEG support.\r
419 set HAVE_JPEG=1\r
421 :jpegDone\r
422 rm -f junk.c junk.obj\r
424 if (%gifsupport%) == (N) goto gifDone\r
426 echo Checking for libgif...\r
427 echo #include "gif_lib.h" >junk.c\r
428 echo main (){} >>junk.c\r
429 rem   -o option is ignored with cl, but allows result to be consistent.\r
430 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
431 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
432 if exist junk.obj goto haveGif\r
434 echo ...gif_lib.h not found, building without GIF support.\r
435 echo The failed program was: >>config.log\r
436 type junk.c >>config.log\r
437 set HAVE_GIF=\r
438 goto :gifDone\r
440 :haveGif\r
441 echo ...GIF header available, building with GIF support.\r
442 set HAVE_GIF=1\r
444 :gifDone\r
445 rm -f junk.c junk.obj\r
447 if (%tiffsupport%) == (N) goto tiffDone\r
449 echo Checking for tiff...\r
450 echo #include "tiffio.h" >junk.c\r
451 echo main (){} >>junk.c\r
452 rem   -o option is ignored with cl, but allows result to be consistent.\r
453 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
454 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
455 if exist junk.obj goto haveTiff\r
457 echo ...tiffio.h not found, building without TIFF support.\r
458 echo The failed program was: >>config.log\r
459 type junk.c >>config.log\r
460 set HAVE_TIFF=\r
461 goto :tiffDone\r
463 :haveTiff\r
464 echo ...TIFF header available, building with TIFF support.\r
465 set HAVE_TIFF=1\r
467 :tiffDone\r
468 rm -f junk.c junk.obj\r
470 if (%xpmsupport%) == (N) goto xpmDone\r
472 echo Checking for libXpm...\r
473 echo #define FOR_MSW 1 >junk.c\r
474 echo #include "X11/xpm.h" >>junk.c\r
475 echo main (){} >>junk.c\r
476 rem   -o option is ignored with cl, but allows result to be consistent.\r
477 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
478 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
479 if exist junk.obj goto haveXpm\r
481 echo ...X11/xpm.h not found, building without XPM support.\r
482 echo The failed program was: >>config.log\r
483 type junk.c >>config.log\r
484 set HAVE_XPM=\r
485 goto :xpmDone\r
487 :haveXpm\r
488 echo ...XPM header available, building with XPM support.\r
489 set HAVE_XPM=1\r
491 :xpmDone\r
492 rm -f junk.c junk.obj\r
494 if not (%svgsupport%) == (Y) goto :svgDone\r
495 echo Checking for librsvg...\r
496 echo #include "librsvg/rsvg.h" >junk.c\r
497 echo main (){} >>junk.c\r
498 rem   -o option is ignored with cl, but allows result to be consistent.\r
499 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
500 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
501 if exist junk.obj goto haveSvg\r
503 echo ...librsvg/rsvg.h or dependencies not found, building without SVG support.\r
504 echo The failed program was: >>config.log\r
505 type junk.c >>config.log\r
506 set HAVE_RSVG=\r
507 goto :svgDone\r
509 :haveSvg\r
510 echo ...librsvg header available, building with SVG support (EXPERIMENTAL).\r
511 set HAVE_RSVG=1\r
513 :svgDone\r
514 rm -f junk.c junk.obj junk.err junk.out\r
516 rem ----------------------------------------------------------------------\r
517 :genmakefiles\r
518 echo Generating makefiles\r
519 if %COMPILER% == gcc set MAKECMD=gmake\r
520 if %COMPILER% == cl set MAKECMD=nmake\r
522 rem   Pass on chosen settings to makefiles.\r
523 rem   NB. Be very careful to not have a space before redirection symbols\r
524 rem   except when there is a preceding digit, when a space is required.\r
525 rem\r
526 echo # Start of settings from configure.bat >config.settings\r
527 echo COMPILER=%COMPILER%>>config.settings\r
528 if not "(%mf%)" == "()" echo MCPU_FLAG=%mf%>>config.settings\r
529 if not "(%dbginfo%)" == "()" echo DEBUG_INFO=%dbginfo%>>config.settings\r
530 if (%nodebug%) == (Y) echo NODEBUG=1 >>config.settings\r
531 if (%noopt%) == (Y) echo NOOPT=1 >>config.settings\r
532 if (%profile%) == (Y) echo PROFILE=1 >>config.settings\r
533 if (%nocygwin%) == (Y) echo NOCYGWIN=1 >>config.settings\r
534 if not "(%prefix%)" == "()" echo INSTALL_DIR=%prefix%>>config.settings\r
535 rem We go thru docflags because usercflags could be "-DFOO=bar" -something\r
536 rem and the if command cannot cope with this\r
537 for %%v in (%usercflags%) do if not (%%v)==() set docflags=Y\r
538 if (%docflags%)==(Y) echo USER_CFLAGS=%usercflags%>>config.settings\r
539 for %%v in (%userldflags%) do if not (%%v)==() set doldflags=Y\r
540 if (%doldflags%)==(Y) echo USER_LDFLAGS=%userldflags%>>config.settings\r
541 echo # End of settings from configure.bat>>config.settings\r
542 echo. >>config.settings\r
544 copy config.nt config.tmp\r
545 echo. >>config.tmp\r
546 echo /* Start of settings from configure.bat.  */ >>config.tmp\r
547 if (%docflags%) == (Y) echo #define USER_CFLAGS " %usercflags%">>config.tmp\r
548 if (%doldflags%) == (Y) echo #define USER_LDFLAGS " %userldflags%">>config.tmp\r
549 if (%profile%) == (Y) echo #define PROFILING 1 >>config.tmp\r
550 if not "(%HAVE_PNG%)" == "()" echo #define HAVE_PNG 1 >>config.tmp\r
551 if not "(%HAVE_JPEG%)" == "()" echo #define HAVE_JPEG 1 >>config.tmp\r
552 if not "(%HAVE_GIF%)" == "()" echo #define HAVE_GIF 1 >>config.tmp\r
553 if not "(%HAVE_TIFF%)" == "()" echo #define HAVE_TIFF 1 >>config.tmp\r
554 if not "(%HAVE_XPM%)" == "()" echo #define HAVE_XPM 1 >>config.tmp\r
555 if "(%HAVE_RSVG%)" == "(1)" echo #define HAVE_RSVG 1 >>config.tmp\r
557 echo /* End of settings from configure.bat.  */ >>config.tmp\r
559 Rem See if fc.exe returns a meaningful exit status.  If it does, we\r
560 Rem might as well avoid unnecessary overwriting of config.h and epaths.h,\r
561 Rem since this forces recompilation of every source file.\r
562 if exist foo.bar del foo.bar\r
563 fc /b foo.bar foo.bar >nul 2>&1\r
564 if not errorlevel 2 goto doCopy\r
565 fc /b config.tmp ..\src\config.h >nul 2>&1\r
566 if errorlevel 1 goto doCopy\r
567 fc /b paths.h ..\src\epaths.h >nul 2>&1\r
568 if errorlevel 0 goto dontCopy\r
569 :doCopy\r
570 copy config.tmp ..\src\config.h\r
571 copy paths.h ..\src\epaths.h\r
573 :dontCopy\r
574 if exist config.tmp del config.tmp\r
575 copy /b config.settings+%MAKECMD%.defs+..\nt\makefile.w32-in ..\nt\makefile\r
576 if exist ..\admin\unidata copy /b config.settings+%MAKECMD%.defs+..\admin\unidata\makefile.w32-in ..\admin\unidata\makefile\r
577 copy /b config.settings+%MAKECMD%.defs+..\lib-src\makefile.w32-in ..\lib-src\makefile\r
578 copy /b config.settings+%MAKECMD%.defs+..\src\makefile.w32-in ..\src\makefile\r
579 copy /b config.settings+%MAKECMD%.defs+..\doc\emacs\makefile.w32-in ..\doc\emacs\makefile\r
580 copy /b config.settings+%MAKECMD%.defs+..\doc\misc\makefile.w32-in ..\doc\misc\makefile\r
581 copy /b config.settings+%MAKECMD%.defs+..\doc\lispref\makefile.w32-in ..\doc\lispref\makefile\r
582 copy /b config.settings+%MAKECMD%.defs+..\doc\lispintro\makefile.w32-in ..\doc\lispintro\makefile\r
583 if exist ..\lisp\makefile rm -f ../lisp/[Mm]akefile\r
584 copy /b config.settings+%MAKECMD%.defs+..\lisp\makefile.w32-in ..\lisp\makefile\r
585 rem   Use the default (no-op) Makefile.in if the nt version is not present.\r
586 if exist ..\leim\makefile.w32-in copy /b config.settings+%MAKECMD%.defs+..\leim\makefile.w32-in ..\leim\makefile\r
587 if not exist ..\leim\makefile.w32-in copy /b config.settings+%MAKECMD%.defs+..\leim\Makefile.in ..\leim\makefile\r
588 del config.settings\r
590 Rem Some people use WinZip which doesn't create empty directories!\r
591 if not exist ..\site-lisp\nul mkdir ..\site-lisp\\r
592 Rem Update subdirs.el only if it is different or fc.exe doesn't work.\r
593 if exist foo.bar del foo.bar\r
594 fc /b foo.bar foo.bar >nul 2>&1\r
595 if not errorlevel 2 goto doUpdateSubdirs\r
596 fc /b subdirs.el ..\site-lisp\subdirs.el >nul 2>&1\r
597 if not errorlevel 1 goto dontUpdateSubdirs\r
598 :doUpdateSubdirs\r
599 if exist ..\site-lisp\subdirs.el del ..\site-lisp\subdirs.el\r
600 copy subdirs.el ..\site-lisp\subdirs.el\r
602 :dontUpdateSubdirs\r
603 echo.\r
605 rem check that we have all the libraries we need.\r
606 set libsOK=1\r
608 if not "(%HAVE_XPM%)" == "()" goto checkpng\r
609 if (%xpmsupport%) == (N) goto checkpng\r
610  set libsOK=0\r
611  echo XPM support is missing. It is required for color icons in the toolbar.\r
612  echo   Install libXpm development files or use --without-xpm\r
614 :checkpng\r
615 if not "(%HAVE_PNG%)" == "()" goto checkjpeg\r
616 if (%pngsupport%) == (N) goto checkjpeg\r
617  set libsOK=0\r
618  echo PNG support is missing.\r
619  echo   Install libpng development files or use --without-png\r
621 :checkjpeg\r
622 if not "(%HAVE_JPEG%)" == "()" goto checktiff\r
623 if (%jpegsupport%) == (N) goto checktiff\r
624  set libsOK=0\r
625  echo JPEG support is missing.\r
626  echo   Install jpeg development files or use --without-jpeg\r
628 :checktiff\r
629 if not "(%HAVE_TIFF%)" == "()" goto checkgif\r
630 if (%tiffsupport%) == (N) goto checkgif\r
631  set libsOK=0\r
632  echo TIFF support is missing.\r
633  echo   Install libtiff development files or use --without-tiff\r
635 :checkgif\r
636 if not "(%HAVE_GIF%)" == "()" goto donelibchecks\r
637 if (%gifsupport%) == (N) goto donelibchecks\r
638  set libsOK=0\r
639  echo GIF support is missing.\r
640  echo   Install giflib or libungif development files or use --without-gif\r
642 :donelibchecks\r
643 if (%libsOK%) == (1) goto success\r
644 echo.\r
645 echo Important libraries are missing. Fix these issues before running make.\r
646 goto end\r
648 :success\r
649 echo Emacs successfully configured.\r
650 echo Emacs successfully configured. >>config.log\r
651 if (%MAKECMD%) == (gmake) set MAKECMD=make\r
652 echo Run `%MAKECMD%' to build, then run `%MAKECMD% install' to install.\r
653 goto end\r
655 :SmallEnv\r
656 echo Your environment size is too small.  Please enlarge it and rerun configure.\r
657 echo For example, type "command.com /e:2048" to have 2048 bytes available.\r
658 set $foo$=\r
659 :end\r
660 set prefix=\r
661 set nodebug=\r
662 set noopt=\r
663 set profile=\r
664 set nocygwin=\r
665 set COMPILER=\r
666 set MAKECMD=\r
667 set usercflags=\r
668 set docflags=\r
669 set userldflags=\r
670 set doldflags=\r
671 set mingwflag=\r
672 set mf=\r
674 goto skipArchTag\r
675    arch-tag: 300d20a4-1675-4e75-b615-7ce1a8c5376c\r
676 :skipArchTag\r