Fix some 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
3a1ebd63
EZ
633if (%docflags%) == (Y) echo #define USER_CFLAGS " %usercflags%">>config.tmp\r
634if (%doldflags%) == (Y) echo #define USER_LDFLAGS " %userldflags%">>config.tmp\r
f179addc 635if (%profile%) == (Y) echo #define PROFILING 1 >>config.tmp\r
c262c68c
EZ
636if not "(%HAVE_PNG%)" == "()" echo #define HAVE_PNG 1 >>config.tmp\r
637if not "(%HAVE_JPEG%)" == "()" echo #define HAVE_JPEG 1 >>config.tmp\r
638if not "(%HAVE_GIF%)" == "()" echo #define HAVE_GIF 1 >>config.tmp\r
639if not "(%HAVE_TIFF%)" == "()" echo #define HAVE_TIFF 1 >>config.tmp\r
640if not "(%HAVE_XPM%)" == "()" echo #define HAVE_XPM 1 >>config.tmp\r
8bc63b1a
JR
641if "(%HAVE_RSVG%)" == "(1)" echo #define HAVE_RSVG 1 >>config.tmp\r
642\r
c262c68c
EZ
643echo /* End of settings from configure.bat. */ >>config.tmp\r
644\r
645Rem See if fc.exe returns a meaningful exit status. If it does, we\r
646Rem might as well avoid unnecessary overwriting of config.h and epaths.h,\r
647Rem since this forces recompilation of every source file.\r
648if exist foo.bar del foo.bar\r
649fc /b foo.bar foo.bar >nul 2>&1\r
650if not errorlevel 2 goto doCopy\r
651fc /b config.tmp ..\src\config.h >nul 2>&1\r
652if errorlevel 1 goto doCopy\r
653fc /b paths.h ..\src\epaths.h >nul 2>&1\r
654if errorlevel 0 goto dontCopy\r
ee705a5c 655\r
c262c68c
EZ
656:doCopy\r
657copy config.tmp ..\src\config.h\r
f466241d
EZ
658copy paths.h ..\src\epaths.h\r
659\r
c262c68c
EZ
660:dontCopy\r
661if exist config.tmp del config.tmp\r
f466241d 662copy /b config.settings+%MAKECMD%.defs+..\nt\makefile.w32-in ..\nt\makefile\r
a392138f 663if exist ..\admin\unidata copy /b config.settings+%MAKECMD%.defs+..\admin\unidata\makefile.w32-in ..\admin\unidata\makefile\r
f466241d
EZ
664copy /b config.settings+%MAKECMD%.defs+..\lib-src\makefile.w32-in ..\lib-src\makefile\r
665copy /b config.settings+%MAKECMD%.defs+..\src\makefile.w32-in ..\src\makefile\r
8aee12d0
GM
666copy /b config.settings+%MAKECMD%.defs+..\doc\emacs\makefile.w32-in ..\doc\emacs\makefile\r
667copy /b config.settings+%MAKECMD%.defs+..\doc\misc\makefile.w32-in ..\doc\misc\makefile\r
668copy /b config.settings+%MAKECMD%.defs+..\doc\lispref\makefile.w32-in ..\doc\lispref\makefile\r
669copy /b config.settings+%MAKECMD%.defs+..\doc\lispintro\makefile.w32-in ..\doc\lispintro\makefile\r
f466241d
EZ
670if exist ..\lisp\makefile rm -f ../lisp/[Mm]akefile\r
671copy /b config.settings+%MAKECMD%.defs+..\lisp\makefile.w32-in ..\lisp\makefile\r
672rem Use the default (no-op) Makefile.in if the nt version is not present.\r
673if exist ..\leim\makefile.w32-in copy /b config.settings+%MAKECMD%.defs+..\leim\makefile.w32-in ..\leim\makefile\r
674if not exist ..\leim\makefile.w32-in copy /b config.settings+%MAKECMD%.defs+..\leim\Makefile.in ..\leim\makefile\r
675del config.settings\r
676\r
e44f8099
EZ
677Rem Some people use WinZip which doesn't create empty directories!\r
678if not exist ..\site-lisp\nul mkdir ..\site-lisp\\r
57a64408
JB
679Rem Update subdirs.el only if it is different or fc.exe doesn't work.\r
680if exist foo.bar del foo.bar\r
681fc /b foo.bar foo.bar >nul 2>&1\r
682if not errorlevel 2 goto doUpdateSubdirs\r
683fc /b subdirs.el ..\site-lisp\subdirs.el >nul 2>&1\r
684if not errorlevel 1 goto dontUpdateSubdirs\r
ee705a5c 685\r
57a64408
JB
686:doUpdateSubdirs\r
687if exist ..\site-lisp\subdirs.el del ..\site-lisp\subdirs.el\r
688copy subdirs.el ..\site-lisp\subdirs.el\r
689\r
690:dontUpdateSubdirs\r
f466241d 691echo.\r
32154d10
JR
692\r
693rem check that we have all the libraries we need.\r
694set libsOK=1\r
695\r
696if not "(%HAVE_XPM%)" == "()" goto checkpng\r
697if (%xpmsupport%) == (N) goto checkpng\r
698 set libsOK=0\r
699 echo XPM support is missing. It is required for color icons in the toolbar.\r
700 echo Install libXpm development files or use --without-xpm\r
701\r
702:checkpng\r
703if not "(%HAVE_PNG%)" == "()" goto checkjpeg\r
704if (%pngsupport%) == (N) goto checkjpeg\r
705 set libsOK=0\r
706 echo PNG support is missing.\r
707 echo Install libpng development files or use --without-png\r
708\r
709:checkjpeg\r
710if not "(%HAVE_JPEG%)" == "()" goto checktiff\r
711if (%jpegsupport%) == (N) goto checktiff\r
712 set libsOK=0\r
713 echo JPEG support is missing.\r
714 echo Install jpeg development files or use --without-jpeg\r
715\r
716:checktiff\r
717if not "(%HAVE_TIFF%)" == "()" goto checkgif\r
718if (%tiffsupport%) == (N) goto checkgif\r
719 set libsOK=0\r
720 echo TIFF support is missing.\r
721 echo Install libtiff development files or use --without-tiff\r
722\r
723:checkgif\r
e3aef5c6
CS
724if not "(%HAVE_GIF%)" == "()" goto checkdistfiles\r
725if (%gifsupport%) == (N) goto checkdistfiles\r
32154d10
JR
726 set libsOK=0\r
727 echo GIF support is missing.\r
728 echo Install giflib or libungif development files or use --without-gif\r
729\r
e3aef5c6
CS
730:checkdistfiles\r
731if "(%HAVE_DISTFILES%)" == "()" goto donelibchecks\r
732if (%distFilesOk%) == (1) goto donelibchecks\r
733echo.\r
734echo Files specified with option --distfiles could not be found.\r
735echo Fix these issues before running make dist\r
736\r
32154d10
JR
737:donelibchecks\r
738if (%libsOK%) == (1) goto success\r
739echo.\r
740echo Important libraries are missing. Fix these issues before running make.\r
741goto end\r
742\r
743:success\r
f466241d 744echo Emacs successfully configured.\r
a27014fc 745echo Emacs successfully configured. >>config.log\r
361823f4 746if (%MAKECMD%) == (gmake) set MAKECMD=make\r
f466241d
EZ
747echo Run `%MAKECMD%' to build, then run `%MAKECMD% install' to install.\r
748goto end\r
749\r
750:SmallEnv\r
751echo Your environment size is too small. Please enlarge it and rerun configure.\r
752echo For example, type "command.com /e:2048" to have 2048 bytes available.\r
753set $foo$=\r
ee705a5c 754\r
f466241d
EZ
755:end\r
756set prefix=\r
757set nodebug=\r
758set noopt=\r
7d0170c8 759set enablechecking=\r
75663c75 760set profile=\r
f466241d
EZ
761set nocygwin=\r
762set COMPILER=\r
763set MAKECMD=\r
764set usercflags=\r
3a1ebd63 765set docflags=\r
f466241d 766set userldflags=\r
3a1ebd63 767set doldflags=\r
112dc8e1 768set mingwflag=\r
dbbdb507 769set mf=\r
e3aef5c6
CS
770set distfiles=\r
771set HAVE_DISTFILES=\r
772set distFilesOk=\r
a2fcf029
MB
773\r
774goto skipArchTag\r
775 arch-tag: 300d20a4-1675-4e75-b615-7ce1a8c5376c\r
776:skipArchTag\r