(Fxw_color_values): Return 3-element list. Doc fix.
[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, 2009 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 (and is\r
30rem recommended).\r
31rem + rm, mv, and cp (from GNU file utilities).\r
32rem + sed (you can use the port that comes with DJGPP).\r
33rem\r
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
36rem ----------------------------------------------------------------------\r
37set X11=\r
38set nodebug=\r
39set djgpp_ver=\r
40set sys_malloc=\r
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
47:again\r
48if "%1" == "" goto usage\r
49if "%1" == "--with-x" goto withx\r
50if "%1" == "--no-debug" goto nodebug\r
51if "%1" == "msdos" goto msdos\r
52if "%1" == "--with-system-malloc" goto sysmalloc\r
53:usage\r
54echo Usage: config [--no-debug] [--with-system-malloc] [--with-x] msdos\r
55echo [Read the script before you run it.]\r
56goto end\r
57rem ----------------------------------------------------------------------\r
58:withx\r
59set X11=Y\r
60shift\r
61goto again\r
62rem ----------------------------------------------------------------------\r
63:nodebug\r
64set nodebug=Y\r
65shift\r
66goto again\r
67rem ----------------------------------------------------------------------\r
68:sysmalloc\r
69set sys_malloc=Y\r
70shift\r
71goto again\r
72rem ----------------------------------------------------------------------\r
73:msdos\r
74Echo Checking whether 'sed' is available...\r
75sed -e "w junk.$$$" <Nul\r
76If Exist junk.$$$ Goto sedOk\r
77Echo To configure 'Emacs' you need to have 'sed'!\r
78Goto End\r
79:sedOk\r
80Echo Checking whether 'rm' is available...\r
81rm -f junk.$$$\r
82If Not Exist junk.$$$ Goto rmOk\r
83Echo To configure 'Emacs' you need to have 'rm'!\r
84Goto End\r
85:rmOk\r
86Echo Checking whether 'mv' is available...\r
87rm -f junk.1 junk.2\r
88echo foo >junk.1\r
89mv junk.1 ./junk.2\r
90If Exist junk.2 Goto mvOk\r
91Echo To configure 'Emacs' you need to have 'mv'!\r
92rm -f junk.1\r
93Goto End\r
94:mvOk\r
95rm -f junk.2\r
96Echo Checking whether 'gcc' is available...\r
97echo main(){} >junk.c\r
98gcc -c junk.c\r
99if exist junk.o goto gccOk\r
100Echo To configure 'Emacs' you need to have 'gcc'!\r
101rm -f junk.c\r
102Goto End\r
103:gccOk\r
104rm -f junk.c junk.o junk junk.exe\r
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
120gcc -o junk junk.c\r
121if not exist junk.exe coff2exe junk\r
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
128set djgpp_ver=1\r
129If ErrorLevel 20 set djgpp_ver=2\r
130rm -f junk.c junk junk.exe\r
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
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
146Echo Configuring for DJGPP Version %DJGPP_VER% ...\r
147Rem ----------------------------------------------------------------------\r
148Echo Configuring the source directory...\r
149cd src\r
150\r
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
155\r
156rem Create "config.h"\r
157rm -f config.h2 config.tmp\r
158sed -e '' config.in > config.tmp\r
159if "%X11%" == "" goto src4\r
160sed -f ../msdos/sed2x.inp <config.in >config.tmp\r
161:src4\r
162if "%DJGPP_VER%" == "2" Goto src41\r
163sed -f ../msdos/sed2.inp <config.tmp >config.h2\r
164goto src42\r
165:src41\r
166sed -f ../msdos/sed2v2.inp <config.tmp >config.h2\r
167:src42\r
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
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
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
182echo #define NO_DECL_ALIGN >>config.h2\r
183:alignOk\r
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
191rm -f junk.c junk junk.exe\r
192update config.h2 config.h >nul\r
193rm -f config.tmp config.h2\r
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
198rem Create "makefile" from "makefile.in".\r
199rm -f Makefile junk.c\r
200sed -e "1,/== start of cpp stuff ==/s@^# .*$@@" <Makefile.in >junk.c\r
201If "%DJGPP_VER%" == "1" Goto mfV1\r
202gcc -E -traditional junk.c | sed -f ../msdos/sed1v2.inp >Makefile\r
203goto mfDone\r
204:mfV1\r
205gcc -E -traditional junk.c | sed -f ../msdos/sed1.inp >Makefile\r
206:mfDone\r
207rm -f junk.c\r
208\r
209if "%X11%" == "" goto src5\r
210mv Makefile makefile.tmp\r
211sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile\r
212rm -f makefile.tmp\r
213:src5\r
214\r
215if "%nodebug%" == "" goto src6\r
216sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
217sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile\r
218rm -f makefile.tmp\r
219:src6\r
220cd ..\r
221rem ----------------------------------------------------------------------\r
222Echo Configuring the library source directory...\r
223cd lib-src\r
224rem Create "makefile" from "makefile.in".\r
225sed -e "1,/== start of cpp stuff ==/s@^#[ ].*$@@" <Makefile.in >junk.c\r
226gcc -E -traditional -I. -I../src junk.c | sed -e "s/^ / /" -e "/^#/d" -e "/^[ \f]*$/d" >makefile.new\r
227If "%DJGPP_VER%" == "2" goto libsrc-v2\r
228sed -f ../msdos/sed3.inp <makefile.new >Makefile\r
229Goto libsrc2\r
230:libsrc-v2\r
231sed -f ../msdos/sed3v2.inp <makefile.new >Makefile\r
232:libsrc2\r
233rm -f makefile.new junk.c\r
234if "%nodebug%" == "" goto libsrc3\r
235sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
236sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile\r
237rm -f makefile.tmp\r
238:libsrc3\r
239cd ..\r
240rem ----------------------------------------------------------------------\r
241if "%X11%" == "" goto oldx1\r
242Echo Configuring the oldxmenu directory...\r
243cd oldxmenu\r
244sed -f ../msdos/sed5x.inp <Makefile.in >Makefile\r
245if "%nodebug%" == "" goto oldx2\r
246sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
247mv -f makefile.tmp Makefile\r
248:oldx2\r
249cd ..\r
250:oldx1\r
251rem ----------------------------------------------------------------------\r
252Echo Configuring the doc directory, expect one "File not found" message...\r
253cd doc\r
254Rem The two variants for lispintro below is for when the shell\r
255Rem supports long file names but DJGPP does not\r
256for %%d in (emacs lispref lispintro lispintr misc) do sed -f ../msdos/sed6.inp < %%d\Makefile.in > %%d\Makefile\r
257cd ..\r
258rem ----------------------------------------------------------------------\r
259Echo Configuring the lisp directory...\r
260cd lisp\r
261sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile\r
262cd ..\r
263rem ----------------------------------------------------------------------\r
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
271Echo Configuring the main directory...\r
272If Exist .dir-locals.el update .dir-locals.el _dir-locals.el\r
273If Exist src\.dbxinit update src/.dbxinit src/_dbxinit\r
274If "%DJGPP_VER%" == "1" goto mainv1\r
275Echo Looking for the GDB init file...\r
276If Exist src\.gdbinit update src/.gdbinit src/_gdbinit\r
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
288copy msdos\mainmake.v2 Makefile >nul\r
289:mainv1\r
290If "%DJGPP_VER%" == "1" copy msdos\mainmake Makefile >nul\r
291rem ----------------------------------------------------------------------\r
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
297:end\r
298set X11=\r
299set nodebug=\r
300set djgpp_ver=\r
301set sys_malloc=\r
302\r
303goto skipArchTag\r
304 arch-tag: 2d2fed23-4dc6-4006-a2e4-49daf0031f33\r
305:skipArchTag\r