Fix some more uses of int instead of EMACS_INT.
[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
EZ
360set cf=\r
361if exist junk.o goto gccOk\r
dbbdb507
EZ
362echo The failed program was: >>config.log\r
363type junk.c >>config.log\r
f466241d
EZ
364\r
365:nocompiler\r
366echo.\r
367echo Configure failed.\r
368echo To configure Emacs for Windows, you need to have either\r
369echo gcc-2.95 or later with Mingw32 and the W32 API headers,\r
370echo or MSVC 2.x or later.\r
371del junk.c\r
372goto end\r
373\r
374:gccOk\r
375set COMPILER=gcc\r
f466241d 376echo Using 'gcc'\r
dbbdb507
EZ
377rm -f junk.c junk.o\r
378Rem It is not clear what GCC version began supporting -mtune\r
379Rem and pentium4 on x86, so check this explicitly.\r
380echo main(){} >junk.c\r
381echo gcc -c -O2 -mtune=pentium4 junk.c >>config.log\r
382gcc -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1\r
383if not errorlevel 1 goto gccMtuneOk\r
384echo The failed program was: >>config.log\r
385type junk.c >>config.log\r
386set mf=-mcpu=i686\r
387rm -f junk.c junk.o\r
540c2a33 388goto gccdebug\r
ee705a5c 389\r
dbbdb507
EZ
390:gccMtuneOk\r
391echo GCC supports -mtune=pentium4 >>config.log\r
392set mf=-mtune=pentium4\r
393rm -f junk.c junk.o\r
ee705a5c 394\r
540c2a33
JB
395:gccdebug\r
396rem Check for DWARF-2 debug info support, else default to stabs\r
397echo main(){} >junk.c\r
398echo gcc -c -gdwarf-2 -g3 junk.c >>config.log\r
399gcc -c -gdwarf-2 -g3 junk.c >>config.log 2>&1\r
400if not errorlevel 1 goto gccdwarf\r
401echo The failed program was: >>config.log\r
402type junk.c >>config.log\r
403set dbginfo=-gstabs+\r
404rm -f junk.c junk.o\r
405goto compilercheckdone\r
ee705a5c 406\r
540c2a33
JB
407:gccdwarf\r
408echo GCC supports DWARF-2 >>config.log\r
409set dbginfo=-gdwarf-2 -g3\r
410rm -f junk.c junk.o\r
e0006538 411goto compilercheckdone\r
f466241d
EZ
412\r
413:clOk\r
414set COMPILER=cl\r
415rm -f junk.c junk.obj\r
416echo Using 'MSVC'\r
e0006538
JR
417\r
418:compilercheckdone\r
419\r
420rem ----------------------------------------------------------------------\r
421rem Check for external image libraries. Since they are loaded\r
422rem dynamically, the libraries themselves do not need to be present\r
423rem at compile time, but the header files are required.\r
424\r
112dc8e1
JR
425set mingwflag=\r
426\r
427if (%nocygwin%) == (N) goto flagsOK\r
428set mingwflag=-mno-cygwin\r
429\r
430:flagsOK\r
431\r
e0006538
JR
432if (%pngsupport%) == (N) goto pngDone\r
433\r
434echo Checking for libpng...\r
435echo #include "png.h" >junk.c\r
436echo main (){} >>junk.c\r
437rem -o option is ignored with cl, but allows result to be consistent.\r
dbbdb507
EZ
438echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
439%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
e0006538
JR
440if exist junk.obj goto havePng\r
441\r
507f5dce 442echo ...png.h not found, building without PNG support.\r
dbbdb507
EZ
443echo The failed program was: >>config.log\r
444type junk.c >>config.log\r
e0006538
JR
445set HAVE_PNG=\r
446goto :pngDone\r
447\r
448:havePng\r
449echo ...PNG header available, building with PNG support.\r
450set HAVE_PNG=1\r
451\r
452:pngDone\r
453rm -f junk.c junk.obj\r
f466241d 454\r
aad0eae4
JR
455if (%jpegsupport%) == (N) goto jpegDone\r
456\r
507f5dce 457echo Checking for jpeg-6b...\r
aad0eae4
JR
458echo #include "jconfig.h" >junk.c\r
459echo main (){} >>junk.c\r
460rem -o option is ignored with cl, but allows result to be consistent.\r
dbbdb507
EZ
461echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
462%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
aad0eae4
JR
463if exist junk.obj goto haveJpeg\r
464\r
507f5dce 465echo ...jconfig.h not found, building without JPEG support.\r
dbbdb507
EZ
466echo The failed program was: >>config.log\r
467type junk.c >>config.log\r
aad0eae4
JR
468set HAVE_JPEG=\r
469goto :jpegDone\r
470\r
471:haveJpeg\r
472echo ...JPEG header available, building with JPEG support.\r
473set HAVE_JPEG=1\r
474\r
475:jpegDone\r
476rm -f junk.c junk.obj\r
477\r
12ff2dc5
JB
478if (%gifsupport%) == (N) goto gifDone\r
479\r
507f5dce 480echo Checking for libgif...\r
12ff2dc5
JB
481echo #include "gif_lib.h" >junk.c\r
482echo main (){} >>junk.c\r
483rem -o option is ignored with cl, but allows result to be consistent.\r
dbbdb507
EZ
484echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
485%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
12ff2dc5
JB
486if exist junk.obj goto haveGif\r
487\r
507f5dce 488echo ...gif_lib.h not found, building without GIF support.\r
dbbdb507
EZ
489echo The failed program was: >>config.log\r
490type junk.c >>config.log\r
12ff2dc5
JB
491set HAVE_GIF=\r
492goto :gifDone\r
493\r
494:haveGif\r
495echo ...GIF header available, building with GIF support.\r
496set HAVE_GIF=1\r
497\r
498:gifDone\r
499rm -f junk.c junk.obj\r
500\r
47c01e80
JB
501if (%tiffsupport%) == (N) goto tiffDone\r
502\r
503echo Checking for tiff...\r
504echo #include "tiffio.h" >junk.c\r
505echo main (){} >>junk.c\r
506rem -o option is ignored with cl, but allows result to be consistent.\r
dbbdb507
EZ
507echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
508%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
47c01e80
JB
509if exist junk.obj goto haveTiff\r
510\r
507f5dce 511echo ...tiffio.h not found, building without TIFF support.\r
dbbdb507
EZ
512echo The failed program was: >>config.log\r
513type junk.c >>config.log\r
47c01e80
JB
514set HAVE_TIFF=\r
515goto :tiffDone\r
516\r
517:haveTiff\r
518echo ...TIFF header available, building with TIFF support.\r
519set HAVE_TIFF=1\r
520\r
521:tiffDone\r
522rm -f junk.c junk.obj\r
523\r
507f5dce
JR
524if (%xpmsupport%) == (N) goto xpmDone\r
525\r
526echo Checking for libXpm...\r
527echo #define FOR_MSW 1 >junk.c\r
528echo #include "X11/xpm.h" >>junk.c\r
529echo main (){} >>junk.c\r
530rem -o option is ignored with cl, but allows result to be consistent.\r
dbbdb507
EZ
531echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
532%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
507f5dce
JR
533if exist junk.obj goto haveXpm\r
534\r
535echo ...X11/xpm.h not found, building without XPM support.\r
dbbdb507
EZ
536echo The failed program was: >>config.log\r
537type junk.c >>config.log\r
507f5dce
JR
538set HAVE_XPM=\r
539goto :xpmDone\r
540\r
541:haveXpm\r
542echo ...XPM header available, building with XPM support.\r
543set HAVE_XPM=1\r
544\r
545:xpmDone\r
8bc63b1a
JR
546rm -f junk.c junk.obj\r
547\r
548if not (%svgsupport%) == (Y) goto :svgDone\r
549echo Checking for librsvg...\r
550echo #include "librsvg/rsvg.h" >junk.c\r
551echo main (){} >>junk.c\r
552rem -o option is ignored with cl, but allows result to be consistent.\r
553echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
554%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
555if exist junk.obj goto haveSvg\r
556\r
557echo ...librsvg/rsvg.h or dependencies not found, building without SVG support.\r
558echo The failed program was: >>config.log\r
559type junk.c >>config.log\r
560set HAVE_RSVG=\r
561goto :svgDone\r
562\r
563:haveSvg\r
564echo ...librsvg header available, building with SVG support (EXPERIMENTAL).\r
565set HAVE_RSVG=1\r
566\r
567:svgDone\r
507f5dce
JR
568rm -f junk.c junk.obj junk.err junk.out\r
569\r
e3aef5c6
CS
570rem Any distfiles provided for building distribution? If no, we're done.\r
571if "(%HAVE_DISTFILES%)"=="()" goto :distFilesDone\r
572\r
573rem Any arguments to --distfiles specified? If no, we're done.\r
574if not "%distfiles%"=="" goto :checkDistFiles\r
575set distFilesOk=0\r
576echo No arguments specified for option --distfiles!\r
577goto distfilesDone\r
578\r
579:checkDistFiles\r
580echo Checking for distfiles...\r
581rem Check if all specified distfiles exist\r
582set fileNotFound=\r
583for %%d in (%distfiles%) do if not exist %%d set fileNotFound=%%d\r
584if not "%fileNotFound%"=="" goto distFilesNotFound\r
585\r
586set distFilesOK=1\r
587echo ...all distfiles found.\r
588goto :distFilesDone\r
589\r
590:distFilesNotFound\r
591set distFilesOk=0\r
592echo ...%fileNotFound% not found.\r
593set distfiles=\r
594goto :distfilesDone\r
595\r
596:distFilesDone\r
597set fileNotFound=\r
598\r
f466241d 599rem ----------------------------------------------------------------------\r
ee705a5c 600\r
f466241d
EZ
601:genmakefiles\r
602echo Generating makefiles\r
603if %COMPILER% == gcc set MAKECMD=gmake\r
604if %COMPILER% == cl set MAKECMD=nmake\r
605\r
606rem Pass on chosen settings to makefiles.\r
607rem NB. Be very careful to not have a space before redirection symbols\r
608rem except when there is a preceding digit, when a space is required.\r
609rem\r
610echo # Start of settings from configure.bat >config.settings\r
611echo COMPILER=%COMPILER%>>config.settings\r
dbbdb507 612if not "(%mf%)" == "()" echo MCPU_FLAG=%mf%>>config.settings\r
540c2a33 613if not "(%dbginfo%)" == "()" echo DEBUG_INFO=%dbginfo%>>config.settings\r
f466241d
EZ
614if (%nodebug%) == (Y) echo NODEBUG=1 >>config.settings\r
615if (%noopt%) == (Y) echo NOOPT=1 >>config.settings\r
7d0170c8 616if (%enablechecking%) == (Y) echo ENABLECHECKS=1 >>config.settings\r
75663c75 617if (%profile%) == (Y) echo PROFILE=1 >>config.settings\r
f466241d
EZ
618if (%nocygwin%) == (Y) echo NOCYGWIN=1 >>config.settings\r
619if not "(%prefix%)" == "()" echo INSTALL_DIR=%prefix%>>config.settings\r
e3aef5c6 620if not "(%distfiles%)" == "()" echo DIST_FILES=%distfiles%>>config.settings\r
3a1ebd63
EZ
621rem We go thru docflags because usercflags could be "-DFOO=bar" -something\r
622rem and the if command cannot cope with this\r
623for %%v in (%usercflags%) do if not (%%v)==() set docflags=Y\r
624if (%docflags%)==(Y) echo USER_CFLAGS=%usercflags%>>config.settings\r
625for %%v in (%userldflags%) do if not (%%v)==() set doldflags=Y\r
626if (%doldflags%)==(Y) echo USER_LDFLAGS=%userldflags%>>config.settings\r
f466241d
EZ
627echo # End of settings from configure.bat>>config.settings\r
628echo. >>config.settings\r
629\r
c262c68c
EZ
630copy config.nt config.tmp\r
631echo. >>config.tmp\r
632echo /* Start of settings from configure.bat. */ >>config.tmp\r
8f978ca0
JB
633rem We write USER_CFLAGS and USER_LDFLAGS starting with a space to simplify\r
634rem processing of compiler options in w32.c:get_emacs_configuration_options\r
3a1ebd63
EZ
635if (%docflags%) == (Y) echo #define USER_CFLAGS " %usercflags%">>config.tmp\r
636if (%doldflags%) == (Y) echo #define USER_LDFLAGS " %userldflags%">>config.tmp\r
f179addc 637if (%profile%) == (Y) echo #define PROFILING 1 >>config.tmp\r
c262c68c
EZ
638if not "(%HAVE_PNG%)" == "()" echo #define HAVE_PNG 1 >>config.tmp\r
639if not "(%HAVE_JPEG%)" == "()" echo #define HAVE_JPEG 1 >>config.tmp\r
640if not "(%HAVE_GIF%)" == "()" echo #define HAVE_GIF 1 >>config.tmp\r
641if not "(%HAVE_TIFF%)" == "()" echo #define HAVE_TIFF 1 >>config.tmp\r
642if not "(%HAVE_XPM%)" == "()" echo #define HAVE_XPM 1 >>config.tmp\r
8bc63b1a
JR
643if "(%HAVE_RSVG%)" == "(1)" echo #define HAVE_RSVG 1 >>config.tmp\r
644\r
c262c68c
EZ
645echo /* End of settings from configure.bat. */ >>config.tmp\r
646\r
647Rem See if fc.exe returns a meaningful exit status. If it does, we\r
648Rem might as well avoid unnecessary overwriting of config.h and epaths.h,\r
649Rem since this forces recompilation of every source file.\r
650if exist foo.bar del foo.bar\r
651fc /b foo.bar foo.bar >nul 2>&1\r
652if not errorlevel 2 goto doCopy\r
653fc /b config.tmp ..\src\config.h >nul 2>&1\r
654if errorlevel 1 goto doCopy\r
655fc /b paths.h ..\src\epaths.h >nul 2>&1\r
656if errorlevel 0 goto dontCopy\r
ee705a5c 657\r
c262c68c
EZ
658:doCopy\r
659copy config.tmp ..\src\config.h\r
f466241d
EZ
660copy paths.h ..\src\epaths.h\r
661\r
c262c68c
EZ
662:dontCopy\r
663if exist config.tmp del config.tmp\r
f466241d 664copy /b config.settings+%MAKECMD%.defs+..\nt\makefile.w32-in ..\nt\makefile\r
a392138f 665if exist ..\admin\unidata copy /b config.settings+%MAKECMD%.defs+..\admin\unidata\makefile.w32-in ..\admin\unidata\makefile\r
f466241d
EZ
666copy /b config.settings+%MAKECMD%.defs+..\lib-src\makefile.w32-in ..\lib-src\makefile\r
667copy /b config.settings+%MAKECMD%.defs+..\src\makefile.w32-in ..\src\makefile\r
8aee12d0
GM
668copy /b config.settings+%MAKECMD%.defs+..\doc\emacs\makefile.w32-in ..\doc\emacs\makefile\r
669copy /b config.settings+%MAKECMD%.defs+..\doc\misc\makefile.w32-in ..\doc\misc\makefile\r
670copy /b config.settings+%MAKECMD%.defs+..\doc\lispref\makefile.w32-in ..\doc\lispref\makefile\r
671copy /b config.settings+%MAKECMD%.defs+..\doc\lispintro\makefile.w32-in ..\doc\lispintro\makefile\r
f466241d
EZ
672if exist ..\lisp\makefile rm -f ../lisp/[Mm]akefile\r
673copy /b config.settings+%MAKECMD%.defs+..\lisp\makefile.w32-in ..\lisp\makefile\r
674rem Use the default (no-op) Makefile.in if the nt version is not present.\r
675if exist ..\leim\makefile.w32-in copy /b config.settings+%MAKECMD%.defs+..\leim\makefile.w32-in ..\leim\makefile\r
676if not exist ..\leim\makefile.w32-in copy /b config.settings+%MAKECMD%.defs+..\leim\Makefile.in ..\leim\makefile\r
677del config.settings\r
678\r
e44f8099
EZ
679Rem Some people use WinZip which doesn't create empty directories!\r
680if not exist ..\site-lisp\nul mkdir ..\site-lisp\\r
57a64408
JB
681Rem Update subdirs.el only if it is different or fc.exe doesn't work.\r
682if exist foo.bar del foo.bar\r
683fc /b foo.bar foo.bar >nul 2>&1\r
684if not errorlevel 2 goto doUpdateSubdirs\r
685fc /b subdirs.el ..\site-lisp\subdirs.el >nul 2>&1\r
686if not errorlevel 1 goto dontUpdateSubdirs\r
ee705a5c 687\r
57a64408
JB
688:doUpdateSubdirs\r
689if exist ..\site-lisp\subdirs.el del ..\site-lisp\subdirs.el\r
690copy subdirs.el ..\site-lisp\subdirs.el\r
691\r
692:dontUpdateSubdirs\r
f466241d 693echo.\r
32154d10
JR
694\r
695rem check that we have all the libraries we need.\r
696set libsOK=1\r
697\r
698if not "(%HAVE_XPM%)" == "()" goto checkpng\r
699if (%xpmsupport%) == (N) goto checkpng\r
700 set libsOK=0\r
701 echo XPM support is missing. It is required for color icons in the toolbar.\r
702 echo Install libXpm development files or use --without-xpm\r
703\r
704:checkpng\r
705if not "(%HAVE_PNG%)" == "()" goto checkjpeg\r
706if (%pngsupport%) == (N) goto checkjpeg\r
707 set libsOK=0\r
708 echo PNG support is missing.\r
709 echo Install libpng development files or use --without-png\r
710\r
711:checkjpeg\r
712if not "(%HAVE_JPEG%)" == "()" goto checktiff\r
713if (%jpegsupport%) == (N) goto checktiff\r
714 set libsOK=0\r
715 echo JPEG support is missing.\r
716 echo Install jpeg development files or use --without-jpeg\r
717\r
718:checktiff\r
719if not "(%HAVE_TIFF%)" == "()" goto checkgif\r
720if (%tiffsupport%) == (N) goto checkgif\r
721 set libsOK=0\r
722 echo TIFF support is missing.\r
723 echo Install libtiff development files or use --without-tiff\r
724\r
725:checkgif\r
e3aef5c6
CS
726if not "(%HAVE_GIF%)" == "()" goto checkdistfiles\r
727if (%gifsupport%) == (N) goto checkdistfiles\r
32154d10
JR
728 set libsOK=0\r
729 echo GIF support is missing.\r
730 echo Install giflib or libungif development files or use --without-gif\r
731\r
e3aef5c6
CS
732:checkdistfiles\r
733if "(%HAVE_DISTFILES%)" == "()" goto donelibchecks\r
734if (%distFilesOk%) == (1) goto donelibchecks\r
735echo.\r
736echo Files specified with option --distfiles could not be found.\r
737echo Fix these issues before running make dist\r
738\r
32154d10
JR
739:donelibchecks\r
740if (%libsOK%) == (1) goto success\r
741echo.\r
742echo Important libraries are missing. Fix these issues before running make.\r
743goto end\r
744\r
745:success\r
f466241d 746echo Emacs successfully configured.\r
a27014fc 747echo Emacs successfully configured. >>config.log\r
361823f4 748if (%MAKECMD%) == (gmake) set MAKECMD=make\r
f466241d
EZ
749echo Run `%MAKECMD%' to build, then run `%MAKECMD% install' to install.\r
750goto end\r
751\r
752:SmallEnv\r
753echo Your environment size is too small. Please enlarge it and rerun configure.\r
754echo For example, type "command.com /e:2048" to have 2048 bytes available.\r
755set $foo$=\r
ee705a5c 756\r
f466241d
EZ
757:end\r
758set prefix=\r
759set nodebug=\r
760set noopt=\r
7d0170c8 761set enablechecking=\r
75663c75 762set profile=\r
f466241d
EZ
763set nocygwin=\r
764set COMPILER=\r
765set MAKECMD=\r
766set usercflags=\r
3a1ebd63 767set docflags=\r
f466241d 768set userldflags=\r
3a1ebd63 769set doldflags=\r
112dc8e1 770set mingwflag=\r
dbbdb507 771set mf=\r
e3aef5c6
CS
772set distfiles=\r
773set HAVE_DISTFILES=\r
774set distFilesOk=\r
a2fcf029
MB
775\r
776goto skipArchTag\r
777 arch-tag: 300d20a4-1675-4e75-b615-7ce1a8c5376c\r
778:skipArchTag\r