| 1 |
@echo off
|
| 2 |
rem ----------------------------------------------------------------------
|
| 3 |
rem Configuration script for MSDOS
|
| 4 |
rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003
|
| 5 |
rem 2004, 2005, 2006, 2007, 2008, 2009 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 3 of the License, or
|
| 12 |
rem (at your option) 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. If not, see http://www.gnu.org/licenses/.
|
| 21 |
|
| 22 |
rem ----------------------------------------------------------------------
|
| 23 |
rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:
|
| 24 |
rem
|
| 25 |
rem + msdos version 3 or better.
|
| 26 |
rem + DJGPP version 1.12maint1 or later (version 2.03 or later recommended).
|
| 27 |
rem + make utility that allows breaking of the 128 chars limit on
|
| 28 |
rem command lines. ndmake (as of version 4.5) won't work due to a
|
| 29 |
rem line length limit. The make that comes with DJGPP does work (and is
|
| 30 |
rem recommended).
|
| 31 |
rem + rm, mv, and cp (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 |
set sys_malloc=
|
| 41 |
if "%1" == "" goto usage
|
| 42 |
rem ----------------------------------------------------------------------
|
| 43 |
rem See if their environment is large enough. We need 28 bytes.
|
| 44 |
set $foo$=789012345678901234567
|
| 45 |
if not "%$foo$%" == "789012345678901234567" goto SmallEnv
|
| 46 |
set $foo$=
|
| 47 |
:again
|
| 48 |
if "%1" == "" goto usage
|
| 49 |
if "%1" == "--with-x" goto withx
|
| 50 |
if "%1" == "--no-debug" goto nodebug
|
| 51 |
if "%1" == "msdos" goto msdos
|
| 52 |
if "%1" == "--with-system-malloc" goto sysmalloc
|
| 53 |
:usage
|
| 54 |
echo Usage: config [--no-debug] [--with-system-malloc] [--with-x] msdos
|
| 55 |
echo [Read the script before you run it.]
|
| 56 |
goto end
|
| 57 |
rem ----------------------------------------------------------------------
|
| 58 |
:withx
|
| 59 |
set X11=Y
|
| 60 |
shift
|
| 61 |
goto again
|
| 62 |
rem ----------------------------------------------------------------------
|
| 63 |
:nodebug
|
| 64 |
set nodebug=Y
|
| 65 |
shift
|
| 66 |
goto again
|
| 67 |
rem ----------------------------------------------------------------------
|
| 68 |
:sysmalloc
|
| 69 |
set sys_malloc=Y
|
| 70 |
shift
|
| 71 |
goto again
|
| 72 |
rem ----------------------------------------------------------------------
|
| 73 |
:msdos
|
| 74 |
Echo Checking whether 'sed' is available...
|
| 75 |
sed -e "w junk.$$$" <Nul
|
| 76 |
If Exist junk.$$$ Goto sedOk
|
| 77 |
Echo To configure 'Emacs' you need to have 'sed'!
|
| 78 |
Goto End
|
| 79 |
:sedOk
|
| 80 |
Echo Checking whether 'rm' is available...
|
| 81 |
rm -f junk.$$$
|
| 82 |
If Not Exist junk.$$$ Goto rmOk
|
| 83 |
Echo To configure 'Emacs' you need to have 'rm'!
|
| 84 |
Goto End
|
| 85 |
:rmOk
|
| 86 |
Echo Checking whether 'mv' is available...
|
| 87 |
rm -f junk.1 junk.2
|
| 88 |
echo foo >junk.1
|
| 89 |
mv junk.1 ./junk.2
|
| 90 |
If Exist junk.2 Goto mvOk
|
| 91 |
Echo To configure 'Emacs' you need to have 'mv'!
|
| 92 |
rm -f junk.1
|
| 93 |
Goto End
|
| 94 |
:mvOk
|
| 95 |
rm -f junk.2
|
| 96 |
Echo Checking whether 'gcc' is available...
|
| 97 |
echo main(){} >junk.c
|
| 98 |
gcc -c junk.c
|
| 99 |
if exist junk.o goto gccOk
|
| 100 |
Echo To configure 'Emacs' you need to have 'gcc'!
|
| 101 |
rm -f junk.c
|
| 102 |
Goto End
|
| 103 |
:gccOk
|
| 104 |
rm -f junk.c junk.o junk junk.exe
|
| 105 |
Echo Checking what version of DJGPP is installed...
|
| 106 |
If Not "%DJGPP%" == "" goto djgppOk
|
| 107 |
Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!
|
| 108 |
Goto End
|
| 109 |
:djgppOk
|
| 110 |
echo int main() >junk.c
|
| 111 |
echo #ifdef __DJGPP__ >>junk.c
|
| 112 |
echo {return (__DJGPP__)*10;} >>junk.c
|
| 113 |
echo #else >>junk.c
|
| 114 |
echo #ifdef __GO32__ >>junk.c
|
| 115 |
echo {return 10;} >>junk.c
|
| 116 |
echo #else >>junk.c
|
| 117 |
echo {return 0;} >>junk.c
|
| 118 |
echo #endif >>junk.c
|
| 119 |
echo #endif >>junk.c
|
| 120 |
gcc -o junk junk.c
|
| 121 |
if not exist junk.exe coff2exe junk
|
| 122 |
junk
|
| 123 |
If ErrorLevel 10 Goto go32Ok
|
| 124 |
rm -f junk.c junk junk.exe
|
| 125 |
Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!
|
| 126 |
Goto End
|
| 127 |
:go32Ok
|
| 128 |
set djgpp_ver=1
|
| 129 |
If ErrorLevel 20 set djgpp_ver=2
|
| 130 |
rm -f junk.c junk junk.exe
|
| 131 |
rem The v1.x build does not need djecho
|
| 132 |
if "%DJGPP_VER%" == "1" Goto djechoOk
|
| 133 |
rem DJECHO is used by the top-level Makefile in the v2.x build
|
| 134 |
Echo Checking whether 'djecho' is available...
|
| 135 |
redir -o Nul -eo djecho -o junk.$$$ foo
|
| 136 |
If Exist junk.$$$ Goto djechoOk
|
| 137 |
Echo To build 'Emacs' you need the 'djecho.exe' program!
|
| 138 |
Echo 'djecho.exe' is part of 'djdevNNN.zip' basic DJGPP development kit.
|
| 139 |
Echo Versions of DJGPP before 2.02 called this program 'echo.exe'.
|
| 140 |
Echo Either unpack 'djecho.exe' from the 'djdevNNN.zip' archive,
|
| 141 |
Echo or, if you have 'echo.exe', copy it to 'djecho.exe'.
|
| 142 |
Echo Then run CONFIG.BAT again with the same arguments you did now.
|
| 143 |
Goto End
|
| 144 |
:djechoOk
|
| 145 |
rm -f junk.$$$
|
| 146 |
Echo Configuring for DJGPP Version %DJGPP_VER% ...
|
| 147 |
Rem ----------------------------------------------------------------------
|
| 148 |
Echo Configuring the source directory...
|
| 149 |
cd src
|
| 150 |
|
| 151 |
rem Create "epaths.h"
|
| 152 |
sed -f ../msdos/sed4.inp <epaths.in >epaths.tmp
|
| 153 |
update epaths.tmp epaths.h >nul
|
| 154 |
rm -f epaths.tmp
|
| 155 |
|
| 156 |
rem Create "config.h"
|
| 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
|
| 162 |
if "%DJGPP_VER%" == "2" Goto src41
|
| 163 |
sed -f ../msdos/sed2.inp <config.tmp >config.h2
|
| 164 |
goto src42
|
| 165 |
:src41
|
| 166 |
sed -f ../msdos/sed2v2.inp <config.tmp >config.h2
|
| 167 |
:src42
|
| 168 |
Rem See if DECL_ALIGN can be supported with this GCC
|
| 169 |
rm -f junk.c junk.o junk junk.exe
|
| 170 |
echo struct { int i; char *p; } __attribute__((__aligned__(8))) foo; >junk.c
|
| 171 |
rem Two percent signs because it is a special character for COMMAND.COM/CMD
|
| 172 |
rem Filter thru Sed because "&" is special for CMD.EXE
|
| 173 |
echo int main(void) { return (unsigned long)"&"foo %% 8; } | sed "s/.&./\&/" >>junk.c
|
| 174 |
gcc -o junk junk.c
|
| 175 |
if not exist junk.exe coff2exe junk
|
| 176 |
junk
|
| 177 |
If Not ErrorLevel 1 Goto alignOk
|
| 178 |
Echo WARNING: Your GCC does not support 8-byte aligned variables.
|
| 179 |
Echo WARNING: Therefore Emacs cannot support buffers larger than 128MB.
|
| 180 |
rem The following line disables DECL_ALIGN which in turn disables USE_LSB_TAG
|
| 181 |
rem For details see lisp.h where it defines USE_LSB_TAG
|
| 182 |
echo #define NO_DECL_ALIGN >>config.h2
|
| 183 |
:alignOk
|
| 184 |
Rem See if they requested a SYSTEM_MALLOC build
|
| 185 |
if "%sys_malloc%" == "" Goto cfgDone
|
| 186 |
rm -f config.tmp
|
| 187 |
ren config.h2 config.tmp
|
| 188 |
sed -f ../msdos/sedalloc.inp <config.tmp >config.h2
|
| 189 |
|
| 190 |
:cfgDone
|
| 191 |
rm -f junk.c junk junk.exe
|
| 192 |
update config.h2 config.h >nul
|
| 193 |
rm -f config.tmp config.h2
|
| 194 |
|
| 195 |
rem On my system dir.h gets in the way. It's a VMS file so who cares.
|
| 196 |
if exist dir.h ren dir.h vmsdir.h
|
| 197 |
|
| 198 |
rem Create "makefile" from "makefile.in".
|
| 199 |
rm -f Makefile junk.c
|
| 200 |
sed -e "1,/== start of cpp stuff ==/s@^# .*$@@" <Makefile.in >junk.c
|
| 201 |
If "%DJGPP_VER%" == "1" Goto mfV1
|
| 202 |
gcc -E -traditional junk.c | sed -f ../msdos/sed1v2.inp >Makefile
|
| 203 |
goto mfDone
|
| 204 |
:mfV1
|
| 205 |
gcc -E -traditional junk.c | sed -f ../msdos/sed1.inp >Makefile
|
| 206 |
:mfDone
|
| 207 |
rm -f junk.c
|
| 208 |
|
| 209 |
if "%X11%" == "" goto src5
|
| 210 |
mv Makefile makefile.tmp
|
| 211 |
sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile
|
| 212 |
rm -f makefile.tmp
|
| 213 |
:src5
|
| 214 |
|
| 215 |
if "%nodebug%" == "" goto src6
|
| 216 |
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
|
| 217 |
sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile
|
| 218 |
rm -f makefile.tmp
|
| 219 |
:src6
|
| 220 |
cd ..
|
| 221 |
rem ----------------------------------------------------------------------
|
| 222 |
Echo Configuring the library source directory...
|
| 223 |
cd lib-src
|
| 224 |
rem Create "makefile" from "makefile.in".
|
| 225 |
sed -e "1,/== start of cpp stuff ==/s@^#[ ].*$@@" <Makefile.in >junk.c
|
| 226 |
gcc -E -traditional -I. -I../src junk.c | sed -e "s/^ / /" -e "/^#/d" -e "/^[ ]*$/d" >makefile.new
|
| 227 |
If "%DJGPP_VER%" == "2" goto libsrc-v2
|
| 228 |
sed -f ../msdos/sed3.inp <makefile.new >Makefile
|
| 229 |
Goto libsrc2
|
| 230 |
:libsrc-v2
|
| 231 |
sed -f ../msdos/sed3v2.inp <makefile.new >Makefile
|
| 232 |
:libsrc2
|
| 233 |
rm -f makefile.new junk.c
|
| 234 |
if "%nodebug%" == "" goto libsrc3
|
| 235 |
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
|
| 236 |
sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile
|
| 237 |
rm -f makefile.tmp
|
| 238 |
:libsrc3
|
| 239 |
cd ..
|
| 240 |
rem ----------------------------------------------------------------------
|
| 241 |
if "%X11%" == "" goto oldx1
|
| 242 |
Echo Configuring the oldxmenu directory...
|
| 243 |
cd oldxmenu
|
| 244 |
sed -f ../msdos/sed5x.inp <Makefile.in >Makefile
|
| 245 |
if "%nodebug%" == "" goto oldx2
|
| 246 |
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
|
| 247 |
mv -f makefile.tmp Makefile
|
| 248 |
:oldx2
|
| 249 |
cd ..
|
| 250 |
:oldx1
|
| 251 |
rem ----------------------------------------------------------------------
|
| 252 |
Echo Configuring the doc directory, expect one "File not found" message...
|
| 253 |
cd doc
|
| 254 |
Rem The two variants for lispintro below is for when the shell
|
| 255 |
Rem supports long file names but DJGPP does not
|
| 256 |
for %%d in (emacs lispref lispintro lispintr misc) do sed -f ../msdos/sed6.inp < %%d\Makefile.in > %%d\Makefile
|
| 257 |
cd ..
|
| 258 |
rem ----------------------------------------------------------------------
|
| 259 |
Echo Configuring the lisp directory...
|
| 260 |
cd lisp
|
| 261 |
sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile
|
| 262 |
cd ..
|
| 263 |
rem ----------------------------------------------------------------------
|
| 264 |
If not Exist leim\quail\latin-pre.el goto maindir
|
| 265 |
Echo Configuring the leim directory...
|
| 266 |
cd leim
|
| 267 |
sed -f ../msdos/sedleim.inp < Makefile.in > Makefile
|
| 268 |
cd ..
|
| 269 |
rem ----------------------------------------------------------------------
|
| 270 |
:maindir
|
| 271 |
Echo Configuring the main directory...
|
| 272 |
If Exist .dir-locals.el update .dir-locals.el _dir-locals.el
|
| 273 |
If Exist src\.dbxinit update src/.dbxinit src/_dbxinit
|
| 274 |
If "%DJGPP_VER%" == "1" goto mainv1
|
| 275 |
Echo Looking for the GDB init file...
|
| 276 |
If Exist src\.gdbinit update src/.gdbinit src/_gdbinit
|
| 277 |
If Exist src\_gdbinit goto gdbinitOk
|
| 278 |
Echo ERROR:
|
| 279 |
Echo I cannot find the GDB init file. It was called ".gdbinit" in
|
| 280 |
Echo the Emacs distribution, but was probably renamed to some other
|
| 281 |
Echo name without the leading dot when you untarred the archive.
|
| 282 |
Echo It should be in the "src/" subdirectory. Please make sure this
|
| 283 |
Echo file exists and is called "_gdbinit" with a leading underscore.
|
| 284 |
Echo Then run CONFIG.BAT again with the same arguments you did now.
|
| 285 |
goto End
|
| 286 |
:gdbinitOk
|
| 287 |
Echo Looking for the GDB init file...found
|
| 288 |
copy msdos\mainmake.v2 Makefile >nul
|
| 289 |
:mainv1
|
| 290 |
If "%DJGPP_VER%" == "1" copy msdos\mainmake Makefile >nul
|
| 291 |
rem ----------------------------------------------------------------------
|
| 292 |
goto End
|
| 293 |
:SmallEnv
|
| 294 |
echo Your environment size is too small. Please enlarge it and run me again.
|
| 295 |
echo For example, type "command.com /e:2048" to have 2048 bytes available.
|
| 296 |
set $foo$=
|
| 297 |
:end
|
| 298 |
set X11=
|
| 299 |
set nodebug=
|
| 300 |
set djgpp_ver=
|
| 301 |
set sys_malloc=
|
| 302 |
|
| 303 |
goto skipArchTag
|
| 304 |
arch-tag: 2d2fed23-4dc6-4006-a2e4-49daf0031f33
|
| 305 |
:skipArchTag
|