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, or (at your option)
12 rem 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; see the file COPYING. If not, write to the
21 rem Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22 rem Boston, MA 02110-1301, USA.
23 rem ----------------------------------------------------------------------
24 rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:
26 rem + MS Windows 95/98/Me or NT/2000/XP
27 rem + either MSVC 2.x or later, or gcc-2.95 or later (with GNU make 3.75
28 rem or later) and the Mingw32 and W32 API headers and libraries.
29 rem + Visual Studio 2005 is not supported at this time.
31 rem For reference, here is a list of which builds of GNU make are known to
32 rem work or not, and whether they work in the presence and/or absence of
36 rem cygwin b20.1 make (3.75): fails[1,5] fails[2,5]
37 rem MSVC compiled gmake 3.77: okay okay
38 rem MSVC compiled gmake 3.78.1: okay okay
39 rem MSVC compiled gmake 3.79.1: okay okay
40 rem mingw32/gcc-2.92.2 make (3.77): okay okay[4]
41 rem cygwin compiled gmake 3.77: fails[1,5] fails[2,5]
42 rem cygwin compiled gmake 3.78.1: fails[5] fails[2,5]
43 rem cygwin compiled gmake 3.79.1: fails[3,5] fails[2?,5]
44 rem cygwin compiled make 3.80: okay[6] fails?[7]
45 rem cygwin compiled make 3.81: fails fails?[7]
46 rem mingw32 compiled make 3.79.1: okay okay
47 rem mingw32 compiled make 3.80: okay okay?[7]
48 rem mingw32 compiled make 3.81: okay okay[8]
50 rem [1] doesn't cope with makefiles with DOS line endings, so must mount
51 rem emacs source with text!=binary.
52 rem [2] fails when needs to invoke shell commands; okay invoking gcc etc.
53 rem [3] requires LC_MESSAGES support to build; cannot build with early
54 rem versions of cygwin.
55 rem [4] may fail on Windows 9X and Windows ME; if so, install Bash.
56 rem [5] fails when building leim due to the use of cygwin style paths.
57 rem May work if building emacs without leim.
58 rem [6] need to uncomment 3 lines in nt/gmake.defs that invoke `cygpath';
59 rem look for "cygpath" near line 85 of gmake.defs.
60 rem [7] not recommended; please report if you try this combination.
61 rem [8] tested only on Windows XP.
64 if exist config.log
del config.log
66 rem ----------------------------------------------------------------------
67 rem See if the environment is large enough. We need 43 (?) bytes.
68 set $foo$
=123456789_123456789_123456789_123456789_123
69 if not "%$foo$%" == "123456789_123456789_123456789_123456789_123" goto SmallEnv
72 rem ----------------------------------------------------------------------
73 rem Make sure we are running in the nt subdir
74 if exist configure.bat
goto start
75 echo You must
run configure from the nt subdirectory.
79 rem ----------------------------------------------------------------------
94 rem ----------------------------------------------------------------------
97 if "%1" == "-h" goto usage
98 if "%1" == "--help" goto usage
99 if "%1" == "--prefix" goto setprefix
100 if "%1" == "--with-gcc" goto withgcc
101 if "%1" == "--with-msvc" goto withmsvc
102 if "%1" == "--no-debug" goto nodebug
103 if "%1" == "--no-opt" goto noopt
104 if "%1" == "--no-cygwin" goto nocygwin
105 if "%1" == "--cflags" goto usercflags
106 if "%1" == "--ldflags" goto userldflags
107 if "%1" == "--without-png" goto withoutpng
108 if "%1" == "--without-jpeg" goto withoutjpeg
109 if "%1" == "--without-gif" goto withoutgif
110 if "%1" == "--without-tiff" goto withouttiff
111 if "%1" == "--without-xpm" goto withoutxpm
112 if "%1" == "--disable-font-backend" goto withoutfont
113 if "%1" == "" goto checkutils
115 echo Usage
: configure
[options
]
117 echo.
--prefix PREFIX install Emacs in directory PREFIX
118 echo.
--with
-gcc
use GCC to compile Emacs
119 echo.
--with
-msvc
use MSVC to compile Emacs
120 echo.
--no
-debug exclude
debug info from executables
121 echo.
--no
-opt disable optimization
122 echo.
--no
-cygwin
use -mno
-cygwin option with GCC
123 echo.
--cflags FLAG pass FLAG to compiler
124 echo.
--ldflags FLAG pass FLAG to compiler
when linking
125 echo.
--without
-png
do not use PNG library even
if it is installed
126 echo.
--without
-jpeg
do not use JPEG library even
if it is installed
127 echo.
--without
-gif
do not use GIF library even
if it is installed
128 echo.
--without
-tiff
do not use TIFF library even
if it is installed
129 echo.
--without
-xpm
do not use XPM library even
if it is installed
130 echo.
--disable
-font
-backend build without font backend support
132 rem ----------------------------------------------------------------------
138 rem ----------------------------------------------------------------------
143 rem ----------------------------------------------------------------------
148 rem ----------------------------------------------------------------------
153 rem ----------------------------------------------------------------------
158 rem ----------------------------------------------------------------------
163 rem ----------------------------------------------------------------------
166 set usercflags
=%usercflags%%sep1%%1
170 rem ----------------------------------------------------------------------
173 set userldflags
=%userldflags%%sep2%%1
177 rem ----------------------------------------------------------------------
185 rem ----------------------------------------------------------------------
193 rem ----------------------------------------------------------------------
201 rem ----------------------------------------------------------------------
209 rem ----------------------------------------------------------------------
222 rem ----------------------------------------------------------------------
223 rem Check that necessary utilities (cp and rm) are present.
225 echo Checking
for 'cp'...
226 cp configure.bat junk.bat
227 if not exist junk.bat
goto needcp
228 echo Checking
for 'rm'...
230 if exist junk.bat
goto needrm
233 echo You need
'cp' (the Unix file
copy program
) to build Emacs.
237 echo You need
'rm' (the Unix file delete program
) to build Emacs.
240 rem ----------------------------------------------------------------------
241 rem Auto-detect compiler if not specified, and validate GCC if chosen.
243 if (%COMPILER%)==(cl
) goto compilercheckdone
244 if (%COMPILER%)==(gcc
) goto checkgcc
246 echo Checking whether
'gcc' is available...
247 echo main
(){} >junk.c
249 if exist junk.o
goto checkgcc
251 echo Checking whether
'cl' is available...
253 if exist junk.obj
goto clOK
257 if exist junk.o
del junk.o
258 Rem WARNING -- COMMAND.COM on some systems only looks at the first
259 Rem 8 characters of a label. So do NOT be tempted to change
260 Rem chkapi* into something fancier like checkw32api
261 Rem You HAVE been warned!
262 if (%nocygwin%) == (Y
) goto chkapiN
263 echo Checking whether gcc requires
'-mno-cygwin'...
264 echo #include
"cygwin/version.h" >junk.c
265 echo main
(){} >>junk.c
266 echo gcc
-c junk.c
>>config.log
267 gcc
-c junk.c
>>config.log
2>&1
268 if not exist junk.o
goto chkapi
269 echo gcc
-mno
-cygwin
-c junk.c
>>config.log
270 gcc
-mno
-cygwin
-c junk.c
>>config.log
2>&1
271 if exist junk.o
set nocygwin
=Y
274 echo The failed program was
: >>config.log
275 type junk.c
>>config.log
278 rem ----------------------------------------------------------------------
279 rem Older versions of the Windows API headers either don't have any of
280 rem the IMAGE_xxx definitions (the headers that come with Cygwin b20.1
281 rem are like this), or have a typo in the definition of
282 rem IMAGE_FIRST_SECTION (the headers with gcc/mingw32 2.95 have this
283 rem problem). The gcc/mingw32 2.95.2 headers are okay, as are distros
284 rem of w32api-xxx.zip from Anders Norlander since 1999-11-18 at least.
285 rem Beginning with Emacs 23, we need usp10.h.
287 echo Checking whether W32 API headers are too old...
288 echo #include
"windows.h" >junk.c
289 echo #include
"usp10.h" >>junk.c
290 echo test
(PIMAGE_NT_HEADERS pHeader
) >>junk.c
291 echo {PIMAGE_SECTION_HEADER pSection
= IMAGE_FIRST_SECTION
(pHeader
);} >>junk.c
292 if (%nocygwin%) == (Y
) goto chkapi1
296 set cf
=%usercflags% -mno
-cygwin
301 @
echo gcc
%cf% -c junk.c
>>config.log
302 gcc
%cf% -c junk.c
>>config.log
2>&1
304 if exist junk.o
goto gccOk
305 echo The failed program was
: >>config.log
306 type junk.c
>>config.log
310 echo Configure failed.
311 echo To configure Emacs
for Windows
, you need to have either
312 echo gcc
-2.95 or later with Mingw32 and the W32 API headers
,
313 echo or MSVC
2.x or later.
321 Rem It is not clear what GCC version began supporting -mtune
322 Rem and pentium4 on x86, so check this explicitly.
323 echo main
(){} >junk.c
324 echo gcc
-c
-O2
-mtune
=pentium4 junk.c
>>config.log
325 gcc
-c
-O2
-mtune
=pentium4 junk.c
>>config.log
2>&1
326 if not errorlevel 1 goto gccMtuneOk
327 echo The failed program was
: >>config.log
328 type junk.c
>>config.log
331 goto compilercheckdone
333 echo GCC supports
-mtune
=pentium4
>>config.log
334 set mf
=-mtune
=pentium4
336 goto compilercheckdone
340 rm
-f junk.c junk.obj
345 rem ----------------------------------------------------------------------
346 rem Check for external image libraries. Since they are loaded
347 rem dynamically, the libraries themselves do not need to be present
348 rem at compile time, but the header files are required.
352 if (%nocygwin%) == (N
) goto flagsOK
353 set mingwflag
=-mno
-cygwin
357 if (%pngsupport%) == (N
) goto pngDone
359 echo Checking
for libpng...
360 echo #include
"png.h" >junk.c
361 echo main
(){} >>junk.c
362 rem -o option is ignored with cl, but allows result to be consistent.
363 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
364 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
365 if exist junk.obj
goto havePng
367 echo ...png.h
not found
, building without PNG support.
368 echo The failed program was
: >>config.log
369 type junk.c
>>config.log
374 echo ...PNG header available
, building with PNG support.
378 rm
-f junk.c junk.obj
380 if (%jpegsupport%) == (N
) goto jpegDone
382 echo Checking
for jpeg
-6b...
383 echo #include
"jconfig.h" >junk.c
384 echo main
(){} >>junk.c
385 rem -o option is ignored with cl, but allows result to be consistent.
386 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
387 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
388 if exist junk.obj
goto haveJpeg
390 echo ...jconfig.h
not found
, building without JPEG support.
391 echo The failed program was
: >>config.log
392 type junk.c
>>config.log
397 echo ...JPEG header available
, building with JPEG support.
401 rm
-f junk.c junk.obj
403 if (%gifsupport%) == (N
) goto gifDone
405 echo Checking
for libgif...
406 echo #include
"gif_lib.h" >junk.c
407 echo main
(){} >>junk.c
408 rem -o option is ignored with cl, but allows result to be consistent.
409 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
410 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
411 if exist junk.obj
goto haveGif
413 echo ...gif_lib.h
not found
, building without GIF support.
414 echo The failed program was
: >>config.log
415 type junk.c
>>config.log
420 echo ...GIF header available
, building with GIF support.
424 rm
-f junk.c junk.obj
426 if (%tiffsupport%) == (N
) goto tiffDone
428 echo Checking
for tiff...
429 echo #include
"tiffio.h" >junk.c
430 echo main
(){} >>junk.c
431 rem -o option is ignored with cl, but allows result to be consistent.
432 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
433 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
434 if exist junk.obj
goto haveTiff
436 echo ...tiffio.h
not found
, building without TIFF support.
437 echo The failed program was
: >>config.log
438 type junk.c
>>config.log
443 echo ...TIFF header available
, building with TIFF support.
447 rm
-f junk.c junk.obj
449 if (%xpmsupport%) == (N
) goto xpmDone
451 echo Checking
for libXpm...
452 echo #define FOR_MSW
1 >junk.c
453 echo #include
"X11/xpm.h" >>junk.c
454 echo main
(){} >>junk.c
455 rem -o option is ignored with cl, but allows result to be consistent.
456 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
457 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
458 if exist junk.obj
goto haveXpm
460 echo ...X11
/xpm.h
not found
, building without XPM support.
461 echo The failed program was
: >>config.log
462 type junk.c
>>config.log
467 echo ...XPM header available
, building with XPM support.
471 rm
-f junk.c junk.obj junk.err junk.out
473 rem ----------------------------------------------------------------------
475 echo Generating makefiles
476 if %COMPILER% == gcc
set MAKECMD
=gmake
477 if %COMPILER% == cl
set MAKECMD
=nmake
479 rem Pass on chosen settings to makefiles.
480 rem NB. Be very careful to not have a space before redirection symbols
481 rem except when there is a preceding digit, when a space is required.
483 echo #
Start of settings from configure.bat
>config.settings
484 echo COMPILER
=%COMPILER%>>config.settings
485 if not "(%mf%)" == "()" echo MCPU_FLAG
=%mf%>>config.settings
486 if (%nodebug%) == (Y
) echo NODEBUG
=1 >>config.settings
487 if (%noopt%) == (Y
) echo NOOPT
=1 >>config.settings
488 if (%nocygwin%) == (Y
) echo NOCYGWIN
=1 >>config.settings
489 if not "(%prefix%)" == "()" echo INSTALL_DIR
=%prefix%>>config.settings
490 rem We go thru docflags because usercflags could be "-DFOO=bar" -something
491 rem and the if command cannot cope with this
492 for %%v in
(%usercflags%) do if not (%%v
)==() set docflags
=Y
493 if (%docflags%)==(Y
) echo USER_CFLAGS
=%usercflags%>>config.settings
494 for %%v in
(%userldflags%) do if not (%%v
)==() set doldflags
=Y
495 if (%doldflags%)==(Y
) echo USER_LDFLAGS
=%userldflags%>>config.settings
496 if (%usefontbackend%) == (Y
) echo USE_FONTBACKEND
=1 >>config.settings
497 echo #
End of settings from configure.bat
>>config.settings
498 echo.
>>config.settings
500 copy config.nt config.tmp
502 echo /* Start of settings from configure.bat.
*/ >>config.tmp
503 if (%docflags%) == (Y
) echo #define USER_CFLAGS
" %usercflags%">>config.tmp
504 if (%doldflags%) == (Y
) echo #define USER_LDFLAGS
" %userldflags%">>config.tmp
505 if not "(%HAVE_PNG%)" == "()" echo #define HAVE_PNG
1 >>config.tmp
506 if not "(%HAVE_JPEG%)" == "()" echo #define HAVE_JPEG
1 >>config.tmp
507 if not "(%HAVE_GIF%)" == "()" echo #define HAVE_GIF
1 >>config.tmp
508 if not "(%HAVE_TIFF%)" == "()" echo #define HAVE_TIFF
1 >>config.tmp
509 if not "(%HAVE_XPM%)" == "()" echo #define HAVE_XPM
1 >>config.tmp
510 echo /* End of settings from configure.bat.
*/ >>config.tmp
512 Rem See if fc.exe returns a meaningful exit status. If it does, we
513 Rem might as well avoid unnecessary overwriting of config.h and epaths.h,
514 Rem since this forces recompilation of every source file.
515 if exist foo.bar
del foo.bar
516 fc
/b foo.bar foo.bar
>nul
2>&1
517 if not errorlevel 2 goto doCopy
518 fc
/b config.tmp ..\src\config.h
>nul
2>&1
519 if errorlevel 1 goto doCopy
520 fc
/b paths.h ..\src\epaths.h
>nul
2>&1
521 if errorlevel 0 goto dontCopy
523 copy config.tmp ..\src\config.h
524 copy paths.h ..\src\epaths.h
527 if exist config.tmp
del config.tmp
528 copy /b config.settings
+%MAKECMD%.defs
+..
\nt\makefile.w32
-in ..
\nt\makefile
529 if exist ..
\admin\unidata
copy /b config.settings
+%MAKECMD%.defs
+..
\admin\unidata\makefile.w32
-in ..
\admin\unidata\makefile
530 copy /b config.settings
+%MAKECMD%.defs
+..\lib
-src\makefile.w32
-in ..\lib
-src\makefile
531 copy /b config.settings
+%MAKECMD%.defs
+..\src\makefile.w32
-in ..\src\makefile
532 copy /b config.settings
+%MAKECMD%.defs
+..\doc\emacs\makefile.w32
-in ..\doc\emacs\makefile
533 copy /b config.settings
+%MAKECMD%.defs
+..\doc\misc\makefile.w32
-in ..\doc\misc\makefile
534 copy /b config.settings
+%MAKECMD%.defs
+..\doc\lispref\makefile.w32
-in ..\doc\lispref\makefile
535 copy /b config.settings
+%MAKECMD%.defs
+..\doc\lispintro\makefile.w32
-in ..\doc\lispintro\makefile
536 if exist ..\lisp\makefile rm
-f ..
/lisp
/[Mm
]akefile
537 copy /b config.settings
+%MAKECMD%.defs
+..\lisp\makefile.w32
-in ..\lisp\makefile
538 rem Use the default (no-op) Makefile.in if the nt version is not present.
539 if exist ..\leim\makefile.w32
-in
copy /b config.settings
+%MAKECMD%.defs
+..\leim\makefile.w32
-in ..\leim\makefile
540 if not exist ..\leim\makefile.w32
-in
copy /b config.settings
+%MAKECMD%.defs
+..\leim\Makefile.in ..\leim\makefile
543 Rem Some people use WinZip which doesn't create empty directories!
544 if not exist ..\site
-lisp
\nul
mkdir ..\site
-lisp\
545 Rem Update subdirs.el only if it is different or fc.exe doesn't work.
546 if exist foo.bar
del foo.bar
547 fc
/b foo.bar foo.bar
>nul
2>&1
548 if not errorlevel 2 goto doUpdateSubdirs
549 fc
/b subdirs.el ..\site
-lisp\subdirs.el
>nul
2>&1
550 if not errorlevel 1 goto dontUpdateSubdirs
552 if exist ..\site
-lisp\subdirs.el
del ..\site
-lisp\subdirs.el
553 copy subdirs.el ..\site
-lisp\subdirs.el
558 rem check that we have all the libraries we need.
561 if not "(%HAVE_XPM%)" == "()" goto checkpng
562 if (%xpmsupport%) == (N
) goto checkpng
564 echo XPM support is missing. It is required
for color icons in the toolbar.
565 echo Install libXpm development
files or
use --without
-xpm
568 if not "(%HAVE_PNG%)" == "()" goto checkjpeg
569 if (%pngsupport%) == (N
) goto checkjpeg
571 echo PNG support is missing.
572 echo Install libpng development
files or
use --without
-png
575 if not "(%HAVE_JPEG%)" == "()" goto checktiff
576 if (%jpegsupport%) == (N
) goto checktiff
578 echo JPEG support is missing.
579 echo Install jpeg development
files or
use --without
-jpeg
582 if not "(%HAVE_TIFF%)" == "()" goto checkgif
583 if (%tiffsupport%) == (N
) goto checkgif
585 echo TIFF support is missing.
586 echo Install libtiff development
files or
use --without
-tiff
589 if not "(%HAVE_GIF%)" == "()" goto donelibchecks
590 if (%gifsupport%) == (N
) goto donelibchecks
592 echo GIF support is missing.
593 echo Install giflib or libungif development
files or
use --without
-gif
596 if (%libsOK%) == (1) goto success
598 echo Important libraries are missing. Fix these issues before running make.
602 echo Emacs successfully configured.
603 echo Emacs successfully configured.
>>config.log
604 if (%MAKECMD%) == (gmake
) set MAKECMD
=make
605 echo Run `
%MAKECMD%' to build, then run `%MAKECMD% install' to install.
609 echo Your environment size is too small. Please enlarge it and rerun configure.
610 echo For example
, type "command.com /e:2048" to have
2048 bytes available.
627 arch
-tag
: 300d20a4
-1675-4e75
-b615
-7ce1a8c5376c