config.bat 11.6 KB
Newer Older
Richard M. Stallman's avatar
Richard M. Stallman committed
1 2 3
@echo off
rem   ----------------------------------------------------------------------
rem   Configuration script for MSDOS
Glenn Morris's avatar
Glenn Morris committed
4
rem   Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003
Glenn Morris's avatar
Glenn Morris committed
5
rem   2004, 2005, 2006, 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
6

Richard M. Stallman's avatar
Richard M. Stallman committed
7 8
rem   This file is part of GNU Emacs.

9
rem   GNU Emacs is free software: you can redistribute it and/or modify
Richard M. Stallman's avatar
Richard M. Stallman committed
10
rem   it under the terms of the GNU General Public License as published by
11 12
rem   the Free Software Foundation, either version 3 of the License, or
rem   (at your option) any later version.
Richard M. Stallman's avatar
Richard M. Stallman committed
13 14 15 16 17 18 19

rem   GNU Emacs is distributed in the hope that it will be useful,
rem   but WITHOUT ANY WARRANTY; without even the implied warranty of
rem   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
rem   GNU General Public License for more details.

rem   You should have received a copy of the GNU General Public License
20
rem   along with GNU Emacs.  If not, see http://www.gnu.org/licenses/.
21

Richard M. Stallman's avatar
Richard M. Stallman committed
22 23 24
rem   ----------------------------------------------------------------------
rem   YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:
rem
25
rem   + msdos version 3 or better.
26
rem   + DJGPP version 2.0 or later (version 2.03 or later recommended).
27 28
rem   + make utility that allows breaking of the 128 chars limit on
rem     command lines.  ndmake (as of version 4.5) won't work due to a
29 30 31
rem     line length limit.  The make that comes with DJGPP does work (and is
rem     recommended).
rem   + rm, mv, and cp (from GNU file utilities).
32
rem   + sed (you can use the port that comes with DJGPP).
33
rem
Eli Zaretskii's avatar
Eli Zaretskii committed
34 35
rem   You should be able to get all the above utilities from the DJGPP FTP
rem   site, ftp.delorie.com, in the directory "pub/djgpp/current/v2gnu".
Richard M. Stallman's avatar
Richard M. Stallman committed
36
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
37 38
set X11=
set nodebug=
39
set djgpp_ver=
40
set sys_malloc=
41
set libxml=
42 43 44 45 46 47
if "%1" == "" goto usage
rem   ----------------------------------------------------------------------
rem   See if their environment is large enough.  We need 28 bytes.
set $foo$=789012345678901234567
if not "%$foo$%" == "789012345678901234567" goto SmallEnv
set $foo$=
Morten Welinder's avatar
Morten Welinder committed
48 49 50 51
:again
if "%1" == "" goto usage
if "%1" == "--with-x" goto withx
if "%1" == "--no-debug" goto nodebug
Richard M. Stallman's avatar
Richard M. Stallman committed
52
if "%1" == "msdos" goto msdos
53
if "%1" == "--with-system-malloc" goto sysmalloc
Richard M. Stallman's avatar
Richard M. Stallman committed
54
:usage
55
echo Usage: config [--no-debug] [--with-system-malloc] [--with-x] msdos
Morten Welinder's avatar
Morten Welinder committed
56
echo [Read the script before you run it.]
Richard M. Stallman's avatar
Richard M. Stallman committed
57 58
goto end
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
59 60 61 62
:withx
set X11=Y
shift
goto again
63
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
64 65 66 67
:nodebug
set nodebug=Y
shift
goto again
Richard M. Stallman's avatar
Richard M. Stallman committed
68
rem   ----------------------------------------------------------------------
69 70 71 72 73
:sysmalloc
set sys_malloc=Y
shift
goto again
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
74
:msdos
75 76
Echo Checking whether 'sed' is available...
sed -e "w junk.$$$" <Nul
Morten Welinder's avatar
Morten Welinder committed
77
If Exist junk.$$$ Goto sedOk
78
Echo To configure 'Emacs' you need to have 'sed'!
Morten Welinder's avatar
Morten Welinder committed
79 80
Goto End
:sedOk
81
Echo Checking whether 'rm' is available...
Morten Welinder's avatar
Morten Welinder committed
82 83
rm -f junk.$$$
If Not Exist junk.$$$ Goto rmOk
84
Echo To configure 'Emacs' you need to have 'rm'!
Morten Welinder's avatar
Morten Welinder committed
85 86
Goto End
:rmOk
87
Echo Checking whether 'mv' is available...
Morten Welinder's avatar
Morten Welinder committed
88 89
rm -f junk.1 junk.2
echo foo >junk.1
90
mv junk.1 ./junk.2
Morten Welinder's avatar
Morten Welinder committed
91
If Exist junk.2 Goto mvOk
92
Echo To configure 'Emacs' you need to have 'mv'!
Morten Welinder's avatar
Morten Welinder committed
93 94 95 96
rm -f junk.1
Goto End
:mvOk
rm -f junk.2
97
Echo Checking whether 'gcc' is available...
Morten Welinder's avatar
Morten Welinder committed
98 99 100
echo main(){} >junk.c
gcc -c junk.c
if exist junk.o goto gccOk
101
Echo To configure 'Emacs' you need to have 'gcc'!
Morten Welinder's avatar
Morten Welinder committed
102 103 104
rm -f junk.c
Goto End
:gccOk
105
rm -f junk.c junk.o junk junk.exe
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
Echo Checking what version of DJGPP is installed...
If Not "%DJGPP%" == "" goto djgppOk
Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!
Goto End
:djgppOk
echo int main()           >junk.c
echo #ifdef __DJGPP__    >>junk.c
echo {return (__DJGPP__)*10;} >>junk.c
echo #else               >>junk.c
echo #ifdef __GO32__     >>junk.c
echo {return 10;}         >>junk.c
echo #else               >>junk.c
echo {return 0;}         >>junk.c
echo #endif              >>junk.c
echo #endif              >>junk.c
121 122
gcc -o junk junk.c
if not exist junk.exe coff2exe junk
123 124 125 126 127 128
junk
If ErrorLevel 10 Goto go32Ok
rm -f junk.c junk junk.exe
Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!
Goto End
:go32Ok
129 130 131
set djgpp_ver=2
If Not ErrorLevel 20 Echo To build 'Emacs' you need DJGPP v2.0 or later!
If Not ErrorLevel 20 Goto End
132
rm -f junk.c junk junk.exe
133
rem DJECHO is used by the top-level Makefile in the v2.x build
134 135 136 137 138 139 140 141 142 143 144 145
Echo Checking whether 'djecho' is available...
redir -o Nul -eo djecho -o junk.$$$ foo
If Exist junk.$$$ Goto djechoOk
Echo To build 'Emacs' you need the 'djecho.exe' program!
Echo 'djecho.exe' is part of 'djdevNNN.zip' basic DJGPP development kit.
Echo Versions of DJGPP before 2.02 called this program 'echo.exe'.
Echo Either unpack 'djecho.exe' from the 'djdevNNN.zip' archive,
Echo or, if you have 'echo.exe', copy it to 'djecho.exe'.
Echo Then run CONFIG.BAT again with the same arguments you did now.
Goto End
:djechoOk
rm -f junk.$$$
146
Echo Configuring for DJGPP Version %DJGPP_VER% ...
Morten Welinder's avatar
Morten Welinder committed
147
Rem   ----------------------------------------------------------------------
Richard M. Stallman's avatar
Richard M. Stallman committed
148 149 150
Echo Configuring the source directory...
cd src

