| 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 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, 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., 51 Franklin Street, Fifth Floor, |
|---|
| 22 |
rem Boston, MA 02110-1301, 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 The v1.x build does not need djecho |
|---|
| 125 |
if "%DJGPP_VER%" == "1" Goto djechoOk |
|---|
| 126 |
rem DJECHO is used by the top-level Makefile in the v2.x build |
|---|
| 127 |
Echo Checking whether 'djecho' is available... |
|---|
| 128 |
redir -o Nul -eo djecho -o junk.$$$ foo |
|---|
| 129 |
If Exist junk.$$$ Goto djechoOk |
|---|
| 130 |
Echo To build 'Emacs' you need the 'djecho.exe' program! |
|---|
| 131 |
Echo 'djecho.exe' is part of 'djdevNNN.zip' basic DJGPP development kit. |
|---|
| 132 |
Echo Versions of DJGPP before 2.02 called this program 'echo.exe'. |
|---|
| 133 |
Echo Either unpack 'djecho.exe' from the 'djdevNNN.zip' archive, |
|---|
| 134 |
Echo or, if you have 'echo.exe', copy it to 'djecho.exe'. |
|---|
| 135 |
Echo Then run CONFIG.BAT again with the same arguments you did now. |
|---|
| 136 |
Goto End |
|---|
| 137 |
:djechoOk |
|---|
| 138 |
rm -f junk.$$$ |
|---|
| 139 |
Echo Configuring for DJGPP Version %DJGPP_VER% ... |
|---|
| 140 |
Rem ---------------------------------------------------------------------- |
|---|
| 141 |
Echo Configuring the source directory... |
|---|
| 142 |
cd src |
|---|
| 143 |
|
|---|
| 144 |
rem Create "epaths.h" |
|---|
| 145 |
sed -f ../msdos/sed4.inp <epaths.in >epaths.tmp |
|---|
| 146 |
update epaths.tmp epaths.h >nul |
|---|
| 147 |
rm -f epaths.tmp |
|---|
| 148 |
|
|---|
| 149 |
rem Create "config.h" |
|---|
| 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 |
|---|
| 155 |
if "%DJGPP_VER%" == "2" Goto src41 |
|---|
| 156 |
sed -f ../msdos/sed2.inp <config.tmp >config.h2 |
|---|
| 157 |
goto src42 |
|---|
| 158 |
:src41 |
|---|
| 159 |
sed -f ../msdos/sed2v2.inp <config.tmp >config.h2 |
|---|
| 160 |
:src42 |
|---|
| 161 |
Rem See if DECL_ALIGN can be supported with this GCC |
|---|
| 162 |
rm -f junk.c junk.o junk junk.exe |
|---|
| 163 |
echo struct { int i; char *p; } __attribute__((__aligned__(8))) foo; >junk.c |
|---|
| 164 |
rem Two percent signs because it is a special character for COMMAND.COM/CMD |
|---|
| 165 |
rem Filter thru Sed because "&" is special for CMD.EXE |
|---|
| 166 |
echo int main(void) { return (unsigned long)"&"foo %% 8; } | sed "s/.&./\&/" >>junk.c |
|---|
| 167 |
gcc -o junk junk.c |
|---|
| 168 |
if not exist junk.exe coff2exe junk |
|---|
| 169 |
junk |
|---|
| 170 |
If Not ErrorLevel 1 Goto alignOk |
|---|
| 171 |
Echo WARNING: Your GCC does not support 8-byte aligned variables. |
|---|
| 172 |
Echo WARNING: Therefore Emacs cannot support buffers larger than 128MB. |
|---|
| 173 |
rem The following line disables DECL_ALIGN which in turn disables USE_LSB_TAG |
|---|
| 174 |
rem For details see lisp.h where it defines USE_LSB_TAG |
|---|
| 175 |
echo #define NO_DECL_ALIGN >>config.h2 |
|---|
| 176 |
:alignOk |
|---|
| 177 |
rm -f junk.c junk junk.exe |
|---|
| 178 |
update config.h2 config.h >nul |
|---|
| 179 |
rm -f config.tmp config.h2 |
|---|
| 180 |
|
|---|
| 181 |
rem On my system dir.h gets in the way. It's a VMS file so who cares. |
|---|
| 182 |
if exist dir.h ren dir.h vmsdir.h |
|---|
| 183 |
|
|---|
| 184 |
rem Create "makefile" from "makefile.in". |
|---|
| 185 |
rm -f Makefile junk.c |
|---|
| 186 |
sed -e "1,/== start of cpp stuff ==/s@^# .*$@@" <Makefile.in >junk.c |
|---|
| 187 |
If "%DJGPP_VER%" == "1" Goto mfV1 |
|---|
| 188 |
gcc -E -traditional junk.c | sed -f ../msdos/sed1v2.inp >Makefile |
|---|
| 189 |
goto mfDone |
|---|
| 190 |
:mfV1 |
|---|
| 191 |
gcc -E -traditional junk.c | sed -f ../msdos/sed1.inp >Makefile |
|---|
| 192 |
:mfDone |
|---|
| 193 |
rm -f junk.c |
|---|
| 194 |
|
|---|
| 195 |
if "%X11%" == "" goto src5 |
|---|
| 196 |
mv Makefile makefile.tmp |
|---|
| 197 |
sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile |
|---|
| 198 |
rm -f makefile.tmp |
|---|
| 199 |
:src5 |
|---|
| 200 |
|
|---|
| 201 |
if "%nodebug%" == "" goto src6 |
|---|
| 202 |
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp |
|---|
| 203 |
sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile |
|---|
| 204 |
rm -f makefile.tmp |
|---|
| 205 |
:src6 |
|---|
| 206 |
cd .. |
|---|
| 207 |
rem ---------------------------------------------------------------------- |
|---|
| 208 |
Echo Configuring the library source directory... |
|---|
| 209 |
cd lib-src |
|---|
| 210 |
rem Create "makefile" from "makefile.in". |
|---|
| 211 |
sed -e "1,/== start of cpp stuff ==/s@^#[ ].*$@@" <Makefile.in >junk.c |
|---|
| 212 |
gcc -E -traditional -I. -I../src junk.c | sed -e "s/^ / /" -e "/^#/d" -e "/^[ ]*$/d" >makefile.new |
|---|
| 213 |
If "%DJGPP_VER%" == "2" goto libsrc-v2 |
|---|
| 214 |
sed -f ../msdos/sed3.inp <makefile.new >Makefile |
|---|
| 215 |
Goto libsrc2 |
|---|
| 216 |
:libsrc-v2 |
|---|
| 217 |
sed -f ../msdos/sed3v2.inp <makefile.new >Makefile |
|---|
| 218 |
:libsrc2 |
|---|
| 219 |
rm -f makefile.new junk.c |
|---|
| 220 |
if "%nodebug%" == "" goto libsrc3 |
|---|
| 221 |
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp |
|---|
| 222 |
sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile |
|---|
| 223 |
rm -f makefile.tmp |
|---|
| 224 |
:libsrc3 |
|---|
| 225 |
cd .. |
|---|
| 226 |
rem ---------------------------------------------------------------------- |
|---|
| 227 |
if "%X11%" == "" goto oldx1 |
|---|
| 228 |
Echo Configuring the oldxmenu directory... |
|---|
| 229 |
cd oldxmenu |
|---|
| 230 |
sed -f ../msdos/sed5x.inp <Makefile.in >Makefile |
|---|
| 231 |
if "%nodebug%" == "" goto oldx2 |
|---|
| 232 |
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp |
|---|
| 233 |
mv -f makefile.tmp Makefile |
|---|
| 234 |
:oldx2 |
|---|
| 235 |
cd .. |
|---|
| 236 |
:oldx1 |
|---|
| 237 |
rem ---------------------------------------------------------------------- |
|---|
| 238 |
Echo Configuring the manual directory... |
|---|
| 239 |
cd man |
|---|
| 240 |
sed -f ../msdos/sed6.inp < Makefile.in > Makefile |
|---|
| 241 |
cd .. |
|---|
| 242 |
rem ---------------------------------------------------------------------- |
|---|
| 243 |
Echo Configuring the ELisp manual directory... |
|---|
| 244 |
cd lispref |
|---|
| 245 |
sed -f ../msdos/sed6.inp < Makefile.in > Makefile |
|---|
| 246 |
cd .. |
|---|
| 247 |
rem ---------------------------------------------------------------------- |
|---|
| 248 |
Echo Configuring the ELisp Introduction manual directory... |
|---|
| 249 |
Rem The two variants for the line below is for when the shell |
|---|
| 250 |
Rem supports long file names but DJGPP does not |
|---|
| 251 |
if exist lispintro\Makefile.in cd lispintro |
|---|
| 252 |
if exist lispintr\Makefile.in cd lispintr |
|---|
| 253 |
sed -f ../msdos/sed6.inp < Makefile.in > Makefile |
|---|
| 254 |
cd .. |
|---|
| 255 |
rem ---------------------------------------------------------------------- |
|---|
| 256 |
Echo Configuring the lisp directory... |
|---|
| 257 |
cd lisp |
|---|
| 258 |
sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile |
|---|
| 259 |
cd .. |
|---|
| 260 |
rem ---------------------------------------------------------------------- |
|---|
| 261 |
If not Exist leim\quail\latin-pre.el goto maindir |
|---|
| 262 |
Echo Configuring the leim directory... |
|---|
| 263 |
cd leim |
|---|
| 264 |
sed -f ../msdos/sedleim.inp < Makefile.in > Makefile |
|---|
| 265 |
cd .. |
|---|
| 266 |
rem ---------------------------------------------------------------------- |
|---|
| 267 |
:maindir |
|---|
| 268 |
Echo Configuring the main directory... |
|---|
| 269 |
If "%DJGPP_VER%" == "1" goto mainv1 |
|---|
| 270 |
Echo Looking for the GDB init file... |
|---|
| 271 |
If Exist src\.gdbinit update src/.gdbinit src/_gdbinit |
|---|
| 272 |
If Exist src\_gdbinit goto gdbinitOk |
|---|
| 273 |
Echo ERROR: |
|---|
| 274 |
Echo I cannot find the GDB init file. It was called ".gdbinit" in |
|---|
| 275 |
Echo the Emacs distribution, but was probably renamed to some other |
|---|
| 276 |
Echo name without the leading dot when you untarred the archive. |
|---|
| 277 |
Echo It should be in the "src/" subdirectory. Please make sure this |
|---|
| 278 |
Echo file exists and is called "_gdbinit" with a leading underscore. |
|---|
| 279 |
Echo Then run CONFIG.BAT again with the same arguments you did now. |
|---|
| 280 |
goto End |
|---|
| 281 |
:gdbinitOk |
|---|
| 282 |
Echo Looking for the GDB init file...found |
|---|
| 283 |
copy msdos\mainmake.v2 Makefile >nul |
|---|
| 284 |
:mainv1 |
|---|
| 285 |
If "%DJGPP_VER%" == "1" copy msdos\mainmake Makefile >nul |
|---|
| 286 |
rem ---------------------------------------------------------------------- |
|---|
| 287 |
goto End |
|---|
| 288 |
:SmallEnv |
|---|
| 289 |
echo Your environment size is too small. Please enlarge it and run me again. |
|---|
| 290 |
echo For example, type "command.com /e:2048" to have 2048 bytes available. |
|---|
| 291 |
set $foo$= |
|---|
| 292 |
:end |
|---|
| 293 |
set X11= |
|---|
| 294 |
set nodebug= |
|---|
| 295 |
set djgpp_ver= |
|---|
| 296 |
|
|---|
| 297 |
goto skipArchTag |
|---|
| 298 |
arch-tag: 2d2fed23-4dc6-4006-a2e4-49daf0031f33 |
|---|
| 299 |
:skipArchTag |
|---|