Small url-cache fix.
[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
114f9c96 5rem 2004, 2005, 2006, 2007, 2008, 2009, 2010 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
78248b76 26rem + DJGPP version 2.0 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
b5a09903
EZ
29rem line length limit. The make that comes with DJGPP does work (and is\r
30rem recommended).\r
31rem + rm, mv, and cp (from GNU file utilities).\r
f56c5217 32rem + sed (you can use the port that comes with DJGPP).\r
331fdf1e 33rem\r
d9a68b6a
EZ
34rem You should be able to get all the above utilities from the DJGPP FTP\r
35rem site, ftp.delorie.com, in the directory "pub/djgpp/current/v2gnu".\r
3382cd59 36rem ----------------------------------------------------------------------\r
ddff705b
MW
37set X11=\r
38set nodebug=\r
b696f860 39set djgpp_ver=\r
b5a09903 40set sys_malloc=\r
1ff11b21 41set libxml=\r
adc110de
EZ
42if "%1" == "" goto usage\r
43rem ----------------------------------------------------------------------\r
44rem See if their environment is large enough. We need 28 bytes.\r
45set $foo$=789012345678901234567\r
46if not "%$foo$%" == "789012345678901234567" goto SmallEnv\r
47set $foo$=\r
ddff705b
MW
48:again\r
49if "%1" == "" goto usage\r
50if "%1" == "--with-x" goto withx\r
51if "%1" == "--no-debug" goto nodebug\r
3382cd59 52if "%1" == "msdos" goto msdos\r
b5a09903 53if "%1" == "--with-system-malloc" goto sysmalloc\r
3382cd59 54:usage\r
b5a09903 55echo Usage: config [--no-debug] [--with-system-malloc] [--with-x] msdos\r
ddff705b 56echo [Read the script before you run it.]\r
3382cd59
RS
57goto end\r
58rem ----------------------------------------------------------------------\r
ddff705b
MW
59:withx\r
60set X11=Y\r
61shift\r
62goto again\r
331fdf1e 63rem ----------------------------------------------------------------------\r
ddff705b
MW
64:nodebug\r
65set nodebug=Y\r
66shift\r
67goto again\r
3382cd59 68rem ----------------------------------------------------------------------\r
b5a09903
EZ
69:sysmalloc\r
70set sys_malloc=Y\r
71shift\r
72goto again\r
73rem ----------------------------------------------------------------------\r
ddff705b 74:msdos\r
2f3e7987
RS
75Echo Checking whether 'sed' is available...\r
76sed -e "w junk.$$$" <Nul\r
ddff705b 77If Exist junk.$$$ Goto sedOk\r
2f3e7987 78Echo To configure 'Emacs' you need to have 'sed'!\r
ddff705b
MW
79Goto End\r
80:sedOk\r
2f3e7987 81Echo Checking whether 'rm' is available...\r
ddff705b
MW
82rm -f junk.$$$\r
83If Not Exist junk.$$$ Goto rmOk\r
2f3e7987 84Echo To configure 'Emacs' you need to have 'rm'!\r
ddff705b
MW
85Goto End\r
86:rmOk\r
2f3e7987 87Echo Checking whether 'mv' is available...\r
ddff705b
MW
88rm -f junk.1 junk.2\r
89echo foo >junk.1\r
9663837a 90mv junk.1 ./junk.2\r
ddff705b 91If Exist junk.2 Goto mvOk\r
2f3e7987 92Echo To configure 'Emacs' you need to have 'mv'!\r
ddff705b
MW
93rm -f junk.1\r
94Goto End\r
95:mvOk\r
96rm -f junk.2\r
2f3e7987 97Echo Checking whether 'gcc' is available...\r
ddff705b
MW
98echo main(){} >junk.c\r
99gcc -c junk.c\r
100if exist junk.o goto gccOk\r
2f3e7987 101Echo To configure 'Emacs' you need to have 'gcc'!\r
ddff705b
MW
102rm -f junk.c\r
103Goto End\r
104:gccOk\r
8cdaacaf 105rm -f junk.c junk.o junk junk.exe\r
f56c5217
RS
106Echo Checking what version of DJGPP is installed...\r
107If Not "%DJGPP%" == "" goto djgppOk\r
108Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!\r
109Goto End\r
110:djgppOk\r
111echo int main() >junk.c\r
112echo #ifdef __DJGPP__ >>junk.c\r
113echo {return (__DJGPP__)*10;} >>junk.c\r
114echo #else >>junk.c\r
115echo #ifdef __GO32__ >>junk.c\r
116echo {return 10;} >>junk.c\r
117echo #else >>junk.c\r
118echo {return 0;} >>junk.c\r
119echo #endif >>junk.c\r
120echo #endif >>junk.c\r
8cdaacaf
RS
121gcc -o junk junk.c\r
122if not exist junk.exe coff2exe junk\r
f56c5217
RS
123junk\r
124If ErrorLevel 10 Goto go32Ok\r
125rm -f junk.c junk junk.exe\r
126Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!\r
127Goto End\r
128:go32Ok\r
78248b76
EZ
129set djgpp_ver=2\r
130If Not ErrorLevel 20 Echo To build 'Emacs' you need DJGPP v2.0 or later!\r
131If Not ErrorLevel 20 Goto End\r
f56c5217 132rm -f junk.c junk junk.exe\r
5ae143b2 133rem DJECHO is used by the top-level Makefile in the v2.x build\r
92a0f4b1
EZ
134Echo Checking whether 'djecho' is available...\r
135redir -o Nul -eo djecho -o junk.$$$ foo\r
136If Exist junk.$$$ Goto djechoOk\r
137Echo To build 'Emacs' you need the 'djecho.exe' program!\r
138Echo 'djecho.exe' is part of 'djdevNNN.zip' basic DJGPP development kit.\r
139Echo Versions of DJGPP before 2.02 called this program 'echo.exe'.\r
140Echo Either unpack 'djecho.exe' from the 'djdevNNN.zip' archive,\r
141Echo or, if you have 'echo.exe', copy it to 'djecho.exe'.\r
142Echo Then run CONFIG.BAT again with the same arguments you did now.\r
143Goto End\r
144:djechoOk\r
145rm -f junk.$$$\r
b696f860 146Echo Configuring for DJGPP Version %DJGPP_VER% ...\r
ddff705b 147Rem ----------------------------------------------------------------------\r
3382cd59
RS
148Echo Configuring the source directory...\r
149cd src\r
3382cd59 150\r
05175c54
EZ
151rem Create "epaths.h"\r
152sed -f ../msdos/sed4.inp <epaths.in >epaths.tmp\r
153update epaths.tmp epaths.h >nul\r
154rm -f epaths.tmp\r
3382cd59
RS
155\r
156rem Create "config.h"\r
ddff705b 157rm -f config.h2 config.tmp\r
45cdceb9 158sed -e '' config.in > config.tmp\r
331fdf1e 159if "%X11%" == "" goto src4\r
2f3e7987 160sed -f ../msdos/sed2x.inp <config.in >config.tmp\r
331fdf1e 161:src4\r
90c4121e 162sed -f ../msdos/sed2v2.inp <config.tmp >config.h2\r
a30fb04f
EZ
163Rem See if DECL_ALIGN can be supported with this GCC\r
164rm -f junk.c junk.o junk junk.exe\r
165echo struct { int i; char *p; } __attribute__((__aligned__(8))) foo; >junk.c\r
e8237370
EZ
166rem Two percent signs because it is a special character for COMMAND.COM/CMD\r
167rem Filter thru Sed because "&" is special for CMD.EXE\r
168echo int main(void) { return (unsigned long)"&"foo %% 8; } | sed "s/.&./\&/" >>junk.c\r
a30fb04f
EZ
169gcc -o junk junk.c\r
170if not exist junk.exe coff2exe junk\r
171junk\r
172If Not ErrorLevel 1 Goto alignOk\r
173Echo WARNING: Your GCC does not support 8-byte aligned variables.\r
174Echo WARNING: Therefore Emacs cannot support buffers larger than 128MB.\r
175rem The following line disables DECL_ALIGN which in turn disables USE_LSB_TAG\r
176rem For details see lisp.h where it defines USE_LSB_TAG\r
60c49bc1 177echo #define NO_DECL_ALIGN >>config.h2\r
a30fb04f 178:alignOk\r
1ff11b21
EZ
179Rem See if they have libxml2 later than v2.2.0 installed\r
180Echo Checking whether libxml2 v2.2.1 or later is installed ...\r
181rm -f junk.c junk.o junk junk.exe\r
182rem Use djecho here because we need to quote brackets\r
183djecho "#include <libxml/xmlversion.h>" >junk.c\r
184djecho "int main()" >>junk.c\r
185djecho "{return (LIBXML_VERSION > 20200 ? 0 : 1);}" >>junk.c\r
186redir -o Nul -eo gcc -I/dev/env/DJDIR/include/libxml2 -o junk junk.c\r
187if not exist junk Goto xmlDone\r
188if not exist junk.exe coff2exe junk\r
189junk\r
190If ErrorLevel 1 Goto xmlDone\r
191Echo Configuring with libxml2 ...\r
192sed -e "/#undef HAVE_LIBXML2/s/^.*$/#define HAVE_LIBXML2 1/" <config.h2 >config.h3\r
193mv config.h3 config.h2\r
194set libxml=1\r
195:xmlDone\r
196rm -f junk.c junk junk.exe\r
b5a09903
EZ
197Rem See if they requested a SYSTEM_MALLOC build\r
198if "%sys_malloc%" == "" Goto cfgDone\r
199rm -f config.tmp\r
200ren config.h2 config.tmp\r
201sed -f ../msdos/sedalloc.inp <config.tmp >config.h2\r
202\r
203:cfgDone\r
a30fb04f 204rm -f junk.c junk junk.exe\r
ddff705b
MW
205update config.h2 config.h >nul\r
206rm -f config.tmp config.h2\r
3382cd59
RS
207\r
208rem On my system dir.h gets in the way. It's a VMS file so who cares.\r
209if exist dir.h ren dir.h vmsdir.h\r
210\r
2f3e7987 211rem Create "makefile" from "makefile.in".\r
81ac4f35 212rm -f Makefile makefile.tmp\r
394f2386 213copy Makefile.in+deps.mk makefile.tmp\r
81ac4f35
GM
214sed -f ../msdos/sed1v2.inp <makefile.tmp >Makefile\r
215rm -f makefile.tmp\r
2f3e7987 216\r
ddff705b 217if "%X11%" == "" goto src5\r
07402863
EZ
218mv Makefile makefile.tmp\r
219sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile\r
ddff705b
MW
220rm -f makefile.tmp\r
221:src5\r
222\r
be4ff9da
GM
223if "%sys_malloc%" == "" goto src5a\r
224sed -e "/^GMALLOC_OBJ *=/s/gmalloc.o//" <Makefile >makefile.tmp\r
40dc6bf4
GM
225sed -e "/^VMLIMIT_OBJ *=/s/vm-limit.o//" <makefile.tmp >makefile.tmp2\r
226sed -e "/^RALLOC_OBJ *=/s/ralloc.o//" <makefile.tmp2 >Makefile\r
227rm -f makefile.tmp makefile.tmp2\r
be4ff9da
GM
228:src5a\r
229\r
ddff705b 230if "%nodebug%" == "" goto src6\r
2e4a0140 231sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
07402863 232sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile\r
f56c5217 233rm -f makefile.tmp\r
ddff705b 234:src6\r
1ff11b21
EZ
235\r
236if "%libxml%" == "" goto src7\r
237sed -e "/^LIBXML2_LIBS *=/s/=/= -lxml2 -lz -liconv/" <Makefile >makefile.tmp\r
238sed -e "/^LIBXML2_CFLAGS *=/s|=|= -I/dev/env/DJDIR/include/libxml2|" <makefile.tmp >Makefile\r
239rm -f makefile.tmp\r
240:src7\r
3382cd59
RS
241cd ..\r
242rem ----------------------------------------------------------------------\r
243Echo Configuring the library source directory...\r
244cd lib-src\r
d3b23034 245sed -f ../msdos/sed3v2.inp <Makefile.in >Makefile\r
acddf8ae
GM
246if "%X11%" == "" goto libsrc2a\r
247mv Makefile makefile.tmp\r
248sed -f ../msdos/sed3x.inp <makefile.tmp >Makefile\r
249rm -f makefile.tmp\r
250:libsrc2a\r
f56c5217 251if "%nodebug%" == "" goto libsrc3\r
2e4a0140 252sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
07402863 253sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile\r
f56c5217
RS
254rm -f makefile.tmp\r
255:libsrc3\r
ddff705b
MW
256cd ..\r
257rem ----------------------------------------------------------------------\r
258if "%X11%" == "" goto oldx1\r
259Echo Configuring the oldxmenu directory...\r
260cd oldxmenu\r
07402863 261sed -f ../msdos/sed5x.inp <Makefile.in >Makefile\r
ddff705b 262if "%nodebug%" == "" goto oldx2\r
2e4a0140 263sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
07402863 264mv -f makefile.tmp Makefile\r
ddff705b 265:oldx2\r
3382cd59 266cd ..\r
ddff705b 267:oldx1\r
3382cd59 268rem ----------------------------------------------------------------------\r
b5ba7271 269Echo Configuring the doc directory, expect one "File not found" message...\r
799303b6
EZ
270cd doc\r
271Rem The two variants for lispintro below is for when the shell\r
86bbfe77 272Rem supports long file names but DJGPP does not\r
799303b6 273for %%d in (emacs lispref lispintro lispintr misc) do sed -f ../msdos/sed6.inp < %%d\Makefile.in > %%d\Makefile\r
7336d09b
EZ
274cd ..\r
275rem ----------------------------------------------------------------------\r
efb81423
EZ
276Echo Configuring the lisp directory...\r
277cd lisp\r
dd0c613c 278If Exist gnus\.dir-locals.el update gnus/.dir-locals.el gnus/_dir-locals.el\r
efb81423
EZ
279sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile\r
280cd ..\r
281rem ----------------------------------------------------------------------\r
b2451b86
EZ
282If not Exist leim\quail\latin-pre.el goto maindir\r
283Echo Configuring the leim directory...\r
284cd leim\r
285sed -f ../msdos/sedleim.inp < Makefile.in > Makefile\r
286cd ..\r
287rem ----------------------------------------------------------------------\r
288:maindir\r
3382cd59 289Echo Configuring the main directory...\r
745ebc13 290If Exist .dir-locals.el update .dir-locals.el _dir-locals.el\r
1685daf2 291If Exist src\.dbxinit update src/.dbxinit src/_dbxinit\r
809e1789 292Echo Looking for the GDB init file...\r
dd0e1e54 293If Exist src\.gdbinit update src/.gdbinit src/_gdbinit\r
809e1789
RS
294If Exist src\_gdbinit goto gdbinitOk\r
295Echo ERROR:\r
296Echo I cannot find the GDB init file. It was called ".gdbinit" in\r
297Echo the Emacs distribution, but was probably renamed to some other\r
298Echo name without the leading dot when you untarred the archive.\r
299Echo It should be in the "src/" subdirectory. Please make sure this\r
300Echo file exists and is called "_gdbinit" with a leading underscore.\r
301Echo Then run CONFIG.BAT again with the same arguments you did now.\r
302goto End\r
303:gdbinitOk\r
304Echo Looking for the GDB init file...found\r
07402863 305copy msdos\mainmake.v2 Makefile >nul\r
3382cd59 306rem ----------------------------------------------------------------------\r
adc110de
EZ
307goto End\r
308:SmallEnv\r
309echo Your environment size is too small. Please enlarge it and run me again.\r
310echo For example, type "command.com /e:2048" to have 2048 bytes available.\r
311set $foo$=\r
3382cd59 312:end\r
331fdf1e 313set X11=\r
ddff705b 314set nodebug=\r
b696f860 315set djgpp_ver=\r
b5a09903 316set sys_malloc=\r
1ff11b21 317set libxml=\r
d14a46f7
EZ
318\r
319goto skipArchTag\r
320 arch-tag: 2d2fed23-4dc6-4006-a2e4-49daf0031f33\r
321:skipArchTag\r