Update URLs in the comments.
[bpt/emacs.git] / config.bat
1 @echo off
2 rem ----------------------------------------------------------------------
3 rem Configuration script for MSDOS
4 rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2004
5 rem Free Software Foundation, Inc.
6
7 rem This file is part of GNU Emacs.
8
9 rem GNU Emacs is free software; you can redistribute it and/or modify
10 rem it under the terms of the GNU General Public License as published by
11 rem the Free Software Foundation; either version 2, or (at your option)
12 rem any later version.
13
14 rem GNU Emacs is distributed in the hope that it will be useful,
15 rem but WITHOUT ANY WARRANTY; without even the implied warranty of
16 rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 rem GNU General Public License for more details.
18
19 rem You should have received a copy of the GNU General Public License
20 rem along with GNU Emacs; see the file COPYING. If not, write to the
21 rem Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22 rem Boston, MA 02111-1307, USA.
23 rem ----------------------------------------------------------------------
24 rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:
25 rem
26 rem + msdos version 3 or better.
27 rem + DJGPP version 1.12maint1 or later (version 2.03 or later recommended).
28 rem + make utility that allows breaking of the 128 chars limit on
29 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 rem + rm and mv (from GNU file utilities).
32 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 the DJGPP FTP
35 rem site, ftp.delorie.com, in the directory "pub/djgpp/current/v2gnu".
36 rem ----------------------------------------------------------------------
37 set X11=
38 set nodebug=
39 set djgpp_ver=
40 if "%1" == "" goto usage
41 rem ----------------------------------------------------------------------
42 rem See if their environment is large enough. We need 28 bytes.
43 set $foo$=789012345678901234567
44 if not "%$foo$%" == "789012345678901234567" goto SmallEnv
45 set $foo$=
46 :again
47 if "%1" == "" goto usage
48 if "%1" == "--with-x" goto withx
49 if "%1" == "--no-debug" goto nodebug
50 if "%1" == "msdos" goto msdos
51 :usage
52 echo Usage: config [--with-x] [--no-debug] msdos
53 echo [Read the script before you run it.]
54 goto end
55 rem ----------------------------------------------------------------------
56 :withx
57 set X11=Y
58 shift
59 goto again
60 rem ----------------------------------------------------------------------
61 :nodebug
62 set nodebug=Y
63 shift
64 goto again
65 rem ----------------------------------------------------------------------
66 :msdos
67 Echo Checking whether 'sed' is available...
68 sed -e "w junk.$$$" <Nul
69 If Exist junk.$$$ Goto sedOk
70 Echo To configure 'Emacs' you need to have 'sed'!
71 Goto End
72 :sedOk
73 Echo Checking whether 'rm' is available...
74 rm -f junk.$$$
75 If Not Exist junk.$$$ Goto rmOk
76 Echo To configure 'Emacs' you need to have 'rm'!
77 Goto End
78 :rmOk
79 Echo Checking whether 'mv' is available...
80 rm -f junk.1 junk.2
81 echo foo >junk.1
82 mv junk.1 ./junk.2
83 If Exist junk.2 Goto mvOk
84 Echo To configure 'Emacs' you need to have 'mv'!
85 rm -f junk.1
86 Goto End
87 :mvOk
88 rm -f junk.2
89 Echo Checking whether 'gcc' is available...
90 echo main(){} >junk.c
91 gcc -c junk.c
92 if exist junk.o goto gccOk
93 Echo To configure 'Emacs' you need to have 'gcc'!
94 rm -f junk.c
95 Goto End
96 :gccOk
97 rm -f junk.c junk.o junk junk.exe
98 Echo Checking what version of DJGPP is installed...
99 If Not "%DJGPP%" == "" goto djgppOk
100 Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!
101 Goto End
102 :djgppOk
103 echo int main() >junk.c
104 echo #ifdef __DJGPP__ >>junk.c
105 echo {return (__DJGPP__)*10;} >>junk.c
106 echo #else >>junk.c
107 echo #ifdef __GO32__ >>junk.c
108 echo {return 10;} >>junk.c
109 echo #else >>junk.c
110 echo {return 0;} >>junk.c
111 echo #endif >>junk.c
112 echo #endif >>junk.c
113 gcc -o junk junk.c
114 if not exist junk.exe coff2exe junk
115 junk
116 If ErrorLevel 10 Goto go32Ok
117 rm -f junk.c junk junk.exe
118 Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!
119 Goto End
120 :go32Ok
121 set djgpp_ver=1
122 If ErrorLevel 20 set djgpp_ver=2
123 rm -f junk.c junk junk.exe
124 rem DJECHO is used by the top-level Makefile
125 Echo Checking whether 'djecho' is available...
126 redir -o Nul -eo djecho -o junk.$$$ foo
127 If Exist junk.$$$ Goto djechoOk
128 Echo To build 'Emacs' you need the 'djecho.exe' program!
129 Echo 'djecho.exe' is part of 'djdevNNN.zip' basic DJGPP development kit.
130 Echo Versions of DJGPP before 2.02 called this program 'echo.exe'.
131 Echo Either unpack 'djecho.exe' from the 'djdevNNN.zip' archive,
132 Echo or, if you have 'echo.exe', copy it to 'djecho.exe'.
133 Echo Then run CONFIG.BAT again with the same arguments you did now.
134 Goto End
135 :djechoOk
136 rm -f junk.$$$
137 Echo Configuring for DJGPP Version %DJGPP_VER% ...
138 Rem ----------------------------------------------------------------------
139 Echo Configuring the source directory...
140 cd src
141
142 rem Create "epaths.h"
143 sed -f ../msdos/sed4.inp <epaths.in >epaths.tmp
144 update epaths.tmp epaths.h >nul
145 rm -f epaths.tmp
146
147 rem Create "config.h"
148 rm -f config.h2 config.tmp
149 sed -e '' config.in > config.tmp
150 if "%X11%" == "" goto src4
151 sed -f ../msdos/sed2x.inp <config.in >config.tmp
152 :src4
153 if "%DJGPP_VER%" == "2" Goto src41
154 sed -f ../msdos/sed2.inp <config.tmp >config.h2
155 goto src42
156 :src41
157 sed -f ../msdos/sed2v2.inp <config.tmp >config.h2
158 :src42
159 update config.h2 config.h >nul
160 rm -f config.tmp config.h2
161
162 rem On my system dir.h gets in the way. It's a VMS file so who cares.
163 if exist dir.h ren dir.h vmsdir.h
164
165 rem Create "makefile" from "makefile.in".
166 rm -f Makefile junk.c
167 sed -e "1,/== start of cpp stuff ==/s@^# .*$@@" <Makefile.in >junk.c
168 If "%DJGPP_VER%" == "1" Goto mfV1
169 gcc -E -traditional junk.c | sed -f ../msdos/sed1v2.inp >Makefile
170 goto mfDone
171 :mfV1
172 gcc -E -traditional junk.c | sed -f ../msdos/sed1.inp >Makefile
173 :mfDone
174 rm -f junk.c
175
176 if "%X11%" == "" goto src5
177 mv Makefile makefile.tmp
178 sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile
179 rm -f makefile.tmp
180 :src5
181
182 if "%nodebug%" == "" goto src6
183 sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
184 sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile
185 rm -f makefile.tmp
186 :src6
187 cd ..
188 rem ----------------------------------------------------------------------
189 Echo Configuring the library source directory...
190 cd lib-src
191 rem Create "makefile" from "makefile.in".
192 sed -e "1,/== start of cpp stuff ==/s@^#[ ].*$@@" <Makefile.in >junk.c
193 gcc -E -traditional -I. -I../src junk.c | sed -e "s/^ / /" -e "/^#/d" -e "/^[ \f]*$/d" >makefile.new
194 If "%DJGPP_VER%" == "2" goto libsrc-v2
195 sed -f ../msdos/sed3.inp <makefile.new >Makefile
196 Goto libsrc2
197 :libsrc-v2
198 sed -f ../msdos/sed3v2.inp <makefile.new >Makefile
199 :libsrc2
200 rm -f makefile.new junk.c
201 if "%nodebug%" == "" goto libsrc3
202 sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
203 sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile
204 rm -f makefile.tmp
205 :libsrc3
206 cd ..
207 rem ----------------------------------------------------------------------
208 if "%X11%" == "" goto oldx1
209 Echo Configuring the oldxmenu directory...
210 cd oldxmenu
211 sed -f ../msdos/sed5x.inp <Makefile.in >Makefile
212 if "%nodebug%" == "" goto oldx2
213 sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
214 mv -f makefile.tmp Makefile
215 :oldx2
216 cd ..
217 :oldx1
218 rem ----------------------------------------------------------------------
219 Echo Configuring the manual directory...
220 cd man
221 sed -f ../msdos/sed6.inp < Makefile.in > Makefile
222 cd ..
223 rem ----------------------------------------------------------------------
224 Echo Configuring the ELisp manual directory...
225 cd lispref
226 sed -f ../msdos/sed6.inp < Makefile.in > Makefile
227 cd ..
228 rem ----------------------------------------------------------------------
229 Echo Configuring the ELisp Introduction manual directory...
230 Rem The two variants for the line below is for when the shell
231 Rem supports long file names but DJGPP does not
232 if exist lispintro\Makefile.in cd lispintro
233 if exist lispintr\Makefile.in cd lispintr
234 sed -f ../msdos/sed6.inp < Makefile.in > Makefile
235 cd ..
236 rem ----------------------------------------------------------------------
237 Echo Configuring the lisp directory...
238 cd lisp
239 sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile
240 cd ..
241 rem ----------------------------------------------------------------------
242 If not Exist leim\quail\latin-pre.el goto maindir
243 Echo Configuring the leim directory...
244 cd leim
245 sed -f ../msdos/sedleim.inp < Makefile.in > Makefile
246 cd ..
247 rem ----------------------------------------------------------------------
248 :maindir
249 Echo Configuring the main directory...
250 If "%DJGPP_VER%" == "1" goto mainv1
251 Echo Looking for the GDB init file...
252 If Exist src\.gdbinit update src/.gdbinit src/_gdbinit
253 If Exist src\_gdbinit goto gdbinitOk
254 Echo ERROR:
255 Echo I cannot find the GDB init file. It was called ".gdbinit" in
256 Echo the Emacs distribution, but was probably renamed to some other
257 Echo name without the leading dot when you untarred the archive.
258 Echo It should be in the "src/" subdirectory. Please make sure this
259 Echo file exists and is called "_gdbinit" with a leading underscore.
260 Echo Then run CONFIG.BAT again with the same arguments you did now.
261 goto End
262 :gdbinitOk
263 Echo Looking for the GDB init file...found
264 copy msdos\mainmake.v2 Makefile >nul
265 :mainv1
266 If "%DJGPP_VER%" == "1" copy msdos\mainmake Makefile >nul
267 rem ----------------------------------------------------------------------
268 goto End
269 :SmallEnv
270 echo Your environment size is too small. Please enlarge it and run me again.
271 echo For example, type "command.com /e:2048" to have 2048 bytes available.
272 set $foo$=
273 :end
274 set X11=
275 set nodebug=
276 set djgpp_ver=
277
278 goto skipArchTag
279 arch-tag: 2d2fed23-4dc6-4006-a2e4-49daf0031f33
280 :skipArchTag