(Fxw_color_values): Return 3-element list. Doc 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
dfe07b9d 5rem 2004, 2005, 2006, 2007, 2008, 2009 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
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
adc110de
EZ
41if "%1" == "" goto usage\r
42rem ----------------------------------------------------------------------\r
43rem See if their environment is large enough. We need 28 bytes.\r
44set $foo$=789012345678901234567\r
45if not "%$foo$%" == "789012345678901234567" goto SmallEnv\r
46set $foo$=\r
ddff705b
MW
47:again\r
48if "%1" == "" goto usage\r
49if "%1" == "--with-x" goto withx\r
50if "%1" == "--no-debug" goto nodebug\r
3382cd59 51if "%1" == "msdos" goto msdos\r
b5a09903 52if "%1" == "--with-system-malloc" goto sysmalloc\r
3382cd59 53:usage\r
b5a09903 54echo Usage: config [--no-debug] [--with-system-malloc] [--with-x] msdos\r
ddff705b 55echo [Read the script before you run it.]\r
3382cd59
RS
56goto end\r
57rem ----------------------------------------------------------------------\r
ddff705b
MW
58:withx\r
59set X11=Y\r
60shift\r
61goto again\r
331fdf1e 62rem ----------------------------------------------------------------------\r
ddff705b
MW
63:nodebug\r
64set nodebug=Y\r
65shift\r
66goto again\r
3382cd59 67rem ----------------------------------------------------------------------\r
b5a09903
EZ
68:sysmalloc\r
69set sys_malloc=Y\r
70shift\r
71goto again\r
72rem ----------------------------------------------------------------------\r
ddff705b 73:msdos\r
2f3e7987
RS
74Echo Checking whether 'sed' is available...\r
75sed -e "w junk.$$$" <Nul\r
ddff705b 76If Exist junk.$$$ Goto sedOk\r
2f3e7987 77Echo To configure 'Emacs' you need to have 'sed'!\r
ddff705b
MW
78Goto End\r
79:sedOk\r
2f3e7987 80Echo Checking whether 'rm' is available...\r
ddff705b
MW
81rm -f junk.$$$\r
82If Not Exist junk.$$$ Goto rmOk\r
2f3e7987 83Echo To configure 'Emacs' you need to have 'rm'!\r
ddff705b
MW
84Goto End\r
85:rmOk\r
2f3e7987 86Echo Checking whether 'mv' is available...\r
ddff705b
MW
87rm -f junk.1 junk.2\r
88echo foo >junk.1\r
9663837a 89mv junk.1 ./junk.2\r
ddff705b 90If Exist junk.2 Goto mvOk\r
2f3e7987 91Echo To configure 'Emacs' you need to have 'mv'!\r
ddff705b
MW
92rm -f junk.1\r
93Goto End\r
94:mvOk\r
95rm -f junk.2\r
2f3e7987 96Echo Checking whether 'gcc' is available...\r
ddff705b
MW
97echo main(){} >junk.c\r
98gcc -c junk.c\r
99if exist junk.o goto gccOk\r
2f3e7987 100Echo To configure 'Emacs' you need to have 'gcc'!\r
ddff705b
MW
101rm -f junk.c\r
102Goto End\r
103:gccOk\r
8cdaacaf 104rm -f junk.c junk.o junk junk.exe\r
f56c5217
RS
105Echo Checking what version of DJGPP is installed...\r
106If Not "%DJGPP%" == "" goto djgppOk\r
107Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!\r
108Goto End\r
109:djgppOk\r
110echo int main() >junk.c\r
111echo #ifdef __DJGPP__ >>junk.c\r
112echo {return (__DJGPP__)*10;} >>junk.c\r
113echo #else >>junk.c\r
114echo #ifdef __GO32__ >>junk.c\r
115echo {return 10;} >>junk.c\r
116echo #else >>junk.c\r
117echo {return 0;} >>junk.c\r
118echo #endif >>junk.c\r
119echo #endif >>junk.c\r
8cdaacaf
RS
120gcc -o junk junk.c\r
121if not exist junk.exe coff2exe junk\r
f56c5217
RS
122junk\r
123If ErrorLevel 10 Goto go32Ok\r
124rm -f junk.c junk junk.exe\r
125Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!\r
126Goto End\r
127:go32Ok\r
b696f860
RS
128set djgpp_ver=1\r
129If ErrorLevel 20 set djgpp_ver=2\r
f56c5217 130rm -f junk.c junk junk.exe\r
5ae143b2
EZ
131rem The v1.x build does not need djecho\r
132if "%DJGPP_VER%" == "1" Goto djechoOk\r
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 162if "%DJGPP_VER%" == "2" Goto src41\r
ddff705b 163sed -f ../msdos/sed2.inp <config.tmp >config.h2\r
90c4121e
EZ
164goto src42\r
165:src41\r
166sed -f ../msdos/sed2v2.inp <config.tmp >config.h2\r
167:src42\r
a30fb04f
EZ
168Rem See if DECL_ALIGN can be supported with this GCC\r
169rm -f junk.c junk.o junk junk.exe\r
170echo struct { int i; char *p; } __attribute__((__aligned__(8))) foo; >junk.c\r
e8237370
EZ
171rem Two percent signs because it is a special character for COMMAND.COM/CMD\r
172rem Filter thru Sed because "&" is special for CMD.EXE\r
173echo int main(void) { return (unsigned long)"&"foo %% 8; } | sed "s/.&./\&/" >>junk.c\r
a30fb04f
EZ
174gcc -o junk junk.c\r
175if not exist junk.exe coff2exe junk\r
176junk\r
177If Not ErrorLevel 1 Goto alignOk\r
178Echo WARNING: Your GCC does not support 8-byte aligned variables.\r
179Echo WARNING: Therefore Emacs cannot support buffers larger than 128MB.\r
180rem The following line disables DECL_ALIGN which in turn disables USE_LSB_TAG\r
181rem For details see lisp.h where it defines USE_LSB_TAG\r
60c49bc1 182echo #define NO_DECL_ALIGN >>config.h2\r
a30fb04f 183:alignOk\r
b5a09903
EZ
184Rem See if they requested a SYSTEM_MALLOC build\r
185if "%sys_malloc%" == "" Goto cfgDone\r
186rm -f config.tmp\r
187ren config.h2 config.tmp\r
188sed -f ../msdos/sedalloc.inp <config.tmp >config.h2\r
189\r
190:cfgDone\r
a30fb04f 191rm -f junk.c junk junk.exe\r
ddff705b
MW
192update config.h2 config.h >nul\r
193rm -f config.tmp config.h2\r
3382cd59
RS
194\r
195rem On my system dir.h gets in the way. It's a VMS file so who cares.\r
196if exist dir.h ren dir.h vmsdir.h\r
197\r
2f3e7987 198rem Create "makefile" from "makefile.in".\r
07402863 199rm -f Makefile junk.c\r
373ea6d5 200sed -e "1,/== start of cpp stuff ==/s@^# .*$@@" <Makefile.in >junk.c\r
b696f860 201If "%DJGPP_VER%" == "1" Goto mfV1\r
c212c118 202gcc -E -traditional junk.c | sed -f ../msdos/sed1v2.inp >Makefile\r
f56c5217
RS
203goto mfDone\r
204:mfV1\r
c212c118 205gcc -E -traditional junk.c | sed -f ../msdos/sed1.inp >Makefile\r
f56c5217 206:mfDone\r
dd0d2cf3 207rm -f junk.c\r
2f3e7987 208\r
ddff705b 209if "%X11%" == "" goto src5\r
07402863
EZ
210mv Makefile makefile.tmp\r
211sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile\r
ddff705b
MW
212rm -f makefile.tmp\r
213:src5\r
214\r
215if "%nodebug%" == "" goto src6\r
2e4a0140 216sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
07402863 217sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile\r
f56c5217 218rm -f makefile.tmp\r
ddff705b 219:src6\r
3382cd59
RS
220cd ..\r
221rem ----------------------------------------------------------------------\r
222Echo Configuring the library source directory...\r
223cd lib-src\r
224rem Create "makefile" from "makefile.in".\r
d14a46f7 225sed -e "1,/== start of cpp stuff ==/s@^#[ ].*$@@" <Makefile.in >junk.c\r
c212c118 226gcc -E -traditional -I. -I../src junk.c | sed -e "s/^ / /" -e "/^#/d" -e "/^[ \f]*$/d" >makefile.new\r
b696f860 227If "%DJGPP_VER%" == "2" goto libsrc-v2\r
07402863 228sed -f ../msdos/sed3.inp <makefile.new >Makefile\r
f56c5217
RS
229Goto libsrc2\r
230:libsrc-v2\r
07402863 231sed -f ../msdos/sed3v2.inp <makefile.new >Makefile\r
f56c5217 232:libsrc2\r
ddff705b 233rm -f makefile.new junk.c\r
f56c5217 234if "%nodebug%" == "" goto libsrc3\r
2e4a0140 235sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
07402863 236sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile\r
f56c5217
RS
237rm -f makefile.tmp\r
238:libsrc3\r
ddff705b
MW
239cd ..\r
240rem ----------------------------------------------------------------------\r
241if "%X11%" == "" goto oldx1\r
242Echo Configuring the oldxmenu directory...\r
243cd oldxmenu\r
07402863 244sed -f ../msdos/sed5x.inp <Makefile.in >Makefile\r
ddff705b 245if "%nodebug%" == "" goto oldx2\r
2e4a0140 246sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
07402863 247mv -f makefile.tmp Makefile\r
ddff705b 248:oldx2\r
3382cd59 249cd ..\r
ddff705b 250:oldx1\r
3382cd59 251rem ----------------------------------------------------------------------\r
b5ba7271 252Echo Configuring the doc directory, expect one "File not found" message...\r
799303b6
EZ
253cd doc\r
254Rem The two variants for lispintro below is for when the shell\r
86bbfe77 255Rem supports long file names but DJGPP does not\r
799303b6 256for %%d in (emacs lispref lispintro lispintr misc) do sed -f ../msdos/sed6.inp < %%d\Makefile.in > %%d\Makefile\r
7336d09b
EZ
257cd ..\r
258rem ----------------------------------------------------------------------\r
efb81423
EZ
259Echo Configuring the lisp directory...\r
260cd lisp\r
261sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile\r
262cd ..\r
263rem ----------------------------------------------------------------------\r
b2451b86
EZ
264If not Exist leim\quail\latin-pre.el goto maindir\r
265Echo Configuring the leim directory...\r
266cd leim\r
267sed -f ../msdos/sedleim.inp < Makefile.in > Makefile\r
268cd ..\r
269rem ----------------------------------------------------------------------\r
270:maindir\r
3382cd59 271Echo Configuring the main directory...\r
745ebc13 272If Exist .dir-locals.el update .dir-locals.el _dir-locals.el\r
1685daf2 273If Exist src\.dbxinit update src/.dbxinit src/_dbxinit\r
809e1789
RS
274If "%DJGPP_VER%" == "1" goto mainv1\r
275Echo Looking for the GDB init file...\r
dd0e1e54 276If Exist src\.gdbinit update src/.gdbinit src/_gdbinit\r
809e1789
RS
277If Exist src\_gdbinit goto gdbinitOk\r
278Echo ERROR:\r
279Echo I cannot find the GDB init file. It was called ".gdbinit" in\r
280Echo the Emacs distribution, but was probably renamed to some other\r
281Echo name without the leading dot when you untarred the archive.\r
282Echo It should be in the "src/" subdirectory. Please make sure this\r
283Echo file exists and is called "_gdbinit" with a leading underscore.\r
284Echo Then run CONFIG.BAT again with the same arguments you did now.\r
285goto End\r
286:gdbinitOk\r
287Echo Looking for the GDB init file...found\r
07402863 288copy msdos\mainmake.v2 Makefile >nul\r
809e1789 289:mainv1\r
07402863 290If "%DJGPP_VER%" == "1" copy msdos\mainmake Makefile >nul\r
3382cd59 291rem ----------------------------------------------------------------------\r
adc110de
EZ
292goto End\r
293:SmallEnv\r
294echo Your environment size is too small. Please enlarge it and run me again.\r
295echo For example, type "command.com /e:2048" to have 2048 bytes available.\r
296set $foo$=\r
3382cd59 297:end\r
331fdf1e 298set X11=\r
ddff705b 299set nodebug=\r
b696f860 300set djgpp_ver=\r
b5a09903 301set sys_malloc=\r
d14a46f7
EZ
302\r
303goto skipArchTag\r
304 arch-tag: 2d2fed23-4dc6-4006-a2e4-49daf0031f33\r
305:skipArchTag\r