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, 2009, 2010, 2011 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 ----------------------------------------------------------------------
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" == "--profile" goto profile
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" == "--with-svg" goto withsvg
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.
--profile enable profiling
123 echo.
--no
-cygwin
use -mno
-cygwin option with GCC
124 echo.
--cflags FLAG pass FLAG to compiler
125 echo.
--ldflags FLAG pass FLAG to compiler
when linking
126 echo.
--without
-png
do not use PNG library even
if it is installed
127 echo.
--without
-jpeg
do not use JPEG library even
if it is installed
128 echo.
--without
-gif
do not use GIF library even
if it is installed
129 echo.
--without
-tiff
do not use TIFF library even
if it is installed
130 echo.
--without
-xpm
do not use XPM library even
if it is installed
131 echo.
--with
-svg
use the RSVG library
(experimental
)
133 rem ----------------------------------------------------------------------
139 rem ----------------------------------------------------------------------
144 rem ----------------------------------------------------------------------
149 rem ----------------------------------------------------------------------
154 rem ----------------------------------------------------------------------
159 rem ----------------------------------------------------------------------
164 rem ----------------------------------------------------------------------
169 rem ----------------------------------------------------------------------
172 set usercflags
=%usercflags%%sep1%%1
176 rem ----------------------------------------------------------------------
179 set userldflags
=%userldflags%%sep2%%1
183 rem ----------------------------------------------------------------------
191 rem ----------------------------------------------------------------------
199 rem ----------------------------------------------------------------------
207 rem ----------------------------------------------------------------------
215 rem ----------------------------------------------------------------------
228 rem ----------------------------------------------------------------------
229 rem Check that necessary utilities (cp and rm) are present.
231 echo Checking
for 'cp'...
232 cp configure.bat junk.bat
233 if not exist junk.bat
goto needcp
234 echo Checking
for 'rm'...
236 if exist junk.bat
goto needrm
239 echo You need
'cp' (the Unix file
copy program
) to build Emacs.
243 echo You need
'rm' (the Unix file delete program
) to build Emacs.
246 rem ----------------------------------------------------------------------
247 rem Auto-detect compiler if not specified, and validate GCC if chosen.
249 if (%COMPILER%)==(cl
) goto compilercheckdone
250 if (%COMPILER%)==(gcc
) goto checkgcc
252 echo Checking whether
'gcc' is available...
253 echo main
(){} >junk.c
255 if exist junk.o
goto checkgcc
257 echo Checking whether
'cl' is available...
259 if exist junk.obj
goto clOK
263 if exist junk.o
del junk.o
264 Rem WARNING -- COMMAND.COM on some systems only looks at the first
265 Rem 8 characters of a label. So do NOT be tempted to change
266 Rem chkapi* into something fancier like checkw32api
267 Rem You HAVE been warned!
268 if (%nocygwin%) == (Y
) goto chkapiN
269 echo Checking whether gcc requires
'-mno-cygwin'...
270 echo #include
"cygwin/version.h" >junk.c
271 echo main
(){} >>junk.c
272 echo gcc
-c junk.c
>>config.log
273 gcc
-c junk.c
>>config.log
2>&1
274 if not exist junk.o
goto chkapi
275 echo gcc
-mno
-cygwin
-c junk.c
>>config.log
276 gcc
-mno
-cygwin
-c junk.c
>>config.log
2>&1
277 if exist junk.o
set nocygwin
=Y
280 echo The failed program was
: >>config.log
281 type junk.c
>>config.log
284 rem ----------------------------------------------------------------------
285 rem Older versions of the Windows API headers either don't have any of
286 rem the IMAGE_xxx definitions (the headers that come with Cygwin b20.1
287 rem are like this), or have a typo in the definition of
288 rem IMAGE_FIRST_SECTION (the headers with gcc/mingw32 2.95 have this
289 rem problem). The gcc/mingw32 2.95.2 headers are okay, as are distros
290 rem of w32api-xxx.zip from Anders Norlander since 1999-11-18 at least.
291 rem Beginning with Emacs 23, we need usp10.h.
293 echo Checking whether W32 API headers are too old...
294 echo #include
"windows.h" >junk.c
295 echo #include
"usp10.h" >>junk.c
296 echo test
(PIMAGE_NT_HEADERS pHeader
) >>junk.c
297 echo {PIMAGE_SECTION_HEADER pSection
= IMAGE_FIRST_SECTION
(pHeader
);} >>junk.c
298 if (%nocygwin%) == (Y
) goto chkapi1
302 set cf
=%usercflags% -mno
-cygwin
307 @
echo gcc
%cf% -c junk.c
>>config.log
308 gcc
%cf% -c junk.c
>>config.log
2>&1
310 if exist junk.o
goto gccOk
311 echo The failed program was
: >>config.log
312 type junk.c
>>config.log
316 echo Configure failed.
317 echo To configure Emacs
for Windows
, you need to have either
318 echo gcc
-2.95 or later with Mingw32 and the W32 API headers
,
319 echo or MSVC
2.x or later.
327 Rem It is not clear what GCC version began supporting -mtune
328 Rem and pentium4 on x86, so check this explicitly.
329 echo main
(){} >junk.c
330 echo gcc
-c
-O2
-mtune
=pentium4 junk.c
>>config.log
331 gcc
-c
-O2
-mtune
=pentium4 junk.c
>>config.log
2>&1
332 if not errorlevel 1 goto gccMtuneOk
333 echo The failed program was
: >>config.log
334 type junk.c
>>config.log
339 echo GCC supports
-mtune
=pentium4
>>config.log
340 set mf
=-mtune
=pentium4
343 rem Check for DWARF-2 debug info support, else default to stabs
344 echo main
(){} >junk.c
345 echo gcc
-c
-gdwarf
-2 -g3 junk.c
>>config.log
346 gcc
-c
-gdwarf
-2 -g3 junk.c
>>config.log
2>&1
347 if not errorlevel 1 goto gccdwarf
348 echo The failed program was
: >>config.log
349 type junk.c
>>config.log
352 goto compilercheckdone
354 echo GCC supports DWARF
-2 >>config.log
355 set dbginfo
=-gdwarf
-2 -g3
357 goto compilercheckdone
361 rm
-f junk.c junk.obj
366 rem ----------------------------------------------------------------------
367 rem Check for external image libraries. Since they are loaded
368 rem dynamically, the libraries themselves do not need to be present
369 rem at compile time, but the header files are required.
373 if (%nocygwin%) == (N
) goto flagsOK
374 set mingwflag
=-mno
-cygwin
378 if (%pngsupport%) == (N
) goto pngDone
380 echo Checking
for libpng...
381 echo #include
"png.h" >junk.c
382 echo main
(){} >>junk.c
383 rem -o option is ignored with cl, but allows result to be consistent.
384 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
385 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
386 if exist junk.obj
goto havePng
388 echo ...png.h
not found
, building without PNG support.
389 echo The failed program was
: >>config.log
390 type junk.c
>>config.log
395 echo ...PNG header available
, building with PNG support.
399 rm
-f junk.c junk.obj
401 if (%jpegsupport%) == (N
) goto jpegDone
403 echo Checking
for jpeg
-6b...
404 echo #include
"jconfig.h" >junk.c
405 echo main
(){} >>junk.c
406 rem -o option is ignored with cl, but allows result to be consistent.
407 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
408 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
409 if exist junk.obj
goto haveJpeg
411 echo ...jconfig.h
not found
, building without JPEG support.
412 echo The failed program was
: >>config.log
413 type junk.c
>>config.log
418 echo ...JPEG header available
, building with JPEG support.
422 rm
-f junk.c junk.obj
424 if (%gifsupport%) == (N
) goto gifDone
426 echo Checking
for libgif...
427 echo #include
"gif_lib.h" >junk.c
428 echo main
(){} >>junk.c
429 rem -o option is ignored with cl, but allows result to be consistent.
430 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
431 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
432 if exist junk.obj
goto haveGif
434 echo ...gif_lib.h
not found
, building without GIF support.
435 echo The failed program was
: >>config.log
436 type junk.c
>>config.log
441 echo ...GIF header available
, building with GIF support.
445 rm
-f junk.c junk.obj
447 if (%tiffsupport%) == (N
) goto tiffDone
449 echo Checking
for tiff...
450 echo #include
"tiffio.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 haveTiff
457 echo ...tiffio.h
not found
, building without TIFF support.
458 echo The failed program was
: >>config.log
459 type junk.c
>>config.log
464 echo ...TIFF header available
, building with TIFF support.
468 rm
-f junk.c junk.obj
470 if (%xpmsupport%) == (N
) goto xpmDone
472 echo Checking
for libXpm...
473 echo #define FOR_MSW
1 >junk.c
474 echo #include
"X11/xpm.h" >>junk.c
475 echo main
(){} >>junk.c
476 rem -o option is ignored with cl, but allows result to be consistent.
477 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
478 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
479 if exist junk.obj
goto haveXpm
481 echo ...X11
/xpm.h
not found
, building without XPM support.
482 echo The failed program was
: >>config.log
483 type junk.c
>>config.log
488 echo ...XPM header available
, building with XPM support.
492 rm
-f junk.c junk.obj
494 if not (%svgsupport%) == (Y
) goto :svgDone
495 echo Checking
for librsvg...
496 echo #include
"librsvg/rsvg.h" >junk.c
497 echo main
(){} >>junk.c
498 rem -o option is ignored with cl, but allows result to be consistent.
499 echo %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>>config.log
500 %COMPILER% %usercflags% %mingwflag% -c junk.c
-o junk.obj
>junk.out
2>>config.log
501 if exist junk.obj
goto haveSvg
503 echo ...librsvg
/rsvg.h or dependencies
not found
, building without SVG support.
504 echo The failed program was
: >>config.log
505 type junk.c
>>config.log
510 echo ...librsvg header available
, building with SVG support
(EXPERIMENTAL
).
514 rm
-f junk.c junk.obj junk.err junk.out
516 rem ----------------------------------------------------------------------
518 echo Generating makefiles
519 if %COMPILER% == gcc
set MAKECMD
=gmake
520 if %COMPILER% == cl
set MAKECMD
=nmake
522 rem Pass on chosen settings to makefiles.
523 rem NB. Be very careful to not have a space before redirection symbols
524 rem except when there is a preceding digit, when a space is required.
526 echo #
Start of settings from configure.bat
>config.settings
527 echo COMPILER
=%COMPILER%>>config.settings
528 if not "(%mf%)" == "()" echo MCPU_FLAG
=%mf%>>config.settings
529 if not "(%dbginfo%)" == "()" echo DEBUG_INFO
=%dbginfo%>>config.settings
530 if (%nodebug%) == (Y
) echo NODEBUG
=1 >>config.settings
531 if (%noopt%) == (Y
) echo NOOPT
=1 >>config.settings
532 if (%profile%) == (Y
) echo PROFILE
=1 >>config.settings
533 if (%nocygwin%) == (Y
) echo NOCYGWIN
=1 >>config.settings
534 if not "(%prefix%)" == "()" echo INSTALL_DIR
=%prefix%>>config.settings
535 rem We go thru docflags because usercflags could be "-DFOO=bar" -something
536 rem and the if command cannot cope with this
537 for %%v in
(%usercflags%) do if not (%%v
)==() set docflags
=Y
538 if (%docflags%)==(Y
) echo USER_CFLAGS
=%usercflags%>>config.settings
539 for %%v in
(%userldflags%) do if not (%%v
)==() set doldflags
=Y
540 if (%doldflags%)==(Y
) echo USER_LDFLAGS
=%userldflags%>>config.settings
541 echo #
End of settings from configure.bat
>>config.settings
542 echo.
>>config.settings
544 copy config.nt config.tmp
546 echo /* Start of settings from configure.bat.
*/ >>config.tmp
547 if (%docflags%) == (Y
) echo #define USER_CFLAGS
" %usercflags%">>config.tmp
548 if (%doldflags%) == (Y
) echo #define USER_LDFLAGS
" %userldflags%">>config.tmp
549 if (%profile%) == (Y
) echo #define PROFILING
1 >>config.tmp
550 if not "(%HAVE_PNG%)" == "()" echo #define HAVE_PNG
1 >>config.tmp
551 if not "(%HAVE_JPEG%)" == "()" echo #define HAVE_JPEG
1 >>config.tmp
552 if not "(%HAVE_GIF%)" == "()" echo #define HAVE_GIF
1 >>config.tmp
553 if not "(%HAVE_TIFF%)" == "()" echo #define HAVE_TIFF
1 >>config.tmp
554 if not "(%HAVE_XPM%)" == "()" echo #define HAVE_XPM
1 >>config.tmp
555 if "(%HAVE_RSVG%)" == "(1)" echo #define HAVE_RSVG
1 >>config.tmp
557 echo /* End of settings from configure.bat.
*/ >>config.tmp
559 Rem See if fc.exe returns a meaningful exit status. If it does, we
560 Rem might as well avoid unnecessary overwriting of config.h and epaths.h,
561 Rem since this forces recompilation of every source file.
562 if exist foo.bar
del foo.bar
563 fc
/b foo.bar foo.bar
>nul
2>&1
564 if not errorlevel 2 goto doCopy
565 fc
/b config.tmp ..\src\config.h
>nul
2>&1
566 if errorlevel 1 goto doCopy
567 fc
/b paths.h ..\src\epaths.h
>nul
2>&1
568 if errorlevel 0 goto dontCopy
570 copy config.tmp ..\src\config.h
571 copy paths.h ..\src\epaths.h
574 if exist config.tmp
del config.tmp
575 copy /b config.settings
+%MAKECMD%.defs
+..
\nt\makefile.w32
-in ..
\nt\makefile
576 if exist ..
\admin\unidata
copy /b config.settings
+%MAKECMD%.defs
+..
\admin\unidata\makefile.w32
-in ..
\admin\unidata\makefile
577 copy /b config.settings
+%MAKECMD%.defs
+..\lib
-src\makefile.w32
-in ..\lib
-src\makefile
578 copy /b config.settings
+%MAKECMD%.defs
+..\src\makefile.w32
-in ..\src\makefile
579 copy /b config.settings
+%MAKECMD%.defs
+..\doc\emacs\makefile.w32
-in ..\doc\emacs\makefile
580 copy /b config.settings
+%MAKECMD%.defs
+..\doc\misc\makefile.w32
-in ..\doc\misc\makefile
581 copy /b config.settings
+%MAKECMD%.defs
+..\doc\lispref\makefile.w32
-in ..\doc\lispref\makefile
582 copy /b config.settings
+%MAKECMD%.defs
+..\doc\lispintro\makefile.w32
-in ..\doc\lispintro\makefile
583 if exist ..\lisp\makefile rm
-f ..
/lisp
/[Mm
]akefile
584 copy /b config.settings
+%MAKECMD%.defs
+..\lisp\makefile.w32
-in ..\lisp\makefile
585 rem Use the default (no-op) Makefile.in if the nt version is not present.
586 if exist ..\leim\makefile.w32
-in
copy /b config.settings
+%MAKECMD%.defs
+..\leim\makefile.w32
-in ..\leim\makefile
587 if not exist ..\leim\makefile.w32
-in
copy /b config.settings
+%MAKECMD%.defs
+..\leim\Makefile.in ..\leim\makefile
590 Rem Some people use WinZip which doesn't create empty directories!
591 if not exist ..\site
-lisp
\nul
mkdir ..\site
-lisp\
592 Rem Update subdirs.el only if it is different or fc.exe doesn't work.
593 if exist foo.bar
del foo.bar
594 fc
/b foo.bar foo.bar
>nul
2>&1
595 if not errorlevel 2 goto doUpdateSubdirs
596 fc
/b subdirs.el ..\site
-lisp\subdirs.el
>nul
2>&1
597 if not errorlevel 1 goto dontUpdateSubdirs
599 if exist ..\site
-lisp\subdirs.el
del ..\site
-lisp\subdirs.el
600 copy subdirs.el ..\site
-lisp\subdirs.el
605 rem check that we have all the libraries we need.
608 if not "(%HAVE_XPM%)" == "()" goto checkpng
609 if (%xpmsupport%) == (N
) goto checkpng
611 echo XPM support is missing. It is required
for color icons in the toolbar.
612 echo Install libXpm development
files or
use --without
-xpm
615 if not "(%HAVE_PNG%)" == "()" goto checkjpeg
616 if (%pngsupport%) == (N
) goto checkjpeg
618 echo PNG support is missing.
619 echo Install libpng development
files or
use --without
-png
622 if not "(%HAVE_JPEG%)" == "()" goto checktiff
623 if (%jpegsupport%) == (N
) goto checktiff
625 echo JPEG support is missing.
626 echo Install jpeg development
files or
use --without
-jpeg
629 if not "(%HAVE_TIFF%)" == "()" goto checkgif
630 if (%tiffsupport%) == (N
) goto checkgif
632 echo TIFF support is missing.
633 echo Install libtiff development
files or
use --without
-tiff
636 if not "(%HAVE_GIF%)" == "()" goto donelibchecks
637 if (%gifsupport%) == (N
) goto donelibchecks
639 echo GIF support is missing.
640 echo Install giflib or libungif development
files or
use --without
-gif
643 if (%libsOK%) == (1) goto success
645 echo Important libraries are missing. Fix these issues before running make.
649 echo Emacs successfully configured.
650 echo Emacs successfully configured.
>>config.log
651 if (%MAKECMD%) == (gmake
) set MAKECMD
=make
652 echo Run `
%MAKECMD%' to build, then run `%MAKECMD% install' to install.
656 echo Your environment size is too small. Please enlarge it and rerun configure.
657 echo For example
, type "command.com /e:2048" to have
2048 bytes available.
688 arch
-tag
: 300d20a4
-1675-4e75
-b615
-7ce1a8c5376c