Meta-CVS support removed.
[bpt/emacs.git] / config.bat
... / ...
CommitLineData
1@echo off\r
2rem ----------------------------------------------------------------------\r
3rem Configuration script for MSDOS\r
4rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003\r
5rem 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.\r
6\r
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 3 of the License, or\r
12rem (at your option) 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
20rem along with GNU Emacs. If not, see http://www.gnu.org/licenses/.\r
21\r
22rem ----------------------------------------------------------------------\r
23rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:\r
24rem\r
25rem + msdos version 3 or better.\r
26rem + DJGPP version 1.12maint1 or later (version 2.03 or later recommended).\r
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
29rem line length limit. The make that comes with DJGPP does work.\r
30rem + rm and mv (from GNU file utilities).\r
31rem + sed (you can use the port that comes with DJGPP).\r
32rem\r
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
35rem ----------------------------------------------------------------------\r
36set X11=\r
37set nodebug=\r
38set djgpp_ver=\r
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
45:again\r
46if "%1" == "" goto usage\r
47if "%1" == "--with-x" goto withx\r
48if "%1" == "--no-debug" goto nodebug\r
49if "%1" == "msdos" goto msdos\r
50:usage\r
51echo Usage: config [--with-x] [--no-debug] msdos\r
52echo [Read the script before you run it.]\r
53goto end\r
54rem ----------------------------------------------------------------------\r
55:withx\r
56set X11=Y\r
57shift\r
58goto again\r
59rem ----------------------------------------------------------------------\r
60:nodebug\r
61set nodebug=Y\r
62shift\r
63goto again\r
64rem ----------------------------------------------------------------------\r
65:msdos\r
66Echo Checking whether 'sed' is available...\r
67sed -e "w junk.$$$" <Nul\r
68If Exist junk.$$$ Goto sedOk\r
69Echo To configure 'Emacs' you need to have 'sed'!\r
70Goto End\r
71:sedOk\r
72Echo Checking whether 'rm' is available...\r
73rm -f junk.$$$\r
74If Not Exist junk.$$$ Goto rmOk\r
75Echo To configure 'Emacs' you need to have 'rm'!\r
76Goto End\r
77:rmOk\r
78Echo Checking whether 'mv' is available...\r
79rm -f junk.1 junk.2\r
80echo foo >junk.1\r
81mv junk.1 ./junk.2\r
82If Exist junk.2 Goto mvOk\r
83Echo To configure 'Emacs' you need to have 'mv'!\r
84rm -f junk.1\r
85Goto End\r
86:mvOk\r
87rm -f junk.2\r
88Echo Checking whether 'gcc' is available...\r
89echo main(){} >junk.c\r
90gcc -c junk.c\r
91if exist junk.o goto gccOk\r
92Echo To configure 'Emacs' you need to have 'gcc'!\r
93rm -f junk.c\r
94Goto End\r
95:gccOk\r
96rm -f junk.c junk.o junk junk.exe\r
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
112gcc -o junk junk.c\r
113if not exist junk.exe coff2exe junk\r
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
120set djgpp_ver=1\r
121If ErrorLevel 20 set djgpp_ver=2\r
122rm -f junk.c junk junk.exe\r
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
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
138Echo Configuring for DJGPP Version %DJGPP_VER% ...\r
139Rem ----------------------------------------------------------------------\r
140Echo Configuring the source directory...\r
141cd src\r
142\r
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
147\r
148rem Create "config.h"\r
149rm -f config.h2 config.tmp\r
150sed -e '' config.in > config.tmp\r
151if "%X11%" == "" goto src4\r
152sed -f ../msdos/sed2x.inp <config.in >config.tmp\r
153:src4\r
154if "%DJGPP_VER%" == "2" Goto src41\r
155sed -f ../msdos/sed2.inp <config.tmp >config.h2\r
156goto src42\r
157:src41\r
158sed -f ../msdos/sed2v2.inp <config.tmp >config.h2\r
159:src42\r
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
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
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
174echo #define NO_DECL_ALIGN >>config.h2\r
175:alignOk\r
176rm -f junk.c junk junk.exe\r
177update config.h2 config.h >nul\r
178rm -f config.tmp config.h2\r
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
183rem Create "makefile" from "makefile.in".\r
184rm -f Makefile junk.c\r
185sed -e "1,/== start of cpp stuff ==/s@^# .*$@@" <Makefile.in >junk.c\r
186If "%DJGPP_VER%" == "1" Goto mfV1\r
187gcc -E -traditional junk.c | sed -f ../msdos/sed1v2.inp >Makefile\r
188goto mfDone\r
189:mfV1\r
190gcc -E -traditional junk.c | sed -f ../msdos/sed1.inp >Makefile\r
191:mfDone\r
192rm -f junk.c\r
193\r
194if "%X11%" == "" goto src5\r
195mv Makefile makefile.tmp\r
196sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile\r
197rm -f makefile.tmp\r
198:src5\r
199\r
200if "%nodebug%" == "" goto src6\r
201sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
202sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile\r
203rm -f makefile.tmp\r
204:src6\r
205cd ..\r
206rem ----------------------------------------------------------------------\r
207Echo Configuring the library source directory...\r
208cd lib-src\r
209rem Create "makefile" from "makefile.in".\r
210sed -e "1,/== start of cpp stuff ==/s@^#[ ].*$@@" <Makefile.in >junk.c\r
211gcc -E -traditional -I. -I../src junk.c | sed -e "s/^ / /" -e "/^#/d" -e "/^[ \f]*$/d" >makefile.new\r
212If "%DJGPP_VER%" == "2" goto libsrc-v2\r
213sed -f ../msdos/sed3.inp <makefile.new >Makefile\r
214Goto libsrc2\r
215:libsrc-v2\r
216sed -f ../msdos/sed3v2.inp <makefile.new >Makefile\r
217:libsrc2\r
218rm -f makefile.new junk.c\r
219if "%nodebug%" == "" goto libsrc3\r
220sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
221sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile\r
222rm -f makefile.tmp\r
223:libsrc3\r
224cd ..\r
225rem ----------------------------------------------------------------------\r
226if "%X11%" == "" goto oldx1\r
227Echo Configuring the oldxmenu directory...\r
228cd oldxmenu\r
229sed -f ../msdos/sed5x.inp <Makefile.in >Makefile\r
230if "%nodebug%" == "" goto oldx2\r
231sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
232mv -f makefile.tmp Makefile\r
233:oldx2\r
234cd ..\r
235:oldx1\r
236rem ----------------------------------------------------------------------\r
237Echo Configuring the doc directory...\r
238cd doc\r
239Rem The two variants for lispintro below is for when the shell\r
240Rem supports long file names but DJGPP does not\r
241for %%d in (emacs lispref lispintro lispintr misc) do sed -f ../msdos/sed6.inp < %%d\Makefile.in > %%d\Makefile\r
242cd ..\r
243rem ----------------------------------------------------------------------\r
244Echo Configuring the lisp directory...\r
245cd lisp\r
246sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile\r
247cd ..\r
248rem ----------------------------------------------------------------------\r
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
256Echo Configuring the main directory...\r
257If "%DJGPP_VER%" == "1" goto mainv1\r
258Echo Looking for the GDB init file...\r
259If Exist src\.gdbinit update src/.gdbinit src/_gdbinit\r
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
271copy msdos\mainmake.v2 Makefile >nul\r
272:mainv1\r
273If "%DJGPP_VER%" == "1" copy msdos\mainmake Makefile >nul\r
274rem ----------------------------------------------------------------------\r
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
280:end\r
281set X11=\r
282set nodebug=\r
283set djgpp_ver=\r
284\r
285goto skipArchTag\r
286 arch-tag: 2d2fed23-4dc6-4006-a2e4-49daf0031f33\r
287:skipArchTag\r