Nuke arch-tags.
[emacs.git] / nt / configure.bat
blob9bdae8e02c9a0745a446a716198a183a93211290
1 @echo off\r
2 rem   ----------------------------------------------------------------------\r
3 rem   Configuration script for MS Windows operating systems\r
4 rem   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,\r
5 rem      2006, 2007, 2008, 2009, 2010, 2011 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, NT or later\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 enablechecking=N\r
84 set profile=N\r
85 set nocygwin=N\r
86 set COMPILER=\r
87 set usercflags=\r
88 set docflags=\r
89 set userldflags=\r
90 set doldflags=\r
91 set sep1=\r
92 set sep2=\r
93 set sep3=\r
94 set distfiles=\r
96 rem ----------------------------------------------------------------------\r
97 rem   Handle arguments.\r
98 :again\r
99 if "%1" == "-h" goto usage\r
100 if "%1" == "--help" goto usage\r
101 if "%1" == "--prefix" goto setprefix\r
102 if "%1" == "--with-gcc" goto withgcc\r
103 if "%1" == "--with-msvc" goto withmsvc\r
104 if "%1" == "--no-debug" goto nodebug\r
105 if "%1" == "--no-opt" goto noopt\r
106 if "%1" == "--enable-checking" goto enablechecking\r
107 if "%1" == "--profile" goto profile\r
108 if "%1" == "--no-cygwin" goto nocygwin\r
109 if "%1" == "--cflags" goto usercflags\r
110 if "%1" == "--ldflags" goto userldflags\r
111 if "%1" == "--without-png" goto withoutpng\r
112 if "%1" == "--without-jpeg" goto withoutjpeg\r
113 if "%1" == "--without-gif" goto withoutgif\r
114 if "%1" == "--without-tiff" goto withouttiff\r
115 if "%1" == "--without-xpm" goto withoutxpm\r
116 if "%1" == "--with-svg" goto withsvg\r
117 if "%1" == "--distfiles" goto distfiles\r
118 if "%1" == "" goto checkutils\r
120 :usage\r
121 echo Usage: configure [options]\r
122 echo Options:\r
123 echo.   --prefix PREFIX         install Emacs in directory PREFIX\r
124 echo.   --with-gcc              use GCC to compile Emacs\r
125 echo.   --with-msvc             use MSVC to compile Emacs\r
126 echo.   --no-debug              exclude debug info from executables\r
127 echo.   --no-opt                disable optimization\r
128 echo.   --enable-checking       enable checks and assertions\r
129 echo.   --profile               enable profiling\r
130 echo.   --no-cygwin             use -mno-cygwin option with GCC\r
131 echo.   --cflags FLAG           pass FLAG to compiler\r
132 echo.   --ldflags FLAG          pass FLAG to compiler when linking\r
133 echo.   --without-png           do not use PNG library even if it is installed\r
134 echo.   --without-jpeg          do not use JPEG library even if it is installed\r
135 echo.   --without-gif           do not use GIF library even if it is installed\r
136 echo.   --without-tiff          do not use TIFF library even if it is installed\r
137 echo.   --without-xpm           do not use XPM library even if it is installed\r
138 echo.   --with-svg              use the RSVG library (experimental)\r
139 echo.   --distfiles             path to files for make dist, e.g. libXpm.dll\r
140 goto end\r
142 rem ----------------------------------------------------------------------\r
144 :setprefix\r
145 shift\r
146 set prefix=%1\r
147 shift\r
148 goto again\r
150 rem ----------------------------------------------------------------------\r
152 :withgcc\r
153 set COMPILER=gcc\r
154 shift\r
155 goto again\r
157 rem ----------------------------------------------------------------------\r
159 :withmsvc\r
160 set COMPILER=cl\r
161 shift\r
162 goto again\r
164 rem ----------------------------------------------------------------------\r
166 :nodebug\r
167 set nodebug=Y\r
168 shift\r
169 goto again\r
171 rem ----------------------------------------------------------------------\r
173 :noopt\r
174 set noopt=Y\r
175 shift\r
176 goto again\r
178 rem ----------------------------------------------------------------------\r
180 :enablechecking\r
181 set enablechecking=Y\r
182 shift\r
183 goto again\r
185 rem ----------------------------------------------------------------------\r
187 :profile\r
188 set profile=Y\r
189 shift\r
190 goto again\r
192 rem ----------------------------------------------------------------------\r
194 :nocygwin\r
195 set nocygwin=Y\r
196 shift\r
197 goto again\r
199 rem ----------------------------------------------------------------------\r
201 :usercflags\r
202 shift\r
203 set usercflags=%usercflags%%sep1%%1\r
204 set sep1= %nothing%\r
205 shift\r
206 goto again\r
208 rem ----------------------------------------------------------------------\r
210 :userldflags\r
211 shift\r
212 set userldflags=%userldflags%%sep2%%1\r
213 set sep2= %nothing%\r
214 shift\r
215 goto again\r
217 rem ----------------------------------------------------------------------\r
219 :withoutpng\r
220 set pngsupport=N\r
221 set HAVE_PNG=\r
222 shift\r
223 goto again\r
225 rem ----------------------------------------------------------------------\r
227 :withoutjpeg\r
228 set jpegsupport=N\r
229 set HAVE_JPEG=\r
230 shift\r
231 goto again\r
233 rem ----------------------------------------------------------------------\r
235 :withoutgif\r
236 set gifsupport=N\r
237 set HAVE_GIF=\r
238 shift\r
239 goto again\r
241 rem ----------------------------------------------------------------------\r
243 :withouttiff\r
244 set tiffsupport=N\r
245 set HAVE_TIFF=\r
246 shift\r
247 goto again\r
249 rem ----------------------------------------------------------------------\r
251 :withoutxpm\r
252 set xpmsupport=N\r
253 set HAVE_XPM=\r
254 shift\r
255 goto again\r
257 :withsvg\r
258 shift\r
259 set svgsupport=Y\r
260 goto again\r
262 rem ----------------------------------------------------------------------\r
264 :distfiles\r
265 set HAVE_DISTFILES=1\r
266 shift\r
267 set distfiles=%distfiles%%sep3%%1\r
268 set sep3= %nothing%\r
269 shift\r
270 goto again\r
272 rem ----------------------------------------------------------------------\r
273 rem    Check that necessary utilities (cp and rm) are present.\r
275 :checkutils\r
276 echo Checking for 'cp'...\r
277 cp configure.bat junk.bat\r
278 if not exist junk.bat goto needcp\r
279 echo Checking for 'rm'...\r
280 rm junk.bat\r
281 if exist junk.bat goto needrm\r
282 goto checkcompiler\r
284 :needcp\r
285 echo You need 'cp' (the Unix file copy program) to build Emacs.\r
286 goto end\r
288 :needrm\r
289 del junk.bat\r
290 echo You need 'rm' (the Unix file delete program) to build Emacs.\r
291 goto end\r
293 rem ----------------------------------------------------------------------\r
294 rem   Auto-detect compiler if not specified, and validate GCC if chosen.\r
296 :checkcompiler\r
297 if (%COMPILER%)==(cl) goto compilercheckdone\r
298 if (%COMPILER%)==(gcc) goto checkgcc\r
300 echo Checking whether 'gcc' is available...\r
301 echo main(){} >junk.c\r
302 gcc -c junk.c\r
303 if exist junk.o goto checkgcc\r
305 echo Checking whether 'cl' is available...\r
306 cl -nologo -c junk.c\r
307 if exist junk.obj goto clOK\r
308 goto nocompiler\r
310 :checkgcc\r
311 if exist junk.o del junk.o\r
312 Rem WARNING -- COMMAND.COM on some systems only looks at the first\r
313 Rem            8 characters of a label.  So do NOT be tempted to change\r
314 Rem            chkapi* into something fancier like checkw32api\r
315 Rem You HAVE been warned!\r
316 if (%nocygwin%) == (Y) goto chkapiN\r
317 echo Checking whether gcc requires '-mno-cygwin'...\r
318 echo #include "cygwin/version.h" >junk.c\r
319 echo main(){} >>junk.c\r
320 echo gcc -c junk.c >>config.log\r
321 gcc -c junk.c >>config.log 2>&1\r
322 if not exist junk.o goto chkapi\r
323 echo gcc -mno-cygwin -c junk.c >>config.log\r
324 gcc -mno-cygwin -c junk.c >>config.log 2>&1\r
325 if exist junk.o set nocygwin=Y\r
327 :chkapi\r
328 echo The failed program was: >>config.log\r
329 type junk.c >>config.log\r
331 :chkapiN\r
332 rm -f junk.c junk.o\r
333 rem ----------------------------------------------------------------------\r
334 rem   Older versions of the Windows API headers either don't have any of\r
335 rem   the IMAGE_xxx definitions (the headers that come with Cygwin b20.1\r
336 rem   are like this), or have a typo in the definition of\r
337 rem   IMAGE_FIRST_SECTION (the headers with gcc/mingw32 2.95 have this\r
338 rem   problem).  The gcc/mingw32 2.95.2 headers are okay, as are distros\r
339 rem   of w32api-xxx.zip from Anders Norlander since 1999-11-18 at least.\r
340 rem   Beginning with Emacs 23, we need usp10.h.\r
341 rem\r
342 echo Checking whether W32 API headers are too old...\r
343 echo #include "windows.h" >junk.c\r
344 echo #include "usp10.h" >>junk.c\r
345 echo test(PIMAGE_NT_HEADERS pHeader) >>junk.c\r
346 echo {PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader);} >>junk.c\r
347 if (%nocygwin%) == (Y) goto chkapi1\r
348 set cf=%usercflags%\r
349 goto chkapi2\r
351 :chkapi1\r
352 set cf=%usercflags% -mno-cygwin\r
354 :chkapi2\r
355 echo on\r
356 gcc %cf% -c junk.c\r
357 @echo off\r
358 @echo gcc %cf% -c junk.c >>config.log\r
359 gcc %cf% -c junk.c >>config.log 2>&1\r
360 set cf=\r
361 if exist junk.o goto chkuser\r
362 echo The failed program was: >>config.log\r
363 type junk.c >>config.log\r
364 goto nocompiler\r
366 :chkuser\r
367 rm -f junk.o\r
368 echo int main (int argc, char *argv[]) {>junk.c\r
369 echo char *usercflags = "%usercflags%";>>junk.c\r
370 echo }>>junk.c\r
371 echo gcc -Werror -c junk.c >>config.log\r
372 gcc -Werror -c junk.c >>config.log 2>&1\r
373 if exist junk.o goto gccOk\r
374 echo.\r
375 echo Error in --cflags argument: %usercflags%\r
376 echo Backslashes and quotes cannot be used with --cflags.  Please use forward\r
377 echo slashes for filenames and paths (e.g. when passing directories to -I).\r
378 rm -f junk.c\r
379 goto end\r
381 :nocompiler\r
382 echo.\r
383 echo Configure failed.\r
384 echo To configure Emacs for Windows, you need to have either\r
385 echo gcc-2.95 or later with Mingw32 and the W32 API headers,\r
386 echo or MSVC 2.x or later.\r
387 del junk.c\r
388 goto end\r
390 :gccOk\r
391 set COMPILER=gcc\r
392 echo Using 'gcc'\r
393 rm -f junk.c junk.o\r
394 Rem It is not clear what GCC version began supporting -mtune\r
395 Rem and pentium4 on x86, so check this explicitly.\r
396 echo main(){} >junk.c\r
397 echo gcc -c -O2 -mtune=pentium4 junk.c >>config.log\r
398 gcc -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1\r
399 if not errorlevel 1 goto gccMtuneOk\r
400 echo The failed program was: >>config.log\r
401 type junk.c >>config.log\r
402 set mf=-mcpu=i686\r
403 rm -f junk.c junk.o\r
404 goto gccdebug\r
406 :gccMtuneOk\r
407 echo GCC supports -mtune=pentium4 >>config.log\r
408 set mf=-mtune=pentium4\r
409 rm -f junk.c junk.o\r
411 :gccdebug\r
412 rem Check for DWARF-2 debug info support, else default to stabs\r
413 echo main(){} >junk.c\r
414 echo gcc -c -gdwarf-2 -g3 junk.c >>config.log\r
415 gcc -c -gdwarf-2 -g3 junk.c >>config.log 2>&1\r
416 if not errorlevel 1 goto gccdwarf\r
417 echo The failed program was: >>config.log\r
418 type junk.c >>config.log\r
419 set dbginfo=-gstabs+\r
420 rm -f junk.c junk.o\r
421 goto compilercheckdone\r
423 :gccdwarf\r
424 echo GCC supports DWARF-2 >>config.log\r
425 set dbginfo=-gdwarf-2 -g3\r
426 rm -f junk.c junk.o\r
427 goto compilercheckdone\r
429 :clOk\r
430 set COMPILER=cl\r
431 rm -f junk.c junk.obj\r
432 echo Using 'MSVC'\r
434 :compilercheckdone\r
436 rem ----------------------------------------------------------------------\r
437 rem   Check for external image libraries. Since they are loaded\r
438 rem   dynamically, the libraries themselves do not need to be present\r
439 rem   at compile time, but the header files are required.\r
441 set mingwflag=\r
443 if (%nocygwin%) == (N) goto flagsOK\r
444 set mingwflag=-mno-cygwin\r
446 :flagsOK\r
448 if (%pngsupport%) == (N) goto pngDone\r
450 echo Checking for libpng...\r
451 echo #include "png.h" >junk.c\r
452 echo main (){} >>junk.c\r
453 rem   -o option is ignored with cl, but allows result to be consistent.\r
454 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
455 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
456 if exist junk.obj goto havePng\r
458 echo ...png.h not found, building without PNG support.\r
459 echo The failed program was: >>config.log\r
460 type junk.c >>config.log\r
461 set HAVE_PNG=\r
462 goto :pngDone\r
464 :havePng\r
465 echo ...PNG header available, building with PNG support.\r
466 set HAVE_PNG=1\r
468 :pngDone\r
469 rm -f junk.c junk.obj\r
471 if (%jpegsupport%) == (N) goto jpegDone\r
473 echo Checking for jpeg-6b...\r
474 echo #include "jconfig.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 haveJpeg\r
481 echo ...jconfig.h not found, building without JPEG support.\r
482 echo The failed program was: >>config.log\r
483 type junk.c >>config.log\r
484 set HAVE_JPEG=\r
485 goto :jpegDone\r
487 :haveJpeg\r
488 echo ...JPEG header available, building with JPEG support.\r
489 set HAVE_JPEG=1\r
491 :jpegDone\r
492 rm -f junk.c junk.obj\r
494 if (%gifsupport%) == (N) goto gifDone\r
496 echo Checking for libgif...\r
497 echo #include "gif_lib.h" >junk.c\r
498 echo main (){} >>junk.c\r
499 rem   -o option is ignored with cl, but allows result to be consistent.\r
500 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
501 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
502 if exist junk.obj goto haveGif\r
504 echo ...gif_lib.h not found, building without GIF support.\r
505 echo The failed program was: >>config.log\r
506 type junk.c >>config.log\r
507 set HAVE_GIF=\r
508 goto :gifDone\r
510 :haveGif\r
511 echo ...GIF header available, building with GIF support.\r
512 set HAVE_GIF=1\r
514 :gifDone\r
515 rm -f junk.c junk.obj\r
517 if (%tiffsupport%) == (N) goto tiffDone\r
519 echo Checking for tiff...\r
520 echo #include "tiffio.h" >junk.c\r
521 echo main (){} >>junk.c\r
522 rem   -o option is ignored with cl, but allows result to be consistent.\r
523 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
524 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
525 if exist junk.obj goto haveTiff\r
527 echo ...tiffio.h not found, building without TIFF support.\r
528 echo The failed program was: >>config.log\r
529 type junk.c >>config.log\r
530 set HAVE_TIFF=\r
531 goto :tiffDone\r
533 :haveTiff\r
534 echo ...TIFF header available, building with TIFF support.\r
535 set HAVE_TIFF=1\r
537 :tiffDone\r
538 rm -f junk.c junk.obj\r
540 if (%xpmsupport%) == (N) goto xpmDone\r
542 echo Checking for libXpm...\r
543 echo #define FOR_MSW 1 >junk.c\r
544 echo #include "X11/xpm.h" >>junk.c\r
545 echo main (){} >>junk.c\r
546 rem   -o option is ignored with cl, but allows result to be consistent.\r
547 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
548 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
549 if exist junk.obj goto haveXpm\r
551 echo ...X11/xpm.h not found, building without XPM support.\r
552 echo The failed program was: >>config.log\r
553 type junk.c >>config.log\r
554 set HAVE_XPM=\r
555 goto :xpmDone\r
557 :haveXpm\r
558 echo ...XPM header available, building with XPM support.\r
559 set HAVE_XPM=1\r
561 :xpmDone\r
562 rm -f junk.c junk.obj\r
564 if not (%svgsupport%) == (Y) goto :svgDone\r
565 echo Checking for librsvg...\r
566 echo #include "librsvg/rsvg.h" >junk.c\r
567 echo main (){} >>junk.c\r
568 rem   -o option is ignored with cl, but allows result to be consistent.\r
569 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
570 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
571 if exist junk.obj goto haveSvg\r
573 echo ...librsvg/rsvg.h or dependencies not found, building without SVG support.\r
574 echo The failed program was: >>config.log\r
575 type junk.c >>config.log\r
576 set HAVE_RSVG=\r
577 goto :svgDone\r
579 :haveSvg\r
580 echo ...librsvg header available, building with SVG support (EXPERIMENTAL).\r
581 set HAVE_RSVG=1\r
583 :svgDone\r
584 rm -f junk.c junk.obj junk.err junk.out\r
586 rem Any distfiles provided for building distribution? If no, we're done.\r
587 if "(%HAVE_DISTFILES%)"=="()" goto :distFilesDone\r
589 rem Any arguments to --distfiles specified? If no, we're done.\r
590 if not "%distfiles%"=="" goto :checkDistFiles\r
591 set distFilesOk=0\r
592 echo No arguments specified for option --distfiles!\r
593 goto distfilesDone\r
595 :checkDistFiles\r
596 echo Checking for distfiles...\r
597 rem Check if all specified distfiles exist\r
598 set fileNotFound=\r
599 for %%d in (%distfiles%) do if not exist %%d set fileNotFound=%%d\r
600 if not "%fileNotFound%"=="" goto distFilesNotFound\r
602 set distFilesOK=1\r
603 echo ...all distfiles found.\r
604 goto :distFilesDone\r
606 :distFilesNotFound\r
607 set distFilesOk=0\r
608 echo ...%fileNotFound% not found.\r
609 set distfiles=\r
610 goto :distfilesDone\r
612 :distFilesDone\r
613 set fileNotFound=\r
615 rem ----------------------------------------------------------------------\r
617 :genmakefiles\r
618 echo Generating makefiles\r
619 if %COMPILER% == gcc set MAKECMD=gmake\r
620 if %COMPILER% == cl set MAKECMD=nmake\r
622 rem   Pass on chosen settings to makefiles.\r
623 rem   NB. Be very careful to not have a space before redirection symbols\r
624 rem   except when there is a preceding digit, when a space is required.\r
625 rem\r
626 echo # Start of settings from configure.bat >config.settings\r
627 echo COMPILER=%COMPILER%>>config.settings\r
628 if not "(%mf%)" == "()" echo MCPU_FLAG=%mf%>>config.settings\r
629 if not "(%dbginfo%)" == "()" echo DEBUG_INFO=%dbginfo%>>config.settings\r
630 if (%nodebug%) == (Y) echo NODEBUG=1 >>config.settings\r
631 if (%noopt%) == (Y) echo NOOPT=1 >>config.settings\r
632 if (%enablechecking%) == (Y) echo ENABLECHECKS=1 >>config.settings\r
633 if (%profile%) == (Y) echo PROFILE=1 >>config.settings\r
634 if (%nocygwin%) == (Y) echo NOCYGWIN=1 >>config.settings\r
635 if not "(%prefix%)" == "()" echo INSTALL_DIR=%prefix%>>config.settings\r
636 if not "(%distfiles%)" == "()" echo DIST_FILES=%distfiles%>>config.settings\r
637 rem We go thru docflags because usercflags could be "-DFOO=bar" -something\r
638 rem and the if command cannot cope with this\r
639 for %%v in (%usercflags%) do if not (%%v)==() set docflags=Y\r
640 if (%docflags%)==(Y) echo USER_CFLAGS=%usercflags%>>config.settings\r
641 for %%v in (%userldflags%) do if not (%%v)==() set doldflags=Y\r
642 if (%doldflags%)==(Y) echo USER_LDFLAGS=%userldflags%>>config.settings\r
643 echo # End of settings from configure.bat>>config.settings\r
644 echo. >>config.settings\r
646 copy config.nt config.tmp\r
647 echo. >>config.tmp\r
648 echo /* Start of settings from configure.bat.  */ >>config.tmp\r
649 rem   We write USER_CFLAGS and USER_LDFLAGS starting with a space to simplify\r
650 rem   processing of compiler options in w32.c:get_emacs_configuration_options\r
651 if (%docflags%) == (Y) echo #define USER_CFLAGS " %usercflags%">>config.tmp\r
652 if (%doldflags%) == (Y) echo #define USER_LDFLAGS " %userldflags%">>config.tmp\r
653 if (%profile%) == (Y) echo #define PROFILING 1 >>config.tmp\r
654 if not "(%HAVE_PNG%)" == "()" echo #define HAVE_PNG 1 >>config.tmp\r
655 if not "(%HAVE_JPEG%)" == "()" echo #define HAVE_JPEG 1 >>config.tmp\r
656 if not "(%HAVE_GIF%)" == "()" echo #define HAVE_GIF 1 >>config.tmp\r
657 if not "(%HAVE_TIFF%)" == "()" echo #define HAVE_TIFF 1 >>config.tmp\r
658 if not "(%HAVE_XPM%)" == "()" echo #define HAVE_XPM 1 >>config.tmp\r
659 if "(%HAVE_RSVG%)" == "(1)" echo #define HAVE_RSVG 1 >>config.tmp\r
661 echo /* End of settings from configure.bat.  */ >>config.tmp\r
663 Rem See if fc.exe returns a meaningful exit status.  If it does, we\r
664 Rem might as well avoid unnecessary overwriting of config.h and epaths.h,\r
665 Rem since this forces recompilation of every source file.\r
666 if exist foo.bar del foo.bar\r
667 fc /b foo.bar foo.bar >nul 2>&1\r
668 if not errorlevel 2 goto doCopy\r
669 fc /b config.tmp ..\src\config.h >nul 2>&1\r
670 if errorlevel 1 goto doCopy\r
671 fc /b paths.h ..\src\epaths.h >nul 2>&1\r
672 if not errorlevel 1 goto dontCopy\r
674 :doCopy\r
675 copy config.tmp ..\src\config.h\r
676 copy paths.h ..\src\epaths.h\r
678 :dontCopy\r
679 if exist config.tmp del config.tmp\r
680 copy /b config.settings+%MAKECMD%.defs+..\nt\makefile.w32-in ..\nt\makefile\r
681 if exist ..\admin\unidata copy /b config.settings+%MAKECMD%.defs+..\admin\unidata\makefile.w32-in ..\admin\unidata\makefile\r
682 copy /b config.settings+%MAKECMD%.defs+..\lib-src\makefile.w32-in ..\lib-src\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