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