config.bat 10.8 KB
Newer Older
Richard M. Stallman's avatar
Richard M. Stallman committed
1 2 3
@echo off
rem   ----------------------------------------------------------------------
rem   Configuration script for MSDOS
Glenn Morris's avatar
Glenn Morris committed
4
rem   Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003
Glenn Morris's avatar
Glenn Morris committed
5
rem   2004, 2005, 2006, 2007  Free Software Foundation, Inc.
6

Richard M. Stallman's avatar
Richard M. Stallman committed
7 8 9 10
rem   This file is part of GNU Emacs.

rem   GNU Emacs is free software; you can redistribute it and/or modify
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)
Richard M. Stallman's avatar
Richard M. Stallman committed
12 13 14 15 16 17 18 19
rem   any later version.

rem   GNU Emacs is distributed in the hope that it will be useful,
rem   but WITHOUT ANY WARRANTY; without even the implied warranty of
rem   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
rem   GNU General Public License for more details.

rem   You should have received a copy of the GNU General Public License
Karl Heuer's avatar
Karl Heuer committed
20
rem   along with GNU Emacs; see the file COPYING.  If not, write to the
Lute Kamstra's avatar
Lute Kamstra committed
21 22
rem   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
rem   Boston, MA 02110-1301, USA.
Richard M. Stallman's avatar
Richard M. Stallman committed
23 24 25
rem   ----------------------------------------------------------------------
rem   YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:
rem
26
rem   + msdos version 3 or better.
Eli Zaretskii's avatar
Eli Zaretskii committed
27
rem   + DJGPP version 1.12maint1 or later (version 2.03 or later recommended).
28 29
rem   + make utility that allows breaking of the 128 chars limit on
rem     command lines.  ndmake (as of version 4.5) won't work due to a
Eli Zaretskii's avatar
Eli Zaretskii committed
30
rem     line length limit.  The make that comes with DJGPP does work.
31 32
rem   + rm and mv (from GNU file utilities).
rem   + sed (you can use the port that comes with DJGPP).
33
rem
Eli Zaretskii's avatar
Eli Zaretskii committed
34 35
rem   You should be able to get all the above utilities from the DJGPP FTP
rem   site, ftp.delorie.com, in the directory "pub/djgpp/current/v2gnu".
Richard M. Stallman's avatar
Richard M. Stallman committed
36
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
37 38
set X11=
set nodebug=
39
set djgpp_ver=
40 41 42 43 44 45
if "%1" == "" goto usage
rem   ----------------------------------------------------------------------
rem   See if their environment is large enough.  We need 28 bytes.
set $foo$=789012345678901234567
if not "%$foo$%" == "789012345678901234567" goto SmallEnv
set $foo$=
Morten Welinder's avatar
Morten Welinder committed
46 47 48 49
:again
if "%1" == "" goto usage
if "%1" == "--with-x" goto withx
if "%1" == "--no-debug" goto nodebug
Richard M. Stallman's avatar
Richard M. Stallman committed
50 51
if "%1" == "msdos" goto msdos
:usage
Morten Welinder's avatar
Morten Welinder committed
52 53
echo Usage: config [--with-x] [--no-debug] msdos
echo [Read the script before you run it.]
Richard M. Stallman's avatar
Richard M. Stallman committed
54 55
goto end
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
56 57 58 59
:withx
set X11=Y
shift
goto again
60
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
61 62 63 64
:nodebug
set nodebug=Y
shift
goto again
Richard M. Stallman's avatar
Richard M. Stallman committed
65
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
66
:msdos
67 68
Echo Checking whether 'sed' is available...
sed -e "w junk.$$$" <Nul
Morten Welinder's avatar
Morten Welinder committed
69
If Exist junk.$$$ Goto sedOk
70
Echo To configure 'Emacs' you need to have 'sed'!
Morten Welinder's avatar
Morten Welinder committed
71 72
Goto End
:sedOk
73
Echo Checking whether 'rm' is available...
Morten Welinder's avatar
Morten Welinder committed
74 75
rm -f junk.$$$
If Not Exist junk.$$$ Goto rmOk
76
Echo To configure 'Emacs' you need to have 'rm'!
Morten Welinder's avatar
Morten Welinder committed
77 78
Goto End
:rmOk
79
Echo Checking whether 'mv' is available...
Morten Welinder's avatar
Morten Welinder committed
80 81
rm -f junk.1 junk.2
echo foo >junk.1
82
mv junk.1 ./junk.2
Morten Welinder's avatar
Morten Welinder committed
83
If Exist junk.2 Goto mvOk
84
Echo To configure 'Emacs' you need to have 'mv'!
Morten Welinder's avatar
Morten Welinder committed
85 86 87 88
rm -f junk.1
Goto End
:mvOk
rm -f junk.2
89
Echo Checking whether 'gcc' is available...
Morten Welinder's avatar
Morten Welinder committed
90 91 92
echo main(){} >junk.c
gcc -c junk.c
if exist junk.o goto gccOk
93
Echo To configure 'Emacs' you need to have 'gcc'!
Morten Welinder's avatar
Morten Welinder committed
94 95 96
rm -f junk.c
Goto End
:gccOk
97
rm -f junk.c junk.o junk junk.exe
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
Echo Checking what version of DJGPP is installed...
If Not "%DJGPP%" == "" goto djgppOk
Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!
Goto End
:djgppOk
echo int main()           >junk.c
echo #ifdef __DJGPP__    >>junk.c
echo {return (__DJGPP__)*10;} >>junk.c
echo #else               >>junk.c
echo #ifdef __GO32__     >>junk.c
echo {return 10;}         >>junk.c
echo #else               >>junk.c
echo {return 0;}         >>junk.c
echo #endif              >>junk.c
echo #endif              >>junk.c
113 114
gcc -o junk junk.c
if not exist junk.exe coff2exe junk
115 116 117 118 119 120
junk
If ErrorLevel 10 Goto go32Ok
rm -f junk.c junk junk.exe
Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!
Goto End
:go32Ok
121 122
set djgpp_ver=1
If ErrorLevel 20 set djgpp_ver=2
123
rm -f junk.c junk junk.exe
124 125 126
rem The v1.x build does not need djecho
if "%DJGPP_VER%" == "1" Goto djechoOk
rem DJECHO is used by the top-level Makefile in the v2.x build
127 128 129 130 131 132 133 134 135 136 137 138
Echo Checking whether 'djecho' is available...
redir -o Nul -eo djecho -o junk.$$$ foo
If Exist junk.$$$ Goto djechoOk
Echo To build 'Emacs' you need the 'djecho.exe' program!
Echo 'djecho.exe' is part of 'djdevNNN.zip' basic DJGPP development kit.
Echo Versions of DJGPP before 2.02 called this program 'echo.exe'.
Echo Either unpack 'djecho.exe' from the 'djdevNNN.zip' archive,
Echo or, if you have 'echo.exe', copy it to 'djecho.exe'.
Echo Then run CONFIG.BAT again with the same arguments you did now.
Goto End
:djechoOk
rm -f junk.$$$
139
Echo Configuring for DJGPP Version %DJGPP_VER% ...
Morten Welinder's avatar
Morten Welinder committed
140
Rem   ----------------------------------------------------------------------
Richard M. Stallman's avatar
Richard M. Stallman committed
141 142 143
Echo Configuring the source directory...
cd src

