1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-14 09:39:42 +00:00
emacs/config.bat

306 lines
11 KiB
Batchfile
Raw Normal View History

1994-01-07 13:34:12 +00:00
@echo off
rem ----------------------------------------------------------------------
rem Configuration script for MSDOS
2006-12-05 06:15:26 +00:00
rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003
2010-01-13 08:35:10 +00:00
rem 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
1994-04-29 19:29:03 +00:00
1994-01-07 13:34:12 +00:00
rem This file is part of GNU Emacs.
rem GNU Emacs is free software: you can redistribute it and/or modify
1994-01-07 13:34:12 +00:00
rem it under the terms of the GNU General Public License as published by
rem the Free Software Foundation, either version 3 of the License, or
rem (at your option) any later version.
1994-01-07 13:34:12 +00:00
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
rem along with GNU Emacs. If not, see http://www.gnu.org/licenses/.
1994-01-07 13:34:12 +00:00
rem ----------------------------------------------------------------------
rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:
rem
1994-04-29 19:29:03 +00:00
rem + msdos version 3 or better.
2004-07-31 09:23:36 +00:00
rem + DJGPP version 1.12maint1 or later (version 2.03 or later recommended).
1994-04-29 19:29:03 +00:00
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
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).
rem + sed (you can use the port that comes with DJGPP).
1994-04-29 19:29:03 +00:00
rem
2004-07-31 09:23:36 +00:00
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".
1994-01-07 13:34:12 +00:00
rem ----------------------------------------------------------------------
1994-10-17 07:35:36 +00:00
set X11=
set nodebug=
set djgpp_ver=
set sys_malloc=
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$=
1994-10-17 07:35:36 +00:00
:again
if "%1" == "" goto usage
if "%1" == "--with-x" goto withx
if "%1" == "--no-debug" goto nodebug
1994-01-07 13:34:12 +00:00
if "%1" == "msdos" goto msdos
if "%1" == "--with-system-malloc" goto sysmalloc
1994-01-07 13:34:12 +00:00
:usage
echo Usage: config [--no-debug] [--with-system-malloc] [--with-x] msdos
1994-10-17 07:35:36 +00:00
echo [Read the script before you run it.]
1994-01-07 13:34:12 +00:00
goto end
rem ----------------------------------------------------------------------
1994-10-17 07:35:36 +00:00
:withx
set X11=Y
shift
goto again
1994-04-29 19:29:03 +00:00
rem ----------------------------------------------------------------------
1994-10-17 07:35:36 +00:00
:nodebug
set nodebug=Y
shift
goto again
1994-01-07 13:34:12 +00:00
rem ----------------------------------------------------------------------
:sysmalloc
set sys_malloc=Y
shift
goto again
rem ----------------------------------------------------------------------
1994-10-17 07:35:36 +00:00
:msdos
Echo Checking whether 'sed' is available...
sed -e "w junk.$$$" <Nul
1994-10-17 07:35:36 +00:00
If Exist junk.$$$ Goto sedOk
Echo To configure 'Emacs' you need to have 'sed'!
1994-10-17 07:35:36 +00:00
Goto End
:sedOk
Echo Checking whether 'rm' is available...
1994-10-17 07:35:36 +00:00
rm -f junk.$$$
If Not Exist junk.$$$ Goto rmOk
Echo To configure 'Emacs' you need to have 'rm'!
1994-10-17 07:35:36 +00:00
Goto End
:rmOk
Echo Checking whether 'mv' is available...
1994-10-17 07:35:36 +00:00
rm -f junk.1 junk.2
echo foo >junk.1
mv junk.1 ./junk.2
1994-10-17 07:35:36 +00:00
If Exist junk.2 Goto mvOk
Echo To configure 'Emacs' you need to have 'mv'!
1994-10-17 07:35:36 +00:00
rm -f junk.1
Goto End
:mvOk
rm -f junk.2
Echo Checking whether 'gcc' is available...
1994-10-17 07:35:36 +00:00
echo main(){} >junk.c
gcc -c junk.c
if exist junk.o goto gccOk
Echo To configure 'Emacs' you need to have 'gcc'!
1994-10-17 07:35:36 +00:00
rm -f junk.c
Goto End
:gccOk
rm -f junk.c junk.o junk junk.exe
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
gcc -o junk junk.c
if not exist junk.exe coff2exe junk
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
set djgpp_ver=1
If ErrorLevel 20 set djgpp_ver=2
rm -f junk.c junk junk.exe
rem The v1.x build does not need djecho
if "%DJGPP_VER%" == "1" Goto djechoOk
rem DJECHO is used by the top-level Makefile in the v2.x build
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.$$$
Echo Configuring for DJGPP Version %DJGPP_VER% ...
1994-10-17 07:35:36 +00:00
Rem ----------------------------------------------------------------------
1994-01-07 13:34:12 +00:00
Echo Configuring the source directory...
cd src
1999-03-30 16:28:40 +00:00
rem Create "epaths.h"
sed -f ../msdos/sed4.inp <epaths.in >epaths.tmp
update epaths.tmp epaths.h >nul
rm -f epaths.tmp
1994-01-07 13:34:12 +00:00
rem Create "config.h"
1994-10-17 07:35:36 +00:00
rm -f config.h2 config.tmp
sed -e '' config.in > config.tmp
1994-04-29 19:29:03 +00:00
if "%X11%" == "" goto src4
sed -f ../msdos/sed2x.inp <config.in >config.tmp
1994-04-29 19:29:03 +00:00
:src4
2002-04-16 17:39:08 +00:00
if "%DJGPP_VER%" == "2" Goto src41
1994-10-17 07:35:36 +00:00
sed -f ../msdos/sed2.inp <config.tmp >config.h2
2002-04-16 17:39:08 +00:00
goto src42
:src41
sed -f ../msdos/sed2v2.inp <config.tmp >config.h2
:src42
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
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
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
echo #define NO_DECL_ALIGN >>config.h2
:alignOk
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
rm -f junk.c junk junk.exe
1994-10-17 07:35:36 +00:00
update config.h2 config.h >nul
rm -f config.tmp config.h2
1994-01-07 13:34:12 +00:00
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
rem Create "makefile" from "makefile.in".
1997-11-20 16:36:24 +00:00
rm -f Makefile junk.c
sed -e "1,/== start of cpp stuff ==/s@^# .*$@@" <Makefile.in >junk.c
If "%DJGPP_VER%" == "1" Goto mfV1
gcc -E -traditional junk.c | sed -f ../msdos/sed1v2.inp >Makefile
goto mfDone
:mfV1
gcc -E -traditional junk.c | sed -f ../msdos/sed1.inp >Makefile
:mfDone
1994-01-07 13:46:21 +00:00
rm -f junk.c
1994-10-17 07:35:36 +00:00
if "%X11%" == "" goto src5
1997-11-20 16:36:24 +00:00
mv Makefile makefile.tmp
sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile
1994-10-17 07:35:36 +00:00
rm -f makefile.tmp
:src5
if "%nodebug%" == "" goto src6
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
1997-11-20 16:36:24 +00:00
sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile
rm -f makefile.tmp
1994-10-17 07:35:36 +00:00
:src6
1994-01-07 13:34:12 +00:00
cd ..
rem ----------------------------------------------------------------------
Echo Configuring the library source directory...
cd lib-src
rem Create "makefile" from "makefile.in".
sed -e "1,/== start of cpp stuff ==/s@^#[ ].*$@@" <Makefile.in >junk.c
gcc -E -traditional -I. -I../src junk.c | sed -e "s/^ / /" -e "/^#/d" -e "/^[ ]*$/d" >makefile.new
If "%DJGPP_VER%" == "2" goto libsrc-v2
1997-11-20 16:36:24 +00:00
sed -f ../msdos/sed3.inp <makefile.new >Makefile
Goto libsrc2
:libsrc-v2
1997-11-20 16:36:24 +00:00
sed -f ../msdos/sed3v2.inp <makefile.new >Makefile
:libsrc2
1994-10-17 07:35:36 +00:00
rm -f makefile.new junk.c
if "%nodebug%" == "" goto libsrc3
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
1997-11-20 16:36:24 +00:00
sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile
rm -f makefile.tmp
:libsrc3
1994-10-17 07:35:36 +00:00
cd ..
rem ----------------------------------------------------------------------
if "%X11%" == "" goto oldx1
Echo Configuring the oldxmenu directory...
cd oldxmenu
1997-11-20 16:36:24 +00:00
sed -f ../msdos/sed5x.inp <Makefile.in >Makefile
1994-10-17 07:35:36 +00:00
if "%nodebug%" == "" goto oldx2
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
1997-11-20 16:36:24 +00:00
mv -f makefile.tmp Makefile
1994-10-17 07:35:36 +00:00
:oldx2
1994-01-07 13:34:12 +00:00
cd ..
1994-10-17 07:35:36 +00:00
:oldx1
1994-01-07 13:34:12 +00:00
rem ----------------------------------------------------------------------
Echo Configuring the doc directory, expect one "File not found" message...
cd doc
Rem The two variants for lispintro below is for when the shell
Rem supports long file names but DJGPP does not
for %%d in (emacs lispref lispintro lispintr misc) do sed -f ../msdos/sed6.inp < %%d\Makefile.in > %%d\Makefile
2001-11-24 11:41:23 +00:00
cd ..
rem ----------------------------------------------------------------------
Echo Configuring the lisp directory...
cd lisp
sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile
cd ..
rem ----------------------------------------------------------------------
1999-01-07 12:27:19 +00:00
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
1994-01-07 13:34:12 +00:00
Echo Configuring the main directory...
If Exist .dir-locals.el update .dir-locals.el _dir-locals.el
2009-02-28 14:04:58 +00:00
If Exist src\.dbxinit update src/.dbxinit src/_dbxinit
If "%DJGPP_VER%" == "1" goto mainv1
Echo Looking for the GDB init file...
If Exist src\.gdbinit update src/.gdbinit src/_gdbinit
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
1997-11-20 16:36:24 +00:00
copy msdos\mainmake.v2 Makefile >nul
:mainv1
1997-11-20 16:36:24 +00:00
If "%DJGPP_VER%" == "1" copy msdos\mainmake Makefile >nul
1994-01-07 13:34:12 +00:00
rem ----------------------------------------------------------------------
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$=
1994-01-07 13:34:12 +00:00
:end
1994-04-29 19:29:03 +00:00
set X11=
1994-10-17 07:35:36 +00:00
set nodebug=
set djgpp_ver=
set sys_malloc=
goto skipArchTag
arch-tag: 2d2fed23-4dc6-4006-a2e4-49daf0031f33
:skipArchTag