2 rem ----------------------------------------------------------------------
3 rem Configuration script for MS Windows 95/98/Me and NT/2000/XP
4 rem Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,
5 rem 2006, 2007, 2008 Free Software Foundation, Inc.
7 rem This file is part of GNU Emacs.
9 rem GNU Emacs is free software: you can redistribute it and/or modify
10 rem it under the terms of the GNU General Public License as published by
11 rem the Free Software Foundation, either version 3 of the License, or
12 rem (at your option) any later version.
14 rem GNU Emacs is distributed in the hope that it will be useful,
15 rem but WITHOUT ANY WARRANTY; without even the implied warranty of
16 rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 rem GNU General Public License for more details.
19 rem You should have received a copy of the GNU General Public License
20 rem along with GNU Emacs. If not, see http://www.gnu.org/licenses/.
22 rem ----------------------------------------------------------------------
23 rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:
25 rem + MS Windows 95/98/Me or NT/2000/XP
26 rem + either MSVC 2.x or later, or gcc-2.95 or later (with GNU make 3.75
27 rem or later) and the Mingw32 and W32 API headers and libraries.
28 rem + Visual Studio 2005 is not supported at this time.
30 rem For reference, here is a list of which builds of GNU make are known to
31 rem work or not, and whether they work in the presence and/or absence of
35 rem cygwin b20.1 make (3.75): fails[1,5] fails[2,5]
36 rem MSVC compiled gmake 3.77: okay okay
37 rem MSVC compiled gmake 3.78.1: okay okay
38 rem MSVC compiled gmake 3.79.1: okay okay
39 rem mingw32/gcc-2.92.2 make (3.77): okay okay[4]
40 rem cygwin compiled gmake 3.77: fails[1,5] fails[2,5]
41 rem cygwin compiled gmake 3.78.1: fails[5] fails[2,5]
42 rem cygwin compiled gmake 3.79.1: fails[3,5] fails[2?,5]
43 rem cygwin compiled make 3.80: okay[6] fails?[7]
44 rem cygwin compiled make 3.81: fails fails?[7]
45 rem mingw32 compiled make 3.79.1: okay okay
46 rem mingw32 compiled make 3.80: okay okay?[7]
47 rem mingw32 compiled make 3.81: okay okay[8]
49 rem [1] doesn't cope with makefiles with DOS line endings, so must mount
50 rem emacs source with text!=binary.
51 rem [2] fails when needs to invoke shell commands; okay invoking gcc etc.
52 rem [3] requires LC_MESSAGES support to build; cannot build with early
53 rem versions of cygwin.
54 rem [4] may fail on Windows 9X and Windows ME; if so, install Bash.
55 rem [5] fails when building leim due to the use of cygwin style paths.
56 rem May work if building emacs without leim.
57 rem [6] need to uncomment 3 lines in nt/gmake.defs that invoke `cygpath';
58 rem look for "cygpath" near line 85 of gmake.defs.
59 rem [7] not recommended; please report if you try this combination.
60 rem [8] tested only on Windows XP.
63 if exist config.log
del config.log
65 rem ----------------------------------------------------------------------
66 rem See if the environment is large enough. We need 43 (?) bytes.
67 set $foo$
=123456789_123456789_123456789_123456789_123
68 if not "%$foo$%" == "123456789_123456789_123456789_123456789_123" goto SmallEnv
71 rem ----------------------------------------------------------------------
72 rem Make sure we are running in the nt subdir
73 if exist configure.bat
goto start
74 echo You must
run configure from the nt subdirectory.
78 rem ----------------------------------------------------------------------
92 rem ----------------------------------------------------------------------
95 if "%1" == "-h" goto usage
96 if "%1" == "--help" goto usage
97 if "%1" == "--prefix" goto setprefix
98 if "%1" == "--with-gcc" goto withgcc
99 if "%1" == "--with-msvc" goto withmsvc
100 if "%1" == "--no-debug" goto nodebug
101 if "%1" == "--no-opt" goto noopt
102 if "%1" == "--no-cygwin" goto nocygwin
103 if "%1" == "--cflags" goto usercflags
104 if "%1" == "--ldflags" goto userldflags
105 if "%1" == "--without-png" goto withoutpng
106 if "%1" == "--without-jpeg" goto withoutjpeg
107 if "%1" == "--without-gif" goto withoutgif
108 if "%1" == "--without-tiff" goto withouttiff
109 if "%1" == "--without-xpm" goto withoutxpm
110 if "%1" == "" goto checkutils
112 echo Usage
: configure
[options
]
114 echo.
--prefix PREFIX install Emacs in directory PREFIX
115 echo.
--with
-gcc
use GCC to compile Emacs
116 echo.
--with
-msvc
use MSVC to compile Emacs
117 echo.
--no
-debug exclude
debug info from executables
118 echo.
--no
-opt disable optimization
119 echo.
--no
-cygwin
use -mno
-cygwin option with GCC
120 echo.
--cflags FLAG pass FLAG to compiler
121 echo.
--ldflags FLAG pass FLAG to compiler
when linking
122 echo.
--without
-png
do not use PNG library even
if it is installed
123 echo.
--without
-jpeg
do not use JPEG library even
if it is installed
124 echo.
--without
-gif
do not use GIF library even
if it is installed
125 echo.
--without
-tiff
do not use TIFF library even
if it is installed
126 echo.
--without
-xpm
do not use XPM library even
if it is installed
128 rem ----------------------------------------------------------------------
134 rem ----------------------------------------------------------------------
139 rem ----------------------------------------------------------------------
144 rem ----------------------------------------------------------------------
149 rem ----------------------------------------------------------------------
154 rem ----------------------------------------------------------------------
159 rem ----------------------------------------------------------------------
162 set usercflags
=%usercflags%%sep1%%1
166 rem ----------------------------------------------------------------------
169 set userldflags
=%userldflags%%sep2%%1
173 rem ----------------------------------------------------------------------
181 rem ----------------------------------------------------------------------
189 rem ----------------------------------------------------------------------
197 rem ----------------------------------------------------------------------
205 rem ----------------------------------------------------------------------
213 rem ----------------------------------------------------------------------
214 rem Check that necessary utilities (cp and rm) are present.
216 echo Checking
for 'cp'...
217 cp configure.bat junk.bat
218 if not exist junk.bat
goto needcp
219 echo Checking
for 'rm'...
221 if exist junk.bat
goto needrm
224 echo You need
'cp' (the Unix file
copy program
) to build Emacs.
228 echo You need
'rm' (the Unix file delete program
) to build Emacs.
231 rem ----------------------------------------------------------------------
232 rem Auto-detect compiler if not specified, and validate GCC if chosen.
234 if (%COMPILER%)==(cl
) goto compilercheckdone
235 if (%COMPILER%)==(gcc
) goto checkgcc
237 echo Checking whether
'gcc' is available...
238 echo main
(){} >junk.c
240 if exist junk.o
goto checkgcc
242 echo Checking whether
'cl' is available...
244 if exist junk.obj
goto clOK
248 if exist junk.o
del junk.o
249 Rem WARNING -- COMMAND.COM on some systems only looks at the first
250 Rem 8 characters of a label. So do NOT be tempted to change
251 Rem chkapi* into something fancier like checkw32api
252 Rem You HAVE been warned!
253 if (%nocygwin%) == (Y
) goto chkapiN
254 echo Checking whether gcc requires
'-mno-cygwin'...
255 echo #include
"cygwin/version.h" >junk.c
256 echo main
(){} >>junk.c
257 echo gcc
-c junk.c
>>config.log
258 gcc
-c junk.c
>>config.log
2>&1
259 if not exist junk.o
goto chkapi
260 echo gcc
-mno
-cygwin
-c junk.c
>>config.log
261 gcc
-mno
-cygwin
-c junk.c
>>config.log
2>&1
262 if exist junk.o
set nocygwin
=Y
265 echo The failed program was
: >>config.log
266 type junk.c
>>config.log
269 rem ----------------------------------------------------------------------
270 rem Older versions of the Windows API headers either don't have any of
271 rem the IMAGE_xxx definitions (the headers that come with Cygwin b20.1
272 rem are like this), or have a typo in the definition of
273 rem IMAGE_FIRST_SECTION (the headers with gcc/mingw32 2.95 have this
274 rem problem). The gcc/mingw32 2.95.2 headers are okay, as are distros
275 rem of w32api-xxx.zip from Anders Norlander since 1999-11-18 at least.
276 rem Beginning with Emacs 23, we need usp10.h.
278 echo Checking whether W32 API headers are too old...
279 echo #include
"windows.h" >junk.c
280 echo #include
"usp10.h" >>junk.c
281 echo test
(PIMAGE_NT_HEADERS pHeader
) >>junk.c
282 echo {PIMAGE_SECTION_HEADER pSection
= IMAGE_FIRST_SECTION
(pHeader
);} >>junk.c
283 if (%nocygwin%) == (Y
) goto chkapi1
287 set cf
=%usercflags% -mno
-cygwin
292 @
echo gcc
%cf% -c junk.c
>>config.log
293 gcc
%cf% -c junk.c
>>config.log
2>&1
295 if exist junk.o
goto gccOk
296 echo The failed program was
: >>config.log
297 type junk.c
>>config.log
301 echo Configure failed.
302 echo To configure Emacs
for Windows
, you need to have either
303 echo gcc
-2.95 or later with Mingw32 and the W32 API headers
,
304 echo or MSVC
2.x or later.
312 Rem It is not clear what GCC version began supporting -mtune
313 Rem and pentium4 on x86, so check this explicitly.
314 echo main
(){} >junk.c
315 echo gcc
-c
-O2
-mtune
=pentium4 junk.c
>>config.log
316 gcc
-c
-O2
-mtune
=pentium4 junk.c
>>config.log
2>&1
317 if not errorlevel 1 goto gccMtuneOk
318 echo The failed program was
: >>config.log
319 type junk.c
>>config.log
324 echo GCC supports
-mtune
=pentium4
>>config.log
325 set mf
=-mtune
=pentium4
328 rem Check for DWARF-2 debug info support, else default to stabs
329 echo main
(){} >junk.c
330 echo gcc
-c
-gdwarf
-2 -g3 junk.c
>>config.log
331 gcc
-c
-gdwarf
-2 -g3 junk.c
>>config.log
2>&1
332 if not errorlevel 1 goto gccdwarf
333 echo The failed program was
: >>config.log
334 type junk.c
>>config.log
337 goto compilercheckdone
339 echo GCC supports DWARF
-2 >>config.log
340 set dbginfo
=-gdwarf
-2 -g3
342 goto compilercheckdone
346 rm
-f junk.c junk.obj
351 rem ----------------------------------------------------------------------
352 rem Check for external image libraries. Since they are loaded
353 rem dynamically, the libraries themselves do not need to be present
354 rem at compile time, but the header files are required.
358 if (%nocygwin%) == (N
) goto flagsOK
359 set mingwflag
=-mno
-cygwin
363 if (%pngsupport%) == (N
) goto pngDone
365 echo Checking
for libpng...
366 echo #include
"png.h" >junk.c
367 echo main
(){} >>junk.c
368 rem -o option is ignored with cl, but allows result to be consistent.
369 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
370 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
371 if exist junk.obj
goto havePng
373 echo ...png.h
not found
, building without PNG support.
374 echo The failed program was
: >>config.log
375 type junk.c
>>config.log
380 echo ...PNG header available
, building with PNG support.
384 rm
-f junk.c junk.obj
386 if (%jpegsupport%) == (N
) goto jpegDone
388 echo Checking
for jpeg
-6b...
389 echo #include
"jconfig.h" >junk.c
390 echo main
(){} >>junk.c
391 rem -o option is ignored with cl, but allows result to be consistent.
392 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
393 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
394 if exist junk.obj
goto haveJpeg
396 echo ...jconfig.h
not found
, building without JPEG support.
397 echo The failed program was
: >>config.log
398 type junk.c
>>config.log
403 echo ...JPEG header available
, building with JPEG support.
407 rm
-f junk.c junk.obj
409 if (%gifsupport%) == (N
) goto gifDone
411 echo Checking
for libgif...
412 echo #include
"gif_lib.h" >junk.c
413 echo main
(){} >>junk.c
414 rem -o option is ignored with cl, but allows result to be consistent.
415 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
416 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
417 if exist junk.obj
goto haveGif
419 echo ...gif_lib.h
not found
, building without GIF support.
420 echo The failed program was
: >>config.log
421 type junk.c
>>config.log
426 echo ...GIF header available
, building with GIF support.
430 rm
-f junk.c junk.obj
432 if (%tiffsupport%) == (N
) goto tiffDone
434 echo Checking
for tiff...
435 echo #include
"tiffio.h" >junk.c
436 echo main
(){} >>junk.c
437 rem -o option is ignored with cl, but allows result to be consistent.
438 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
439 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
440 if exist junk.obj
goto haveTiff
442 echo ...tiffio.h
not found
, building without TIFF support.
443 echo The failed program was
: >>config.log
444 type junk.c
>>config.log
449 echo ...TIFF header available
, building with TIFF support.
453 rm
-f junk.c junk.obj
455 if (%xpmsupport%) == (N
) goto xpmDone
457 echo Checking
for libXpm...
458 echo #define FOR_MSW
1 >junk.c
459 echo #include
"X11/xpm.h" >>junk.c
460 echo main
(){} >>junk.c
461 rem -o option is ignored with cl, but allows result to be consistent.
462 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
463 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
464 if exist junk.obj
goto haveXpm
466 echo ...X11
/xpm.h
not found
, building without XPM support.
467 echo The failed program was
: >>config.log
468 type junk.c
>>config.log
473 echo ...XPM header available
, building with XPM support.
477 rm
-f junk.c junk.obj junk.err junk.out
479 rem ----------------------------------------------------------------------
481 echo Generating makefiles
482 if %COMPILER% == gcc
set MAKECMD
=gmake
483 if %COMPILER% == cl
set MAKECMD
=nmake
485 rem Pass on chosen settings to makefiles.
486 rem NB. Be very careful to not have a space before redirection symbols
487 rem except when there is a preceding digit, when a space is required.
489 echo #
Start of settings from configure.bat
>config.settings
490 echo COMPILER
=%COMPILER%>>config.settings
491 if not "(%mf%)" == "()" echo MCPU_FLAG
=%mf%>>config.settings
492 if not "(%dbginfo%)" == "()" echo DEBUG_INFO
=%dbginfo%>>config.settings
493 if (%nodebug%) == (Y
) echo NODEBUG
=1 >>config.settings
494 if (%noopt%) == (Y
) echo NOOPT
=1 >>config.settings
495 if (%nocygwin%) == (Y
) echo NOCYGWIN
=1 >>config.settings
496 if not "(%prefix%)" == "()" echo INSTALL_DIR
=%prefix%>>config.settings
497 rem We go thru docflags because usercflags could be "-DFOO=bar" -something
498 rem and the if command cannot cope with this
499 for %%v in
(%usercflags%) do if not (%%v
)==() set docflags
=Y
500 if (%docflags%)==(Y
) echo USER_CFLAGS
=%usercflags%>>config.settings
501 for %%v in
(%userldflags%) do if not (%%v
)==() set doldflags
=Y
502 if (%doldflags%)==(Y
) echo USER_LDFLAGS
=%userldflags%>>config.settings
503 echo #
End of settings from configure.bat
>>config.settings
504 echo.
>>config.settings
506 copy config.nt config.tmp
508 echo /* Start of settings from configure.bat.
*/ >>config.tmp
509 if (%docflags%) == (Y
) echo #define USER_CFLAGS
" %usercflags%">>config.tmp
510 if (%doldflags%) == (Y
) echo #define USER_LDFLAGS
" %userldflags%">>config.tmp
511 if not "(%HAVE_PNG%)" == "()" echo #define HAVE_PNG
1 >>config.tmp
512 if not "(%HAVE_JPEG%)" == "()" echo #define HAVE_JPEG
1 >>config.tmp
513 if not "(%HAVE_GIF%)" == "()" echo #define HAVE_GIF
1 >>config.tmp
514 if not "(%HAVE_TIFF%)" == "()" echo #define HAVE_TIFF
1 >>config.tmp
515 if not "(%HAVE_XPM%)" == "()" echo #define HAVE_XPM
1 >>config.tmp
516 echo /* End of settings from configure.bat.
*/ >>config.tmp
518 Rem See if fc.exe returns a meaningful exit status. If it does, we
519 Rem might as well avoid unnecessary overwriting of config.h and epaths.h,
520 Rem since this forces recompilation of every source file.
521 if exist foo.bar
del foo.bar
522 fc
/b foo.bar foo.bar
>nul
2>&1
523 if not errorlevel 2 goto doCopy
524 fc
/b config.tmp ..\src\config.h
>nul
2>&1
525 if errorlevel 1 goto doCopy
526 fc
/b paths.h ..\src\epaths.h
>nul
2>&1
527 if errorlevel 0 goto dontCopy
529 copy config.tmp ..\src\config.h
530 copy paths.h ..\src\epaths.h
533 if exist config.tmp
del config.tmp
534 copy /b config.settings
+%MAKECMD%.defs
+..
\nt\makefile.w32
-in ..
\nt\makefile
535 if exist ..
\admin\unidata
copy /b config.settings
+%MAKECMD%.defs
+..
\admin\unidata\makefile.w32
-in ..
\admin\unidata\makefile
536 copy /b config.settings
+%MAKECMD%.defs
+..\lib
-src\makefile.w32
-in ..\lib
-src\makefile
537 copy /b config.settings
+%MAKECMD%.defs
+..\src\makefile.w32
-in ..\src\makefile
538 copy /b config.settings
+%MAKECMD%.defs
+..\doc\emacs\makefile.w32
-in ..\doc\emacs\makefile
539 copy /b config.settings
+%MAKECMD%.defs
+..\doc\misc\makefile.w32
-in ..\doc\misc\makefile
540 copy /b config.settings
+%MAKECMD%.defs
+..\doc\lispref\makefile.w32
-in ..\doc\lispref\makefile
541 copy /b config.settings
+%MAKECMD%.defs
+..\doc\lispintro\makefile.w32
-in ..\doc\lispintro\makefile
542 if exist ..\lisp\makefile rm
-f ..
/lisp
/[Mm
]akefile
543 copy /b config.settings
+%MAKECMD%.defs
+..\lisp\makefile.w32
-in ..\lisp\makefile
544 rem Use the default (no-op) Makefile.in if the nt version is not present.
545 if exist ..\leim\makefile.w32
-in
copy /b config.settings
+%MAKECMD%.defs
+..\leim\makefile.w32
-in ..\leim\makefile
546 if not exist ..\leim\makefile.w32
-in
copy /b config.settings
+%MAKECMD%.defs
+..\leim\Makefile.in ..\leim\makefile
549 Rem Some people use WinZip which doesn't create empty directories!
550 if not exist ..\site
-lisp
\nul
mkdir ..\site
-lisp\
551 Rem Update subdirs.el only if it is different or fc.exe doesn't work.
552 if exist foo.bar
del foo.bar
553 fc
/b foo.bar foo.bar
>nul
2>&1
554 if not errorlevel 2 goto doUpdateSubdirs
555 fc
/b subdirs.el ..\site
-lisp\subdirs.el
>nul
2>&1
556 if not errorlevel 1 goto dontUpdateSubdirs
558 if exist ..\site
-lisp\subdirs.el
del ..\site
-lisp\subdirs.el
559 copy subdirs.el ..\site
-lisp\subdirs.el
564 rem check that we have all the libraries we need.
567 if not "(%HAVE_XPM%)" == "()" goto checkpng
568 if (%xpmsupport%) == (N
) goto checkpng
570 echo XPM support is missing. It is required
for color icons in the toolbar.
571 echo Install libXpm development
files or
use --without
-xpm
574 if not "(%HAVE_PNG%)" == "()" goto checkjpeg
575 if (%pngsupport%) == (N
) goto checkjpeg
577 echo PNG support is missing.
578 echo Install libpng development
files or
use --without
-png
581 if not "(%HAVE_JPEG%)" == "()" goto checktiff
582 if (%jpegsupport%) == (N
) goto checktiff
584 echo JPEG support is missing.
585 echo Install jpeg development
files or
use --without
-jpeg
588 if not "(%HAVE_TIFF%)" == "()" goto checkgif
589 if (%tiffsupport%) == (N
) goto checkgif
591 echo TIFF support is missing.
592 echo Install libtiff development
files or
use --without
-tiff
595 if not "(%HAVE_GIF%)" == "()" goto donelibchecks
596 if (%gifsupport%) == (N
) goto donelibchecks
598 echo GIF support is missing.
599 echo Install giflib or libungif development
files or
use --without
-gif
602 if (%libsOK%) == (1) goto success
604 echo Important libraries are missing. Fix these issues before running make.
608 echo Emacs successfully configured.
609 echo Emacs successfully configured.
>>config.log
610 if (%MAKECMD%) == (gmake
) set MAKECMD
=make
611 echo Run `
%MAKECMD%' to build, then run `%MAKECMD% install' to install.
615 echo Your environment size is too small. Please enlarge it and rerun configure.
616 echo For example
, type "command.com /e:2048" to have
2048 bytes available.
633 arch
-tag
: 300d20a4
-1675-4e75
-b615
-7ce1a8c5376c