151 152 153 154
rem   Create "epaths.h"
sed -f ../msdos/sed4.inp <epaths.in >epaths.tmp
update epaths.tmp epaths.h >nul
rm -f epaths.tmp
Richard M. Stallman's avatar
Richard M. Stallman committed
155 156

rem   Create "config.h"
Morten Welinder's avatar
Morten Welinder committed
157
rm -f config.h2 config.tmp
158
sed -e '' config.in > config.tmp
159
if "%X11%" == "" goto src4
160
sed -f ../msdos/sed2x.inp <config.in >config.tmp
161
:src4
Eli Zaretskii's avatar
Eli Zaretskii committed
162
sed -f ../msdos/sed2v2.inp <config.tmp >config.h2
163 164 165
Rem See if DECL_ALIGN can be supported with this GCC
rm -f junk.c junk.o junk junk.exe
echo struct { int i; char *p; } __attribute__((__aligned__(8))) foo;  >junk.c
166 167 168
rem Two percent signs because it is a special character for COMMAND.COM/CMD
rem Filter thru Sed because "&" is special for CMD.EXE
echo int main(void) { return (unsigned long)"&"foo %% 8; } | sed "s/.&./\&/"         >>junk.c
169 170 171 172 173 174 175 176
gcc -o junk junk.c
if not exist junk.exe coff2exe junk
junk
If Not ErrorLevel 1 Goto alignOk
Echo WARNING: Your GCC does not support 8-byte aligned variables.
Echo WARNING: Therefore Emacs cannot support buffers larger than 128MB.
rem The following line disables DECL_ALIGN which in turn disables USE_LSB_TAG
rem For details see lisp.h where it defines USE_LSB_TAG
177
echo #define NO_DECL_ALIGN >>config.h2
178
:alignOk
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
Rem See if they have libxml2 later than v2.2.0 installed
Echo Checking whether libxml2 v2.2.1 or later is installed ...
rm -f junk.c junk.o junk junk.exe
rem Use djecho here because we need to quote brackets
djecho "#include <libxml/xmlversion.h>"             >junk.c
djecho "int main()"                                 >>junk.c
djecho "{return (LIBXML_VERSION > 20200 ? 0 : 1);}" >>junk.c
redir -o Nul -eo gcc -I/dev/env/DJDIR/include/libxml2 -o junk junk.c
if not exist junk Goto xmlDone
if not exist junk.exe coff2exe junk
junk
If ErrorLevel 1 Goto xmlDone
Echo Configuring with libxml2 ...
sed -e "/#undef HAVE_LIBXML2/s/^.*$/#define HAVE_LIBXML2 1/" <config.h2 >config.h3
mv config.h3 config.h2
set libxml=1
:xmlDone
rm -f junk.c junk junk.exe
197 198 199 200 201 202 203
Rem See if they requested a SYSTEM_MALLOC build
if "%sys_malloc%" == "" Goto cfgDone
rm -f config.tmp
ren config.h2 config.tmp
sed -f ../msdos/sedalloc.inp <config.tmp >config.h2

