Add a new command `info-display-manual'.
[emacs.git] / nt / configure.bat
blob1450650304d8585a45616803b67c6e29c8d3f3fc
1 @echo off\r
2 rem   ----------------------------------------------------------------------\r
3 rem   Configuration script for MS Windows operating systems\r
4 rem   Copyright (C) 1999-2011  Free Software Foundation, Inc.\r
5 \r
6 rem   This file is part of GNU Emacs.\r
7 \r
8 rem   GNU Emacs is free software: you can redistribute it and/or modify\r
9 rem   it under the terms of the GNU General Public License as published by\r
10 rem   the Free Software Foundation, either version 3 of the License, or\r
11 rem   (at your option) any later version.\r
13 rem   GNU Emacs is distributed in the hope that it will be useful,\r
14 rem   but WITHOUT ANY WARRANTY; without even the implied warranty of\r
15 rem   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
16 rem   GNU General Public License for more details.\r
18 rem   You should have received a copy of the GNU General Public License\r
19 rem   along with GNU Emacs.  If not, see http://www.gnu.org/licenses/.\r
21 rem   ----------------------------------------------------------------------\r
22 rem   YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:\r
23 rem\r
24 rem   + MS Windows 95, NT or later\r
25 rem   + either MSVC 2.x or later, or gcc-2.95 or later (with GNU make 3.75\r
26 rem     or later) and the Mingw32 and W32 API headers and libraries.\r
27 rem   + Visual Studio 2005 is not supported at this time.\r
28 rem\r
29 rem For reference, here is a list of which builds of GNU make are known to\r
30 rem work or not, and whether they work in the presence and/or absence of\r
31 rem sh.exe.\r
32 rem\r
33 rem                                       sh exists     no sh\r
34 rem  cygwin b20.1 make (3.75):            fails[1,5]    fails[2,5]\r
35 rem  MSVC compiled gmake 3.77:            okay          okay\r
36 rem  MSVC compiled gmake 3.78.1:          okay          okay\r
37 rem  MSVC compiled gmake 3.79.1:          okay          okay\r
38 rem  mingw32/gcc-2.92.2 make (3.77):      okay          okay[4]\r
39 rem  cygwin compiled gmake 3.77:          fails[1,5]    fails[2,5]\r
40 rem  cygwin compiled gmake 3.78.1:        fails[5]      fails[2,5]\r
41 rem  cygwin compiled gmake 3.79.1:        fails[3,5]    fails[2?,5]\r
42 rem  cygwin compiled make 3.80:           okay[6]       fails?[7]\r
43 rem  cygwin compiled make 3.81:           fails         fails?[7]\r
44 rem  mingw32 compiled make 3.79.1:        okay          okay\r
45 rem  mingw32 compiled make 3.80:          okay          okay?[7]\r
46 rem  mingw32 compiled make 3.81:          okay          okay[8]\r
47 rem\r
48 rem [1] doesn't cope with makefiles with DOS line endings, so must mount\r
49 rem     emacs source with text!=binary.\r
50 rem [2] fails when needs to invoke shell commands; okay invoking gcc etc.\r
51 rem [3] requires LC_MESSAGES support to build; cannot build with early\r
52 rem     versions of cygwin.\r
53 rem [4] may fail on Windows 9X and Windows ME; if so, install Bash.\r
54 rem [5] fails when building leim due to the use of cygwin style paths.\r
55 rem     May work if building emacs without leim.\r
56 rem [6] need to uncomment 3 lines in nt/gmake.defs that invoke `cygpath';\r
57 rem     look for "cygpath" near line 85 of gmake.defs.\r
58 rem [7] not recommended; please report if you try this combination.\r
59 rem [8] tested only on Windows XP.\r
60 rem\r
62 if exist config.log del config.log\r
64 rem ----------------------------------------------------------------------\r
65 rem   See if the environment is large enough.  We need 43 (?) bytes.\r
66 set $foo$=123456789_123456789_123456789_123456789_123\r
67 if not "%$foo$%" == "123456789_123456789_123456789_123456789_123" goto SmallEnv\r
68 set $foo$=\r
70 rem ----------------------------------------------------------------------\r
71 rem   Make sure we are running in the nt subdir\r
72 if exist configure.bat goto start\r
73 echo You must run configure from the nt subdirectory.\r
74 goto end\r
76 :start\r
77 rem ----------------------------------------------------------------------\r
78 rem   Default settings.\r
79 set prefix=\r
80 set nodebug=N\r
81 set noopt=N\r
82 set enablechecking=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
92 set sep3=\r
93 set distfiles=\r
95 rem ----------------------------------------------------------------------\r
96 rem   Handle arguments.\r
97 :again\r
98 if "%1" == "-h" goto usage\r
99 if "%1" == "--help" goto usage\r
100 if "%1" == "--prefix" goto setprefix\r
101 if "%1" == "--with-gcc" goto withgcc\r
102 if "%1" == "--with-msvc" goto withmsvc\r
103 if "%1" == "--no-debug" goto nodebug\r
104 if "%1" == "--no-opt" goto noopt\r
105 if "%1" == "--enable-checking" goto enablechecking\r
106 if "%1" == "--profile" goto profile\r
107 if "%1" == "--no-cygwin" goto nocygwin\r
108 if "%1" == "--cflags" goto usercflags\r
109 if "%1" == "--ldflags" goto userldflags\r
110 if "%1" == "--without-png" goto withoutpng\r
111 if "%1" == "--without-jpeg" goto withoutjpeg\r
112 if "%1" == "--without-gif" goto withoutgif\r
113 if "%1" == "--without-tiff" goto withouttiff\r
114 if "%1" == "--without-xpm" goto withoutxpm\r
115 if "%1" == "--with-svg" goto withsvg\r
116 if "%1" == "--distfiles" goto distfiles\r
117 if "%1" == "" goto checkutils\r
119 :usage\r
120 echo Usage: configure [options]\r
121 echo Options:\r
122 echo.   --prefix PREFIX         install Emacs in directory PREFIX\r
123 echo.   --with-gcc              use GCC to compile Emacs\r
124 echo.   --with-msvc             use MSVC to compile Emacs\r
125 echo.   --no-debug              exclude debug info from executables\r
126 echo.   --no-opt                disable optimization\r
127 echo.   --enable-checking       enable checks and assertions\r
128 echo.   --profile               enable profiling\r
129 echo.   --no-cygwin             use -mno-cygwin option with GCC\r
130 echo.   --cflags FLAG           pass FLAG to compiler\r
131 echo.   --ldflags FLAG          pass FLAG to compiler when linking\r
132 echo.   --without-png           do not use PNG library even if it is installed\r
133 echo.   --without-jpeg          do not use JPEG library even if it is installed\r
134 echo.   --without-gif           do not use GIF library even if it is installed\r
135 echo.   --without-tiff          do not use TIFF library even if it is installed\r
136 echo.   --without-xpm           do not use XPM library even if it is installed\r
137 echo.   --with-svg              use the RSVG library (experimental)\r
138 echo.   --distfiles             path to files for make dist, e.g. libXpm.dll\r
139 goto end\r
141 rem ----------------------------------------------------------------------\r
143 :setprefix\r
144 shift\r
145 set prefix=%1\r
146 shift\r
147 goto again\r
149 rem ----------------------------------------------------------------------\r
151 :withgcc\r
152 set COMPILER=gcc\r
153 shift\r
154 goto again\r
156 rem ----------------------------------------------------------------------\r
158 :withmsvc\r
159 set COMPILER=cl\r
160 shift\r
161 goto again\r
163 rem ----------------------------------------------------------------------\r
165 :nodebug\r
166 set nodebug=Y\r
167 shift\r
168 goto again\r
170 rem ----------------------------------------------------------------------\r
172 :noopt\r
173 set noopt=Y\r
174 shift\r
175 goto again\r
177 rem ----------------------------------------------------------------------\r
179 :enablechecking\r
180 set enablechecking=Y\r
181 shift\r
182 goto again\r
184 rem ----------------------------------------------------------------------\r
186 :profile\r
187 set profile=Y\r
188 shift\r
189 goto again\r
191 rem ----------------------------------------------------------------------\r
193 :nocygwin\r
194 set nocygwin=Y\r
195 shift\r
196 goto again\r
198 rem ----------------------------------------------------------------------\r
200 :usercflags\r
201 shift\r
202 set usercflags=%usercflags%%sep1%%1\r
203 set sep1= %nothing%\r
204 shift\r
205 goto again\r
207 rem ----------------------------------------------------------------------\r
209 :userldflags\r
210 shift\r
211 set userldflags=%userldflags%%sep2%%1\r
212 set sep2= %nothing%\r
213 shift\r
214 goto again\r
216 rem ----------------------------------------------------------------------\r
218 :withoutpng\r
219 set pngsupport=N\r
220 set HAVE_PNG=\r
221 shift\r
222 goto again\r
224 rem ----------------------------------------------------------------------\r
226 :withoutjpeg\r
227 set jpegsupport=N\r
228 set HAVE_JPEG=\r
229 shift\r
230 goto again\r
232 rem ----------------------------------------------------------------------\r
234 :withoutgif\r
235 set gifsupport=N\r
236 set HAVE_GIF=\r
237 shift\r
238 goto again\r
240 rem ----------------------------------------------------------------------\r
242 :withouttiff\r
243 set tiffsupport=N\r
244 set HAVE_TIFF=\r
245 shift\r
246 goto again\r
248 rem ----------------------------------------------------------------------\r
250 :withoutxpm\r
251 set xpmsupport=N\r
252 set HAVE_XPM=\r
253 shift\r
254 goto again\r
256 :withsvg\r
257 shift\r
258 set svgsupport=Y\r
259 goto again\r
261 rem ----------------------------------------------------------------------\r
263 :distfiles\r
264 set HAVE_DISTFILES=1\r
265 shift\r
266 set distfiles=%distfiles%%sep3%%1\r
267 set sep3= %nothing%\r
268 shift\r
269 goto again\r
271 rem ----------------------------------------------------------------------\r
272 rem    Check that necessary utilities (cp and rm) are present.\r
274 :checkutils\r
275 echo Checking for 'cp'...\r
276 cp configure.bat junk.bat\r
277 if not exist junk.bat goto needcp\r
278 echo Checking for 'rm'...\r
279 rm junk.bat\r
280 if exist junk.bat goto needrm\r
281 goto checkcompiler\r
283 :needcp\r
284 echo You need 'cp' (the Unix file copy program) to build Emacs.\r
285 goto end\r
287 :needrm\r
288 del junk.bat\r
289 echo You need 'rm' (the Unix file delete program) to build Emacs.\r
290 goto end\r
292 rem ----------------------------------------------------------------------\r
293 rem   Auto-detect compiler if not specified, and validate GCC if chosen.\r
295 :checkcompiler\r
296 if (%COMPILER%)==(cl) goto compilercheckdone\r
297 if (%COMPILER%)==(gcc) goto checkgcc\r
299 echo Checking whether 'gcc' is available...\r
300 echo main(){} >junk.c\r
301 gcc -c junk.c\r
302 if exist junk.o goto checkgcc\r
304 echo Checking whether 'cl' is available...\r
305 cl -nologo -c junk.c\r
306 if exist junk.obj goto clOK\r
307 goto nocompiler\r
309 :checkgcc\r
310 if exist junk.o del junk.o\r
311 Rem WARNING -- COMMAND.COM on some systems only looks at the first\r
312 Rem            8 characters of a label.  So do NOT be tempted to change\r
313 Rem            chkapi* into something fancier like checkw32api\r
314 Rem You HAVE been warned!\r
315 if (%nocygwin%) == (Y) goto chkapiN\r
316 echo Checking whether gcc requires '-mno-cygwin'...\r
317 echo #include "cygwin/version.h" >junk.c\r
318 echo main(){} >>junk.c\r
319 echo gcc -c junk.c >>config.log\r
320 gcc -c junk.c >>config.log 2>&1\r
321 if not exist junk.o goto chkapi\r
322 echo gcc -mno-cygwin -c junk.c >>config.log\r
323 gcc -mno-cygwin -c junk.c >>config.log 2>&1\r
324 if exist junk.o set nocygwin=Y\r
326 :chkapi\r
327 echo The failed program was: >>config.log\r
328 type junk.c >>config.log\r
330 :chkapiN\r
331 rm -f junk.c junk.o\r
332 rem ----------------------------------------------------------------------\r
333 rem   Older versions of the Windows API headers either don't have any of\r
334 rem   the IMAGE_xxx definitions (the headers that come with Cygwin b20.1\r
335 rem   are like this), or have a typo in the definition of\r
336 rem   IMAGE_FIRST_SECTION (the headers with gcc/mingw32 2.95 have this\r
337 rem   problem).  The gcc/mingw32 2.95.2 headers are okay, as are distros\r
338 rem   of w32api-xxx.zip from Anders Norlander since 1999-11-18 at least.\r
339 rem   Beginning with Emacs 23, we need usp10.h.\r
340 rem\r
341 echo Checking whether W32 API headers are too old...\r
342 echo #include "windows.h" >junk.c\r
343 echo #include "usp10.h" >>junk.c\r
344 echo test(PIMAGE_NT_HEADERS pHeader) >>junk.c\r
345 echo {PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader);} >>junk.c\r
346 if (%nocygwin%) == (Y) goto chkapi1\r
347 set cf=%usercflags%\r
348 goto chkapi2\r
350 :chkapi1\r
351 set cf=%usercflags% -mno-cygwin\r
353 :chkapi2\r
354 echo on\r
355 gcc %cf% -c junk.c\r
356 @echo off\r
357 @echo gcc %cf% -c junk.c >>config.log\r
358 gcc %cf% -c junk.c >>config.log 2>&1\r
359 set cf=\r
360 if exist junk.o goto chkuser\r
361 echo The failed program was: >>config.log\r
362 type junk.c >>config.log\r
363 goto nocompiler\r
365 :chkuser\r
366 rm -f junk.o\r
367 echo int main (int argc, char *argv[]) {>junk.c\r
368 echo char *usercflags = "%usercflags%";>>junk.c\r
369 echo }>>junk.c\r
370 echo gcc -Werror -c junk.c >>config.log\r
371 gcc -Werror -c junk.c >>config.log 2>&1\r
372 if exist junk.o goto gccOk\r
373 echo.\r
374 echo Error in --cflags argument: %usercflags%\r
375 echo Backslashes and quotes cannot be used with --cflags.  Please use forward\r
376 echo slashes for filenames and paths (e.g. when passing directories to -I).\r
377 rm -f junk.c\r
378 goto end\r
380 :nocompiler\r
381 echo.\r
382 echo Configure failed.\r
383 echo To configure Emacs for Windows, you need to have either\r
384 echo gcc-2.95 or later with Mingw32 and the W32 API headers,\r
385 echo or MSVC 2.x or later.\r
386 del junk.c\r
387 goto end\r
389 :gccOk\r
390 set COMPILER=gcc\r
391 echo Using 'gcc'\r
392 rm -f junk.c junk.o\r
393 Rem It is not clear what GCC version began supporting -mtune\r
394 Rem and pentium4 on x86, so check this explicitly.\r
395 echo main(){} >junk.c\r
396 echo gcc -c -O2 -mtune=pentium4 junk.c >>config.log\r
397 gcc -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1\r
398 if not errorlevel 1 goto gccMtuneOk\r
399 echo The failed program was: >>config.log\r
400 type junk.c >>config.log\r
401 set mf=-mcpu=i686\r
402 rm -f junk.c junk.o\r
403 goto gccdebug\r
405 :gccMtuneOk\r
406 echo GCC supports -mtune=pentium4 >>config.log\r
407 set mf=-mtune=pentium4\r
408 rm -f junk.c junk.o\r
410 :gccdebug\r
411 rem Check for DWARF-2 debug info support, else default to stabs\r
412 echo main(){} >junk.c\r
413 echo gcc -c -gdwarf-2 -g3 junk.c >>config.log\r
414 gcc -c -gdwarf-2 -g3 junk.c >>config.log 2>&1\r
415 if not errorlevel 1 goto gccdwarf\r
416 echo The failed program was: >>config.log\r
417 type junk.c >>config.log\r
418 set dbginfo=-gstabs+\r
419 rm -f junk.c junk.o\r
420 goto compilercheckdone\r
422 :gccdwarf\r
423 echo GCC supports DWARF-2 >>config.log\r
424 set dbginfo=-gdwarf-2 -g3\r
425 rm -f junk.c junk.o\r
426 goto compilercheckdone\r
428 :clOk\r
429 set COMPILER=cl\r
430 rm -f junk.c junk.obj\r
431 echo Using 'MSVC'\r
433 :compilercheckdone\r
435 rem ----------------------------------------------------------------------\r
436 rem   Check for external image libraries. Since they are loaded\r
437 rem   dynamically, the libraries themselves do not need to be present\r
438 rem   at compile time, but the header files are required.\r
440 set mingwflag=\r
442 if (%nocygwin%) == (N) goto flagsOK\r
443 set mingwflag=-mno-cygwin\r
445 :flagsOK\r
447 if (%pngsupport%) == (N) goto pngDone\r
449 echo Checking for libpng...\r
450 echo #include "png.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 havePng\r
457 echo ...png.h not found, building without PNG support.\r
458 echo The failed program was: >>config.log\r
459 type junk.c >>config.log\r
460 set HAVE_PNG=\r
461 goto :pngDone\r
463 :havePng\r
464 echo ...PNG header available, building with PNG support.\r
465 set HAVE_PNG=1\r
467 :pngDone\r
468 rm -f junk.c junk.obj\r
470 if (%jpegsupport%) == (N) goto jpegDone\r
472 echo Checking for jpeg-6b...\r
473 echo #include "jconfig.h" >junk.c\r
474 echo main (){} >>junk.c\r
475 rem   -o option is ignored with cl, but allows result to be consistent.\r
476 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
477 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
478 if exist junk.obj goto haveJpeg\r
480 echo ...jconfig.h not found, building without JPEG support.\r
481 echo The failed program was: >>config.log\r
482 type junk.c >>config.log\r
483 set HAVE_JPEG=\r
484 goto :jpegDone\r
486 :haveJpeg\r
487 echo ...JPEG header available, building with JPEG support.\r
488 set HAVE_JPEG=1\r
490 :jpegDone\r
491 rm -f junk.c junk.obj\r
493 if (%gifsupport%) == (N) goto gifDone\r
495 echo Checking for libgif...\r
496 echo #include "gif_lib.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 haveGif\r
503 echo ...gif_lib.h not found, building without GIF support.\r
504 echo The failed program was: >>config.log\r
505 type junk.c >>config.log\r
506 set HAVE_GIF=\r
507 goto :gifDone\r
509 :haveGif\r
510 echo ...GIF header available, building with GIF support.\r
511 set HAVE_GIF=1\r
513 :gifDone\r
514 rm -f junk.c junk.obj\r
516 if (%tiffsupport%) == (N) goto tiffDone\r
518 echo Checking for tiff...\r
519 echo #include "tiffio.h" >junk.c\r
520 echo main (){} >>junk.c\r
521 rem   -o option is ignored with cl, but allows result to be consistent.\r
522 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
523 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
524 if exist junk.obj goto haveTiff\r
526 echo ...tiffio.h not found, building without TIFF support.\r
527 echo The failed program was: >>config.log\r
528 type junk.c >>config.log\r
529 set HAVE_TIFF=\r
530 goto :tiffDone\r
532 :haveTiff\r
533 echo ...TIFF header available, building with TIFF support.\r
534 set HAVE_TIFF=1\r
536 :tiffDone\r
537 rm -f junk.c junk.obj\r
539 if (%xpmsupport%) == (N) goto xpmDone\r
541 echo Checking for libXpm...\r
542 echo #define FOR_MSW 1 >junk.c\r
543 echo #include "X11/xpm.h" >>junk.c\r
544 echo main (){} >>junk.c\r
545 rem   -o option is ignored with cl, but allows result to be consistent.\r
546 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
547 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
548 if exist junk.obj goto haveXpm\r
550 echo ...X11/xpm.h not found, building without XPM support.\r
551 echo The failed program was: >>config.log\r
552 type junk.c >>config.log\r
553 set HAVE_XPM=\r
554 goto :xpmDone\r
556 :haveXpm\r
557 echo ...XPM header available, building with XPM support.\r
558 set HAVE_XPM=1\r
560 :xpmDone\r
561 rm -f junk.c junk.obj\r
563 if not (%svgsupport%) == (Y) goto :svgDone\r
564 echo Checking for librsvg...\r
565 echo #include "librsvg/rsvg.h" >junk.c\r
566 echo main (){} >>junk.c\r
567 rem   -o option is ignored with cl, but allows result to be consistent.\r
568 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
569 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
570 if exist junk.obj goto haveSvg\r
572 echo ...librsvg/rsvg.h or dependencies not found, building without SVG support.\r
573 echo The failed program was: >>config.log\r
574 type junk.c >>config.log\r
575 set HAVE_RSVG=\r
576 goto :svgDone\r
578 :haveSvg\r
579 echo ...librsvg header available, building with SVG support (EXPERIMENTAL).\r
580 set HAVE_RSVG=1\r
582 :svgDone\r
583 rm -f junk.c junk.obj junk.err junk.out\r
585 rem Any distfiles provided for building distribution? If no, we're done.\r
586 if "(%HAVE_DISTFILES%)"=="()" goto :distFilesDone\r
588 rem Any arguments to --distfiles specified? If no, we're done.\r
589 if not "%distfiles%"=="" goto :checkDistFiles\r
590 set distFilesOk=0\r
591 echo No arguments specified for option --distfiles!\r
592 goto distfilesDone\r
594 :checkDistFiles\r
595 echo Checking for distfiles...\r
596 rem Check if all specified distfiles exist\r
597 set fileNotFound=\r
598 for %%d in (%distfiles%) do if not exist %%d set fileNotFound=%%d\r
599 if not "%fileNotFound%"=="" goto distFilesNotFound\r
601 set distFilesOK=1\r
602 echo ...all distfiles found.\r
603 goto :distFilesDone\r
605 :distFilesNotFound\r
606 set distFilesOk=0\r
607 echo ...%fileNotFound% not found.\r
608 set distfiles=\r
609 goto :distfilesDone\r
611 :distFilesDone\r
612 set fileNotFound=\r
614 rem ----------------------------------------------------------------------\r
616 :genmakefiles\r
617 echo Generating makefiles\r
618 if %COMPILER% == gcc set MAKECMD=gmake\r
619 if %COMPILER% == cl set MAKECMD=nmake\r
621 rem   Pass on chosen settings to makefiles.\r
622 rem   NB. Be very careful to not have a space before redirection symbols\r
623 rem   except when there is a preceding digit, when a space is required.\r
624 rem\r
625 echo # Start of settings from configure.bat >config.settings\r
626 echo COMPILER=%COMPILER%>>config.settings\r
627 if not "(%mf%)" == "()" echo MCPU_FLAG=%mf%>>config.settings\r
628 if not "(%dbginfo%)" == "()" echo DEBUG_INFO=%dbginfo%>>config.settings\r
629 if (%nodebug%) == (Y) echo NODEBUG=1 >>config.settings\r
630 if (%noopt%) == (Y) echo NOOPT=1 >>config.settings\r
631 if (%enablechecking%) == (Y) echo ENABLECHECKS=1 >>config.settings\r
632 if (%profile%) == (Y) echo PROFILE=1 >>config.settings\r
633 if (%nocygwin%) == (Y) echo NOCYGWIN=1 >>config.settings\r
634 if not "(%prefix%)" == "()" echo INSTALL_DIR=%prefix%>>config.settings\r
635 if not "(%distfiles%)" == "()" echo DIST_FILES=%distfiles%>>config.settings\r
636 rem We go thru docflags because usercflags could be "-DFOO=bar" -something\r
637 rem and the if command cannot cope with this\r
638 for %%v in (%usercflags%) do if not (%%v)==() set docflags=Y\r
639 if (%docflags%)==(Y) echo USER_CFLAGS=%usercflags%>>config.settings\r
640 for %%v in (%userldflags%) do if not (%%v)==() set doldflags=Y\r
641 if (%doldflags%)==(Y) echo USER_LDFLAGS=%userldflags%>>config.settings\r
642 echo # End of settings from configure.bat>>config.settings\r
643 echo. >>config.settings\r
645 copy config.nt config.tmp\r
646 echo. >>config.tmp\r
647 echo /* Start of settings from configure.bat.  */ >>config.tmp\r
648 rem   We write USER_CFLAGS and USER_LDFLAGS starting with a space to simplify\r
649 rem   processing of compiler options in w32.c:get_emacs_configuration_options\r
650 if (%docflags%) == (Y) echo #define USER_CFLAGS " %usercflags%">>config.tmp\r
651 if (%doldflags%) == (Y) echo #define USER_LDFLAGS " %userldflags%">>config.tmp\r
652 if (%profile%) == (Y) echo #define PROFILING 1 >>config.tmp\r
653 if not "(%HAVE_PNG%)" == "()" echo #define HAVE_PNG 1 >>config.tmp\r
654 if not "(%HAVE_JPEG%)" == "()" echo #define HAVE_JPEG 1 >>config.tmp\r
655 if not "(%HAVE_GIF%)" == "()" echo #define HAVE_GIF 1 >>config.tmp\r
656 if not "(%HAVE_TIFF%)" == "()" echo #define HAVE_TIFF 1 >>config.tmp\r
657 if not "(%HAVE_XPM%)" == "()" echo #define HAVE_XPM 1 >>config.tmp\r
658 if "(%HAVE_RSVG%)" == "(1)" echo #define HAVE_RSVG 1 >>config.tmp\r
660 echo /* End of settings from configure.bat.  */ >>config.tmp\r
662 Rem See if fc.exe returns a meaningful exit status.  If it does, we\r
663 Rem might as well avoid unnecessary overwriting of config.h and epaths.h,\r
664 Rem since this forces recompilation of every source file.\r
665 if exist foo.bar del foo.bar\r
666 fc /b foo.bar foo.bar >nul 2>&1\r
667 if not errorlevel 2 goto doCopy\r
668 fc /b config.tmp ..\src\config.h >nul 2>&1\r
669 if errorlevel 1 goto doCopy\r
670 fc /b paths.h ..\src\epaths.h >nul 2>&1\r
671 if not errorlevel 1 goto dontCopy\r
673 :doCopy\r
674 copy config.tmp ..\src\config.h\r
675 copy paths.h ..\src\epaths.h\r
677 :dontCopy\r
678 if exist config.tmp del config.tmp\r
679 copy /b config.settings+%MAKECMD%.defs+..\nt\makefile.w32-in ..\nt\makefile\r
680 if exist ..\admin\unidata copy /b config.settings+%MAKECMD%.defs+..\admin\unidata\makefile.w32-in ..\admin\unidata\makefile\r
681 copy /b config.settings+%MAKECMD%.defs+..\lib-src\makefile.w32-in ..\lib-src\makefile\r
682 copy /b config.settings+%MAKECMD%.defs+..\lib\makefile.w32-in ..\lib\makefile\r
683 copy /b config.settings+%MAKECMD%.defs+..\src\makefile.w32-in ..\src\makefile\r
684 copy /b config.settings+%MAKECMD%.defs+..\doc\emacs\makefile.w32-in ..\doc\emacs\makefile\r
685 copy /b config.settings+%MAKECMD%.defs+..\doc\misc\makefile.w32-in ..\doc\misc\makefile\r
686 copy /b config.settings+%MAKECMD%.defs+..\doc\lispref\makefile.w32-in ..\doc\lispref\makefile\r
687 copy /b config.settings+%MAKECMD%.defs+..\doc\lispintro\makefile.w32-in ..\doc\lispintro\makefile\r
688 if exist ..\lisp\makefile rm -f ../lisp/[Mm]akefile\r
689 copy /b config.settings+%MAKECMD%.defs+..\lisp\makefile.w32-in ..\lisp\makefile\r
690 rem   Use the default (no-op) Makefile.in if the nt version is not present.\r
691 if exist ..\leim\makefile.w32-in copy /b config.settings+%MAKECMD%.defs+..\leim\makefile.w32-in ..\leim\makefile\r
692 if not exist ..\leim\makefile.w32-in copy /b config.settings+%MAKECMD%.defs+..\leim\Makefile.in ..\leim\makefile\r
693 del config.settings\r
695 Rem Some people use WinZip which doesn't create empty directories!\r
696 if not exist ..\site-lisp\nul mkdir ..\site-lisp\\r
697 Rem Update subdirs.el only if it is different or fc.exe doesn't work.\r
698 if exist foo.bar del foo.bar\r
699 fc /b foo.bar foo.bar >nul 2>&1\r
700 if not errorlevel 2 goto doUpdateSubdirs\r
701 fc /b subdirs.el ..\site-lisp\subdirs.el >nul 2>&1\r
702 if not errorlevel 1 goto dontUpdateSubdirs\r
704 :doUpdateSubdirs\r
705 if exist ..\site-lisp\subdirs.el del ..\site-lisp\subdirs.el\r
706 copy subdirs.el ..\site-lisp\subdirs.el\r
708 :dontUpdateSubdirs\r
709 echo.\r
711 rem check that we have all the libraries we need.\r
712 set libsOK=1\r
714 if not "(%HAVE_XPM%)" == "()" goto checkpng\r
715 if (%xpmsupport%) == (N) goto checkpng\r
716  set libsOK=0\r
717  echo XPM support is missing. It is required for color icons in the toolbar.\r
718  echo   Install libXpm development files or use --without-xpm\r
720 :checkpng\r
721 if not "(%HAVE_PNG%)" == "()" goto checkjpeg\r
722 if (%pngsupport%) == (N) goto checkjpeg\r
723  set libsOK=0\r
724  echo PNG support is missing.\r
725  echo   Install libpng development files or use --without-png\r
727 :checkjpeg\r
728 if not "(%HAVE_JPEG%)" == "()" goto checktiff\r
729 if (%jpegsupport%) == (N) goto checktiff\r
730  set libsOK=0\r
731  echo JPEG support is missing.\r
732  echo   Install jpeg development files or use --without-jpeg\r
734 :checktiff\r
735 if not "(%HAVE_TIFF%)" == "()" goto checkgif\r
736 if (%tiffsupport%) == (N) goto checkgif\r
737  set libsOK=0\r
738  echo TIFF support is missing.\r
739  echo   Install libtiff development files or use --without-tiff\r
741 :checkgif\r
742 if not "(%HAVE_GIF%)" == "()" goto checkdistfiles\r
743 if (%gifsupport%) == (N) goto checkdistfiles\r
744  set libsOK=0\r
745  echo GIF support is missing.\r
746  echo   Install giflib or libungif development files or use --without-gif\r
748 :checkdistfiles\r
749 if "(%HAVE_DISTFILES%)" == "()" goto donelibchecks\r
750 if (%distFilesOk%) == (1) goto donelibchecks\r
751 echo.\r
752 echo Files specified with option --distfiles could not be found.\r
753 echo   Fix these issues before running make dist\r
755 :donelibchecks\r
756 if (%libsOK%) == (1) goto success\r
757 echo.\r
758 echo Important libraries are missing. Fix these issues before running make.\r
759 goto end\r
761 :success\r
762 echo Emacs successfully configured.\r
763 echo Emacs successfully configured. >>config.log\r
764 if (%MAKECMD%) == (gmake) set MAKECMD=make\r
765 echo Run `%MAKECMD%' to build, then run `%MAKECMD% install' to install.\r
766 goto end\r
768 :SmallEnv\r
769 echo Your environment size is too small.  Please enlarge it and rerun configure.\r
770 echo For example, type "command.com /e:2048" to have 2048 bytes available.\r
771 set $foo$=\r
773 :end\r
774 set prefix=\r
775 set nodebug=\r
776 set noopt=\r
777 set enablechecking=\r
778 set profile=\r
779 set nocygwin=\r
780 set COMPILER=\r
781 set MAKECMD=\r
782 set usercflags=\r
783 set docflags=\r
784 set userldflags=\r
785 set doldflags=\r
786 set mingwflag=\r
787 set mf=\r
788 set distfiles=\r
789 set HAVE_DISTFILES=\r
790 set distFilesOk=\r
791 set pngsupport=\r
792 set jpegsupport=\r
793 set gifsupport=\r
794 set tiffsupport=\r
795 set xpmsupport=\r
796 set svgsupport=\r
797 set libsOK=\r
798 set HAVE_GIF=\r
799 set HAVE_JPEG=\r
800 set HAVE_PNG=\r
801 set HAVE_TIFF=\r
802 set HAVE_XPM=\r
803 set dbginfo=\r