config.bat 9.31 KB
Newer Older
Richard M. Stallman's avatar
Richard M. Stallman committed
1 2 3
@echo off
rem   ----------------------------------------------------------------------
rem   Configuration script for MSDOS
Eli Zaretskii's avatar
Eli Zaretskii committed
4 5
rem   Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001
rem   Free Software Foundation, Inc.
6

Richard M. Stallman's avatar
Richard M. Stallman committed
7 8 9 10 11 12 13 14 15 16 17 18 19
rem   This file is part of GNU Emacs.

rem   GNU Emacs is free software; you can redistribute it and/or modify
rem   it under the terms of the GNU General Public License as published by
rem   the Free Software Foundation; either version 2, or (at your option)
rem   any later version.

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
Karl Heuer's avatar
Karl Heuer committed
20 21 22
rem   along with GNU Emacs; see the file COPYING.  If not, write to the
rem   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
rem   Boston, MA 02111-1307, USA.
Richard M. Stallman's avatar
Richard M. Stallman committed
23 24 25
rem   ----------------------------------------------------------------------
rem   YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:
rem
26
rem   + msdos version 3 or better.
27
rem   + djgpp version 1.12maint1 or later (version 2.0 or later recommended).
28 29
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
30
rem     line length limit.  The make that comes with djgpp does work.
31 32
rem   + rm and mv (from GNU file utilities).
rem   + sed (you can use the port that comes with DJGPP).
33
rem
34
rem   You should be able to get all the above utilities from any SimTel
35 36 37
rem   repository, e.g. ftp.simtel.net, in the directory
rem   "pub/simtelnet/gnu/djgpp/v2gnu".  As usual, please use your local
rem   mirroring site to reduce trans-Atlantic traffic.
Richard M. Stallman's avatar
Richard M. Stallman committed
38
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
39 40
set X11=
set nodebug=
41
set djgpp_ver=
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 53
if "%1" == "msdos" goto msdos
:usage
Morten Welinder's avatar
Morten Welinder committed
54 55
echo Usage: config [--with-x] [--no-debug] msdos
echo [Read the script before you run it.]
Richard M. Stallman's avatar
Richard M. Stallman committed
56 57
goto end
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
58 59 60 61
:withx
set X11=Y
shift
goto again
62
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
63 64 65 66
:nodebug
set nodebug=Y
shift
goto again
Richard M. Stallman's avatar
Richard M. Stallman committed
67
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
68
:msdos
69 70
Echo Checking whether 'sed' is available...
sed -e "w junk.$$$" <Nul
Morten Welinder's avatar
Morten Welinder committed
71
If Exist junk.$$$ Goto sedOk
72
Echo To configure 'Emacs' you need to have 'sed'!
Morten Welinder's avatar
Morten Welinder committed
73 74
Goto End
:sedOk
75
Echo Checking whether 'rm' is available...
Morten Welinder's avatar
Morten Welinder committed
76 77
rm -f junk.$$$
If Not Exist junk.$$$ Goto rmOk
78
Echo To configure 'Emacs' you need to have 'rm'!
Morten Welinder's avatar
Morten Welinder committed
79 80
Goto End
:rmOk
81
Echo Checking whether 'mv' is available...
Morten Welinder's avatar
Morten Welinder committed
82 83
rm -f junk.1 junk.2
echo foo >junk.1
84
mv junk.1 ./junk.2
Morten Welinder's avatar
Morten Welinder committed
85
If Exist junk.2 Goto mvOk
86
Echo To configure 'Emacs' you need to have 'mv'!
Morten Welinder's avatar
Morten Welinder committed
87 88 89 90
rm -f junk.1
Goto End
:mvOk
rm -f junk.2
91
Echo Checking whether 'gcc' is available...
Morten Welinder's avatar
Morten Welinder committed
92 93 94
echo main(){} >junk.c
gcc -c junk.c
if exist junk.o goto gccOk
95
Echo To configure 'Emacs' you need to have 'gcc'!
Morten Welinder's avatar
Morten Welinder committed
96 97 98
rm -f junk.c
Goto End
:gccOk
99
rm -f junk.c junk.o junk junk.exe
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
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
115 116
gcc -o junk junk.c
if not exist junk.exe coff2exe junk
117 118 119 120 121 122
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
123 124
set djgpp_ver=1
If ErrorLevel 20 set djgpp_ver=2
125
rm -f junk.c junk junk.exe
126 127 128 129 130 131 132 133 134 135 136 137 138
rem DJECHO is used by the top-level Makefile
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.$$$
139
Echo Configuring for DJGPP Version %DJGPP_VER% ...
Morten Welinder's avatar
Morten Welinder committed
140
Rem   ----------------------------------------------------------------------
Richard M. Stallman's avatar
Richard M. Stallman committed
141 142 143
Echo Configuring the source directory...
cd src

144 145 146 147
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
148 149