:cfgDone
204
rm -f junk.c junk junk.exe
Morten Welinder's avatar
Morten Welinder committed
205 206
update config.h2 config.h >nul
rm -f config.tmp config.h2
Richard M. Stallman's avatar
Richard M. Stallman committed
207 208 209 210

rem   On my system dir.h gets in the way.  It's a VMS file so who cares.
if exist dir.h ren dir.h vmsdir.h

211
rem   Create "makefile" from "makefile.in".
212
rm -f Makefile makefile.tmp
213
copy Makefile.in+deps.mk makefile.tmp
214 215
sed -f ../msdos/sed1v2.inp <makefile.tmp >Makefile
rm -f makefile.tmp
216

Morten Welinder's avatar
Morten Welinder committed
217
if "%X11%" == "" goto src5
218 219
mv Makefile makefile.tmp
sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile
Morten Welinder's avatar
Morten Welinder committed
220 221 222
rm -f makefile.tmp
:src5

223 224
if "%sys_malloc%" == "" goto src5a
sed -e "/^GMALLOC_OBJ *=/s/gmalloc.o//" <Makefile >makefile.tmp
225 226 227
sed -e "/^VMLIMIT_OBJ *=/s/vm-limit.o//" <makefile.tmp >makefile.tmp2
sed -e "/^RALLOC_OBJ *=/s/ralloc.o//" <makefile.tmp2 >Makefile
rm -f makefile.tmp makefile.tmp2
228 229
:src5a

Morten Welinder's avatar
Morten Welinder committed
230
if "%nodebug%" == "" goto src6
231
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
232
sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile
233
rm -f makefile.tmp
Morten Welinder's avatar
Morten Welinder committed
234
:src6
235 236 237 238 239 240

