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