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
322 goto compilercheckdone
324 echo GCC supports
-mtune
=pentium4
>>config.log
325 set mf
=-mtune
=pentium4
327 goto compilercheckdone
331 rm
-f junk.c junk.obj
336 rem ----------------------------------------------------------------------
337 rem Check for external image libraries. Since they are loaded
338 rem dynamically, the libraries themselves do not need to be present
339 rem at compile time, but the header files are required.
343 if (%nocygwin%) == (N
) goto flagsOK
344 set mingwflag
=-mno
-cygwin
348 if (%pngsupport%) == (N
) goto pngDone
350 echo Checking
for libpng...
351 echo #include
"png.h" >junk.c
352 echo main
(){} >>junk.c
353 rem -o option is ignored with cl, but allows result to be consistent.
354 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
355 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
356 if exist junk.obj
goto havePng
358 echo ...png.h
not found
, building without PNG support.
359 echo The failed program was
: >>config.log
360 type junk.c
>>config.log
365 echo ...PNG header available
, building with PNG support.
369 rm
-f junk.c junk.obj
371 if (%jpegsupport%) == (N
) goto jpegDone
373 echo Checking
for jpeg
-6b...
374 echo #include
"jconfig.h" >junk.c
375 echo main
(){} >>junk.c
376 rem -o option is ignored with cl, but allows result to be consistent.
377 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
378 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
379 if exist junk.obj
goto haveJpeg
381 echo ...jconfig.h
not found
, building without JPEG support.
382 echo The failed program was
: >>config.log
383 type junk.c
>>config.log
388 echo ...JPEG header available
, building with JPEG support.
392 rm
-f junk.c junk.obj
394 if (%gifsupport%) == (N
) goto gifDone
396 echo Checking
for libgif...
397 echo #include
"gif_lib.h" >junk.c
398 echo main
(){} >>junk.c
399 rem -o option is ignored with cl, but allows result to be consistent.
400 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
401 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
402 if exist junk.obj
goto haveGif
404 echo ...gif_lib.h
not found
, building without GIF support.
405 echo The failed program was
: >>config.log
406 type junk.c
>>config.log
411 echo ...GIF header available
, building with GIF support.
415 rm
-f junk.c junk.obj
417 if (%tiffsupport%) == (N
) goto tiffDone
419 echo Checking
for tiff...
420 echo #include
"tiffio.h" >junk.c
421 echo main
(){} >>junk.c
422 rem -o option is ignored with cl, but allows result to be consistent.
423 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
424 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
425 if exist junk.obj
goto haveTiff
427 echo ...tiffio.h
not found
, building without TIFF support.
428 echo The failed program was
: >>config.log
429 type junk.c
>>config.log
434 echo ...TIFF header available
, building with TIFF support.
438 rm
-f junk.c junk.obj
440 if (%xpmsupport%) == (N
) goto xpmDone
442 echo Checking
for libXpm...
443 echo #define FOR_MSW
1 >junk.c
444 echo #include
"X11/xpm.h" >>junk.c
445 echo main
(){} >>junk.c
446 rem -o option is ignored with cl, but allows result to be consistent.
447 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
448 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
449 if exist junk.obj
goto haveXpm
451 echo ...X11
/xpm.h
not found
, building without XPM support.
452 echo The failed program was
: >>config.log
453 type junk.c
>>config.log
458 echo ...XPM header available
, building with XPM support.
462 rm
-f junk.c junk.obj junk.err junk.out
464 rem ----------------------------------------------------------------------
466 echo Generating makefiles
467 if %COMPILER% == gcc
set MAKECMD
=gmake
468 if %COMPILER% == cl
set MAKECMD
=nmake
470 rem Pass on chosen settings to makefiles.
471 rem NB. Be very careful to not have a space before redirection symbols
472 rem except when there is a preceding digit, when a space is required.
474 echo #
Start of settings from configure.bat
>config.settings
475 echo COMPILER
=%COMPILER%>>config.settings
476 if not "(%mf%)" == "()" echo MCPU_FLAG
=%mf%>>config.settings
477 if (%nodebug%) == (Y
) echo NODEBUG
=1 >>config.settings
478 if (%noopt%) == (Y
) echo NOOPT
=1 >>config.settings
479 if (%nocygwin%) == (Y
) echo NOCYGWIN
=1 >>config.settings
480 if not "(%prefix%)" == "()" echo INSTALL_DIR
=%prefix%>>config.settings
481 rem We go thru docflags because usercflags could be "-DFOO=bar" -something
482 rem and the if command cannot cope with this
483 for %%v in
(%usercflags%) do if not (%%v
)==() set docflags
=Y
484 if (%docflags%)==(Y
) echo USER_CFLAGS
=%usercflags%>>config.settings
485 for %%v in
(%userldflags%) do if not (%%v
)==() set doldflags
=Y
486 if (%doldflags%)==(Y
) echo USER_LDFLAGS
=%userldflags%>>config.settings
487 echo #
End of settings from configure.bat
>>config.settings
488 echo.
>>config.settings
490 copy config.nt config.tmp
492 echo /* Start of settings from configure.bat.
*/ >>config.tmp
493 if (%docflags%) == (Y
) echo #define USER_CFLAGS
" %usercflags%">>config.tmp
494 if (%doldflags%) == (Y
) echo #define USER_LDFLAGS
" %userldflags%">>config.tmp
495 if not "(%HAVE_PNG%)" == "()" echo #define HAVE_PNG
1 >>config.tmp
496 if not "(%HAVE_JPEG%)" == "()" echo #define HAVE_JPEG
1 >>config.tmp
497 if not "(%HAVE_GIF%)" == "()" echo #define HAVE_GIF
1 >>config.tmp
498 if not "(%HAVE_TIFF%)" == "()" echo #define HAVE_TIFF
1 >>config.tmp
499 if not "(%HAVE_XPM%)" == "()" echo #define HAVE_XPM
1 >>config.tmp
500 echo /* End of settings from configure.bat.
*/ >>config.tmp
502 Rem See if fc.exe returns a meaningful exit status. If it does, we
503 Rem might as well avoid unnecessary overwriting of config.h and epaths.h,
504 Rem since this forces recompilation of every source file.
505 if exist foo.bar
del foo.bar
506 fc
/b foo.bar foo.bar
>nul
2>&1
507 if not errorlevel 2 goto doCopy
508 fc
/b config.tmp ..\src\config.h
>nul
2>&1
509 if errorlevel 1 goto doCopy
510 fc
/b paths.h ..\src\epaths.h
>nul
2>&1
511 if errorlevel 0 goto dontCopy
513 copy config.tmp ..\src\config.h
514 copy paths.h ..\src\epaths.h
517 if exist config.tmp
del config.tmp
518 copy /b config.settings
+%MAKECMD%.defs
+..
\nt\makefile.w32
-in ..
\nt\makefile
519 if exist ..
\admin\unidata
copy /b config.settings
+%MAKECMD%.defs
+..
\admin\unidata\makefile.w32
-in ..
\admin\unidata\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 if (%MAKECMD%) == (gmake
) set MAKECMD
=make
595 echo Run `
%MAKECMD%' to build, then run `%MAKECMD% install' to install.
599 echo Your environment size is too small. Please enlarge it and rerun configure.
600 echo For example
, type "command.com /e:2048" to have
2048 bytes available.
617 arch
-tag
: 300d20a4
-1675-4e75
-b615
-7ce1a8c5376c