if "%libxml%" == "" goto src7
sed -e "/^LIBXML2_LIBS *=/s/=/= -lxml2 -lz -liconv/" <Makefile >makefile.tmp
sed -e "/^LIBXML2_CFLAGS *=/s|=|= -I/dev/env/DJDIR/include/libxml2|" <makefile.tmp >Makefile
rm -f makefile.tmp
:src7
Richard M. Stallman's avatar
Richard M. Stallman committed
241 242 243 244
cd ..
rem   ----------------------------------------------------------------------
Echo Configuring the library source directory...
cd lib-src
245
sed -f ../msdos/sed3v2.inp <Makefile.in >Makefile
246 247 248 249 250
if "%X11%" == "" goto libsrc2a
mv Makefile makefile.tmp
sed -f ../msdos/sed3x.inp <makefile.tmp >Makefile
rm -f makefile.tmp
:libsrc2a
251
if "%nodebug%" == "" goto libsrc3
252
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
253
sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile
254 255
rm -f makefile.tmp
:libsrc3
Morten Welinder's avatar
Morten Welinder committed
256 257 258 259 260
cd ..
rem   ----------------------------------------------------------------------
if "%X11%" == "" goto oldx1
Echo Configuring the oldxmenu directory...
cd oldxmenu
261
sed -f ../msdos/sed5x.inp <Makefile.in >Makefile
Morten Welinder's avatar
Morten Welinder committed
262
if "%nodebug%" == "" goto oldx2
263
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
264
mv -f makefile.tmp Makefile
Morten Welinder's avatar
Morten Welinder committed
265
:oldx2
Richard M. Stallman's avatar
Richard M. Stallman committed
266
cd ..
Morten Welinder's avatar
Morten Welinder committed
267
:oldx1
Richard M. Stallman's avatar
Richard M. Stallman committed
268
rem   ----------------------------------------------------------------------
269
Echo Configuring the doc directory, expect one "File not found" message...
270 271
cd doc
Rem The two variants for lispintro below is for when the shell
272
Rem supports long file names but DJGPP does not
273
for %%d in (emacs lispref lispintro lispintr misc) do sed -f ../msdos/sed6.inp < %%d\Makefile.in > %%d\Makefile
274 275
cd ..
rem   ----------------------------------------------------------------------
276 277
Echo Configuring the lisp directory...
cd lisp
278
If Exist gnus\.dir-locals.el update gnus/.dir-locals.el gnus/_dir-locals.el
279 280 281
sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile
cd ..
rem   ----------------------------------------------------------------------
Eli Zaretskii's avatar
Eli Zaretskii committed
282 283 284 285 286 287 288
If not Exist leim\quail\latin-pre.el goto maindir
Echo Configuring the leim directory...
cd leim
sed -f ../msdos/sedleim.inp < Makefile.in > Makefile
cd ..
rem   ----------------------------------------------------------------------
:maindir
Richard M. Stallman's avatar
Richard M. Stallman committed
289
Echo Configuring the main directory...
290
If Exist .dir-locals.el update .dir-locals.el _dir-locals.el
Eli Zaretskii's avatar
Eli Zaretskii committed
291
If Exist src\.dbxinit update src/.dbxinit src/_dbxinit
292
Echo Looking for the GDB init file...
293
If Exist src\.gdbinit update src/.gdbinit src/_gdbinit
294 295 296 297 298 299 300 301 302 303 304
If Exist src\_gdbinit goto gdbinitOk
Echo ERROR:
Echo I cannot find the GDB init file.  It was called ".gdbinit" in
Echo the Emacs distribution, but was probably renamed to some other
Echo name without the leading dot when you untarred the archive.
Echo It should be in the "src/" subdirectory.  Please make sure this
Echo file exists and is called "_gdbinit" with a leading underscore.
Echo Then run CONFIG.BAT again with the same arguments you did now.
goto End
:gdbinitOk
Echo Looking for the GDB init file...found
305
copy msdos\mainmake.v2 Makefile >nul
Richard M. Stallman's avatar
Richard M. Stallman committed
306
rem   ----------------------------------------------------------------------
307 308 309 310 311
goto End
:SmallEnv
echo Your environment size is too small.  Please enlarge it and run me again.
echo For example, type "command.com /e:2048" to have 2048 bytes available.
set $foo$=
Richard M. Stallman's avatar
Richard M. Stallman committed
312
:end
313
set X11=
Morten Welinder's avatar
Morten Welinder committed
314
set nodebug=
315
set djgpp_ver=
316
set sys_malloc=
317
set libxml=
318 319 320 321

goto skipArchTag
   arch-tag: 2d2fed23-4dc6-4006-a2e4-49daf0031f33
:skipArchTag