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 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 ----------------------------------------------------------------------
93 rem ----------------------------------------------------------------------
96 if "%1" == "-h" goto usage
97 if "%1" == "--help" goto usage
98 if "%1" == "--prefix" goto setprefix
99 if "%1" == "--with-gcc" goto withgcc
100 if "%1" == "--with-msvc" goto withmsvc
101 if "%1" == "--no-debug" goto nodebug
102 if "%1" == "--no-opt" goto noopt
103 if "%1" == "--no-cygwin" goto nocygwin
104 if "%1" == "--cflags" goto usercflags
105 if "%1" == "--ldflags" goto userldflags
106 if "%1" == "--without-png" goto withoutpng
107 if "%1" == "--without-jpeg" goto withoutjpeg
108 if "%1" == "--without-gif" goto withoutgif
109 if "%1" == "--without-tiff" goto withouttiff
110 if "%1" == "--without-xpm" goto withoutxpm
111 if "%1" == "--enable-font-backend" goto withfont
112 if "%1" == "" goto checkutils
114 echo Usage
: configure
[options
]
116 echo.
--prefix PREFIX install Emacs in directory PREFIX
117 echo.
--with
-gcc
use GCC to compile Emacs
118 echo.
--with
-msvc
use MSVC to compile Emacs
119 echo.
--no
-debug exclude
debug info from executables
120 echo.
--no
-opt disable optimization
121 echo.
--no
-cygwin
use -mno
-cygwin option with GCC
122 echo.
--cflags FLAG pass FLAG to compiler
123 echo.
--ldflags FLAG pass FLAG to compiler
when linking
124 echo.
--without
-png
do not use libpng
125 echo.
--without
-jpeg
do not use jpeg
-6b
126 echo.
--without
-gif
do not use giflib or libungif
127 echo.
--without
-tiff
do not use libtiff
128 echo.
--without
-xpm
do not use libXpm
129 echo.
--enable
-font
-backend build with font backend support
131 rem ----------------------------------------------------------------------
137 rem ----------------------------------------------------------------------
142 rem ----------------------------------------------------------------------
147 rem ----------------------------------------------------------------------
152 rem ----------------------------------------------------------------------
157 rem ----------------------------------------------------------------------
162 rem ----------------------------------------------------------------------
165 set usercflags
=%usercflags%%sep1%%1
169 rem ----------------------------------------------------------------------
172 set userldflags
=%userldflags%%sep2%%1
176 rem ----------------------------------------------------------------------
184 rem ----------------------------------------------------------------------
192 rem ----------------------------------------------------------------------
200 rem ----------------------------------------------------------------------
208 rem ----------------------------------------------------------------------
217 set usercflags
=%usercflags%%sep1%-DUSE_FONT_BACKEND
223 rem ----------------------------------------------------------------------
224 rem Check that necessary utilities (cp and rm) are present.
226 echo Checking
for 'cp'...
227 cp configure.bat junk.bat
228 if not exist junk.bat
goto needcp
229 echo Checking
for 'rm'...
231 if exist junk.bat
goto needrm
234 echo You need
'cp' (the Unix file
copy program
) to build Emacs.
238 echo You need
'rm' (the Unix file delete program
) to build Emacs.
241 rem ----------------------------------------------------------------------
242 rem Auto-detect compiler if not specified, and validate GCC if chosen.
244 if (%COMPILER%)==(cl
) goto compilercheckdone
245 if (%COMPILER%)==(gcc
) goto checkgcc
247 echo Checking whether
'cl' is available...
248 echo main
(){} >junk.c
250 if exist junk.obj
goto clOK
252 echo Checking whether
'gcc' is available...
254 if not exist junk.o
goto nocompiler
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 chkapi
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
275 echo The failed program was
: >>config.log
276 type junk.c
>>config.log
277 rem ----------------------------------------------------------------------
278 rem Older versions of the Windows API headers either don't have any of
279 rem the IMAGE_xxx definitions (the headers that come with Cygwin b20.1
280 rem are like this), or have a typo in the definition of
281 rem IMAGE_FIRST_SECTION (the headers with gcc/mingw32 2.95 have this
282 rem problem). The gcc/mingw32 2.95.2 headers are okay, as are distros
283 rem of w32api-xxx.zip from Anders Norlander since 1999-11-18 at least.
285 echo Checking whether W32 API headers are too old...
286 echo #include
"windows.h" >junk.c
287 echo test
(PIMAGE_NT_HEADERS pHeader
) >>junk.c
288 echo {PIMAGE_SECTION_HEADER pSection
= IMAGE_FIRST_SECTION
(pHeader
);} >>junk.c
289 if (%nocygwin%) == (Y
) goto chkapi1
293 set cf
=%usercflags% -mno
-cygwin
298 @
echo gcc
%cf% -c junk.c
>>config.log
299 gcc
%cf% -c junk.c
>>config.log
2>&1
301 if exist junk.o
goto gccOk
302 echo The failed program was
: >>config.log
303 type junk.c
>>config.log
307 echo Configure failed.
308 echo To configure Emacs
for Windows
, you need to have either
309 echo gcc
-2.95 or later with Mingw32 and the W32 API headers
,
310 echo or MSVC
2.x or later.
318 Rem It is not clear what GCC version began supporting -mtune
319 Rem and pentium4 on x86, so check this explicitly.
320 echo main
(){} >junk.c
321 echo gcc
-c
-O2
-mtune
=pentium4 junk.c
>>config.log
322 gcc
-c
-O2
-mtune
=pentium4 junk.c
>>config.log
2>&1
323 if not errorlevel 1 goto gccMtuneOk
324 echo The failed program was
: >>config.log
325 type junk.c
>>config.log
328 goto compilercheckdone
330 echo GCC supports
-mtune
=pentium4
>>config.log
331 set mf
=-mtune
=pentium4
333 goto compilercheckdone
337 rm
-f junk.c junk.obj
342 rem ----------------------------------------------------------------------
343 rem Check for external image libraries. Since they are loaded
344 rem dynamically, the libraries themselves do not need to be present
345 rem at compile time, but the header files are required.
349 if (%nocygwin%) == (N
) goto flagsOK
350 set mingwflag
=-mno
-cygwin
354 if (%pngsupport%) == (N
) goto pngDone
356 echo Checking
for libpng...
357 echo #include
"png.h" >junk.c
358 echo main
(){} >>junk.c
359 rem -o option is ignored with cl, but allows result to be consistent.
360 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
361 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
362 if exist junk.obj
goto havePng
364 echo ...png.h
not found
, building without PNG support.
365 echo The failed program was
: >>config.log
366 type junk.c
>>config.log
371 echo ...PNG header available
, building with PNG support.
375 rm
-f junk.c junk.obj
377 if (%jpegsupport%) == (N
) goto jpegDone
379 echo Checking
for jpeg
-6b...
380 echo #include
"jconfig.h" >junk.c
381 echo main
(){} >>junk.c
382 rem -o option is ignored with cl, but allows result to be consistent.
383 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
384 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
385 if exist junk.obj
goto haveJpeg
387 echo ...jconfig.h
not found
, building without JPEG support.
388 echo The failed program was
: >>config.log
389 type junk.c
>>config.log
394 echo ...JPEG header available
, building with JPEG support.
398 rm
-f junk.c junk.obj
400 if (%gifsupport%) == (N
) goto gifDone
402 echo Checking
for libgif...
403 echo #include
"gif_lib.h" >junk.c
404 echo main
(){} >>junk.c
405 rem -o option is ignored with cl, but allows result to be consistent.
406 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
407 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
408 if exist junk.obj
goto haveGif
410 echo ...gif_lib.h
not found
, building without GIF support.
411 echo The failed program was
: >>config.log
412 type junk.c
>>config.log
417 echo ...GIF header available
, building with GIF support.
421 rm
-f junk.c junk.obj
423 if (%tiffsupport%) == (N
) goto tiffDone
425 echo Checking
for tiff...
426 echo #include
"tiffio.h" >junk.c
427 echo main
(){} >>junk.c
428 rem -o option is ignored with cl, but allows result to be consistent.
429 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
430 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
431 if exist junk.obj
goto haveTiff
433 echo ...tiffio.h
not found
, building without TIFF support.
434 echo The failed program was
: >>config.log
435 type junk.c
>>config.log
440 echo ...TIFF header available
, building with TIFF support.
444 rm
-f junk.c junk.obj
446 if (%xpmsupport%) == (N
) goto xpmDone
448 echo Checking
for libXpm...
449 echo #define FOR_MSW
1 >junk.c
450 echo #include
"X11/xpm.h" >>junk.c
451 echo main
(){} >>junk.c
452 rem -o option is ignored with cl, but allows result to be consistent.
453 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
454 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
455 if exist junk.obj
goto haveXpm
457 echo ...X11
/xpm.h
not found
, building without XPM support.
458 echo The failed program was
: >>config.log
459 type junk.c
>>config.log
464 echo ...XPM header available
, building with XPM support.
468 rm
-f junk.c junk.obj junk.err junk.out
470 rem ----------------------------------------------------------------------
472 echo Generating makefiles
473 if %COMPILER% == gcc
set MAKECMD
=gmake
474 if %COMPILER% == cl
set MAKECMD
=nmake
476 rem Pass on chosen settings to makefiles.
477 rem NB. Be very careful to not have a space before redirection symbols
478 rem except when there is a preceding digit, when a space is required.
480 echo #
Start of settings from configure.bat
>config.settings
481 echo COMPILER
=%COMPILER%>>config.settings
482 if not "(%mf%)" == "()" echo MCPU_FLAG
=%mf%>>config.settings
483 if (%nodebug%) == (Y
) echo NODEBUG
=1 >>config.settings
484 if (%noopt%) == (Y
) echo NOOPT
=1 >>config.settings
485 if (%nocygwin%) == (Y
) echo NOCYGWIN
=1 >>config.settings
486 if not "(%prefix%)" == "()" echo INSTALL_DIR
=%prefix%>>config.settings
487 rem We go thru docflags because usercflags could be "-DFOO=bar" -something
488 rem and the if command cannot cope with this
489 for %%v in
(%usercflags%) do if not (%%v
)==() set docflags
=Y
490 if (%docflags%)==(Y
) echo USER_CFLAGS
=%usercflags%>>config.settings
491 for %%v in
(%userldflags%) do if not (%%v
)==() set doldflags
=Y
492 if (%doldflags%)==(Y
) echo USER_LDFLAGS
=%userldflags%>>config.settings
493 if (%usefontbackend%) == (Y
) echo USE_FONTBACKEND
=1 >>config.settings
494 echo #
End of settings from configure.bat
>>config.settings
495 echo.
>>config.settings
497 copy config.nt config.tmp
499 echo /* Start of settings from configure.bat.
*/ >>config.tmp
500 if (%docflags%) == (Y
) echo #define USER_CFLAGS
" %usercflags%">>config.tmp
501 if (%doldflags%) == (Y
) echo #define USER_LDFLAGS
" %userldflags%">>config.tmp
502 if not "(%HAVE_PNG%)" == "()" echo #define HAVE_PNG
1 >>config.tmp
503 if not "(%HAVE_JPEG%)" == "()" echo #define HAVE_JPEG
1 >>config.tmp
504 if not "(%HAVE_GIF%)" == "()" echo #define HAVE_GIF
1 >>config.tmp
505 if not "(%HAVE_TIFF%)" == "()" echo #define HAVE_TIFF
1 >>config.tmp
506 if not "(%HAVE_XPM%)" == "()" echo #define HAVE_XPM
1 >>config.tmp
507 echo /* End of settings from configure.bat.
*/ >>config.tmp
509 Rem See if fc.exe returns a meaningful exit status. If it does, we
510 Rem might as well avoid unnecessary overwriting of config.h and epaths.h,
511 Rem since this forces recompilation of every source file.
512 if exist foo.bar
del foo.bar
513 fc
/b foo.bar foo.bar
>nul
2>&1
514 if not errorlevel 2 goto doCopy
515 fc
/b config.tmp ..\src\config.h
>nul
2>&1
516 if errorlevel 1 goto doCopy
517 fc
/b paths.h ..\src\epaths.h
>nul
2>&1
518 if errorlevel 0 goto dontCopy
520 copy config.tmp ..\src\config.h
521 copy paths.h ..\src\epaths.h
524 if exist config.tmp
del config.tmp
525 copy /b config.settings
+%MAKECMD%.defs
+..
\nt\makefile.w32
-in ..
\nt\makefile
526 copy /b config.settings
+%MAKECMD%.defs
+..\lib
-src\makefile.w32
-in ..\lib
-src\makefile
527 copy /b config.settings
+%MAKECMD%.defs
+..\src\makefile.w32
-in ..\src\makefile
528 copy /b config.settings
+%MAKECMD%.defs
+..\doc\emacs\makefile.w32
-in ..\doc\emacs\makefile
529 copy /b config.settings
+%MAKECMD%.defs
+..\doc\misc\makefile.w32
-in ..\doc\misc\makefile
530 copy /b config.settings
+%MAKECMD%.defs
+..\doc\lispref\makefile.w32
-in ..\doc\lispref\makefile
531 copy /b config.settings
+%MAKECMD%.defs
+..\doc\lispintro\makefile.w32
-in ..\doc\lispintro\makefile
532 if exist ..\lisp\makefile rm
-f ..
/lisp
/[Mm
]akefile
533 copy /b config.settings
+%MAKECMD%.defs
+..\lisp\makefile.w32
-in ..\lisp\makefile
534 rem Use the default (no-op) Makefile.in if the nt version is not present.
535 if exist ..\leim\makefile.w32
-in
copy /b config.settings
+%MAKECMD%.defs
+..\leim\makefile.w32
-in ..\leim\makefile
536 if not exist ..\leim\makefile.w32
-in
copy /b config.settings
+%MAKECMD%.defs
+..\leim\Makefile.in ..\leim\makefile
539 Rem Some people use WinZip which doesn't create empty directories!
540 if not exist ..\site
-lisp
\nul
mkdir ..\site
-lisp\
541 Rem Update subdirs.el only if it is different or fc.exe doesn't work.
542 if exist foo.bar
del foo.bar
543 fc
/b foo.bar foo.bar
>nul
2>&1
544 if not errorlevel 2 goto doUpdateSubdirs
545 fc
/b subdirs.el ..\site
-lisp\subdirs.el
>nul
2>&1
546 if not errorlevel 1 goto dontUpdateSubdirs
548 if exist ..\site
-lisp\subdirs.el
del ..\site
-lisp\subdirs.el
549 copy subdirs.el ..\site
-lisp\subdirs.el
554 rem check that we have all the libraries we need.
557 if not "(%HAVE_XPM%)" == "()" goto checkpng
558 if (%xpmsupport%) == (N
) goto checkpng
560 echo XPM support is missing. It is required
for color icons in the toolbar.
561 echo Install libXpm development
files or
use --without
-xpm
564 if not "(%HAVE_PNG%)" == "()" goto checkjpeg
565 if (%pngsupport%) == (N
) goto checkjpeg
567 echo PNG support is missing.
568 echo Install libpng development
files or
use --without
-png
571 if not "(%HAVE_JPEG%)" == "()" goto checktiff
572 if (%jpegsupport%) == (N
) goto checktiff
574 echo JPEG support is missing.
575 echo Install jpeg development
files or
use --without
-jpeg
578 if not "(%HAVE_TIFF%)" == "()" goto checkgif
579 if (%tiffsupport%) == (N
) goto checkgif
581 echo TIFF support is missing.
582 echo Install libtiff development
files or
use --without
-tiff
585 if not "(%HAVE_GIF%)" == "()" goto donelibchecks
586 if (%gifsupport%) == (N
) goto donelibchecks
588 echo GIF support is missing.
589 echo Install giflib or libungif development
files or
use --without
-gif
592 if (%libsOK%) == (1) goto success
594 echo Important libraries are missing. Fix these issues before running make.
598 echo Emacs successfully configured.
599 echo Emacs successfully configured.
>>config.log
600 echo Run `
%MAKECMD%' to build, then run `%MAKECMD% install' to install.
604 echo Your environment size is too small. Please enlarge it and rerun configure.
605 echo For example
, type "command.com /e:2048" to have
2048 bytes available.
622 arch
-tag
: 300d20a4
-1675-4e75
-b615
-7ce1a8c5376c