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