Move declarations to header files.
[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
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
78248b76
EZ
128set djgpp_ver=2\r
129If Not ErrorLevel 20 Echo To build 'Emacs' you need DJGPP v2.0 or later!\r
130If Not ErrorLevel 20 Goto End\r
f56c5217 131rm -f junk.c junk junk.exe\r
5ae143b2 132rem DJECHO is used by the top-level Makefile in the v2.x build\r
92a0f4b1
EZ
133Echo Checking whether 'djecho' is available...\r
134redir -o Nul -eo djecho -o junk.$$$ foo\r
135If Exist junk.$$$ Goto djechoOk\r
136Echo To build 'Emacs' you need the 'djecho.exe' program!\r
137Echo 'djecho.exe' is part of 'djdevNNN.zip' basic DJGPP development kit.\r
138Echo Versions of DJGPP before 2.02 called this program 'echo.exe'.\r
139Echo Either unpack 'djecho.exe' from the 'djdevNNN.zip' archive,\r
140Echo or, if you have 'echo.exe', copy it to 'djecho.exe'.\r
141Echo Then run CONFIG.BAT again with the same arguments you did now.\r
142Goto End\r
143:djechoOk\r
144rm -f junk.$$$\r
b696f860 145Echo Configuring for DJGPP Version %DJGPP_VER% ...\r
ddff705b 146Rem ----------------------------------------------------------------------\r
3382cd59
RS
147Echo Configuring the source directory...\r
148cd src\r
3382cd59 149\r
05175c54
EZ
150rem Create "epaths.h"\r
151sed -f ../msdos/sed4.inp <epaths.in >epaths.tmp\r
152update epaths.tmp epaths.h >nul\r
153rm -f epaths.tmp\r
3382cd59
RS
154\r
155rem Create "config.h"\r
ddff705b 156rm -f config.h2 config.tmp\r
45cdceb9 157sed -e '' config.in > config.tmp\r
331fdf1e 158if "%X11%" == "" goto src4\r
2f3e7987 159sed -f ../msdos/sed2x.inp <config.in >config.tmp\r
331fdf1e 160:src4\r
90c4121e 161sed -f ../msdos/sed2v2.inp <config.tmp >config.h2\r
a30fb04f
EZ
162Rem See if DECL_ALIGN can be supported with this GCC\r
163rm -f junk.c junk.o junk junk.exe\r
164echo struct { int i; char *p; } __attribute__((__aligned__(8))) foo; >junk.c\r
e8237370
EZ
165rem Two percent signs because it is a special character for COMMAND.COM/CMD\r
166rem Filter thru Sed because "&" is special for CMD.EXE\r
167echo int main(void) { return (unsigned long)"&"foo %% 8; } | sed "s/.&./\&/" >>junk.c\r
a30fb04f
EZ
168gcc -o junk junk.c\r
169if not exist junk.exe coff2exe junk\r
170junk\r
171If Not ErrorLevel 1 Goto alignOk\r
172Echo WARNING: Your GCC does not support 8-byte aligned variables.\r
173Echo WARNING: Therefore Emacs cannot support buffers larger than 128MB.\r
174rem The following line disables DECL_ALIGN which in turn disables USE_LSB_TAG\r
175rem For details see lisp.h where it defines USE_LSB_TAG\r
60c49bc1 176echo #define NO_DECL_ALIGN >>config.h2\r
a30fb04f 177:alignOk\r
b5a09903
EZ
178Rem See if they requested a SYSTEM_MALLOC build\r
179if "%sys_malloc%" == "" Goto cfgDone\r
180rm -f config.tmp\r
181ren config.h2 config.tmp\r
182sed -f ../msdos/sedalloc.inp <config.tmp >config.h2\r
183\r
184:cfgDone\r
a30fb04f 185rm -f junk.c junk junk.exe\r
ddff705b
MW
186update config.h2 config.h >nul\r
187rm -f config.tmp config.h2\r
3382cd59
RS
188\r
189rem On my system dir.h gets in the way. It's a VMS file so who cares.\r
190if exist dir.h ren dir.h vmsdir.h\r
191\r
2f3e7987 192rem Create "makefile" from "makefile.in".\r
81ac4f35 193rm -f Makefile makefile.tmp\r
394f2386 194copy Makefile.in+deps.mk makefile.tmp\r
81ac4f35
GM
195sed -f ../msdos/sed1v2.inp <makefile.tmp >Makefile\r
196rm -f makefile.tmp\r
2f3e7987 197\r
ddff705b 198if "%X11%" == "" goto src5\r
07402863
EZ
199mv Makefile makefile.tmp\r
200sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile\r
ddff705b
MW
201rm -f makefile.tmp\r
202:src5\r
203\r
be4ff9da
GM
204if "%sys_malloc%" == "" goto src5a\r
205sed -e "/^GMALLOC_OBJ *=/s/gmalloc.o//" <Makefile >makefile.tmp\r
40dc6bf4
GM
206sed -e "/^VMLIMIT_OBJ *=/s/vm-limit.o//" <makefile.tmp >makefile.tmp2\r
207sed -e "/^RALLOC_OBJ *=/s/ralloc.o//" <makefile.tmp2 >Makefile\r
208rm -f makefile.tmp makefile.tmp2\r
be4ff9da
GM
209:src5a\r
210\r
ddff705b 211if "%nodebug%" == "" goto src6\r
2e4a0140 212sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
07402863 213sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile\r
f56c5217 214rm -f makefile.tmp\r
ddff705b 215:src6\r
3382cd59
RS
216cd ..\r
217rem ----------------------------------------------------------------------\r
218Echo Configuring the library source directory...\r
219cd lib-src\r
d3b23034 220sed -f ../msdos/sed3v2.inp <Makefile.in >Makefile\r
acddf8ae
GM
221if "%X11%" == "" goto libsrc2a\r
222mv Makefile makefile.tmp\r
223sed -f ../msdos/sed3x.inp <makefile.tmp >Makefile\r
224rm -f makefile.tmp\r
225:libsrc2a\r
f56c5217 226if "%nodebug%" == "" goto libsrc3\r
2e4a0140 227sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
07402863 228sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile\r
f56c5217
RS
229rm -f makefile.tmp\r
230:libsrc3\r
ddff705b
MW
231cd ..\r
232rem ----------------------------------------------------------------------\r
233if "%X11%" == "" goto oldx1\r
234Echo Configuring the oldxmenu directory...\r
235cd oldxmenu\r
07402863 236sed -f ../msdos/sed5x.inp <Makefile.in >Makefile\r
ddff705b 237if "%nodebug%" == "" goto oldx2\r
2e4a0140 238sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
07402863 239mv -f makefile.tmp Makefile\r
ddff705b 240:oldx2\r
3382cd59 241cd ..\r
ddff705b 242:oldx1\r
3382cd59 243rem ----------------------------------------------------------------------\r
b5ba7271 244Echo Configuring the doc directory, expect one "File not found" message...\r
799303b6
EZ
245cd doc\r
246Rem The two variants for lispintro below is for when the shell\r
86bbfe77 247Rem supports long file names but DJGPP does not\r
799303b6 248for %%d in (emacs lispref lispintro lispintr misc) do sed -f ../msdos/sed6.inp < %%d\Makefile.in > %%d\Makefile\r
7336d09b
EZ
249cd ..\r
250rem ----------------------------------------------------------------------\r
efb81423
EZ
251Echo Configuring the lisp directory...\r
252cd lisp\r
253sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile\r
254cd ..\r
255rem ----------------------------------------------------------------------\r
b2451b86
EZ
256If not Exist leim\quail\latin-pre.el goto maindir\r
257Echo Configuring the leim directory...\r
258cd leim\r
259sed -f ../msdos/sedleim.inp < Makefile.in > Makefile\r
260cd ..\r
261rem ----------------------------------------------------------------------\r
262:maindir\r
3382cd59 263Echo Configuring the main directory...\r
745ebc13 264If Exist .dir-locals.el update .dir-locals.el _dir-locals.el\r
1685daf2 265If Exist src\.dbxinit update src/.dbxinit src/_dbxinit\r
809e1789 266Echo Looking for the GDB init file...\r
dd0e1e54 267If Exist src\.gdbinit update src/.gdbinit src/_gdbinit\r
809e1789
RS
268If Exist src\_gdbinit goto gdbinitOk\r
269Echo ERROR:\r
270Echo I cannot find the GDB init file. It was called ".gdbinit" in\r
271Echo the Emacs distribution, but was probably renamed to some other\r
272Echo name without the leading dot when you untarred the archive.\r
273Echo It should be in the "src/" subdirectory. Please make sure this\r
274Echo file exists and is called "_gdbinit" with a leading underscore.\r
275Echo Then run CONFIG.BAT again with the same arguments you did now.\r
276goto End\r
277:gdbinitOk\r
278Echo Looking for the GDB init file...found\r
07402863 279copy msdos\mainmake.v2 Makefile >nul\r
3382cd59 280rem ----------------------------------------------------------------------\r
adc110de
EZ
281goto End\r
282:SmallEnv\r
283echo Your environment size is too small. Please enlarge it and run me again.\r
284echo For example, type "command.com /e:2048" to have 2048 bytes available.\r
285set $foo$=\r
3382cd59 286:end\r
331fdf1e 287set X11=\r
ddff705b 288set nodebug=\r
b696f860 289set djgpp_ver=\r
b5a09903 290set sys_malloc=\r
d14a46f7
EZ
291\r
292goto skipArchTag\r
293 arch-tag: 2d2fed23-4dc6-4006-a2e4-49daf0031f33\r
294:skipArchTag\r