* unexelf.c: Use a different way to cause a compilation error if anyone uses
[bpt/emacs.git] / nt / configure.bat
... / ...
CommitLineData
1@echo off\r
2rem ----------------------------------------------------------------------\r
3rem Configuration script for MS Windows operating systems\r
4rem Copyright (C) 1999-2011 Free Software Foundation, Inc.\r
5\r
6rem This file is part of GNU Emacs.\r
7\r
8rem GNU Emacs is free software: you can redistribute it and/or modify\r
9rem it under the terms of the GNU General Public License as published by\r
10rem the Free Software Foundation, either version 3 of the License, or\r
11rem (at your option) any later version.\r
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
19rem along with GNU Emacs. If not, see http://www.gnu.org/licenses/.\r
20\r
21rem ----------------------------------------------------------------------\r
22rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:\r
23rem\r
24rem + MS Windows 95, NT or later\r
25rem + either MSVC 2.x or later, or gcc-2.95 or later (with GNU make 3.75\r
26rem or later) and the Mingw32 and W32 API headers and libraries.\r
27rem + Visual Studio 2005 is not supported at this time.\r
28rem\r
29rem For reference, here is a list of which builds of GNU make are known to\r
30rem work or not, and whether they work in the presence and/or absence of\r
31rem sh.exe.\r
32rem\r
33rem sh exists no sh\r
34rem cygwin b20.1 make (3.75): fails[1,5] fails[2,5]\r
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
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
42rem cygwin compiled make 3.80: okay[6] fails?[7]\r
43rem cygwin compiled make 3.81: fails fails?[7]\r
44rem mingw32 compiled make 3.79.1: okay okay\r
45rem mingw32 compiled make 3.80: okay okay?[7]\r
46rem mingw32 compiled make 3.81: okay okay[8]\r
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
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
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
60rem\r
61\r
62if exist config.log del config.log\r
63\r
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
82set enablechecking=N\r
83set profile=N\r
84set nocygwin=N\r
85set COMPILER=\r
86set usercflags=\r
87set docflags=\r
88set userldflags=\r
89set doldflags=\r
90set sep1=\r
91set sep2=\r
92set sep3=\r
93set distfiles=\r
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
105if "%1" == "--enable-checking" goto enablechecking\r
106if "%1" == "--profile" goto profile\r
107if "%1" == "--no-cygwin" goto nocygwin\r
108if "%1" == "--cflags" goto usercflags\r
109if "%1" == "--ldflags" goto userldflags\r
110if "%1" == "--without-png" goto withoutpng\r
111if "%1" == "--without-jpeg" goto withoutjpeg\r
112if "%1" == "--without-gif" goto withoutgif\r
113if "%1" == "--without-tiff" goto withouttiff\r
114if "%1" == "--without-xpm" goto withoutxpm\r
115if "%1" == "--with-svg" goto withsvg\r
116if "%1" == "--distfiles" goto distfiles\r
117if "%1" == "" goto checkutils\r
118\r
119:usage\r
120echo Usage: configure [options]\r
121echo Options:\r
122echo. --prefix PREFIX install Emacs in directory PREFIX\r
123echo. --with-gcc use GCC to compile Emacs\r
124echo. --with-msvc use MSVC to compile Emacs\r
125echo. --no-debug exclude debug info from executables\r
126echo. --no-opt disable optimization\r
127echo. --enable-checking enable checks and assertions\r
128echo. --profile enable profiling\r
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
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
137echo. --with-svg use the RSVG library (experimental)\r
138echo. --distfiles path to files for make dist, e.g. libXpm.dll\r
139goto end\r
140\r
141rem ----------------------------------------------------------------------\r
142\r
143:setprefix\r
144shift\r
145set prefix=%1\r
146shift\r
147goto again\r
148\r
149rem ----------------------------------------------------------------------\r
150\r
151:withgcc\r
152set COMPILER=gcc\r
153shift\r
154goto again\r
155\r
156rem ----------------------------------------------------------------------\r
157\r
158:withmsvc\r
159set COMPILER=cl\r
160shift\r
161goto again\r
162\r
163rem ----------------------------------------------------------------------\r
164\r
165:nodebug\r
166set nodebug=Y\r
167shift\r
168goto again\r
169\r
170rem ----------------------------------------------------------------------\r
171\r
172:noopt\r
173set noopt=Y\r
174shift\r
175goto again\r
176\r
177rem ----------------------------------------------------------------------\r
178\r
179:enablechecking\r
180set enablechecking=Y\r
181shift\r
182goto again\r
183\r
184rem ----------------------------------------------------------------------\r
185\r
186:profile\r
187set profile=Y\r
188shift\r
189goto again\r
190\r
191rem ----------------------------------------------------------------------\r
192\r
193:nocygwin\r
194set nocygwin=Y\r
195shift\r
196goto again\r
197\r
198rem ----------------------------------------------------------------------\r
199\r
200:usercflags\r
201shift\r
202set usercflags=%usercflags%%sep1%%1\r
203set sep1= %nothing%\r
204shift\r
205goto again\r
206\r
207rem ----------------------------------------------------------------------\r
208\r
209:userldflags\r
210shift\r
211set userldflags=%userldflags%%sep2%%1\r
212set sep2= %nothing%\r
213shift\r
214goto again\r
215\r
216rem ----------------------------------------------------------------------\r
217\r
218:withoutpng\r
219set pngsupport=N\r
220set HAVE_PNG=\r
221shift\r
222goto again\r
223\r
224rem ----------------------------------------------------------------------\r
225\r
226:withoutjpeg\r
227set jpegsupport=N\r
228set HAVE_JPEG=\r
229shift\r
230goto again\r
231\r
232rem ----------------------------------------------------------------------\r
233\r
234:withoutgif\r
235set gifsupport=N\r
236set HAVE_GIF=\r
237shift\r
238goto again\r
239\r
240rem ----------------------------------------------------------------------\r
241\r
242:withouttiff\r
243set tiffsupport=N\r
244set HAVE_TIFF=\r
245shift\r
246goto again\r
247\r
248rem ----------------------------------------------------------------------\r
249\r
250:withoutxpm\r
251set xpmsupport=N\r
252set HAVE_XPM=\r
253shift\r
254goto again\r
255\r
256:withsvg\r
257shift\r
258set svgsupport=Y\r
259goto again\r
260\r
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
271rem ----------------------------------------------------------------------\r
272rem Check that necessary utilities (cp and rm) are present.\r
273\r
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
282\r
283:needcp\r
284echo You need 'cp' (the Unix file copy program) to build Emacs.\r
285goto end\r
286\r
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
294\r
295:checkcompiler\r
296if (%COMPILER%)==(cl) goto compilercheckdone\r
297if (%COMPILER%)==(gcc) goto checkgcc\r
298\r
299echo Checking whether 'gcc' is available...\r
300echo main(){} >junk.c\r
301gcc -c junk.c\r
302if exist junk.o goto checkgcc\r
303\r
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
309:checkgcc\r
310if exist junk.o del junk.o\r
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
315if (%nocygwin%) == (Y) goto chkapiN\r
316echo Checking whether gcc requires '-mno-cygwin'...\r
317echo #include "cygwin/version.h" >junk.c\r
318echo main(){} >>junk.c\r
319echo gcc -c junk.c >>config.log\r
320gcc -c junk.c >>config.log 2>&1\r
321if not exist junk.o goto chkapi\r
322echo gcc -mno-cygwin -c junk.c >>config.log\r
323gcc -mno-cygwin -c junk.c >>config.log 2>&1\r
324if exist junk.o set nocygwin=Y\r
325\r
326:chkapi\r
327echo The failed program was: >>config.log\r
328type junk.c >>config.log\r
329\r
330:chkapiN\r
331rm -f junk.c junk.o\r
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
339rem Beginning with Emacs 23, we need usp10.h.\r
340rem\r
341echo Checking whether W32 API headers are too old...\r
342echo #include "windows.h" >junk.c\r
343echo #include "usp10.h" >>junk.c\r
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
349\r
350:chkapi1\r
351set cf=%usercflags% -mno-cygwin\r
352\r
353:chkapi2\r
354echo on\r
355gcc %cf% -c junk.c\r
356@echo off\r
357@echo gcc %cf% -c junk.c >>config.log\r
358gcc %cf% -c junk.c >>config.log 2>&1\r
359set cf=\r
360if exist junk.o goto chkuser\r
361echo The failed program was: >>config.log\r
362type junk.c >>config.log\r
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
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
391echo Using 'gcc'\r
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
403goto gccdebug\r
404\r
405:gccMtuneOk\r
406echo GCC supports -mtune=pentium4 >>config.log\r
407set mf=-mtune=pentium4\r
408rm -f junk.c junk.o\r
409\r
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
421\r
422:gccdwarf\r
423echo GCC supports DWARF-2 >>config.log\r
424set dbginfo=-gdwarf-2 -g3\r
425rm -f junk.c junk.o\r
426goto compilercheckdone\r
427\r
428:clOk\r
429set COMPILER=cl\r
430rm -f junk.c junk.obj\r
431echo Using 'MSVC'\r
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
440set mingwflag=\r
441\r
442if (%nocygwin%) == (N) goto flagsOK\r
443set mingwflag=-mno-cygwin\r
444\r
445:flagsOK\r
446\r
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
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
455if exist junk.obj goto havePng\r
456\r
457echo ...png.h not found, building without PNG support.\r
458echo The failed program was: >>config.log\r
459type junk.c >>config.log\r
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
469\r
470if (%jpegsupport%) == (N) goto jpegDone\r
471\r
472echo Checking for jpeg-6b...\r
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
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
478if exist junk.obj goto haveJpeg\r
479\r
480echo ...jconfig.h not found, building without JPEG support.\r
481echo The failed program was: >>config.log\r
482type junk.c >>config.log\r
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
493if (%gifsupport%) == (N) goto gifDone\r
494\r
495echo Checking for libgif...\r
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
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
501if exist junk.obj goto haveGif\r
502\r
503echo ...gif_lib.h not found, building without GIF support.\r
504echo The failed program was: >>config.log\r
505type junk.c >>config.log\r
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
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
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
524if exist junk.obj goto haveTiff\r
525\r
526echo ...tiffio.h not found, building without TIFF support.\r
527echo The failed program was: >>config.log\r
528type junk.c >>config.log\r
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
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
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
548if exist junk.obj goto haveXpm\r
549\r
550echo ...X11/xpm.h not found, building without XPM support.\r
551echo The failed program was: >>config.log\r
552type junk.c >>config.log\r
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
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
583rm -f junk.c junk.obj junk.err junk.out\r
584\r
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
614rem ----------------------------------------------------------------------\r
615\r
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
627if not "(%mf%)" == "()" echo MCPU_FLAG=%mf%>>config.settings\r
628if not "(%dbginfo%)" == "()" echo DEBUG_INFO=%dbginfo%>>config.settings\r
629if (%nodebug%) == (Y) echo NODEBUG=1 >>config.settings\r
630if (%noopt%) == (Y) echo NOOPT=1 >>config.settings\r
631if (%enablechecking%) == (Y) echo ENABLECHECKS=1 >>config.settings\r
632if (%profile%) == (Y) echo PROFILE=1 >>config.settings\r
633if (%nocygwin%) == (Y) echo NOCYGWIN=1 >>config.settings\r
634if not "(%prefix%)" == "()" echo INSTALL_DIR=%prefix%>>config.settings\r
635if not "(%distfiles%)" == "()" echo DIST_FILES=%distfiles%>>config.settings\r
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
642echo # End of settings from configure.bat>>config.settings\r
643echo. >>config.settings\r
644\r
645copy config.nt config.tmp\r
646echo. >>config.tmp\r
647echo /* Start of settings from configure.bat. */ >>config.tmp\r
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
650if (%docflags%) == (Y) echo #define USER_CFLAGS " %usercflags%">>config.tmp\r
651if (%doldflags%) == (Y) echo #define USER_LDFLAGS " %userldflags%">>config.tmp\r
652if (%profile%) == (Y) echo #define PROFILING 1 >>config.tmp\r
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
658if "(%HAVE_RSVG%)" == "(1)" echo #define HAVE_RSVG 1 >>config.tmp\r
659\r
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
671if not errorlevel 1 goto dontCopy\r
672\r
673:doCopy\r
674copy config.tmp ..\src\config.h\r
675copy paths.h ..\src\epaths.h\r
676\r
677:dontCopy\r
678if exist config.tmp del config.tmp\r
679copy /b config.settings+%MAKECMD%.defs+..\nt\makefile.w32-in ..\nt\makefile\r
680if exist ..\admin\unidata copy /b config.settings+%MAKECMD%.defs+..\admin\unidata\makefile.w32-in ..\admin\unidata\makefile\r
681copy /b config.settings+%MAKECMD%.defs+..\lib-src\makefile.w32-in ..\lib-src\makefile\r
682copy /b config.settings+%MAKECMD%.defs+..\lib\makefile.w32-in ..\lib\makefile\r
683copy /b config.settings+%MAKECMD%.defs+..\src\makefile.w32-in ..\src\makefile\r
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
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
695Rem Some people use WinZip which doesn't create empty directories!\r
696if not exist ..\site-lisp\nul mkdir ..\site-lisp\\r
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
703\r
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
709echo.\r
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
742if not "(%HAVE_GIF%)" == "()" goto checkdistfiles\r
743if (%gifsupport%) == (N) goto checkdistfiles\r
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
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
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
762echo Emacs successfully configured.\r
763echo Emacs successfully configured. >>config.log\r
764if (%MAKECMD%) == (gmake) set MAKECMD=make\r
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
772\r
773:end\r
774set prefix=\r
775set nodebug=\r
776set noopt=\r
777set enablechecking=\r
778set profile=\r
779set nocygwin=\r
780set COMPILER=\r
781set MAKECMD=\r
782set usercflags=\r
783set docflags=\r
784set userldflags=\r
785set doldflags=\r
786set mingwflag=\r
787set mf=\r
788set distfiles=\r
789set HAVE_DISTFILES=\r
790set distFilesOk=\r
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
804\r