144 145 146 147
rem   Create "epaths.h"
sed -f ../msdos/sed4.inp <epaths.in >epaths.tmp
update epaths.tmp epaths.h >nul
rm -f epaths.tmp
Richard M. Stallman's avatar
Richard M. Stallman committed
148 149

rem   Create "config.h"
Morten Welinder's avatar
Morten Welinder committed
150
rm -f config.h2 config.tmp
151
sed -e '' config.in > config.tmp
152
if "%X11%" == "" goto src4
153
sed -f ../msdos/sed2x.inp <config.in >config.tmp
154
:src4
Eli Zaretskii's avatar
Eli Zaretskii committed
155
if "%DJGPP_VER%" == "2" Goto src41
Morten Welinder's avatar
Morten Welinder committed
156
sed -f ../msdos/sed2.inp <config.tmp >config.h2
Eli Zaretskii's avatar
Eli Zaretskii committed
157 158 159 160
goto src42
:src41
sed -f ../msdos/sed2v2.inp <config.tmp >config.h2
:src42
161 162 163
Rem See if DECL_ALIGN can be supported with this GCC
rm -f junk.c junk.o junk junk.exe
echo struct { int i; char *p; } __attribute__((__aligned__(8))) foo;  >junk.c
164 165 166
rem Two percent signs because it is a special character for COMMAND.COM/CMD
rem Filter thru Sed because "&" is special for CMD.EXE
echo int main(void) { return (unsigned long)"&"foo %% 8; } | sed "s/.&./\&/"         >>junk.c
167 168 169 170 171 172 173 174
gcc -o junk junk.c
if not exist junk.exe coff2exe junk
junk
If Not ErrorLevel 1 Goto alignOk
Echo WARNING: Your GCC does not support 8-byte aligned variables.
Echo WARNING: Therefore Emacs cannot support buffers larger than 128MB.
rem The following line disables DECL_ALIGN which in turn disables USE_LSB_TAG
rem For details see lisp.h where it defines USE_LSB_TAG
175
echo #define NO_DECL_ALIGN >>config.h2
176 177
:alignOk
rm -f junk.c junk junk.exe
Morten Welinder's avatar
Morten Welinder committed
178 179
update config.h2 config.h >nul
rm -f config.tmp config.h2
Richard M. Stallman's avatar
Richard M. Stallman committed
180 181 182 183

