mm-uu.el (mm-uu-type-alist): Add support for git format-patch diff format.
[bpt/emacs.git] / config.bat
CommitLineData
067d23c9
KY
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
5df4f04c 5rem 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.\r
067d23c9
KY
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 2.0 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
41set libxml=\r
42if "%1" == "" goto usage\r
43rem ----------------------------------------------------------------------\r
44rem See if their environment is large enough. We need 28 bytes.\r
45set $foo$=789012345678901234567\r
46if not "%$foo$%" == "789012345678901234567" goto SmallEnv\r
47set $foo$=\r
48:again\r
49if "%1" == "" goto usage\r
50if "%1" == "--with-x" goto withx\r
51if "%1" == "--no-debug" goto nodebug\r
52if "%1" == "msdos" goto msdos\r
53if "%1" == "--with-system-malloc" goto sysmalloc\r
54:usage\r
55echo Usage: config [--no-debug] [--with-system-malloc] [--with-x] msdos\r
56echo [Read the script before you run it.]\r
57goto end\r
58rem ----------------------------------------------------------------------\r
59:withx\r
60set X11=Y\r
61shift\r
62goto again\r
63rem ----------------------------------------------------------------------\r
64:nodebug\r
65set nodebug=Y\r
66shift\r
67goto again\r
68rem ----------------------------------------------------------------------\r
69:sysmalloc\r
70set sys_malloc=Y\r
71shift\r
72goto again\r
73rem ----------------------------------------------------------------------\r
74:msdos\r
75Echo Checking whether 'sed' is available...\r
76sed -e "w junk.$$$" <Nul\r
77If Exist junk.$$$ Goto sedOk\r
78Echo To configure 'Emacs' you need to have 'sed'!\r
79Goto End\r
80:sedOk\r
81Echo Checking whether 'rm' is available...\r
82rm -f junk.$$$\r
83If Not Exist junk.$$$ Goto rmOk\r
84Echo To configure 'Emacs' you need to have 'rm'!\r
85Goto End\r
86:rmOk\r
87Echo Checking whether 'mv' is available...\r
88rm -f junk.1 junk.2\r
89echo foo >junk.1\r
90mv junk.1 ./junk.2\r
91If Exist junk.2 Goto mvOk\r
92Echo To configure 'Emacs' you need to have 'mv'!\r
93rm -f junk.1\r
94Goto End\r
95:mvOk\r
96rm -f junk.2\r
97Echo Checking whether 'gcc' is available...\r
98echo main(){} >junk.c\r
99gcc -c junk.c\r
100if exist junk.o goto gccOk\r
101Echo To configure 'Emacs' you need to have 'gcc'!\r
102rm -f junk.c\r
103Goto End\r
104:gccOk\r
105rm -f junk.c junk.o junk junk.exe\r
106Echo Checking what version of DJGPP is installed...\r
107If Not "%DJGPP%" == "" goto djgppOk\r
108Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!\r
109Goto End\r
110:djgppOk\r
111echo int main() >junk.c\r
112echo #ifdef __DJGPP__ >>junk.c\r
113echo {return (__DJGPP__)*10;} >>junk.c\r
114echo #else >>junk.c\r
115echo #ifdef __GO32__ >>junk.c\r
116echo {return 10;} >>junk.c\r
117echo #else >>junk.c\r
118echo {return 0;} >>junk.c\r
119echo #endif >>junk.c\r
120echo #endif >>junk.c\r
121gcc -o junk junk.c\r
122if not exist junk.exe coff2exe junk\r
123junk\r
124If ErrorLevel 10 Goto go32Ok\r
125rm -f junk.c junk junk.exe\r
126Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!\r
127Goto End\r
128:go32Ok\r
129set djgpp_ver=2\r
130If Not ErrorLevel 20 Echo To build 'Emacs' you need DJGPP v2.0 or later!\r
131If Not ErrorLevel 20 Goto End\r
132rm -f junk.c junk junk.exe\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
162sed -f ../msdos/sed2v2.inp <config.tmp >config.h2\r
163Rem See if DECL_ALIGN can be supported with this GCC\r
164rm -f junk.c junk.o junk junk.exe\r
165echo struct { int i; char *p; } __attribute__((__aligned__(8))) foo; >junk.c\r
166rem Two percent signs because it is a special character for COMMAND.COM/CMD\r
167rem Filter thru Sed because "&" is special for CMD.EXE\r
168echo int main(void) { return (unsigned long)"&"foo %% 8; } | sed "s/.&./\&/" >>junk.c\r
169gcc -o junk junk.c\r
170if not exist junk.exe coff2exe junk\r
171junk\r
172If Not ErrorLevel 1 Goto alignOk\r
173Echo WARNING: Your GCC does not support 8-byte aligned variables.\r
174Echo WARNING: Therefore Emacs cannot support buffers larger than 128MB.\r
175rem The following line disables DECL_ALIGN which in turn disables USE_LSB_TAG\r
176rem For details see lisp.h where it defines USE_LSB_TAG\r
177echo #define NO_DECL_ALIGN >>config.h2\r
178:alignOk\r
179Rem See if they have libxml2 later than v2.2.0 installed\r
180Echo Checking whether libxml2 v2.2.1 or later is installed ...\r
181rm -f junk.c junk.o junk junk.exe\r
182rem Use djecho here because we need to quote brackets\r
183djecho "#include <libxml/xmlversion.h>" >junk.c\r
184djecho "int main()" >>junk.c\r
185djecho "{return (LIBXML_VERSION > 20200 ? 0 : 1);}" >>junk.c\r
186redir -o Nul -eo gcc -I/dev/env/DJDIR/include/libxml2 -o junk junk.c\r
187if not exist junk Goto xmlDone\r
188if not exist junk.exe coff2exe junk\r
189junk\r
190If ErrorLevel 1 Goto xmlDone\r
191Echo Configuring with libxml2 ...\r
192sed -e "/#undef HAVE_LIBXML2/s/^.*$/#define HAVE_LIBXML2 1/" <config.h2 >config.h3\r
193mv config.h3 config.h2\r
194set libxml=1\r
195:xmlDone\r
196rm -f junk.c junk junk.exe\r
197Rem See if they requested a SYSTEM_MALLOC build\r
198if "%sys_malloc%" == "" Goto cfgDone\r
199rm -f config.tmp\r
200ren config.h2 config.tmp\r
201sed -f ../msdos/sedalloc.inp <config.tmp >config.h2\r
202\r
203:cfgDone\r
204rm -f junk.c junk junk.exe\r
205update config.h2 config.h >nul\r
206rm -f config.tmp config.h2\r
207\r
208rem On my system dir.h gets in the way. It's a VMS file so who cares.\r
209if exist dir.h ren dir.h vmsdir.h\r
210\r
211rem Create "makefile" from "makefile.in".\r
212rm -f Makefile makefile.tmp\r
213copy Makefile.in+deps.mk makefile.tmp\r
214sed -f ../msdos/sed1v2.inp <makefile.tmp >Makefile\r
215rm -f makefile.tmp\r
216\r
217if "%X11%" == "" goto src5\r
218mv Makefile makefile.tmp\r
219sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile\r
220rm -f makefile.tmp\r
221:src5\r
222\r
223if "%sys_malloc%" == "" goto src5a\r
224sed -e "/^GMALLOC_OBJ *=/s/gmalloc.o//" <Makefile >makefile.tmp\r
225sed -e "/^VMLIMIT_OBJ *=/s/vm-limit.o//" <makefile.tmp >makefile.tmp2\r
226sed -e "/^RALLOC_OBJ *=/s/ralloc.o//" <makefile.tmp2 >Makefile\r
227rm -f makefile.tmp makefile.tmp2\r
228:src5a\r
229\r
230if "%nodebug%" == "" goto src6\r
231sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
232sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile\r
233rm -f makefile.tmp\r
234:src6\r
235\r
236if "%libxml%" == "" goto src7\r
237sed -e "/^LIBXML2_LIBS *=/s/=/= -lxml2 -lz -liconv/" <Makefile >makefile.tmp\r
238sed -e "/^LIBXML2_CFLAGS *=/s|=|= -I/dev/env/DJDIR/include/libxml2|" <makefile.tmp >Makefile\r
239rm -f makefile.tmp\r
240:src7\r
241cd ..\r
242rem ----------------------------------------------------------------------\r
243Echo Configuring the library source directory...\r
244cd lib-src\r
245sed -f ../msdos/sed3v2.inp <Makefile.in >Makefile\r
246if "%X11%" == "" goto libsrc2a\r
247mv Makefile makefile.tmp\r
248sed -f ../msdos/sed3x.inp <makefile.tmp >Makefile\r
249rm -f makefile.tmp\r
250:libsrc2a\r
251if "%nodebug%" == "" goto libsrc3\r
252sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
253sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile\r
254rm -f makefile.tmp\r
255:libsrc3\r
256cd ..\r
257rem ----------------------------------------------------------------------\r
258if "%X11%" == "" goto oldx1\r
259Echo Configuring the oldxmenu directory...\r
260cd oldxmenu\r
261sed -f ../msdos/sed5x.inp <Makefile.in >Makefile\r
262if "%nodebug%" == "" goto oldx2\r
263sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
264mv -f makefile.tmp Makefile\r
265:oldx2\r
266cd ..\r
267:oldx1\r
268rem ----------------------------------------------------------------------\r
269Echo Configuring the doc directory, expect one "File not found" message...\r
270cd doc\r
271Rem The two variants for lispintro below is for when the shell\r
272Rem supports long file names but DJGPP does not\r
273for %%d in (emacs lispref lispintro lispintr misc) do sed -f ../msdos/sed6.inp < %%d\Makefile.in > %%d\Makefile\r
274cd ..\r
275rem ----------------------------------------------------------------------\r
276Echo Configuring the lisp directory...\r
277cd lisp\r
278If Exist gnus\.dir-locals.el update gnus/.dir-locals.el gnus/_dir-locals.el\r
279sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile\r
280cd ..\r
281rem ----------------------------------------------------------------------\r
282If not Exist leim\quail\latin-pre.el goto maindir\r
283Echo Configuring the leim directory...\r
284cd leim\r
285sed -f ../msdos/sedleim.inp < Makefile.in > Makefile\r
286cd ..\r
287rem ----------------------------------------------------------------------\r
288:maindir\r
289Echo Configuring the main directory...\r
290If Exist .dir-locals.el update .dir-locals.el _dir-locals.el\r
291If Exist src\.dbxinit update src/.dbxinit src/_dbxinit\r
292Echo Looking for the GDB init file...\r
293If Exist src\.gdbinit update src/.gdbinit src/_gdbinit\r
294If Exist src\_gdbinit goto gdbinitOk\r
295Echo ERROR:\r
296Echo I cannot find the GDB init file. It was called ".gdbinit" in\r
297Echo the Emacs distribution, but was probably renamed to some other\r
298Echo name without the leading dot when you untarred the archive.\r
299Echo It should be in the "src/" subdirectory. Please make sure this\r
300Echo file exists and is called "_gdbinit" with a leading underscore.\r
301Echo Then run CONFIG.BAT again with the same arguments you did now.\r
302goto End\r
303:gdbinitOk\r
304Echo Looking for the GDB init file...found\r
305copy msdos\mainmake.v2 Makefile >nul\r
306rem ----------------------------------------------------------------------\r
307goto End\r
308:SmallEnv\r
309echo Your environment size is too small. Please enlarge it and run me again.\r
310echo For example, type "command.com /e:2048" to have 2048 bytes available.\r
311set $foo$=\r
312:end\r
313set X11=\r
314set nodebug=\r
315set djgpp_ver=\r
316set sys_malloc=\r
317set libxml=\r
318\r