declare smobs in alloc.c
[bpt/emacs.git] / config.bat
CommitLineData
067d23c9
KY
1@echo off\r
2rem ----------------------------------------------------------------------\r
3rem Configuration script for MSDOS\r
6bc383b1 4rem Copyright (C) 1994-1999, 2001-2014 Free Software Foundation, Inc.\r
067d23c9
KY
5\r
6rem This file is part of GNU Emacs.\r
7\r
8rem GNU Emacs is free software: you can redistribute it and/or modify\r
9rem it under the terms of the GNU General Public License as published by\r
10rem the Free Software Foundation, either version 3 of the License, or\r
11rem (at your option) any later version.\r
12\r
13rem GNU Emacs is distributed in the hope that it will be useful,\r
14rem but WITHOUT ANY WARRANTY; without even the implied warranty of\r
15rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
16rem GNU General Public License for more details.\r
17\r
18rem You should have received a copy of the GNU General Public License\r
19rem along with GNU Emacs. If not, see http://www.gnu.org/licenses/.\r
20\r
21rem ----------------------------------------------------------------------\r
22rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:\r
23rem\r
24rem + msdos version 3 or better.\r
25rem + DJGPP version 2.0 or later (version 2.03 or later recommended).\r
26rem + make utility that allows breaking of the 128 chars limit on\r
27rem command lines. ndmake (as of version 4.5) won't work due to a\r
28rem line length limit. The make that comes with DJGPP does work (and is\r
29rem recommended).\r
30rem + rm, mv, and cp (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
39set sys_malloc=\r
40set libxml=\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=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
131rm -f junk.c junk junk.exe\r
132rem DJECHO is used by the top-level Makefile in the v2.x build\r
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
145Echo Configuring for DJGPP Version %DJGPP_VER% ...\r
146Rem ----------------------------------------------------------------------\r
147Echo Configuring the source directory...\r
148cd src\r
149\r
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
154\r
155rem Create "config.h"\r
156rm -f config.h2 config.tmp\r
07f3add9 157if exist config.in sed -e '' config.in > config.tmp\r
4dde498b 158if exist ..\msdos\autogen\config.in sed -e '' ../msdos/autogen/config.in > config.tmp\r
067d23c9 159if "%X11%" == "" goto src4\r
07f3add9 160if exist config.in sed -f ../msdos/sed2x.inp < config.in > config.tmp\r
4dde498b 161if exist ..\msdos\autogen\config.in sed -f ../msdos/sed2x.inp < ..\msdos\autogen\config.in > config.tmp\r
067d23c9
KY
162:src4\r
163sed -f ../msdos/sed2v2.inp <config.tmp >config.h2\r
067d23c9
KY
164Rem See if they have libxml2 later than v2.2.0 installed\r
165Echo Checking whether libxml2 v2.2.1 or later is installed ...\r
166rm -f junk.c junk.o junk junk.exe\r
167rem Use djecho here because we need to quote brackets\r
168djecho "#include <libxml/xmlversion.h>" >junk.c\r
169djecho "int main()" >>junk.c\r
170djecho "{return (LIBXML_VERSION > 20200 ? 0 : 1);}" >>junk.c\r
171redir -o Nul -eo gcc -I/dev/env/DJDIR/include/libxml2 -o junk junk.c\r
172if not exist junk Goto xmlDone\r
173if not exist junk.exe coff2exe junk\r
174junk\r
175If ErrorLevel 1 Goto xmlDone\r
176Echo Configuring with libxml2 ...\r
177sed -e "/#undef HAVE_LIBXML2/s/^.*$/#define HAVE_LIBXML2 1/" <config.h2 >config.h3\r
178mv config.h3 config.h2\r
179set libxml=1\r
180:xmlDone\r
181rm -f junk.c junk junk.exe\r
182Rem See if they requested a SYSTEM_MALLOC build\r
183if "%sys_malloc%" == "" Goto cfgDone\r
184rm -f config.tmp\r
185ren config.h2 config.tmp\r
186sed -f ../msdos/sedalloc.inp <config.tmp >config.h2\r
187\r
188:cfgDone\r
189rm -f junk.c junk junk.exe\r
190update config.h2 config.h >nul\r
191rm -f config.tmp config.h2\r
192\r
193rem On my system dir.h gets in the way. It's a VMS file so who cares.\r
194if exist dir.h ren dir.h vmsdir.h\r
195\r
196rem Create "makefile" from "makefile.in".\r
197rm -f Makefile makefile.tmp\r
7285dc67 198copy Makefile.in+lisp.mk+deps.mk makefile.tmp\r
067d23c9
KY
199sed -f ../msdos/sed1v2.inp <makefile.tmp >Makefile\r
200rm -f makefile.tmp\r
201\r
202if "%X11%" == "" goto src5\r
203mv Makefile makefile.tmp\r
204sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile\r
205rm -f makefile.tmp\r
206:src5\r
207\r
208if "%sys_malloc%" == "" goto src5a\r
209sed -e "/^GMALLOC_OBJ *=/s/gmalloc.o//" <Makefile >makefile.tmp\r
210sed -e "/^VMLIMIT_OBJ *=/s/vm-limit.o//" <makefile.tmp >makefile.tmp2\r
211sed -e "/^RALLOC_OBJ *=/s/ralloc.o//" <makefile.tmp2 >Makefile\r
212rm -f makefile.tmp makefile.tmp2\r
213:src5a\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
220\r
221if "%libxml%" == "" goto src7\r
222sed -e "/^LIBXML2_LIBS *=/s/=/= -lxml2 -lz -liconv/" <Makefile >makefile.tmp\r
223sed -e "/^LIBXML2_CFLAGS *=/s|=|= -I/dev/env/DJDIR/include/libxml2|" <makefile.tmp >Makefile\r
224rm -f makefile.tmp\r
225:src7\r
226cd ..\r
227rem ----------------------------------------------------------------------\r
228Echo Configuring the library source directory...\r
229cd lib-src\r
230sed -f ../msdos/sed3v2.inp <Makefile.in >Makefile\r
231if "%X11%" == "" goto libsrc2a\r
232mv Makefile makefile.tmp\r
233sed -f ../msdos/sed3x.inp <makefile.tmp >Makefile\r
234rm -f makefile.tmp\r
235:libsrc2a\r
236if "%nodebug%" == "" goto libsrc3\r
237sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
238sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile\r
239rm -f makefile.tmp\r
240:libsrc3\r
241cd ..\r
242rem ----------------------------------------------------------------------\r
243if "%X11%" == "" goto oldx1\r
244Echo Configuring the oldxmenu directory...\r
245cd oldxmenu\r
246sed -f ../msdos/sed5x.inp <Makefile.in >Makefile\r
247if "%nodebug%" == "" goto oldx2\r
248sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp\r
249mv -f makefile.tmp Makefile\r
250:oldx2\r
251cd ..\r
252:oldx1\r
253rem ----------------------------------------------------------------------\r
254Echo Configuring the doc directory, expect one "File not found" message...\r
255cd doc\r
256Rem The two variants for lispintro below is for when the shell\r
257Rem supports long file names but DJGPP does not\r
258for %%d in (emacs lispref lispintro lispintr misc) do sed -f ../msdos/sed6.inp < %%d\Makefile.in > %%d\Makefile\r
259cd ..\r
260rem ----------------------------------------------------------------------\r
9d9d12cd 261Echo Configuring the lib directory...\r
f13cae31 262If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-aux/snippet/cxxdefs.h\r
9d9d12cd
EZ
263cd lib\r
264Rem Rename files like djtar on plain DOS filesystem would.\r
f13cae31 265If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-aux/snippet/cxxdefs.h\r
31bed486 266If Exist alloca.in.h update alloca.in.h alloca.in-h\r
bf6b4923
EZ
267If Exist byteswap.in.h update byteswap.in.h byteswap.in-h\r
268If Exist dirent.in.h update dirent.in.h dirent.in-h\r
269If Exist errno.in.h update errno.in.h errno.in-h\r
b3cf17f6 270If Exist execinfo.in.h update execinfo.in.h execinfo.in-h\r
bf6b4923 271If Exist fcntl.in.h update fcntl.in.h fcntl.in-h\r
9d9d12cd 272If Exist getopt.in.h update getopt.in.h getopt.in-h\r
bf6b4923
EZ
273If Exist inttypes.in.h update inttypes.in.h inttypes.in-h\r
274If Exist stdarg.in.h update stdarg.in.h stdarg.in-h\r
e32a5799 275If Exist stdalign.in.h update stdalign.in.h stdalign.in-h\r
9d9d12cd 276If Exist stdbool.in.h update stdbool.in.h stdbool.in-h\r
31bed486 277If Exist signal.in.h update signal.in.h signal.in-h\r
42a53d84 278If Exist stdalign.in.h update stdalign.in.h stdalign.in-h\r
945d8b44
EZ
279If Exist stddef.in.h update stddef.in.h stddef.in-h\r
280If Exist stdint.in.h update stdint.in.h stdint.in-h\r
07da4b3c 281If Exist stdio.in.h update stdio.in.h stdio.in-h\r
9d9d12cd 282If Exist stdlib.in.h update stdlib.in.h stdlib.in-h\r
bf6b4923
EZ
283If Exist string.in.h update string.in.h string.in-h\r
284If Exist sys_select.in.h update sys_select.in.h sys_select.in-h\r
945d8b44 285If Exist sys_stat.in.h update sys_stat.in.h sys_stat.in-h\r
42a53d84 286If Exist sys_types.in.h update sys_types.in.h sys_types.in-h\r
bf6b4923 287If Exist sys_time.in.h update sys_time.in.h sys_time.in-h\r
9d9d12cd
EZ
288If Exist time.in.h update time.in.h time.in-h\r
289If Exist unistd.in.h update unistd.in.h unistd.in-h\r
07f3add9 290If Exist Makefile.in sed -f ../msdos/sedlibcf.inp < Makefile.in > makefile.tmp\r
4dde498b 291If Exist ..\msdos\autogen\Makefile.in sed -f ../msdos/sedlibcf.inp < ..\msdos\autogen\Makefile.in > makefile.tmp\r
9d9d12cd
EZ
292sed -f ../msdos/sedlibmk.inp < makefile.tmp > Makefile\r
293rm -f makefile.tmp\r
945d8b44 294Rem Create .Po files for new files in lib/\r
219463da 295If Not Exist deps\stamp mkdir deps\r
945d8b44
EZ
296for %%f in (*.c) do @call ..\msdos\depfiles.bat %%f\r
297echo deps-stamp > deps\stamp\r
9d9d12cd
EZ
298cd ..\r
299rem ----------------------------------------------------------------------\r
067d23c9
KY
300Echo Configuring the lisp directory...\r
301cd lisp\r
302If Exist gnus\.dir-locals.el update gnus/.dir-locals.el gnus/_dir-locals.el\r
303sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile\r
304cd ..\r
305rem ----------------------------------------------------------------------\r
067d23c9
KY
306Echo Configuring the leim directory...\r
307cd leim\r
308sed -f ../msdos/sedleim.inp < Makefile.in > Makefile\r
309cd ..\r
310rem ----------------------------------------------------------------------\r
bf6b4923
EZ
311If Not Exist admin\unidata goto noadmin\r
312Echo Configuring the admin/unidata directory...\r
313cd admin\unidata\r
314sed -f ../../msdos/sedadmin.inp < Makefile.in > Makefile\r
315cd ..\..\r
316:noadmin\r
317rem ----------------------------------------------------------------------\r
067d23c9
KY
318Echo Configuring the main directory...\r
319If Exist .dir-locals.el update .dir-locals.el _dir-locals.el\r
320If Exist src\.dbxinit update src/.dbxinit src/_dbxinit\r
321Echo Looking for the GDB init file...\r
322If Exist src\.gdbinit update src/.gdbinit src/_gdbinit\r
323If Exist src\_gdbinit goto gdbinitOk\r
324Echo ERROR:\r
325Echo I cannot find the GDB init file. It was called ".gdbinit" in\r
326Echo the Emacs distribution, but was probably renamed to some other\r
327Echo name without the leading dot when you untarred the archive.\r
328Echo It should be in the "src/" subdirectory. Please make sure this\r
329Echo file exists and is called "_gdbinit" with a leading underscore.\r
330Echo Then run CONFIG.BAT again with the same arguments you did now.\r
331goto End\r
332:gdbinitOk\r
333Echo Looking for the GDB init file...found\r
31bed486 334rem GNUMakefile is not appropriate for MS-DOS so move it out of the way\r
7cc013b5 335If Exist GNUmakefile mv -f GNUmakefile GNUmakefile.unix\r
067d23c9
KY
336copy msdos\mainmake.v2 Makefile >nul\r
337rem ----------------------------------------------------------------------\r
338goto End\r
339:SmallEnv\r
340echo Your environment size is too small. Please enlarge it and run me again.\r
341echo For example, type "command.com /e:2048" to have 2048 bytes available.\r
342set $foo$=\r
343:end\r
344set X11=\r
345set nodebug=\r
346set djgpp_ver=\r
347set sys_malloc=\r
348set libxml=\r