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