2 rem ----------------------------------------------------------------------
3 rem Configuration script for MS Windows 95/98 and NT/2000
4 rem Copyright (C) 1999, 2000 Free Software Foundation, Inc.
6 rem This file is part of GNU Emacs.
8 rem GNU Emacs is free software; you can redistribute it and/or modify
9 rem it under the terms of the GNU General Public License as published by
10 rem the Free Software Foundation; either version 2, or (at your option)
11 rem any later version.
13 rem GNU Emacs is distributed in the hope that it will be useful,
14 rem but WITHOUT ANY WARRANTY; without even the implied warranty of
15 rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 rem GNU General Public License for more details.
18 rem You should have received a copy of the GNU General Public License
19 rem along with GNU Emacs; see the file COPYING. If not, write to the
20 rem Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21 rem Boston, MA 02111-1307, USA.
22 rem ----------------------------------------------------------------------
23 rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:
25 rem + MS Windows 95/98 or NT/2000
26 rem + either MSVC 2.x or later, or gcc-2.95 or later (with gmake 3.75
27 rem or later) and the Mingw32 and W32 API headers and libraries
29 rem For reference, here is a list of which builds of gmake are known to
30 rem work or not, and whether they work in the presence and/or absence of
34 rem cygwin b20.1 make (3.75): okay[1] fails[2]
35 rem MSVC compiled gmake 3.77: okay okay
36 rem MSVC compiled gmake 3.78.1: okay okay
37 rem MSVC compiled gmake 3.79.1: okay okay
38 rem mingw32/gcc-2.92.2 make (3.77): okay okay
39 rem cygwin compiled gmake 3.77: okay[1] fails[2]
40 rem cygwin compiled gmake 3.78.1: okay fails[2]
41 rem cygwin compiled gmake 3.79.1: couldn't build make[3]
43 rem [1] doesn't cope with makefiles with DOS line endings, so must mount
44 rem emacs source with text!=binary.
45 rem [2] fails when needs to invoke shell commands; okay invoking gcc etc.
46 rem [3] requires LC_MESSAGES support to build; maybe 2.95.x update to
47 rem cygwin provides this?
50 rem ----------------------------------------------------------------------
51 rem See if the environment is large enough. We need 43 (?) bytes.
52 set $foo$
=123456789_123456789_123456789_123456789_123
53 if not "%$foo$%" == "123456789_123456789_123456789_123456789_123" goto SmallEnv
56 rem ----------------------------------------------------------------------
57 rem Make sure we are running in the nt subdir
58 if exist configure.bat
goto start
59 echo You must
run configure from the nt subdirectory.
63 rem ----------------------------------------------------------------------
75 rem ----------------------------------------------------------------------
78 if "%1" == "-h" goto usage
79 if "%1" == "--help" goto usage
80 if "%1" == "--prefix" goto setprefix
81 if "%1" == "--with-gcc" goto withgcc
82 if "%1" == "--with-msvc" goto withmsvc
83 if "%1" == "--no-debug" goto nodebug
84 if "%1" == "--no-opt" goto noopt
85 if "%1" == "--no-cygwin" goto nocygwin
86 if "%1" == "--cflags" goto usercflags
87 if "%1" == "--ldflags" goto userldflags
88 if "%1" == "" goto checkutils
90 echo Usage
: configure
[options
]
92 echo.
--prefix PREFIX install Emacs in directory PREFIX
93 echo.
--with
-gcc
use GCC to compile Emacs
94 echo.
--with
-msvc
use MSVC to compile Emacs
95 echo.
--no
-debug exclude
debug info from executables
96 echo.
--no
-opt disable optimization
97 echo.
--no
-cygwin
use -mno
-cygwin option with GCC
98 echo.
--cflags FLAG pass FLAG to compiler
99 echo.
--ldflags FLAG pass FLAG to compiler
when linking
101 rem ----------------------------------------------------------------------
107 rem ----------------------------------------------------------------------
112 rem ----------------------------------------------------------------------
117 rem ----------------------------------------------------------------------
122 rem ----------------------------------------------------------------------
127 rem ----------------------------------------------------------------------
132 rem ----------------------------------------------------------------------
135 set usercflags
=%usercflags%%sep1%%1
139 rem ----------------------------------------------------------------------
142 set userldflags
=%userldflags%%sep2%%1
147 rem ----------------------------------------------------------------------
148 rem Check that necessary utilities (cp and rm) are present.
150 echo Checking
for 'cp'...
151 cp configure.bat junk.bat
152 if not exist junk.bat
goto needcp
153 echo Checking
for 'rm'...
155 if exist junk.bat
goto needrm
158 echo You need
'cp' (the Unix file
copy program
) to build Emacs.
162 echo You need
'rm' (the Unix file delete program
) to build Emacs.
165 rem ----------------------------------------------------------------------
166 rem Auto-detect compiler if not specified, and validate GCC if chosen.
168 if (%COMPILER%)==(cl
) goto genmakefiles
169 if (%COMPILER%)==(gcc
) goto checkgcc
171 echo Checking whether
'cl' is available...
172 echo main
(){} >junk.c
174 if exist junk.obj
goto clOK
176 echo Checking whether
'gcc' is available...
178 if not exist junk.o
goto nocompiler
182 if (%nocygwin%) == (Y
) goto checkw32api
183 echo Checking whether gcc requires
'-mno-cygwin'...
184 echo #include
"cygwin/version.h" >junk.c
185 echo main
(){} >>junk.c
187 if not exist junk.o
goto checkw32api
188 gcc
-mno
-cygwin
-c junk.c
189 if exist junk.o
set nocygwin
=Y
193 rem ----------------------------------------------------------------------
194 rem Older versions of the Windows API headers either don't have any of
195 rem the IMAGE_xxx definitions (the headers that come with Cygwin b20.1
196 rem are like this), or have a typo in the definition of
197 rem IMAGE_FIRST_SECTION (the headers with gcc/mingw32 2.95 have this
198 rem problem). The gcc/mingw32 2.95.2 headers are okay, as are distros
199 rem of w32api-xxx.zip from Anders Norlander since 1999-11-18 at least.
201 echo Checking whether W32 API headers are too old...
202 echo #include
"windows.h" >junk.c
203 echo test
(PIMAGE_NT_HEADERS pHeader
)>>junk.c
204 echo {PIMAGE_SECTION_HEADER pSection
= IMAGE_FIRST_SECTION
(pHeader
);}>>junk.c
206 if exist junk.o
goto gccOk
210 echo Configure failed.
211 echo To configure Emacs
for Windows
, you need to have either
212 echo gcc
-2.95 or later with Mingw32 and the W32 API headers
,
213 echo or MSVC
2.x or later.
229 rem ----------------------------------------------------------------------
231 echo Generating makefiles
232 if %COMPILER% == gcc
set MAKECMD
=gmake
233 if %COMPILER% == cl
set MAKECMD
=nmake
235 rem Pass on chosen settings to makefiles.
236 echo #
Start of settings from configure.bat
>config.settings
237 echo COMPILER
=%COMPILER% >>config.settings
238 if (%nodebug%) == (Y
) echo NODEBUG
=1>>config.settings
239 if (%noopt%) == (Y
) echo NOOPT
=1>>config.settings
240 if (%nocygwin%) == (Y
) echo NOCYGWIN
=1>>config.settings
241 if not "(%prefix%)" == "()" echo INSTALL_DIR
=%prefix%>>config.settings
242 if not "(%usercflags%)" == "()" echo USER_CFLAGS
=%usercflags%>>config.settings
243 if not "(%userldflags%)" == "()" echo USER_LDFLAGS
=%userldflags%>>config.settings
244 echo #
End of settings from configure.bat
>>config.settings
245 echo.
>>config.settings
247 copy config.nt ..\src\config.h
248 if not "(%usercflags%)" == "()" echo #define USER_CFLAGS
" %usercflags%">>..\src\config.h
249 if not "(%userldflags%)" == "()" echo #define USER_LDFLAGS
" %userldflags%">>..\src\config.h
250 copy paths.h ..\src\epaths.h
252 copy /b config.settings
+%MAKECMD%.defs
+..
\nt\makefile.w32
-in ..
\nt\makefile
253 copy /b config.settings
+%MAKECMD%.defs
+..\lib
-src\makefile.w32
-in ..\lib
-src\makefile
254 copy /b config.settings
+%MAKECMD%.defs
+..\src\makefile.w32
-in ..\src\makefile
255 if not exist ..\lisp\Makefile.unix
rename ..\lisp\Makefile Makefile.unix
256 if exist ..\lisp\makefile
del /f ..\lisp\makefile
257 copy /b config.settings
+%MAKECMD%.defs
+..\lisp\makefile.w32
-in ..\lisp\makefile
258 rem Use the default (no-op) Makefile.in if the nt version is not present.
259 if exist ..\leim\makefile.w32
-in
copy /b config.settings
+%MAKECMD%.defs
+..\leim\makefile.w32
-in ..\leim\makefile
260 if not exist ..\leim\makefile.w32
-in
copy /b config.settings
+%MAKECMD%.defs
+..\leim\Makefile.in ..\leim\makefile
264 echo Emacs successfully configured.
265 echo Run `
%MAKECMD%' to build, then run `%MAKECMD% install' to install.
269 echo Your environment size is too small. Please enlarge it and rerun configure.
270 echo For example
, type "command.com /e:2048" to have
2048 bytes available.