2 rem ----------------------------------------------------------------------
\r
3 rem Configuration script for MS Windows operating systems
\r
4 rem Copyright (C) 1999-2012 Free Software Foundation, Inc.
\r
6 rem This file is part of GNU Emacs.
\r
8 rem GNU Emacs is free software: you can redistribute it and/or modify
\r
9 rem it under the terms of the GNU General Public License as published by
\r
10 rem the Free Software Foundation, either version 3 of the License, or
\r
11 rem (at your option) any later version.
\r
13 rem GNU Emacs is distributed in the hope that it will be useful,
\r
14 rem but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
15 rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
16 rem GNU General Public License for more details.
\r
18 rem You should have received a copy of the GNU General Public License
\r
19 rem along with GNU Emacs. If not, see http://www.gnu.org/licenses/.
\r
21 rem ----------------------------------------------------------------------
\r
22 rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:
\r
24 rem + MS Windows 95, NT or later
\r
25 rem + either MSVC 2.x or later, or gcc-2.95 or later (with GNU make 3.75
\r
26 rem or later) and the Mingw32 and Windows API headers and libraries.
\r
27 rem + Visual Studio 2005 is not supported at this time.
\r
29 rem For reference, here is a list of which builds of GNU make are known to
\r
30 rem work or not, and whether they work in the presence and/or absence of
\r
34 rem cygwin b20.1 make (3.75): fails[1,5] fails[2,5]
\r
35 rem MSVC compiled gmake 3.77: okay okay
\r
36 rem MSVC compiled gmake 3.78.1: okay okay
\r
37 rem MSVC compiled gmake 3.79.1: okay okay
\r
38 rem mingw32/gcc-2.92.2 make (3.77): okay okay[4]
\r
39 rem cygwin compiled gmake 3.77: fails[1,5] fails[2,5]
\r
40 rem cygwin compiled gmake 3.78.1: fails[5] fails[2,5]
\r
41 rem cygwin compiled gmake 3.79.1: fails[3,5] fails[2?,5]
\r
42 rem cygwin compiled make 3.80: okay[6] fails?[7]
\r
43 rem cygwin compiled make 3.81: fails fails?[7]
\r
44 rem mingw32 compiled make 3.79.1: okay okay
\r
45 rem mingw32 compiled make 3.80: okay okay?[7]
\r
46 rem mingw32 compiled make 3.81: okay okay[8]
\r
48 rem [1] doesn't cope with makefiles with DOS line endings, so must mount
\r
49 rem emacs source with text!=binary.
\r
50 rem [2] fails when needs to invoke shell commands; okay invoking gcc etc.
\r
51 rem [3] requires LC_MESSAGES support to build; cannot build with early
\r
52 rem versions of cygwin.
\r
53 rem [4] may fail on Windows 9X and Windows ME; if so, install Bash.
\r
54 rem [5] fails when building leim due to the use of cygwin style paths.
\r
55 rem May work if building emacs without leim.
\r
56 rem [6] need to uncomment 3 lines in nt/gmake.defs that invoke `cygpath';
\r
57 rem look for "cygpath" near line 85 of gmake.defs.
\r
58 rem [7] not recommended; please report if you try this combination.
\r
59 rem [8] tested only on Windows XP.
\r
62 if exist config.log del config.log
\r
64 rem ----------------------------------------------------------------------
\r
65 rem See if the environment is large enough. We need 43 (?) bytes.
\r
66 set $foo$=123456789_123456789_123456789_123456789_123
\r
67 if not "%$foo$%" == "123456789_123456789_123456789_123456789_123" goto SmallEnv
\r
70 rem ----------------------------------------------------------------------
\r
71 rem Make sure we are running in the nt subdir
\r
72 if exist configure.bat goto start
\r
73 echo You must run configure from the nt subdirectory.
\r
77 rem ----------------------------------------------------------------------
\r
78 rem Attempt to enable command extensions. Set use_extensions to 1 if
\r
79 rem they are available and 0 if they are not available.
\r
80 set use_extensions=1
\r
81 setlocal ENABLEEXTENSIONS
\r
82 if "%CMDEXTVERSION%" == "" set use_extensions=0
\r
83 if "%use_extensions%" == "1" goto afterext
\r
85 echo. Command extensions are not available. Using parameters that include the =
\r
86 echo. character by enclosing them in quotes will not be supported.
\r
90 rem ----------------------------------------------------------------------
\r
91 rem Default settings.
\r
95 set enablechecking=N
\r
103 set escuserldflags=
\r
113 rem ----------------------------------------------------------------------
\r
114 rem Handle arguments.
\r
116 if "%1" == "-h" goto usage
\r
117 if "%1" == "--help" goto usage
\r
118 if "%1" == "--prefix" goto setprefix
\r
119 if "%1" == "--with-gcc" goto withgcc
\r
120 if "%1" == "--with-msvc" goto withmsvc
\r
121 if "%1" == "--no-debug" goto nodebug
\r
122 if "%1" == "--no-opt" goto noopt
\r
123 if "%1" == "--enable-checking" goto enablechecking
\r
124 if "%1" == "--profile" goto profile
\r
125 if "%1" == "--no-cygwin" goto nocygwin
\r
126 if "%1" == "--cflags" goto usercflags
\r
127 if "%1" == "--ldflags" goto userldflags
\r
128 if "%1" == "--lib" goto extrauserlibs
\r
129 if "%1" == "--without-png" goto withoutpng
\r
130 if "%1" == "--without-jpeg" goto withoutjpeg
\r
131 if "%1" == "--without-gif" goto withoutgif
\r
132 if "%1" == "--without-tiff" goto withouttiff
\r
133 if "%1" == "--without-gnutls" goto withoutgnutls
\r
134 if "%1" == "--without-libxml2" goto withoutlibxml2
\r
135 if "%1" == "--without-xpm" goto withoutxpm
\r
136 if "%1" == "--with-svg" goto withsvg
\r
137 if "%1" == "--distfiles" goto distfiles
\r
138 if "%1" == "" goto checkutils
\r
141 echo Usage: configure [options]
\r
143 echo. --prefix PREFIX install Emacs in directory PREFIX
\r
144 echo. --with-gcc use GCC to compile Emacs
\r
145 echo. --with-msvc use MSVC to compile Emacs
\r
146 echo. --no-debug exclude debug info from executables
\r
147 echo. --no-opt disable optimization
\r
148 echo. --enable-checking enable additional run-time checks
\r
149 echo. --profile enable profiling
\r
150 echo. --no-cygwin use -mno-cygwin option with GCC
\r
151 echo. --cflags FLAG pass FLAG to compiler
\r
152 echo. --ldflags FLAG pass FLAG to compiler when linking
\r
153 echo. --lib LIB link to extra library LIB
\r
154 echo. --without-png do not use PNG library even if it is installed
\r
155 echo. --without-jpeg do not use JPEG library even if it is installed
\r
156 echo. --without-gif do not use GIF library even if it is installed
\r
157 echo. --without-tiff do not use TIFF library even if it is installed
\r
158 echo. --without-xpm do not use XPM library even if it is installed
\r
159 echo. --without-gnutls do not use GnuTLS library even if it is installed
\r
160 echo. --without-libxml2 do not use libxml2 library even if it is installed
\r
161 echo. --with-svg use the RSVG library (experimental)
\r
162 echo. --distfiles path to files for make dist, e.g. libXpm.dll
\r
163 if "%use_extensions%" == "0" goto end
\r
165 echo. The cflags and ldflags arguments support parameters that include the =
\r
166 echo. character. However, since the = character is normally treated as a
\r
167 echo. separator character you will need to enclose any parameter that includes
\r
168 echo. the = character in quotes. For example, to include
\r
169 echo. -DSITELOAD_PURESIZE_EXTRA=100000 as one of the cflags you would run
\r
170 echo. configure.bat as follows:
\r
171 echo. configure.bat --cflags "-DSITELOAD_PURESIZE_EXTRA=100000"
\r
173 echo. Note that this capability of processing parameters that include the =
\r
174 echo. character depends on command extensions. This batch file attempts to
\r
175 echo. enable command extensions. If command extensions cannot be enabled, a
\r
176 echo. warning message will be displayed.
\r
179 rem ----------------------------------------------------------------------
\r
187 rem ----------------------------------------------------------------------
\r
194 rem ----------------------------------------------------------------------
\r
201 rem ----------------------------------------------------------------------
\r
208 rem ----------------------------------------------------------------------
\r
215 rem ----------------------------------------------------------------------
\r
218 set enablechecking=Y
\r
222 rem ----------------------------------------------------------------------
\r
229 rem ----------------------------------------------------------------------
\r
236 rem ----------------------------------------------------------------------
\r
239 if "%use_extensions%" == "1" goto ucflagex
\r
244 set usercflags=%usercflags%%sep1%%~1
\r
245 set escusercflags=%usercflags:"=\"%
\r
246 set sep1= %nothing%
\r
252 set usercflags=%usercflags%%sep1%%1
\r
253 set escusercflags=%usercflags%
\r
254 set sep1= %nothing%
\r
260 echo. extrauserlibs: %extrauserlibs%
\r
261 set extrauserlibs=%extrauserlibs%%sep4%%1
\r
262 set sep4= %nothing%
\r
266 rem ----------------------------------------------------------------------
\r
269 if "%use_extensions%" == "1" goto ulflagex
\r
274 set userldflags=%userldflags%%sep2%%~1
\r
275 set escuserldflags=%userldflags:"=\"%
\r
276 set sep2= %nothing%
\r
282 set userldflags=%userldflags%%sep2%%1
\r
283 set escuserldflags=%userldflags%
\r
284 set sep2= %nothing%
\r
288 rem ----------------------------------------------------------------------
\r
296 rem ----------------------------------------------------------------------
\r
304 rem ----------------------------------------------------------------------
\r
312 rem ----------------------------------------------------------------------
\r
320 rem ----------------------------------------------------------------------
\r
323 set libxml2support=N
\r
328 rem ----------------------------------------------------------------------
\r
336 rem ----------------------------------------------------------------------
\r
349 rem ----------------------------------------------------------------------
\r
352 set HAVE_DISTFILES=1
\r
354 set distfiles=%distfiles%%sep3%%1
\r
355 set sep3= %nothing%
\r
359 rem ----------------------------------------------------------------------
\r
360 rem Check that necessary utilities (cp and rm) are present.
\r
363 echo Checking for 'cp'...
\r
364 cp configure.bat junk.bat
\r
365 if not exist junk.bat goto needcp
\r
366 echo Checking for 'rm'...
\r
368 if exist junk.bat goto needrm
\r
372 echo You need 'cp' (the Unix file copy program) to build Emacs.
\r
377 echo You need 'rm' (the Unix file delete program) to build Emacs.
\r
380 rem ----------------------------------------------------------------------
\r
381 rem Auto-detect compiler if not specified, and validate GCC if chosen.
\r
384 if (%COMPILER%)==(cl) goto compilercheckdone
\r
385 if (%COMPILER%)==(gcc) goto checkgcc
\r
387 echo Checking whether 'gcc' is available...
\r
388 echo main(){} >junk.c
\r
390 if exist junk.o goto checkgcc
\r
392 echo Checking whether 'cl' is available...
\r
393 cl -nologo -c junk.c
\r
394 if exist junk.obj goto clOK
\r
398 if exist junk.o del junk.o
\r
399 Rem WARNING -- COMMAND.COM on some systems only looks at the first
\r
400 Rem 8 characters of a label. So do NOT be tempted to change
\r
401 Rem chkapi* into something fancier like checkw32api
\r
402 Rem You HAVE been warned!
\r
403 if (%nocygwin%) == (Y) goto chkapiN
\r
404 echo Checking whether gcc requires '-mno-cygwin'...
\r
405 echo #include "cygwin/version.h" >junk.c
\r
406 echo main(){} >>junk.c
\r
407 echo gcc -c junk.c >>config.log
\r
408 gcc -c junk.c >>config.log 2>&1
\r
409 if not exist junk.o goto chkapi
\r
410 echo gcc -mno-cygwin -c junk.c >>config.log
\r
411 gcc -mno-cygwin -c junk.c >>config.log 2>&1
\r
412 if exist junk.o set nocygwin=Y
\r
415 echo The failed program was: >>config.log
\r
416 type junk.c >>config.log
\r
419 rm -f junk.c junk.o
\r
420 rem ----------------------------------------------------------------------
\r
421 rem Older versions of the Windows API headers either don't have any of
\r
422 rem the IMAGE_xxx definitions (the headers that come with Cygwin b20.1
\r
423 rem are like this), or have a typo in the definition of
\r
424 rem IMAGE_FIRST_SECTION (the headers with gcc/mingw32 2.95 have this
\r
425 rem problem). The gcc/mingw32 2.95.2 headers are okay, as are distros
\r
426 rem of w32api-xxx.zip from Anders Norlander since 1999-11-18 at least.
\r
427 rem Beginning with Emacs 23, we need usp10.h.
\r
429 echo Checking whether Windows API headers are too old...
\r
430 echo #include "windows.h" >junk.c
\r
431 echo #include "usp10.h" >>junk.c
\r
432 echo test(PIMAGE_NT_HEADERS pHeader) >>junk.c
\r
433 echo {PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader);} >>junk.c
\r
434 if (%nocygwin%) == (Y) goto chkapi1
\r
435 set cf=%usercflags%
\r
439 set cf=%usercflags% -mno-cygwin
\r
445 @echo gcc %cf% -c junk.c >>config.log
\r
446 gcc %cf% -c junk.c >>config.log 2>&1
\r
448 if exist junk.o goto chkuser
\r
449 echo The failed program was: >>config.log
\r
450 type junk.c >>config.log
\r
455 echo int main (int argc, char *argv[]) {>junk.c
\r
456 echo char *usercflags = "%escusercflags%";>>junk.c
\r
458 echo gcc -Werror -c junk.c >>config.log
\r
459 gcc -Werror -c junk.c >>config.log 2>&1
\r
460 if exist junk.o goto gccOk
\r
462 echo Error in --cflags argument: %usercflags%
\r
463 echo Backslashes and quotes cannot be used with --cflags. Please use forward
\r
464 echo slashes for filenames and paths (e.g. when passing directories to -I).
\r
470 echo Configure failed.
\r
471 echo To configure Emacs for Windows, you need to have either
\r
472 echo gcc-2.95 or later with Mingw32 and the Windows API headers,
\r
473 echo or MSVC 2.x or later.
\r
480 rm -f junk.c junk.o
\r
481 Rem It is not clear what GCC version began supporting -mtune
\r
482 Rem and pentium4 on x86, so check this explicitly.
\r
483 echo main(){} >junk.c
\r
484 echo gcc -c -O2 -mtune=pentium4 junk.c >>config.log
\r
485 gcc -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1
\r
486 if not errorlevel 1 goto gccMtuneOk
\r
487 echo The failed program was: >>config.log
\r
488 type junk.c >>config.log
\r
490 rm -f junk.c junk.o
\r
494 echo GCC supports -mtune=pentium4 >>config.log
\r
495 set mf=-mtune=pentium4
\r
496 rm -f junk.c junk.o
\r
499 rem Check for DWARF-2 debug info support, else default to stabs
\r
500 echo main(){} >junk.c
\r
501 echo gcc -c -gdwarf-2 -g3 junk.c >>config.log
\r
502 gcc -c -gdwarf-2 -g3 junk.c >>config.log 2>&1
\r
503 if not errorlevel 1 goto gccdwarf
\r
504 echo The failed program was: >>config.log
\r
505 type junk.c >>config.log
\r
506 set dbginfo=-gstabs+
\r
507 rm -f junk.c junk.o
\r
508 goto compilercheckdone
\r
511 echo GCC supports DWARF-2 >>config.log
\r
512 set dbginfo=-gdwarf-2 -g3
\r
513 rm -f junk.c junk.o
\r
514 goto compilercheckdone
\r
518 rm -f junk.c junk.obj
\r
523 rem ----------------------------------------------------------------------
\r
524 rem Check for external image libraries. Since they are loaded
\r
525 rem dynamically, the libraries themselves do not need to be present
\r
526 rem at compile time, but the header files are required.
\r
530 if (%nocygwin%) == (N) goto flagsOK
\r
531 set mingwflag=-mno-cygwin
\r
535 if (%pngsupport%) == (N) goto pngDone
\r
537 echo Checking for libpng...
\r
538 echo #include "png.h" >junk.c
\r
539 echo main (){} >>junk.c
\r
540 rem -o option is ignored with cl, but allows result to be consistent.
\r
541 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log
\r
542 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log
\r
543 if exist junk.obj goto havePng
\r
545 echo ...png.h not found, building without PNG support.
\r
546 echo The failed program was: >>config.log
\r
547 type junk.c >>config.log
\r
552 echo ...PNG header available, building with PNG support.
\r
556 rm -f junk.c junk.obj
\r
558 if (%tlssupport%) == (N) goto tlsDone
\r
560 rem this is a copy of the PNG detection
\r
561 echo Checking for libgnutls...
\r
562 echo #include "gnutls/gnutls.h" >junk.c
\r
563 echo main (){} >>junk.c
\r
564 rem -o option is ignored with cl, but allows result to be consistent.
\r
565 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log
\r
566 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log
\r
567 if exist junk.obj goto haveTls
\r
569 echo ...gnutls.h not found, building without TLS support.
\r
570 echo The failed program was: >>config.log
\r
571 type junk.c >>config.log
\r
576 echo ...GnuTLS header available, building with GnuTLS support.
\r
580 rm -f junk.c junk.obj
\r
582 if (%libxml2support%) == (N) goto xml2Done
\r
584 echo Checking for libxml2....
\r
585 echo #include "libxml/HTMLparser.h" >junk.c
\r
586 echo main(){} >>junk.c
\r
587 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log
\r
588 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log
\r
589 if exist junk.obj goto havelibxml2
\r
591 echo ...libxml/HTMLparser.h not found, building without libxml2 support
\r
592 echo The failed program was: >>config.log
\r
593 type junk.c >>config.log
\r
598 echo ...libxml2 header available, building with libxml2 support
\r
602 rm -f junk.c junk.obj
\r
604 if (%jpegsupport%) == (N) goto jpegDone
\r
606 echo Checking for jpeg-6b...
\r
607 echo #include "jconfig.h" >junk.c
\r
608 echo main (){} >>junk.c
\r
609 rem -o option is ignored with cl, but allows result to be consistent.
\r
610 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log
\r
611 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log
\r
612 if exist junk.obj goto haveJpeg
\r
614 echo ...jconfig.h not found, building without JPEG support.
\r
615 echo The failed program was: >>config.log
\r
616 type junk.c >>config.log
\r
621 echo ...JPEG header available, building with JPEG support.
\r
625 rm -f junk.c junk.obj
\r
627 if (%gifsupport%) == (N) goto gifDone
\r
629 echo Checking for libgif...
\r
630 rem giflib-5.0.0 needs size_t defined before gif_lib.h is included
\r
631 rem redirection characters need to be protected from the shell
\r
632 echo #include ^<stddef.h^> >junk.c
\r
633 echo #include "gif_lib.h" >>junk.c
\r
634 echo main (){} >>junk.c
\r
635 rem -o option is ignored with cl, but allows result to be consistent.
\r
636 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log
\r
637 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log
\r
638 if exist junk.obj goto haveGif
\r
640 echo ...gif_lib.h not found, building without GIF support.
\r
641 echo The failed program was: >>config.log
\r
642 type junk.c >>config.log
\r
647 echo ...GIF header available, building with GIF support.
\r
651 rm -f junk.c junk.obj
\r
653 if (%tiffsupport%) == (N) goto tiffDone
\r
655 echo Checking for tiff...
\r
656 echo #include "tiffio.h" >junk.c
\r
657 echo main (){} >>junk.c
\r
658 rem -o option is ignored with cl, but allows result to be consistent.
\r
659 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log
\r
660 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log
\r
661 if exist junk.obj goto haveTiff
\r
663 echo ...tiffio.h not found, building without TIFF support.
\r
664 echo The failed program was: >>config.log
\r
665 type junk.c >>config.log
\r
670 echo ...TIFF header available, building with TIFF support.
\r
674 rm -f junk.c junk.obj
\r
676 if (%xpmsupport%) == (N) goto xpmDone
\r
678 echo Checking for libXpm...
\r
679 echo #define FOR_MSW 1 >junk.c
\r
680 echo #include "X11/xpm.h" >>junk.c
\r
681 echo main (){} >>junk.c
\r
682 rem -o option is ignored with cl, but allows result to be consistent.
\r
683 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log
\r
684 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log
\r
685 if exist junk.obj goto haveXpm
\r
687 echo ...X11/xpm.h not found, building without XPM support.
\r
688 echo The failed program was: >>config.log
\r
689 type junk.c >>config.log
\r
694 echo ...XPM header available, building with XPM support.
\r
698 rm -f junk.c junk.obj
\r
700 if not (%svgsupport%) == (Y) goto :svgDone
\r
701 echo Checking for librsvg...
\r
702 echo #include "librsvg/rsvg.h" >junk.c
\r
703 echo main (){} >>junk.c
\r
704 rem -o option is ignored with cl, but allows result to be consistent.
\r
705 echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log
\r
706 %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log
\r
707 if exist junk.obj goto haveSvg
\r
709 echo ...librsvg/rsvg.h or dependencies not found, building without SVG support.
\r
710 echo The failed program was: >>config.log
\r
711 type junk.c >>config.log
\r
716 echo ...librsvg header available, building with SVG support (EXPERIMENTAL).
\r
720 rm -f junk.c junk.obj junk.err junk.out
\r
722 rem Any distfiles provided for building distribution? If no, we're done.
\r
723 if "(%HAVE_DISTFILES%)"=="()" goto :distFilesDone
\r
725 rem Any arguments to --distfiles specified? If no, we're done.
\r
726 if not "%distfiles%"=="" goto :checkDistFiles
\r
728 echo No arguments specified for option --distfiles!
\r
732 echo Checking for distfiles...
\r
733 rem Check if all specified distfiles exist
\r
735 for %%d in (%distfiles%) do if not exist %%d set fileNotFound=%%d
\r
736 if not "%fileNotFound%"=="" goto distFilesNotFound
\r
739 echo ...all distfiles found.
\r
740 goto :distFilesDone
\r
744 echo ...%fileNotFound% not found.
\r
746 goto :distfilesDone
\r
751 rem ----------------------------------------------------------------------
\r
754 echo Generating makefiles
\r
755 if %COMPILER% == gcc set MAKECMD=gmake
\r
756 if %COMPILER% == cl set MAKECMD=nmake
\r
758 rem Pass on chosen settings to makefiles.
\r
760 rem The weird place we put the redirection is to make sure no extra
\r
761 rem whitespace winds up at the end of the Make variables, since some
\r
762 rem variables, e.g. INSTALL_DIR, cannot stand that. Yes, echo will
\r
763 rem write the blanks between the end of command arguments and the
\r
764 rem redirection symbol to the file. OTOH, we cannot put the
\r
765 rem redirection immediately after the last character of the command,
\r
766 rem because environment variable expansion can yield a digit there,
\r
767 rem which will then be misinterpreted as the file descriptor to
\r
769 echo # Start of settings from configure.bat >config.settings
\r
770 >>config.settings echo COMPILER=%COMPILER%
\r
771 if not "(%mf%)" == "()" >>config.settings echo MCPU_FLAG=%mf%
\r
772 if not "(%dbginfo%)" == "()" >>config.settings echo DEBUG_INFO=%dbginfo%
\r
773 if (%nodebug%) == (Y) >>config.settings echo NODEBUG=1
\r
774 if (%noopt%) == (Y) >>config.settings echo NOOPT=1
\r
775 if (%profile%) == (Y) >>config.settings echo PROFILE=1
\r
776 if (%nocygwin%) == (Y) >>config.settings echo NOCYGWIN=1
\r
777 if not "(%prefix%)" == "()" >>config.settings echo INSTALL_DIR=%prefix%
\r
778 if not "(%distfiles%)" == "()" >>config.settings echo DIST_FILES=%distfiles%
\r
779 rem We go thru docflags because usercflags could be "-DFOO=bar" -something
\r
780 rem and the if command cannot cope with this
\r
781 for %%v in (%usercflags%) do if not (%%v)==() set docflags=Y
\r
782 if (%docflags%)==(Y) >>config.settings echo USER_CFLAGS=%usercflags%
\r
783 if (%docflags%)==(Y) >>config.settings echo ESC_USER_CFLAGS=%escusercflags%
\r
784 for %%v in (%userldflags%) do if not (%%v)==() set doldflags=Y
\r
785 if (%doldflags%)==(Y) >>config.settings echo USER_LDFLAGS=%userldflags%
\r
786 for %%v in (%extrauserlibs%) do if not (%%v)==() set doextralibs=Y
\r
787 if (%doextralibs%)==(Y) >>config.settings echo USER_LIBS=%extrauserlibs%
\r
788 echo # End of settings from configure.bat>>config.settings
\r
789 echo. >>config.settings
\r
791 copy config.nt config.tmp
\r
793 echo /* Start of settings from configure.bat. */ >>config.tmp
\r
794 rem We write USER_CFLAGS and USER_LDFLAGS starting with a space to simplify
\r
795 rem processing of compiler options in w32.c:get_emacs_configuration_options
\r
796 if (%docflags%) == (Y) echo #define USER_CFLAGS " %escusercflags%" >>config.tmp
\r
797 if (%doldflags%) == (Y) echo #define USER_LDFLAGS " %escuserldflags%" >>config.tmp
\r
798 if (%profile%) == (Y) echo #define PROFILING 1 >>config.tmp
\r
799 if (%enablechecking%) == (Y) echo #define ENABLE_CHECKING 1 >>config.tmp
\r
800 if not "(%HAVE_PNG%)" == "()" echo #define HAVE_PNG 1 >>config.tmp
\r
801 if not "(%HAVE_GNUTLS%)" == "()" echo #define HAVE_GNUTLS 1 >>config.tmp
\r
802 if not "(%HAVE_LIBXML2%)" == "()" echo #define HAVE_LIBXML2 1 >>config.tmp
\r
803 if not "(%HAVE_JPEG%)" == "()" echo #define HAVE_JPEG 1 >>config.tmp
\r
804 if not "(%HAVE_GIF%)" == "()" echo #define HAVE_GIF 1 >>config.tmp
\r
805 if not "(%HAVE_TIFF%)" == "()" echo #define HAVE_TIFF 1 >>config.tmp
\r
806 if not "(%HAVE_XPM%)" == "()" echo #define HAVE_XPM 1 >>config.tmp
\r
807 if "(%HAVE_RSVG%)" == "(1)" echo #define HAVE_RSVG 1 >>config.tmp
\r
809 echo /* End of settings from configure.bat. */ >>config.tmp
\r
811 Rem See if fc.exe returns a meaningful exit status. If it does, we
\r
812 Rem might as well avoid unnecessary overwriting of config.h and epaths.h,
\r
813 Rem since this forces recompilation of every source file.
\r
814 if exist foo.bar del foo.bar
\r
815 fc /b foo.bar foo.bar >nul 2>&1
\r
816 if not errorlevel 2 goto doCopy
\r
817 fc /b config.tmp ..\src\config.h >nul 2>&1
\r
818 if errorlevel 1 goto doCopy
\r
819 fc /b paths.h ..\src\epaths.h >nul 2>&1
\r
820 if not errorlevel 1 goto dontCopy
\r
823 copy config.tmp ..\src\config.h
\r
824 copy paths.h ..\src\epaths.h
\r
827 if exist config.tmp del config.tmp
\r
828 copy /b config.settings+%MAKECMD%.defs+..\nt\makefile.w32-in ..\nt\makefile
\r
829 if exist ..\admin\unidata copy /b config.settings+%MAKECMD%.defs+..\admin\unidata\makefile.w32-in ..\admin\unidata\makefile
\r
830 copy /b config.settings+%MAKECMD%.defs+..\lib-src\makefile.w32-in ..\lib-src\makefile
\r
831 copy /b config.settings+%MAKECMD%.defs+..\lib\makefile.w32-in ..\lib\makefile
\r
832 copy /b config.settings+%MAKECMD%.defs+..\src\makefile.w32-in ..\src\makefile
\r
833 copy /b config.settings+%MAKECMD%.defs+..\doc\emacs\makefile.w32-in ..\doc\emacs\makefile
\r
834 copy /b config.settings+%MAKECMD%.defs+..\doc\misc\makefile.w32-in ..\doc\misc\makefile
\r
835 copy /b config.settings+%MAKECMD%.defs+..\doc\lispref\makefile.w32-in ..\doc\lispref\makefile
\r
836 copy /b config.settings+%MAKECMD%.defs+..\doc\lispintro\makefile.w32-in ..\doc\lispintro\makefile
\r
837 if exist ..\lisp\makefile rm -f ../lisp/[Mm]akefile
\r
838 copy /b config.settings+%MAKECMD%.defs+..\lisp\makefile.w32-in ..\lisp\makefile
\r
839 rem Use the default (no-op) Makefile.in if the nt version is not present.
\r
840 if exist ..\leim\makefile.w32-in copy /b config.settings+%MAKECMD%.defs+..\leim\makefile.w32-in ..\leim\makefile
\r
841 if not exist ..\leim\makefile.w32-in copy /b config.settings+%MAKECMD%.defs+..\leim\Makefile.in ..\leim\makefile
\r
842 del config.settings
\r
844 Rem Some people use WinZip which doesn't create empty directories!
\r
845 if not exist ..\site-lisp\nul mkdir ..\site-lisp\
\r
846 Rem Update subdirs.el only if it is different or fc.exe doesn't work.
\r
847 if exist foo.bar del foo.bar
\r
848 fc /b foo.bar foo.bar >nul 2>&1
\r
849 if not errorlevel 2 goto doUpdateSubdirs
\r
850 fc /b subdirs.el ..\site-lisp\subdirs.el >nul 2>&1
\r
851 if not errorlevel 1 goto dontUpdateSubdirs
\r
854 if exist ..\site-lisp\subdirs.el del ..\site-lisp\subdirs.el
\r
855 copy subdirs.el ..\site-lisp\subdirs.el
\r
860 rem check that we have all the libraries we need.
\r
863 if not "(%HAVE_XPM%)" == "()" goto checkpng
\r
864 if (%xpmsupport%) == (N) goto checkpng
\r
866 echo XPM support is missing. It is required for color icons in the toolbar.
\r
867 echo Install libXpm development files or use --without-xpm
\r
870 if not "(%HAVE_PNG%)" == "()" goto checkjpeg
\r
871 if (%pngsupport%) == (N) goto checkjpeg
\r
873 echo PNG support is missing.
\r
874 echo Install libpng development files or use --without-png
\r
877 if not "(%HAVE_JPEG%)" == "()" goto checktiff
\r
878 if (%jpegsupport%) == (N) goto checktiff
\r
880 echo JPEG support is missing.
\r
881 echo Install jpeg development files or use --without-jpeg
\r
884 if not "(%HAVE_TIFF%)" == "()" goto checkgif
\r
885 if (%tiffsupport%) == (N) goto checkgif
\r
887 echo TIFF support is missing.
\r
888 echo Install libtiff development files or use --without-tiff
\r
891 if not "(%HAVE_GIF%)" == "()" goto checkdistfiles
\r
892 if (%gifsupport%) == (N) goto checkdistfiles
\r
894 echo GIF support is missing.
\r
895 echo Install giflib or libungif development files or use --without-gif
\r
898 if "(%HAVE_DISTFILES%)" == "()" goto donelibchecks
\r
899 if (%distFilesOk%) == (1) goto donelibchecks
\r
901 echo Files specified with option --distfiles could not be found.
\r
902 echo Fix these issues before running make dist
\r
905 if (%libsOK%) == (1) goto success
\r
907 echo Important libraries are missing. Fix these issues before running make.
\r
911 echo Emacs successfully configured.
\r
912 echo Emacs successfully configured. >>config.log
\r
913 if (%MAKECMD%) == (gmake) set MAKECMD=make
\r
914 echo Run `%MAKECMD%' to build, then run `%MAKECMD% install' to install.
\r
918 echo Your environment size is too small. Please enlarge it and rerun configure.
\r
919 echo For example, type "command.com /e:2048" to have 2048 bytes available.
\r
926 set enablechecking=
\r
938 set HAVE_DISTFILES=
\r
942 set libxml2support=
\r
956 set use_extensions=
\r