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