Meta-CVS support removed.
[bpt/emacs.git] / config.bat
CommitLineData
3382cd59
RS
1@echo off\r
2rem ----------------------------------------------------------------------\r
3rem Configuration script for MSDOS\r
e91081eb 4rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003\r
57ebf0be 5rem 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.\r
331fdf1e 6\r
3382cd59
RS
7rem This file is part of GNU Emacs.\r
8\r
b33ba812 9rem GNU Emacs is free software: you can redistribute it and/or modify\r
3382cd59 10rem it under the terms of the GNU General Public License as published by\r
b33ba812
GM
11rem the Free Software Foundation, either version 3 of the License, or\r
12rem (at your option) any later version.\r
3382cd59
RS
13\r
14rem GNU Emacs is distributed in the hope that it will be useful,\r
15rem but WITHOUT ANY WARRANTY; without even the implied warranty of\r
16rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
17rem GNU General Public License for more details.\r
18\r
19rem You should have received a copy of the GNU General Public License\r
d95d9b23 20rem along with GNU Emacs. If not, see http://www.gnu.org/licenses/.\r
b33ba812 21\r
3382cd59
RS
22rem ----------------------------------------------------------------------\r
23rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:\r
24rem\r
331fdf1e 25rem + msdos version 3 or better.\r
d9a68b6a 26rem + DJGPP version 1.12maint1 or later (version 2.03 or later recommended).\r
331fdf1e
RS
27rem + make utility that allows breaking of the 128 chars limit on\r
28rem command lines. ndmake (as of version 4.5) won't work due to a\r
d9a68b6a 29rem line length limit. The make that comes with DJGPP does work.\r
f56c5217
RS
30rem + rm and mv (from GNU file utilities).\r
31rem + sed (you can use the port that comes with DJGPP).\r
331fdf1e 32rem\r
d9a68b6a
EZ
33rem You should be able to get all the above utilities from the DJGPP FTP\r
34rem site, ftp.delorie.com, in the directory "pub/djgpp/current/v2gnu".\r
3382cd59 35rem ----------------------------------------------------------------------\r
ddff705b
MW
36set X11=\r
37set nodebug=\r
b696f860 38set djgpp_ver=\r
adc110de
EZ
39if "%1" == "" goto usage\r
40rem ----------------------------------------------------------------------\r
41rem See if their environment is large enough. We need 28 bytes.\r
42set $foo$=789012345678901234567\r
43if not "%$foo$%" == "789012345678901234567" goto SmallEnv\r
44set $foo$=\r
ddff705b
MW
45:again\r
46if "%1" == "" goto usage\r
47if "%1" == "--with-x" goto withx\r
48if "%1" == "--no-debug" goto nodebug\r
3382cd59
RS
49if "%1" == "msdos" goto msdos\r
50:usage\r
ddff705b
MW
51echo Usage: config [--with-x] [--no-debug] msdos\r
52echo [Read the script before you run it.]\r
3382cd59
RS
53goto end\r
54rem ----------------------------------------------------------------------\r
ddff705b
MW
55:withx\r
56set X11=Y\r
57shift\r
58goto again\r
331fdf1e 59rem ----------------------------------------------------------------------\r
ddff705b
MW
60:nodebug\r
61set nodebug=Y\r
62shift\r
63goto again\r
3382cd59 64rem ----------------------------------------------------------------------\r
ddff705b 65:msdos\r
2f3e7987
RS
66Echo Checking whether 'sed' is available...\r
67sed -e "w junk.$$$" <Nul\r
ddff705b 68If Exist junk.$$$ Goto sedOk\r
2f3e7987 69Echo To configure 'Emacs' you need to have 'sed'!\r
ddff705b
MW
70Goto End\r
71:sedOk\r
2f3e7987 72Echo Checking whether 'rm' is available...\r
ddff705b
MW
73rm -f junk.$$$\r
74If Not Exist junk.$$$ Goto rmOk\r
2f3e7987 75Echo To configure 'Emacs' you need to have 'rm'!\r
ddff705b
MW
76Goto End\r
77:rmOk\r
2f3e7987 78Echo Checking whether 'mv' is available...\r
ddff705b
MW
79rm -f junk.1 junk.2\r
80echo foo >junk.1\r
9663837a 81mv junk.1 ./junk.2\r
ddff705b 82If Exist junk.2 Goto mvOk\r
2f3e7987 83Echo To configure 'Emacs' you need to have 'mv'!\r
ddff705b
MW
84rm -f junk.1\r
85Goto End\r
86:mvOk\r
87rm -f junk.2\r
2f3e7987 88Echo Checking whether 'gcc' is available...\r
ddff705b
MW
89echo main(){} >junk.c\r
90gcc -c junk.c\r
91if exist junk.o goto gccOk\r
2f3e7987 92Echo To configure 'Emacs' you need to have 'gcc'!\r
ddff705b
MW
93rm -f junk.c\r
94Goto End\r
95:gccOk\r
8cdaacaf 96rm -f junk.c junk.o junk junk.exe\r
f56c5217
RS
97Echo Checking what version of DJGPP is installed...\r
98If Not "%DJGPP%" == "" goto djgppOk\r
99Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!\r
100Goto End\r
101:djgppOk\r
102echo int main() >junk.c\r
103echo #ifdef __DJGPP__ >>junk.c\r
104echo {return (__DJGPP__)*10;} >>junk.c\r
105echo #else >>junk.c\r
106echo #ifdef __GO32__ >>junk.c\r
107echo {return 10;} >>junk.c\r
108echo #else >>junk.c\r
109echo {return 0;} >>junk.c\r
110echo #endif >>junk.c\r
111echo #endif >>junk.c\r
8cdaacaf
RS
112gcc -o junk junk.c\r
113if not exist junk.exe coff2exe junk\r
f56c5217
RS
114junk\r
115If ErrorLevel 10 Goto go32Ok\r
116rm -f junk.c junk junk.exe\r
117Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!\r
118Goto End\r
119:go32Ok\r
b696f860
RS
120set djgpp_ver=1\r
121If ErrorLevel 20 set djgpp_ver=2\r
f56c5217 122rm -f junk.c junk junk.exe\r
5ae143b2
EZ
123rem The v1.x build does not need djecho\r
124if "%DJGPP_VER%" == "1" Goto djechoOk\r
125rem DJECHO is used by the top-level Makefile in the v2.x build\r
92a0f4b1
EZ
126Echo Checking whether 'djecho' is available...\r
127redir -o Nul -eo djecho -o junk.$$$ foo\r
128If Exist junk.$$$ Goto djechoOk\r
129Echo To build 'Emacs' you need the 'djecho.exe' program!\r
130Echo 'djecho.exe' is part of 'djdevNNN.zip' basic DJGPP development kit.\r
131Echo Versions of DJGPP before 2.02 called this program 'echo.exe'.\r
132Echo Either unpack 'djecho.exe' from the 'djdevNNN.zip' archive,\r
133Echo or, if you have 'echo.exe', copy it to 'djecho.exe'.\r
134Echo Then run CONFIG.BAT again with the same arguments you did now.\r
135Goto End\r
136:djechoOk\r
137rm -f junk.$$$\r
b696f860 138Echo Configuring for DJGPP Version %DJGPP_VER% ...\r
ddff705b 139Rem ----------------------------------------------------------------------\r
3382cd59
RS
140Echo Configuring the source directory...\r
141cd src\r
3382cd59 142\r
05175c54
EZ
143rem Create "epaths.h"\r
144sed -f ../msdos/sed4.inp <epaths.in >epaths.tmp\r
145update epaths.tmp epaths.h >nul\r
146rm -f epaths.tmp\r
3382cd59
RS
147\r
148rem Create "config.h"\r
ddff705b 149rm -f config.h2 config.tmp\r
45cdceb9 150sed -e '' config.in > config.tmp\r
331fdf1e 151if "%X11%" == "" goto src4\r
2f3e7987 152sed -f ../msdos/sed2x.inp <config.in >config.tmp\r
331fdf1e 153:src4\r
90c4121e 154if "%DJGPP_VER%" == "2" Goto src41\r
ddff705b 155sed -f ../msdos/sed2.inp <config.tmp >config.h2\r
90c4121e
EZ
156goto src42\r
157:src41\r
158sed -f ../msdos/sed2v2.inp <config.tmp >config.h2\r
159:src42\r
a30fb04f
EZ
160Rem See if DECL_ALIGN can be supported with this GCC\r
161rm -f junk.c junk.o junk junk.exe\r
162echo struct { int i; char *p; } __attribute__((__aligned__(8))) foo; >junk.c\r
e8237370
EZ
163rem Two percent signs because it is a special character for COMMAND.COM/CMD\r
164rem Filter thru Sed because "&" is special for CMD.EXE\r
165echo int main(void) { return (unsigned long)"&"foo %% 8; } | sed "s/.&./\&/" >>junk.c\r
a30fb04f
EZ
166gcc -o junk junk.c\r
167if not exist junk.exe coff2exe junk\r
168junk\r
169If Not ErrorLevel 1 Goto alignOk\r
170Echo WARNING: Your GCC does not support 8-byte aligned variables.\r
171Echo WARNING: Therefore Emacs cannot support buffers larger than 128MB.\r
172rem The following line disables DECL_ALIGN which in turn disables USE_LSB_TAG\r
173rem For details see lisp.h where it defines USE_LSB_TAG\r
60c49bc1 174echo #define NO_DECL_ALIGN >>config.h2\r
a30fb04f
EZ
175:alignOk\r
176rm -f junk.c junk junk.exe\r
ddff705b
MW
177update config.h2 config.h >nul\r
178rm -f config.tmp config.h2\r
3382cd59
RS
179\r
180rem On my system dir.h gets in the way. It's a VMS file so who cares.\r
181if exist dir.h ren dir.h vmsdir.h\r
182\r
2f3e7987 183rem Create "makefile" from "makefile.in".\r
07402863 184rm -f Makefile junk.c\r
373ea6d5 185sed -e "1,/== start of cpp stuff ==/s@^# .*$@@" <Makefile.in >junk.c\r
b696f860 186If "%DJGPP_VER%" == "1" Goto mfV1\r
c212c118 187gcc -E -traditional junk.c | sed -f ../msdos/sed1v2.inp >Makefile\r
f56c5217
RS
188goto mfDone\r
189:mfV1\r
c212c118 190gcc -E -traditional junk.c | sed -f ../msdos/sed1.inp >Makefile\r
f56c5217 191:mfDone\r
dd0d2cf3 192rm -f junk.c\r
2f3e7987 193\r
ddff705b 194if "%X11%" == "" goto src5\r
07402863
EZ
195mv Makefile makefile.tmp\r
196sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile\r
ddff705b
MW
197rm -f makefile.tmp\r
198:src5\r
199\r
200if "%nodebug%" == "" goto src6\r
2e4a0140 201sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
07402863 202sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile\r
f56c5217 203rm -f makefile.tmp\r
ddff705b 204:src6\r
3382cd59
RS
205cd ..\r
206rem ----------------------------------------------------------------------\r
207Echo Configuring the library source directory...\r
208cd lib-src\r
209rem Create "makefile" from "makefile.in".\r
d14a46f7 210sed -e "1,/== start of cpp stuff ==/s@^#[ ].*$@@" <Makefile.in >junk.c\r
c212c118 211gcc -E -traditional -I. -I../src junk.c | sed -e "s/^ / /" -e "/^#/d" -e "/^[ \f]*$/d" >makefile.new\r
b696f860 212If "%DJGPP_VER%" == "2" goto libsrc-v2\r
07402863 213sed -f ../msdos/sed3.inp <makefile.new >Makefile\r
f56c5217
RS
214Goto libsrc2\r
215:libsrc-v2\r
07402863 216sed -f ../msdos/sed3v2.inp <makefile.new >Makefile\r
f56c5217 217:libsrc2\r
ddff705b 218rm -f makefile.new junk.c\r
f56c5217 219if "%nodebug%" == "" goto libsrc3\r
2e4a0140 220sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
07402863 221sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile\r
f56c5217
RS
222rm -f makefile.tmp\r
223:libsrc3\r
ddff705b
MW
224cd ..\r
225rem ----------------------------------------------------------------------\r
226if "%X11%" == "" goto oldx1\r
227Echo Configuring the oldxmenu directory...\r
228cd oldxmenu\r
07402863 229sed -f ../msdos/sed5x.inp <Makefile.in >Makefile\r
ddff705b 230if "%nodebug%" == "" goto oldx2\r
2e4a0140 231sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
07402863 232mv -f makefile.tmp Makefile\r
ddff705b 233:oldx2\r
3382cd59 234cd ..\r
ddff705b 235:oldx1\r
3382cd59 236rem ----------------------------------------------------------------------\r
799303b6
EZ
237Echo Configuring the doc directory...\r
238cd doc\r
239Rem The two variants for lispintro below is for when the shell\r
86bbfe77 240Rem supports long file names but DJGPP does not\r
799303b6 241for %%d in (emacs lispref lispintro lispintr misc) do sed -f ../msdos/sed6.inp < %%d\Makefile.in > %%d\Makefile\r
7336d09b
EZ
242cd ..\r
243rem ----------------------------------------------------------------------\r
efb81423
EZ
244Echo Configuring the lisp directory...\r
245cd lisp\r
246sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile\r
247cd ..\r
248rem ----------------------------------------------------------------------\r
b2451b86
EZ
249If not Exist leim\quail\latin-pre.el goto maindir\r
250Echo Configuring the leim directory...\r
251cd leim\r
252sed -f ../msdos/sedleim.inp < Makefile.in > Makefile\r
253cd ..\r
254rem ----------------------------------------------------------------------\r
255:maindir\r
3382cd59 256Echo Configuring the main directory...\r
809e1789
RS
257If "%DJGPP_VER%" == "1" goto mainv1\r
258Echo Looking for the GDB init file...\r
dd0e1e54 259If Exist src\.gdbinit update src/.gdbinit src/_gdbinit\r
809e1789
RS
260If Exist src\_gdbinit goto gdbinitOk\r
261Echo ERROR:\r
262Echo I cannot find the GDB init file. It was called ".gdbinit" in\r
263Echo the Emacs distribution, but was probably renamed to some other\r
264Echo name without the leading dot when you untarred the archive.\r
265Echo It should be in the "src/" subdirectory. Please make sure this\r
266Echo file exists and is called "_gdbinit" with a leading underscore.\r
267Echo Then run CONFIG.BAT again with the same arguments you did now.\r
268goto End\r
269:gdbinitOk\r
270Echo Looking for the GDB init file...found\r
07402863 271copy msdos\mainmake.v2 Makefile >nul\r
809e1789 272:mainv1\r
07402863 273If "%DJGPP_VER%" == "1" copy msdos\mainmake Makefile >nul\r
3382cd59 274rem ----------------------------------------------------------------------\r
adc110de
EZ
275goto End\r
276:SmallEnv\r
277echo Your environment size is too small. Please enlarge it and run me again.\r
278echo For example, type "command.com /e:2048" to have 2048 bytes available.\r
279set $foo$=\r
3382cd59 280:end\r
331fdf1e 281set X11=\r
ddff705b 282set nodebug=\r
b696f860 283set djgpp_ver=\r
d14a46f7
EZ
284\r
285goto skipArchTag\r
286 arch-tag: 2d2fed23-4dc6-4006-a2e4-49daf0031f33\r
287:skipArchTag\r