rem   On my system dir.h gets in the way.  It's a VMS file so who cares.
if exist dir.h ren dir.h vmsdir.h

184
rem   Create "makefile" from "makefile.in".
185
rm -f Makefile junk.c
186
sed -e "1,/== start of cpp stuff ==/s@^# .*$@@" <Makefile.in >junk.c
187
If "%DJGPP_VER%" == "1" Goto mfV1
188
gcc -E -traditional junk.c | sed -f ../msdos/sed1v2.inp >Makefile
189 190
goto mfDone
:mfV1
191
gcc -E -traditional junk.c | sed -f ../msdos/sed1.inp >Makefile
192
:mfDone
193
rm -f junk.c
194

Morten Welinder's avatar
Morten Welinder committed
195
if "%X11%" == "" goto src5
196 197
mv Makefile makefile.tmp
sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile
Morten Welinder's avatar
Morten Welinder committed
198 199 200 201
rm -f makefile.tmp
:src5

if "%nodebug%" == "" goto src6
202
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
203
sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile
204
rm -f makefile.tmp
Morten Welinder's avatar
Morten Welinder committed
205
:src6
Richard M. Stallman's avatar
Richard M. Stallman committed
206 207 208 209 210
cd ..
rem   ----------------------------------------------------------------------
Echo Configuring the library source directory...
cd lib-src
rem   Create "makefile" from "makefile.in".
211
sed -e "1,/== start of cpp stuff ==/s@^#[ 	].*$@@" <Makefile.in >junk.c
212
gcc -E -traditional -I. -I../src junk.c | sed -e "s/^ /	/" -e "/^#/d" -e "/^[ 	]*$/d" >makefile.new
213
If "%DJGPP_VER%" == "2" goto libsrc-v2
214
sed -f ../msdos/sed3.inp <makefile.new >Makefile
215 216
Goto libsrc2
:libsrc-v2
217
sed -f ../msdos/sed3v2.inp <makefile.new >Makefile
218
:libsrc2
Morten Welinder's avatar
Morten Welinder committed
219
rm -f makefile.new junk.c
220
if "%nodebug%" == "" goto libsrc3
221
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
222
sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile
223 224
rm -f makefile.tmp
:libsrc3
Morten Welinder's avatar
Morten Welinder committed
225 226 227 228 229
cd ..
rem   ----------------------------------------------------------------------
if "%X11%" == "" goto oldx1
Echo Configuring the oldxmenu directory...
cd oldxmenu
230
sed -f ../msdos/sed5x.inp <Makefile.in >Makefile
Morten Welinder's avatar
Morten Welinder committed
231
if "%nodebug%" == "" goto oldx2
232
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
233
mv -f makefile.tmp Makefile
Morten Welinder's avatar
Morten Welinder committed
234
:oldx2
Richard M. Stallman's avatar
Richard M. Stallman committed
235
cd ..
Morten Welinder's avatar
Morten Welinder committed
236
:oldx1
Richard M. Stallman's avatar
Richard M. Stallman committed
237
rem   ----------------------------------------------------------------------
238 239 240 241 242
Echo Configuring the manual directory...
cd man
sed -f ../msdos/sed6.inp < Makefile.in > Makefile
cd ..
rem   ----------------------------------------------------------------------
Eli Zaretskii's avatar
Eli Zaretskii committed
243 244 245 246 247
Echo Configuring the ELisp manual directory...
cd lispref
sed -f ../msdos/sed6.inp < Makefile.in > Makefile
cd ..
rem   ----------------------------------------------------------------------
248
Echo Configuring the ELisp Introduction manual directory...
249 250 251 252
Rem The two variants for the line below is for when the shell
Rem supports long file names but DJGPP does not
if exist lispintro\Makefile.in cd lispintro
if exist lispintr\Makefile.in cd lispintr
253 254 255
sed -f ../msdos/sed6.inp < Makefile.in > Makefile
cd ..
rem   ----------------------------------------------------------------------
256 257 258 259 260
Echo Configuring the lisp directory...
cd lisp
sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile
cd ..
rem   ----------------------------------------------------------------------
Eli Zaretskii's avatar
Eli Zaretskii committed
261 262 263 264 265 266 267
If not Exist leim\quail\latin-pre.el goto maindir
Echo Configuring the leim directory...
cd leim
sed -f ../msdos/sedleim.inp < Makefile.in > Makefile
cd ..
rem   ----------------------------------------------------------------------
:maindir
Richard M. Stallman's avatar
Richard M. Stallman committed
268
Echo Configuring the main directory...
269 270
If "%DJGPP_VER%" == "1" goto mainv1
Echo Looking for the GDB init file...
271
If Exist src\.gdbinit update src/.gdbinit src/_gdbinit
272 273 274 275 276 277 278 279 280 281 282
If Exist src\_gdbinit goto gdbinitOk
Echo ERROR:
Echo I cannot find the GDB init file.  It was called ".gdbinit" in
Echo the Emacs distribution, but was probably renamed to some other
Echo name without the leading dot when you untarred the archive.
Echo It should be in the "src/" subdirectory.  Please make sure this
Echo file exists and is called "_gdbinit" with a leading underscore.
Echo Then run CONFIG.BAT again with the same arguments you did now.
goto End
:gdbinitOk
Echo Looking for the GDB init file...found
283
copy msdos\mainmake.v2 Makefile >nul
284
:mainv1
285
If "%DJGPP_VER%" == "1" copy msdos\mainmake Makefile >nul
Richard M. Stallman's avatar
Richard M. Stallman committed
286
rem   ----------------------------------------------------------------------
287 288 289 290 291
goto End
:SmallEnv
echo Your environment size is too small.  Please enlarge it and run me again.
echo For example, type "command.com /e:2048" to have 2048 bytes available.
set $foo$=
Richard M. Stallman's avatar
Richard M. Stallman committed
292
:end
293
set X11=
Morten Welinder's avatar
Morten Welinder committed
294
set nodebug=
295
set djgpp_ver=
296 297 298 299

goto skipArchTag
   arch-tag: 2d2fed23-4dc6-4006-a2e4-49daf0031f33
:skipArchTag