rem   Create "config.h"
Morten Welinder's avatar
Morten Welinder committed
150
rm -f config.h2 config.tmp
151
sed -e '' config.in > config.tmp
152
if "%X11%" == "" goto src4
153
sed -f ../msdos/sed2x.inp <config.in >config.tmp
154
:src4
Morten Welinder's avatar
Morten Welinder committed
155 156 157
sed -f ../msdos/sed2.inp <config.tmp >config.h2
update config.h2 config.h >nul
rm -f config.tmp config.h2
Richard M. Stallman's avatar
Richard M. Stallman committed
158 159 160 161

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

162
rem   Create "makefile" from "makefile.in".
163
rm -f Makefile junk.c
164
sed -e "1,/== start of cpp stuff ==/s@^# .*$@@" <Makefile.in >junk.c
165
If "%DJGPP_VER%" == "1" Goto mfV1
166
gcc -E -traditional junk.c | sed -f ../msdos/sed1v2.inp >Makefile
167 168
goto mfDone
:mfV1
169
gcc -E -traditional junk.c | sed -f ../msdos/sed1.inp >Makefile
170
:mfDone
171
rm -f junk.c
172

Morten Welinder's avatar
Morten Welinder committed
173
if "%X11%" == "" goto src5
174 175
mv Makefile makefile.tmp
sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile
Morten Welinder's avatar
Morten Welinder committed
176 177 178 179
rm -f makefile.tmp
:src5

if "%nodebug%" == "" goto src6
180
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
181
sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile
182
rm -f makefile.tmp
Morten Welinder's avatar
Morten Welinder committed
183
:src6
Richard M. Stallman's avatar
Richard M. Stallman committed
184 185 186 187 188
cd ..
rem   ----------------------------------------------------------------------
Echo Configuring the library source directory...
cd lib-src
rem   Create "makefile" from "makefile.in".
189
sed -e "1,/== start of cpp stuff ==/s@^# .*$@@" <Makefile.in >junk.c
190
gcc -E -traditional -I. -I../src junk.c | sed -e "s/^ /	/" -e "/^#/d" -e "/^[ 	]*$/d" >makefile.new
191
If "%DJGPP_VER%" == "2" goto libsrc-v2
192
sed -f ../msdos/sed3.inp <makefile.new >Makefile
193 194
Goto libsrc2
:libsrc-v2
195
sed -f ../msdos/sed3v2.inp <makefile.new >Makefile
196
:libsrc2
Morten Welinder's avatar
Morten Welinder committed
197
rm -f makefile.new junk.c
198
if "%nodebug%" == "" goto libsrc3
199
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
200
sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile
201 202
rm -f makefile.tmp
:libsrc3
Morten Welinder's avatar
Morten Welinder committed
203 204 205 206 207
cd ..
rem   ----------------------------------------------------------------------
if "%X11%" == "" goto oldx1
Echo Configuring the oldxmenu directory...
cd oldxmenu
208
sed -f ../msdos/sed5x.inp <Makefile.in >Makefile
Morten Welinder's avatar
Morten Welinder committed
209
if "%nodebug%" == "" goto oldx2
210
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
211
mv -f makefile.tmp Makefile
Morten Welinder's avatar
Morten Welinder committed
212
:oldx2
Richard M. Stallman's avatar
Richard M. Stallman committed
213
cd ..
Morten Welinder's avatar
Morten Welinder committed
214
:oldx1
Richard M. Stallman's avatar
Richard M. Stallman committed
215
rem   ----------------------------------------------------------------------
216 217 218 219 220
Echo Configuring the manual directory...
cd man
sed -f ../msdos/sed6.inp < Makefile.in > Makefile
cd ..
rem   ----------------------------------------------------------------------
Eli Zaretskii's avatar
Eli Zaretskii committed
221 222 223 224 225
Echo Configuring the ELisp manual directory...
cd lispref
sed -f ../msdos/sed6.inp < Makefile.in > Makefile
cd ..
rem   ----------------------------------------------------------------------
226 227 228 229 230
Echo Configuring the lisp directory...
cd lisp
sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile
cd ..
rem   ----------------------------------------------------------------------
Eli Zaretskii's avatar
Eli Zaretskii committed
231 232 233 234 235 236 237
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
238
Echo Configuring the main directory...
239 240
If "%DJGPP_VER%" == "1" goto mainv1
Echo Looking for the GDB init file...
241
If Exist src\.gdbinit update src/.gdbinit src/_gdbinit
242 243 244 245 246 247 248 249 250 251 252
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
253
copy msdos\mainmake.v2 Makefile >nul
254
:mainv1
255
If "%DJGPP_VER%" == "1" copy msdos\mainmake Makefile >nul
Richard M. Stallman's avatar
Richard M. Stallman committed
256
rem   ----------------------------------------------------------------------
257 258 259 260 261
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
262
:end
263
set X11=
Morten Welinder's avatar
Morten Welinder committed
264
set nodebug=
265
set djgpp_ver=