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 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 gmake 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 gmake 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 ----------------------------------------------------------------------
91 rem ----------------------------------------------------------------------
94 if "%1" == "-h" goto usage
95 if "%1" == "--help" goto usage
96 if "%1" == "--prefix" goto setprefix
97 if "%1" == "--with-gcc" goto withgcc
98 if "%1" == "--with-msvc" goto withmsvc
99 if "%1" == "--no-debug" goto nodebug
100 if "%1" == "--no-opt" goto noopt
101 if "%1" == "--no-cygwin" goto nocygwin
102 if "%1" == "--cflags" goto usercflags
103 if "%1" == "--ldflags" goto userldflags
104 if "%1" == "--without-png" goto withoutpng
105 if "%1" == "--without-jpeg" goto withoutjpeg
106 if "%1" == "--without-gif" goto withoutgif
107 if "%1" == "--without-tiff" goto withouttiff
108 if "%1" == "--without-xpm" goto withoutxpm
109 if "%1" == "--enable-font-backend" goto withfont
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 libpng
123 echo.
--without
-jpeg
do not use jpeg
-6b
124 echo.
--without
-gif
do not use giflib or libungif
125 echo.
--without
-tiff
do not use libtiff
126 echo.
--without
-xpm
do not use libXpm
127 echo.
--enable
-font
-backend build with font backend support
129 rem ----------------------------------------------------------------------
135 rem ----------------------------------------------------------------------
140 rem ----------------------------------------------------------------------
145 rem ----------------------------------------------------------------------
150 rem ----------------------------------------------------------------------
155 rem ----------------------------------------------------------------------
160 rem ----------------------------------------------------------------------
163 set usercflags
=%usercflags%%sep1%%1
167 rem ----------------------------------------------------------------------
170 set userldflags
=%userldflags%%sep2%%1
174 rem ----------------------------------------------------------------------
182 rem ----------------------------------------------------------------------
190 rem ----------------------------------------------------------------------
198 rem ----------------------------------------------------------------------
206 rem ----------------------------------------------------------------------
215 set usercflags
=%usercflags%%sep1%-DUSE_FONT_BACKEND
221 rem ----------------------------------------------------------------------
222 rem Check that necessary utilities (cp and rm) are present.
224 echo Checking
for 'cp'...
225 cp configure.bat junk.bat
226 if not exist junk.bat
goto needcp
227 echo Checking
for 'rm'...
229 if exist junk.bat
goto needrm
232 echo You need
'cp' (the Unix file
copy program
) to build Emacs.
236 echo You need
'rm' (the Unix file delete program
) to build Emacs.
239 rem ----------------------------------------------------------------------
240 rem Auto-detect compiler if not specified, and validate GCC if chosen.
242 if (%COMPILER%)==(cl
) goto compilercheckdone
243 if (%COMPILER%)==(gcc
) goto checkgcc
245 echo Checking whether
'cl' is available...
246 echo main
(){} >junk.c
248 if exist junk.obj
goto clOK
250 echo Checking whether
'gcc' is available...
252 if not exist junk.o
goto nocompiler
256 Rem WARNING -- COMMAND.COM on some systems only looks at the first
257 Rem 8 characters of a label. So do NOT be tempted to change
258 Rem chkapi* into something fancier like checkw32api
259 Rem You HAVE been warned!
260 if (%nocygwin%) == (Y
) goto chkapi
261 echo Checking whether gcc requires
'-mno-cygwin'...
262 echo #include
"cygwin/version.h" >junk.c
263 echo main
(){} >>junk.c
264 echo gcc
-c junk.c
>>config.log
265 gcc
-c junk.c
>>config.log
2>&1
266 if not exist junk.o
goto chkapi
267 echo gcc
-mno
-cygwin
-c junk.c
>>config.log
268 gcc
-mno
-cygwin
-c junk.c
>>config.log
2>&1
269 if exist junk.o
set nocygwin
=Y
273 echo The failed program was
: >>config.log
274 type junk.c
>>config.log
275 rem ----------------------------------------------------------------------
276 rem Older versions of the Windows API headers either don't have any of
277 rem the IMAGE_xxx definitions (the headers that come with Cygwin b20.1
278 rem are like this), or have a typo in the definition of
279 rem IMAGE_FIRST_SECTION (the headers with gcc/mingw32 2.95 have this
280 rem problem). The gcc/mingw32 2.95.2 headers are okay, as are distros
281 rem of w32api-xxx.zip from Anders Norlander since 1999-11-18 at least.
283 echo Checking whether W32 API headers are too old...
284 echo #include
"windows.h" >junk.c
285 echo test
(PIMAGE_NT_HEADERS pHeader
) >>junk.c
286 echo {PIMAGE_SECTION_HEADER pSection
= IMAGE_FIRST_SECTION
(pHeader
);} >>junk.c
287 if (%nocygwin%) == (Y
) goto chkapi1
291 set cf
=%usercflags% -mno
-cygwin
296 @
echo gcc
%cf% -c junk.c
>>config.log
297 gcc
%cf% -c junk.c
>>config.log
2>&1
299 if exist junk.o
goto gccOk
300 echo The failed program was
: >>config.log
301 type junk.c
>>config.log
305 echo Configure failed.
306 echo To configure Emacs
for Windows
, you need to have either
307 echo gcc
-2.95 or later with Mingw32 and the W32 API headers
,
308 echo or MSVC
2.x or later.
316 Rem It is not clear what GCC version began supporting -mtune
317 Rem and pentium4 on x86, so check this explicitly.
318 echo main
(){} >junk.c
319 echo gcc
-c
-O2
-mtune
=pentium4 junk.c
>>config.log
320 gcc
-c
-O2
-mtune
=pentium4 junk.c
>>config.log
2>&1
321 if not errorlevel 1 goto gccMtuneOk
322 echo The failed program was
: >>config.log
323 type junk.c
>>config.log
326 goto compilercheckdone
328 echo GCC supports
-mtune
=pentium4
>>config.log
329 set mf
=-mtune
=pentium4
331 goto compilercheckdone
335 rm
-f junk.c junk.obj
340 rem ----------------------------------------------------------------------
341 rem Check for external image libraries. Since they are loaded
342 rem dynamically, the libraries themselves do not need to be present
343 rem at compile time, but the header files are required.
347 if (%nocygwin%) == (N
) goto flagsOK
348 set mingwflag
=-mno
-cygwin
352 if (%pngsupport%) == (N
) goto pngDone
354 echo Checking
for libpng...
355 echo #include
"png.h" >junk.c
356 echo main
(){} >>junk.c
357 rem -o option is ignored with cl, but allows result to be consistent.
358 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
359 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
360 if exist junk.obj
goto havePng
362 echo ...png.h
not found
, building without PNG support.
363 echo The failed program was
: >>config.log
364 type junk.c
>>config.log
369 echo ...PNG header available
, building with PNG support.
373 rm
-f junk.c junk.obj
375 if (%jpegsupport%) == (N
) goto jpegDone
377 echo Checking
for jpeg
-6b...
378 echo #include
"jconfig.h" >junk.c
379 echo main
(){} >>junk.c
380 rem -o option is ignored with cl, but allows result to be consistent.
381 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
382 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
383 if exist junk.obj
goto haveJpeg
385 echo ...jconfig.h
not found
, building without JPEG support.
386 echo The failed program was
: >>config.log
387 type junk.c
>>config.log
392 echo ...JPEG header available
, building with JPEG support.
396 rm
-f junk.c junk.obj
398 if (%gifsupport%) == (N
) goto gifDone
400 echo Checking
for libgif...
401 echo #include
"gif_lib.h" >junk.c
402 echo main
(){} >>junk.c
403 rem -o option is ignored with cl, but allows result to be consistent.
404 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
405 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
406 if exist junk.obj
goto haveGif
408 echo ...gif_lib.h
not found
, building without GIF support.
409 echo The failed program was
: >>config.log
410 type junk.c
>>config.log
415 echo ...GIF header available
, building with GIF support.
419 rm
-f junk.c junk.obj
421 if (%tiffsupport%) == (N
) goto tiffDone
423 echo Checking
for tiff...
424 echo #include
"tiffio.h" >junk.c
425 echo main
(){} >>junk.c
426 rem -o option is ignored with cl, but allows result to be consistent.
427 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
428 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
429 if exist junk.obj
goto haveTiff
431 echo ...tiffio.h
not found
, building without TIFF support.
432 echo The failed program was
: >>config.log
433 type junk.c
>>config.log
438 echo ...TIFF header available
, building with TIFF support.
442 rm
-f junk.c junk.obj
444 if (%xpmsupport%) == (N
) goto xpmDone
446 echo Checking
for libXpm...
447 echo #define FOR_MSW
1 >junk.c
448 echo #include
"X11/xpm.h" >>junk.c
449 echo main
(){} >>junk.c
450 rem -o option is ignored with cl, but allows result to be consistent.
451 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
452 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
453 if exist junk.obj
goto haveXpm
455 echo ...X11
/xpm.h
not found
, building without XPM support.
456 echo The failed program was
: >>config.log
457 type junk.c
>>config.log
462 echo ...XPM header available
, building with XPM support.
466 rm
-f junk.c junk.obj junk.err junk.out
468 rem ----------------------------------------------------------------------
470 echo Generating makefiles
471 if %COMPILER% == gcc
set MAKECMD
=gmake
472 if %COMPILER% == cl
set MAKECMD
=nmake
474 rem Pass on chosen settings to makefiles.
475 rem NB. Be very careful to not have a space before redirection symbols
476 rem except when there is a preceding digit, when a space is required.
478 echo #
Start of settings from configure.bat
>config.settings
479 echo COMPILER
=%COMPILER%>>config.settings
480 if not "(%mf%)" == "()" echo MCPU_FLAG
=%mf%>>config.settings
481 if (%nodebug%) == (Y
) echo NODEBUG
=1 >>config.settings
482 if (%noopt%) == (Y
) echo NOOPT
=1 >>config.settings
483 if (%nocygwin%) == (Y
) echo NOCYGWIN
=1 >>config.settings
484 if not "(%prefix%)" == "()" echo INSTALL_DIR
=%prefix%>>config.settings
485 if not "(%usercflags%)" == "()" echo USER_CFLAGS
=%usercflags%>>config.settings
486 if not "(%userldflags%)" == "()" echo USER_LDFLAGS
=%userldflags%>>config.settings
487 if (%usefontbackend%) == (Y
) echo USE_FONTBACKEND
=1 >>config.settings
488 echo #
End of settings from configure.bat
>>config.settings
489 echo.
>>config.settings
491 copy config.nt config.tmp
493 echo /* Start of settings from configure.bat.
*/ >>config.tmp
494 if not "(%usercflags%)" == "()" echo #define USER_CFLAGS
" %usercflags%">>config.tmp
495 if not "(%userldflags%)" == "()" echo #define USER_LDFLAGS
" %userldflags%">>config.tmp
496 if not "(%HAVE_PNG%)" == "()" echo #define HAVE_PNG
1 >>config.tmp
497 if not "(%HAVE_JPEG%)" == "()" echo #define HAVE_JPEG
1 >>config.tmp
498 if not "(%HAVE_GIF%)" == "()" echo #define HAVE_GIF
1 >>config.tmp
499 if not "(%HAVE_TIFF%)" == "()" echo #define HAVE_TIFF
1 >>config.tmp
500 if not "(%HAVE_XPM%)" == "()" echo #define HAVE_XPM
1 >>config.tmp
501 echo /* End of settings from configure.bat.
*/ >>config.tmp
503 Rem See if fc.exe returns a meaningful exit status. If it does, we
504 Rem might as well avoid unnecessary overwriting of config.h and epaths.h,
505 Rem since this forces recompilation of every source file.
506 if exist foo.bar
del foo.bar
507 fc
/b foo.bar foo.bar
>nul
2>&1
508 if not errorlevel 2 goto doCopy
509 fc
/b config.tmp ..\src\config.h
>nul
2>&1
510 if errorlevel 1 goto doCopy
511 fc
/b paths.h ..\src\epaths.h
>nul
2>&1
512 if errorlevel 0 goto dontCopy
514 copy config.tmp ..\src\config.h
515 copy paths.h ..\src\epaths.h
518 if exist config.tmp
del config.tmp
519 copy /b config.settings
+%MAKECMD%.defs
+..
\nt\makefile.w32
-in ..
\nt\makefile
520 copy /b config.settings
+%MAKECMD%.defs
+..\lib
-src\makefile.w32
-in ..\lib
-src\makefile
521 copy /b config.settings
+%MAKECMD%.defs
+..\src\makefile.w32
-in ..\src\makefile
522 copy /b config.settings
+%MAKECMD%.defs
+..\doc\emacs\makefile.w32
-in ..\doc\emacs\makefile
523 copy /b config.settings
+%MAKECMD%.defs
+..\doc\misc\makefile.w32
-in ..\doc\misc\makefile
524 copy /b config.settings
+%MAKECMD%.defs
+..\doc\lispref\makefile.w32
-in ..\doc\lispref\makefile
525 copy /b config.settings
+%MAKECMD%.defs
+..\doc\lispintro\makefile.w32
-in ..\doc\lispintro\makefile
526 if exist ..\lisp\makefile rm
-f ..
/lisp
/[Mm
]akefile
527 copy /b config.settings
+%MAKECMD%.defs
+..\lisp\makefile.w32
-in ..\lisp\makefile
528 rem Use the default (no-op) Makefile.in if the nt version is not present.
529 if exist ..\leim\makefile.w32
-in
copy /b config.settings
+%MAKECMD%.defs
+..\leim\makefile.w32
-in ..\leim\makefile
530 if not exist ..\leim\makefile.w32
-in
copy /b config.settings
+%MAKECMD%.defs
+..\leim\Makefile.in ..\leim\makefile
533 Rem Some people use WinZip which doesn't create empty directories!
534 if not exist ..\site
-lisp
\nul
mkdir ..\site
-lisp\
535 Rem Update subdirs.el only if it is different or fc.exe doesn't work.
536 if exist foo.bar
del foo.bar
537 fc
/b foo.bar foo.bar
>nul
2>&1
538 if not errorlevel 2 goto doUpdateSubdirs
539 fc
/b subdirs.el ..\site
-lisp\subdirs.el
>nul
2>&1
540 if not errorlevel 1 goto dontUpdateSubdirs
542 if exist ..\site
-lisp\subdirs.el
del ..\site
-lisp\subdirs.el
543 copy subdirs.el ..\site
-lisp\subdirs.el
548 rem check that we have all the libraries we need.
551 if not "(%HAVE_XPM%)" == "()" goto checkpng
552 if (%xpmsupport%) == (N
) goto checkpng
554 echo XPM support is missing. It is required
for color icons in the toolbar.
555 echo Install libXpm development
files or
use --without
-xpm
558 if not "(%HAVE_PNG%)" == "()" goto checkjpeg
559 if (%pngsupport%) == (N
) goto checkjpeg
561 echo PNG support is missing.
562 echo Install libpng development
files or
use --without
-png
565 if not "(%HAVE_JPEG%)" == "()" goto checktiff
566 if (%jpegsupport%) == (N
) goto checktiff
568 echo JPEG support is missing.
569 echo Install jpeg development
files or
use --without
-jpeg
572 if not "(%HAVE_TIFF%)" == "()" goto checkgif
573 if (%tiffsupport%) == (N
) goto checkgif
575 echo TIFF support is missing.
576 echo Install libtiff development
files or
use --without
-tiff
579 if not "(%HAVE_GIF%)" == "()" goto donelibchecks
580 if (%gifsupport%) == (N
) goto donelibchecks
582 echo GIF support is missing.
583 echo Install giflib or libungif development
files or
use --without
-gif
586 if (%libsOK%) == (1) goto success
588 echo Important libraries are missing. Fix these issues before running make.
592 echo Emacs successfully configured.
593 echo Emacs successfully configured.
>>config.log
594 echo Run `
%MAKECMD%' to build, then run `%MAKECMD% install' to install.
598 echo Your environment size is too small. Please enlarge it and rerun configure.
599 echo For example
, type "command.com /e:2048" to have
2048 bytes available.
614 arch
-tag
: 300d20a4
-1675-4e75
-b615
-7ce1a8c5376c