* lisp/gnus/nnmail.el (group, group-art-list, group-art):
[bpt/emacs.git] / nt / configure.bat
CommitLineData
f466241d
EZ
1@echo off\r
2rem ----------------------------------------------------------------------\r
ee705a5c 3rem Configuration script for MS Windows operating systems\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
ee705a5c 25rem + MS Windows 95, NT or later\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 118if "%1" == "" goto checkutils\r
ee705a5c 119\r
f466241d
EZ
120:usage\r
121echo Usage: configure [options]\r
122echo Options:\r
123echo. --prefix PREFIX install Emacs in directory PREFIX\r
124echo. --with-gcc use GCC to compile Emacs\r
125echo. --with-msvc use MSVC to compile Emacs\r
126echo. --no-debug exclude debug info from executables\r
127echo. --no-opt disable optimization\r
7d0170c8 128echo. --enable-checking enable checks and assertions\r
75663c75 129echo. --profile enable profiling\r
f466241d
EZ
130echo. --no-cygwin use -mno-cygwin option with GCC\r
131echo. --cflags FLAG pass FLAG to compiler\r
132echo. --ldflags FLAG pass FLAG to compiler when linking\r
f01e03d3
JB
133echo. --without-png do not use PNG library even if it is installed\r
134echo. --without-jpeg do not use JPEG library even if it is installed\r
135echo. --without-gif do not use GIF library even if it is installed\r
136echo. --without-tiff do not use TIFF library even if it is installed\r
137echo. --without-xpm do not use XPM library even if it is installed\r
8d67bc8e 138echo. --with-svg use the RSVG library (experimental)\r
e3aef5c6 139echo. --distfiles path to files for make dist, e.g. libXpm.dll\r
f466241d 140goto end\r
ee705a5c 141\r
f466241d 142rem ----------------------------------------------------------------------\r
ee705a5c 143\r
f466241d
EZ
144:setprefix\r
145shift\r
146set prefix=%1\r
147shift\r
148goto again\r
ee705a5c 149\r
f466241d 150rem ----------------------------------------------------------------------\r
ee705a5c 151\r
f466241d
EZ
152:withgcc\r
153set COMPILER=gcc\r
154shift\r
155goto again\r
ee705a5c 156\r
f466241d 157rem ----------------------------------------------------------------------\r
ee705a5c 158\r
f466241d
EZ
159:withmsvc\r
160set COMPILER=cl\r
161shift\r
162goto again\r
ee705a5c 163\r
f466241d 164rem ----------------------------------------------------------------------\r
ee705a5c 165\r
f466241d
EZ
166:nodebug\r
167set nodebug=Y\r
168shift\r
169goto again\r
ee705a5c 170\r
f466241d 171rem ----------------------------------------------------------------------\r
ee705a5c 172\r
f466241d
EZ
173:noopt\r
174set noopt=Y\r
175shift\r
176goto again\r
ee705a5c 177\r
f466241d 178rem ----------------------------------------------------------------------\r
ee705a5c 179\r
7d0170c8
JB
180:enablechecking\r
181set enablechecking=Y\r
182shift\r
183goto again\r
ee705a5c 184\r
7d0170c8 185rem ----------------------------------------------------------------------\r
ee705a5c 186\r
75663c75
JR
187:profile\r
188set profile=Y\r
189shift\r
190goto again\r
ee705a5c 191\r
75663c75 192rem ----------------------------------------------------------------------\r
ee705a5c 193\r
f466241d
EZ
194:nocygwin\r
195set nocygwin=Y\r
196shift\r
197goto again\r
ee705a5c 198\r
f466241d 199rem ----------------------------------------------------------------------\r
ee705a5c 200\r
f466241d
EZ
201:usercflags\r
202shift\r
203set usercflags=%usercflags%%sep1%%1\r
204set sep1= %nothing%\r
205shift\r
206goto again\r
ee705a5c 207\r
f466241d 208rem ----------------------------------------------------------------------\r
ee705a5c 209\r
f466241d
EZ
210:userldflags\r
211shift\r
212set userldflags=%userldflags%%sep2%%1\r
213set sep2= %nothing%\r
214shift\r
215goto again\r
ee705a5c 216\r
e0006538
JR
217rem ----------------------------------------------------------------------\r
218\r
219:withoutpng\r
220set pngsupport=N\r
221set HAVE_PNG=\r
39bd0e03 222shift\r
e0006538 223goto again\r
f466241d 224\r
aad0eae4
JR
225rem ----------------------------------------------------------------------\r
226\r
227:withoutjpeg\r
228set jpegsupport=N\r
229set HAVE_JPEG=\r
39bd0e03 230shift\r
aad0eae4
JR
231goto again\r
232\r
12ff2dc5
JB
233rem ----------------------------------------------------------------------\r
234\r
235:withoutgif\r
236set gifsupport=N\r
237set HAVE_GIF=\r
238shift\r
239goto again\r
240\r
47c01e80
JB
241rem ----------------------------------------------------------------------\r
242\r
243:withouttiff\r
244set tiffsupport=N\r
245set HAVE_TIFF=\r
246shift\r
247goto again\r
248\r
507f5dce
JR
249rem ----------------------------------------------------------------------\r
250\r
251:withoutxpm\r
252set xpmsupport=N\r
253set HAVE_XPM=\r
254shift\r
255goto again\r
256\r
8bc63b1a
JR
257:withsvg\r
258shift\r
259set svgsupport=Y\r
260goto again\r
261\r
e3aef5c6
CS
262rem ----------------------------------------------------------------------\r
263\r
264:distfiles\r
265set HAVE_DISTFILES=1\r
266shift\r
267set distfiles=%distfiles%%sep3%%1\r
268set sep3= %nothing%\r
269shift\r
270goto again\r
271\r
f466241d
EZ
272rem ----------------------------------------------------------------------\r
273rem Check that necessary utilities (cp and rm) are present.\r
ee705a5c 274\r
f466241d
EZ
275:checkutils\r
276echo Checking for 'cp'...\r
277cp configure.bat junk.bat\r
278if not exist junk.bat goto needcp\r
279echo Checking for 'rm'...\r
280rm junk.bat\r
281if exist junk.bat goto needrm\r
282goto checkcompiler\r
ee705a5c 283\r
f466241d
EZ
284:needcp\r
285echo You need 'cp' (the Unix file copy program) to build Emacs.\r
286goto end\r
ee705a5c 287\r
f466241d
EZ
288:needrm\r
289del junk.bat\r
290echo You need 'rm' (the Unix file delete program) to build Emacs.\r
291goto end\r
292\r
293rem ----------------------------------------------------------------------\r
294rem Auto-detect compiler if not specified, and validate GCC if chosen.\r
ee705a5c 295\r
f466241d 296:checkcompiler\r
e0006538 297if (%COMPILER%)==(cl) goto compilercheckdone\r
f466241d
EZ
298if (%COMPILER%)==(gcc) goto checkgcc\r
299\r
f466241d 300echo Checking whether 'gcc' is available...\r
680d641f 301echo main(){} >junk.c\r
f466241d 302gcc -c junk.c\r
680d641f 303if exist junk.o goto checkgcc\r
f466241d 304\r
680d641f
JR
305echo Checking whether 'cl' is available...\r
306cl -nologo -c junk.c\r
307if exist junk.obj goto clOK\r
308goto nocompiler\r
309\r
f466241d 310:checkgcc\r
1046da1c 311if exist junk.o del junk.o\r
f466241d
EZ
312Rem WARNING -- COMMAND.COM on some systems only looks at the first\r
313Rem 8 characters of a label. So do NOT be tempted to change\r
314Rem chkapi* into something fancier like checkw32api\r
315Rem You HAVE been warned!\r
1046da1c 316if (%nocygwin%) == (Y) goto chkapiN\r
f466241d
EZ
317echo Checking whether gcc requires '-mno-cygwin'...\r
318echo #include "cygwin/version.h" >junk.c\r
319echo main(){} >>junk.c\r
dbbdb507
EZ
320echo gcc -c junk.c >>config.log\r
321gcc -c junk.c >>config.log 2>&1\r
f466241d 322if not exist junk.o goto chkapi\r
dbbdb507
EZ
323echo gcc -mno-cygwin -c junk.c >>config.log\r
324gcc -mno-cygwin -c junk.c >>config.log 2>&1\r
f466241d 325if exist junk.o set nocygwin=Y\r
f466241d
EZ
326\r
327:chkapi\r
dbbdb507
EZ
328echo The failed program was: >>config.log\r
329type junk.c >>config.log\r
ee705a5c 330\r
1046da1c
EZ
331:chkapiN\r
332rm -f junk.c junk.o\r
f466241d
EZ
333rem ----------------------------------------------------------------------\r
334rem Older versions of the Windows API headers either don't have any of\r
335rem the IMAGE_xxx definitions (the headers that come with Cygwin b20.1\r
336rem are like this), or have a typo in the definition of\r
337rem IMAGE_FIRST_SECTION (the headers with gcc/mingw32 2.95 have this\r
338rem problem). The gcc/mingw32 2.95.2 headers are okay, as are distros\r
339rem of w32api-xxx.zip from Anders Norlander since 1999-11-18 at least.\r
892508a4 340rem Beginning with Emacs 23, we need usp10.h.\r
f466241d
EZ
341rem\r
342echo Checking whether W32 API headers are too old...\r
343echo #include "windows.h" >junk.c\r
892508a4 344echo #include "usp10.h" >>junk.c\r
f466241d
EZ
345echo test(PIMAGE_NT_HEADERS pHeader) >>junk.c\r
346echo {PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader);} >>junk.c\r
347if (%nocygwin%) == (Y) goto chkapi1\r
348set cf=%usercflags%\r
349goto chkapi2\r
ee705a5c 350\r
f466241d
EZ
351:chkapi1\r
352set cf=%usercflags% -mno-cygwin\r
ee705a5c 353\r
f466241d
EZ
354:chkapi2\r
355echo on\r
356gcc %cf% -c junk.c\r
dbbdb507
EZ
357@echo off\r
358@echo gcc %cf% -c junk.c >>config.log\r
359gcc %cf% -c junk.c >>config.log 2>&1\r
f466241d 360set cf=\r
05212154 361if exist junk.o goto chkuser\r
dbbdb507
EZ
362echo The failed program was: >>config.log\r
363type junk.c >>config.log\r
05212154
JB
364goto nocompiler\r
365\r
366:chkuser\r
367rm -f junk.o\r
368echo int main (int argc, char *argv[]) {>junk.c\r
369echo char *usercflags = "%usercflags%";>>junk.c\r
370echo }>>junk.c\r
371echo gcc -Werror -c junk.c >>config.log\r
372gcc -Werror -c junk.c >>config.log 2>&1\r
373if exist junk.o goto gccOk\r
374echo.\r
375echo Error in --cflags argument: %usercflags%\r
376echo Backslashes and quotes cannot be used with --cflags. Please use forward\r
377echo slashes for filenames and paths (e.g. when passing directories to -I).\r
378rm -f junk.c\r
379goto end\r
f466241d
EZ
380\r
381:nocompiler\r
382echo.\r
383echo Configure failed.\r
384echo To configure Emacs for Windows, you need to have either\r
385echo gcc-2.95 or later with Mingw32 and the W32 API headers,\r
386echo or MSVC 2.x or later.\r
387del junk.c\r
388goto end\r
389\r
390:gccOk\r
391set COMPILER=gcc\r
f466241d 392echo Using 'gcc'\r
dbbdb507
EZ
393rm -f junk.c junk.o\r
394Rem It is not clear what GCC version began supporting -mtune\r
395Rem and pentium4 on x86, so check this explicitly.\r
396echo main(){} >junk.c\r
397echo gcc -c -O2 -mtune=pentium4 junk.c >>config.log\r
398gcc -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1\r
399if not errorlevel 1 goto gccMtuneOk\r
400echo The failed program was: >>config.log\r
401type junk.c >>config.log\r
402set mf=-mcpu=i686\r
403rm -f junk.c junk.o\r
540c2a33 404goto gccdebug\r
ee705a5c 405\r
dbbdb507
EZ
406:gccMtuneOk\r
407echo GCC supports -mtune=pentium4 >>config.log\r
408set mf=-mtune=pentium4\r
409rm -f junk.c junk.o\r
ee705a5c 410\r
540c2a33
JB
411:gccdebug\r
412rem Check for DWARF-2 debug info support, else default to stabs\r
413echo main(){} >junk.c\r
414echo gcc -c -gdwarf-2 -g3 junk.c >>config.log\r
415gcc -c -gdwarf-2 -g3 junk.c >>config.log 2>&1\r
416if not errorlevel 1 goto gccdwarf\r
417echo The failed program was: >>config.log\r
418type junk.c >>config.log\r
419set dbginfo=-gstabs+\r
420rm -f junk.c junk.o\r
421goto compilercheckdone\r
ee705a5c 422\r
540c2a33
JB
423:gccdwarf\r
424echo GCC supports DWARF-2 >>config.log\r
425set dbginfo=-gdwarf-2 -g3\r
426rm -f junk.c junk.o\r
e0006538 427goto compilercheckdone\r
f466241d
EZ
428\r
429:clOk\r
430set COMPILER=cl\r
431rm -f junk.c junk.obj\r
432echo Using 'MSVC'\r
e0006538
JR
433\r
434:compilercheckdone\r
435\r
436rem ----------------------------------------------------------------------\r
437rem Check for external image libraries. Since they are loaded\r
438rem dynamically, the libraries themselves do not need to be present\r
439rem at compile time, but the header files are required.\r
440\r
112dc8e1
JR
441set mingwflag=\r
442\r
443if (%nocygwin%) == (N) goto flagsOK\r
444set mingwflag=-mno-cygwin\r
445\r
446:flagsOK\r
447\r
e0006538
JR
448if (%pngsupport%) == (N) goto pngDone\r
449\r
450echo Checking for libpng...\r
451echo #include "png.h" >junk.c\r
452echo main (){} >>junk.c\r
453rem -o option is ignored with cl, but allows result to be consistent.\r
dbbdb507
EZ
454echo %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
e0006538
JR
456if exist junk.obj goto havePng\r
457\r
507f5dce 458echo ...png.h not found, building without PNG support.\r
dbbdb507
EZ
459echo The failed program was: >>config.log\r
460type junk.c >>config.log\r
e0006538
JR
461set HAVE_PNG=\r
462goto :pngDone\r
463\r
464:havePng\r
465echo ...PNG header available, building with PNG support.\r
466set HAVE_PNG=1\r
467\r
468:pngDone\r
469rm -f junk.c junk.obj\r
f466241d 470\r
aad0eae4
JR
471if (%jpegsupport%) == (N) goto jpegDone\r
472\r
507f5dce 473echo Checking for jpeg-6b...\r
aad0eae4
JR
474echo #include "jconfig.h" >junk.c\r
475echo main (){} >>junk.c\r
476rem -o option is ignored with cl, but allows result to be consistent.\r
dbbdb507
EZ
477echo %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
aad0eae4
JR
479if exist junk.obj goto haveJpeg\r
480\r
507f5dce 481echo ...jconfig.h not found, building without JPEG support.\r
dbbdb507
EZ
482echo The failed program was: >>config.log\r
483type junk.c >>config.log\r
aad0eae4
JR
484set HAVE_JPEG=\r
485goto :jpegDone\r
486\r
487:haveJpeg\r
488echo ...JPEG header available, building with JPEG support.\r
489set HAVE_JPEG=1\r
490\r
491:jpegDone\r
492rm -f junk.c junk.obj\r
493\r
12ff2dc5
JB
494if (%gifsupport%) == (N) goto gifDone\r
495\r
507f5dce 496echo Checking for libgif...\r
12ff2dc5
JB
497echo #include "gif_lib.h" >junk.c\r
498echo main (){} >>junk.c\r
499rem -o option is ignored with cl, but allows result to be consistent.\r
dbbdb507
EZ
500echo %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
12ff2dc5
JB
502if exist junk.obj goto haveGif\r
503\r
507f5dce 504echo ...gif_lib.h not found, building without GIF support.\r
dbbdb507
EZ
505echo The failed program was: >>config.log\r
506type junk.c >>config.log\r
12ff2dc5
JB
507set HAVE_GIF=\r
508goto :gifDone\r
509\r
510:haveGif\r
511echo ...GIF header available, building with GIF support.\r
512set HAVE_GIF=1\r
513\r
514:gifDone\r
515rm -f junk.c junk.obj\r
516\r
47c01e80
JB
517if (%tiffsupport%) == (N) goto tiffDone\r
518\r
519echo Checking for tiff...\r
520echo #include "tiffio.h" >junk.c\r
521echo main (){} >>junk.c\r
522rem -o option is ignored with cl, but allows result to be consistent.\r
dbbdb507
EZ
523echo %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
47c01e80
JB
525if exist junk.obj goto haveTiff\r
526\r
507f5dce 527echo ...tiffio.h not found, building without TIFF support.\r
dbbdb507
EZ
528echo The failed program was: >>config.log\r
529type junk.c >>config.log\r
47c01e80
JB
530set HAVE_TIFF=\r
531goto :tiffDone\r
532\r
533:haveTiff\r
534echo ...TIFF header available, building with TIFF support.\r
535set HAVE_TIFF=1\r
536\r
537:tiffDone\r
538rm -f junk.c junk.obj\r
539\r
507f5dce
JR
540if (%xpmsupport%) == (N) goto xpmDone\r
541\r
542echo Checking for libXpm...\r
543echo #define FOR_MSW 1 >junk.c\r
544echo #include "X11/xpm.h" >>junk.c\r
545echo main (){} >>junk.c\r
546rem -o option is ignored with cl, but allows result to be consistent.\r
dbbdb507
EZ
547echo %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
507f5dce
JR
549if exist junk.obj goto haveXpm\r
550\r
551echo ...X11/xpm.h not found, building without XPM support.\r
dbbdb507
EZ
552echo The failed program was: >>config.log\r
553type junk.c >>config.log\r
507f5dce
JR
554set HAVE_XPM=\r
555goto :xpmDone\r
556\r
557:haveXpm\r
558echo ...XPM header available, building with XPM support.\r
559set HAVE_XPM=1\r
560\r
561:xpmDone\r
8bc63b1a
JR
562rm -f junk.c junk.obj\r
563\r
564if not (%svgsupport%) == (Y) goto :svgDone\r
565echo Checking for librsvg...\r
566echo #include "librsvg/rsvg.h" >junk.c\r
567echo main (){} >>junk.c\r
568rem -o option is ignored with cl, but allows result to be consistent.\r
569echo %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
571if exist junk.obj goto haveSvg\r
572\r
573echo ...librsvg/rsvg.h or dependencies not found, building without SVG support.\r
574echo The failed program was: >>config.log\r
575type junk.c >>config.log\r
576set HAVE_RSVG=\r
577goto :svgDone\r
578\r
579:haveSvg\r
580echo ...librsvg header available, building with SVG support (EXPERIMENTAL).\r
581set HAVE_RSVG=1\r
582\r
583:svgDone\r
507f5dce
JR
584rm -f junk.c junk.obj junk.err junk.out\r
585\r
e3aef5c6
CS
586rem Any distfiles provided for building distribution? If no, we're done.\r
587if "(%HAVE_DISTFILES%)"=="()" goto :distFilesDone\r
588\r
589rem Any arguments to --distfiles specified? If no, we're done.\r
590if not "%distfiles%"=="" goto :checkDistFiles\r
591set distFilesOk=0\r
592echo No arguments specified for option --distfiles!\r
593goto distfilesDone\r
594\r
595:checkDistFiles\r
596echo Checking for distfiles...\r
597rem Check if all specified distfiles exist\r
598set fileNotFound=\r
599for %%d in (%distfiles%) do if not exist %%d set fileNotFound=%%d\r
600if not "%fileNotFound%"=="" goto distFilesNotFound\r
601\r
602set distFilesOK=1\r
603echo ...all distfiles found.\r
604goto :distFilesDone\r
605\r
606:distFilesNotFound\r
607set distFilesOk=0\r
608echo ...%fileNotFound% not found.\r
609set distfiles=\r
610goto :distfilesDone\r
611\r
612:distFilesDone\r
613set fileNotFound=\r
614\r
f466241d 615rem ----------------------------------------------------------------------\r
ee705a5c 616\r
f466241d
EZ
617:genmakefiles\r
618echo Generating makefiles\r
619if %COMPILER% == gcc set MAKECMD=gmake\r
620if %COMPILER% == cl set MAKECMD=nmake\r
621\r
622rem Pass on chosen settings to makefiles.\r
623rem NB. Be very careful to not have a space before redirection symbols\r
624rem except when there is a preceding digit, when a space is required.\r
625rem\r
626echo # Start of settings from configure.bat >config.settings\r
627echo COMPILER=%COMPILER%>>config.settings\r
dbbdb507 628if not "(%mf%)" == "()" echo MCPU_FLAG=%mf%>>config.settings\r
540c2a33 629if not "(%dbginfo%)" == "()" echo DEBUG_INFO=%dbginfo%>>config.settings\r
f466241d
EZ
630if (%nodebug%) == (Y) echo NODEBUG=1 >>config.settings\r
631if (%noopt%) == (Y) echo NOOPT=1 >>config.settings\r
7d0170c8 632if (%enablechecking%) == (Y) echo ENABLECHECKS=1 >>config.settings\r
75663c75 633if (%profile%) == (Y) echo PROFILE=1 >>config.settings\r
f466241d
EZ
634if (%nocygwin%) == (Y) echo NOCYGWIN=1 >>config.settings\r
635if not "(%prefix%)" == "()" echo INSTALL_DIR=%prefix%>>config.settings\r
e3aef5c6 636if not "(%distfiles%)" == "()" echo DIST_FILES=%distfiles%>>config.settings\r
3a1ebd63
EZ
637rem We go thru docflags because usercflags could be "-DFOO=bar" -something\r
638rem and the if command cannot cope with this\r
639for %%v in (%usercflags%) do if not (%%v)==() set docflags=Y\r
640if (%docflags%)==(Y) echo USER_CFLAGS=%usercflags%>>config.settings\r
641for %%v in (%userldflags%) do if not (%%v)==() set doldflags=Y\r
642if (%doldflags%)==(Y) echo USER_LDFLAGS=%userldflags%>>config.settings\r
f466241d
EZ
643echo # End of settings from configure.bat>>config.settings\r
644echo. >>config.settings\r
645\r
c262c68c
EZ
646copy config.nt config.tmp\r
647echo. >>config.tmp\r
648echo /* Start of settings from configure.bat. */ >>config.tmp\r
8f978ca0
JB
649rem We write USER_CFLAGS and USER_LDFLAGS starting with a space to simplify\r
650rem processing of compiler options in w32.c:get_emacs_configuration_options\r
3a1ebd63
EZ
651if (%docflags%) == (Y) echo #define USER_CFLAGS " %usercflags%">>config.tmp\r
652if (%doldflags%) == (Y) echo #define USER_LDFLAGS " %userldflags%">>config.tmp\r
f179addc 653if (%profile%) == (Y) echo #define PROFILING 1 >>config.tmp\r
c262c68c
EZ
654if not "(%HAVE_PNG%)" == "()" echo #define HAVE_PNG 1 >>config.tmp\r
655if not "(%HAVE_JPEG%)" == "()" echo #define HAVE_JPEG 1 >>config.tmp\r
656if not "(%HAVE_GIF%)" == "()" echo #define HAVE_GIF 1 >>config.tmp\r
657if not "(%HAVE_TIFF%)" == "()" echo #define HAVE_TIFF 1 >>config.tmp\r
658if not "(%HAVE_XPM%)" == "()" echo #define HAVE_XPM 1 >>config.tmp\r
8bc63b1a
JR
659if "(%HAVE_RSVG%)" == "(1)" echo #define HAVE_RSVG 1 >>config.tmp\r
660\r
c262c68c
EZ
661echo /* End of settings from configure.bat. */ >>config.tmp\r
662\r
663Rem See if fc.exe returns a meaningful exit status. If it does, we\r
664Rem might as well avoid unnecessary overwriting of config.h and epaths.h,\r
665Rem since this forces recompilation of every source file.\r
666if exist foo.bar del foo.bar\r
667fc /b foo.bar foo.bar >nul 2>&1\r
668if not errorlevel 2 goto doCopy\r
669fc /b config.tmp ..\src\config.h >nul 2>&1\r
670if errorlevel 1 goto doCopy\r
671fc /b paths.h ..\src\epaths.h >nul 2>&1\r
672if errorlevel 0 goto dontCopy\r
ee705a5c 673\r
c262c68c
EZ
674:doCopy\r
675copy config.tmp ..\src\config.h\r
f466241d
EZ
676copy paths.h ..\src\epaths.h\r
677\r
c262c68c
EZ
678:dontCopy\r
679if exist config.tmp del config.tmp\r
f466241d 680copy /b config.settings+%MAKECMD%.defs+..\nt\makefile.w32-in ..\nt\makefile\r
a392138f 681if exist ..\admin\unidata copy /b config.settings+%MAKECMD%.defs+..\admin\unidata\makefile.w32-in ..\admin\unidata\makefile\r
f466241d
EZ
682copy /b config.settings+%MAKECMD%.defs+..\lib-src\makefile.w32-in ..\lib-src\makefile\r
683copy /b config.settings+%MAKECMD%.defs+..\src\makefile.w32-in ..\src\makefile\r
8aee12d0
GM
684copy /b config.settings+%MAKECMD%.defs+..\doc\emacs\makefile.w32-in ..\doc\emacs\makefile\r
685copy /b config.settings+%MAKECMD%.defs+..\doc\misc\makefile.w32-in ..\doc\misc\makefile\r
686copy /b config.settings+%MAKECMD%.defs+..\doc\lispref\makefile.w32-in ..\doc\lispref\makefile\r
687copy /b config.settings+%MAKECMD%.defs+..\doc\lispintro\makefile.w32-in ..\doc\lispintro\makefile\r
f466241d
EZ
688if exist ..\lisp\makefile rm -f ../lisp/[Mm]akefile\r
689copy /b config.settings+%MAKECMD%.defs+..\lisp\makefile.w32-in ..\lisp\makefile\r
690rem Use the default (no-op) Makefile.in if the nt version is not present.\r
691if exist ..\leim\makefile.w32-in copy /b config.settings+%MAKECMD%.defs+..\leim\makefile.w32-in ..\leim\makefile\r
692if not exist ..\leim\makefile.w32-in copy /b config.settings+%MAKECMD%.defs+..\leim\Makefile.in ..\leim\makefile\r
693del config.settings\r
694\r
e44f8099
EZ
695Rem Some people use WinZip which doesn't create empty directories!\r
696if not exist ..\site-lisp\nul mkdir ..\site-lisp\\r
57a64408
JB
697Rem Update subdirs.el only if it is different or fc.exe doesn't work.\r
698if exist foo.bar del foo.bar\r
699fc /b foo.bar foo.bar >nul 2>&1\r
700if not errorlevel 2 goto doUpdateSubdirs\r
701fc /b subdirs.el ..\site-lisp\subdirs.el >nul 2>&1\r
702if not errorlevel 1 goto dontUpdateSubdirs\r
ee705a5c 703\r
57a64408
JB
704:doUpdateSubdirs\r
705if exist ..\site-lisp\subdirs.el del ..\site-lisp\subdirs.el\r
706copy subdirs.el ..\site-lisp\subdirs.el\r
707\r
708:dontUpdateSubdirs\r
f466241d 709echo.\r
32154d10
JR
710\r
711rem check that we have all the libraries we need.\r
712set libsOK=1\r
713\r
714if not "(%HAVE_XPM%)" == "()" goto checkpng\r
715if (%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
719\r
720:checkpng\r
721if not "(%HAVE_PNG%)" == "()" goto checkjpeg\r
722if (%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
726\r
727:checkjpeg\r
728if not "(%HAVE_JPEG%)" == "()" goto checktiff\r
729if (%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
733\r
734:checktiff\r
735if not "(%HAVE_TIFF%)" == "()" goto checkgif\r
736if (%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
740\r
741:checkgif\r
e3aef5c6
CS
742if not "(%HAVE_GIF%)" == "()" goto checkdistfiles\r
743if (%gifsupport%) == (N) goto checkdistfiles\r
32154d10
JR
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
747\r
e3aef5c6
CS
748:checkdistfiles\r
749if "(%HAVE_DISTFILES%)" == "()" goto donelibchecks\r
750if (%distFilesOk%) == (1) goto donelibchecks\r
751echo.\r
752echo Files specified with option --distfiles could not be found.\r
753echo Fix these issues before running make dist\r
754\r
32154d10
JR
755:donelibchecks\r
756if (%libsOK%) == (1) goto success\r
757echo.\r
758echo Important libraries are missing. Fix these issues before running make.\r
759goto end\r
760\r
761:success\r
f466241d 762echo Emacs successfully configured.\r
a27014fc 763echo Emacs successfully configured. >>config.log\r
361823f4 764if (%MAKECMD%) == (gmake) set MAKECMD=make\r
f466241d
EZ
765echo Run `%MAKECMD%' to build, then run `%MAKECMD% install' to install.\r
766goto end\r
767\r
768:SmallEnv\r
769echo Your environment size is too small. Please enlarge it and rerun configure.\r
770echo For example, type "command.com /e:2048" to have 2048 bytes available.\r
771set $foo$=\r
ee705a5c 772\r
f466241d
EZ
773:end\r
774set prefix=\r
775set nodebug=\r
776set noopt=\r
7d0170c8 777set enablechecking=\r
75663c75 778set profile=\r
f466241d
EZ
779set nocygwin=\r
780set COMPILER=\r
781set MAKECMD=\r
782set usercflags=\r
3a1ebd63 783set docflags=\r
f466241d 784set userldflags=\r
3a1ebd63 785set doldflags=\r
112dc8e1 786set mingwflag=\r
dbbdb507 787set mf=\r
e3aef5c6
CS
788set distfiles=\r
789set HAVE_DISTFILES=\r
790set distFilesOk=\r
a2fcf029
MB
791\r
792goto skipArchTag\r
793 arch-tag: 300d20a4-1675-4e75-b615-7ce1a8c5376c\r
794:skipArchTag\r