X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/9663837a53cce9df84da03a0f6f04bc8b2b30eca..abb777ac83ade26884b5c5c1c7304fa4f63169fc:/config.bat diff --git a/config.bat b/config.bat index dfd7505d39..f2eb0262e6 100644 --- a/config.bat +++ b/config.bat @@ -1,14 +1,15 @@ @echo off rem ---------------------------------------------------------------------- rem Configuration script for MSDOS -rem Copyright (C) 1994 Free Software Foundation, Inc. +rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003 +rem 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. rem This file is part of GNU Emacs. -rem GNU Emacs is free software; you can redistribute it and/or modify +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 the Free Software Foundation, either version 3 of the License, or +rem (at your option) 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 @@ -16,36 +17,41 @@ 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; 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. +rem along with GNU Emacs. If not, see http://www.gnu.org/licenses/. + rem ---------------------------------------------------------------------- rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS: rem rem + msdos version 3 or better. -rem + djgpp version 1.12maint1 or later (version 2.0 or later recommended). +rem + DJGPP version 1.12maint1 or later (version 2.03 or later recommended). 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. -rem + rm and mv (from GNU file utilities). +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). rem -rem You should be able to get all the above utilities from any SimTel -rem repository, e.g. ftp.coast.net, in the directories -rem "SimTel/vendors/djgpp" and "SimTel/vendors/gnu/gnuish/dos_only". As -rem usual, please use your local mirroring site to reduce trans-Atlantic -rem traffic. +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". rem ---------------------------------------------------------------------- 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$= :again if "%1" == "" goto usage if "%1" == "--with-x" goto withx if "%1" == "--no-debug" goto nodebug if "%1" == "msdos" goto msdos +if "%1" == "--with-system-malloc" goto sysmalloc :usage -echo Usage: config [--with-x] [--no-debug] msdos +echo Usage: config [--no-debug] [--with-system-malloc] [--with-x] msdos echo [Read the script before you run it.] goto end rem ---------------------------------------------------------------------- @@ -59,6 +65,11 @@ set nodebug=Y shift goto again rem ---------------------------------------------------------------------- +:sysmalloc +set sys_malloc=Y +shift +goto again +rem ---------------------------------------------------------------------- :msdos Echo Checking whether 'sed' is available... sed -e "w junk.$$$" paths.tmp -update paths.tmp paths.h >nul -rm -f paths.tmp +rem Create "epaths.h" +sed -f ../msdos/sed4.inp epaths.tmp +update epaths.tmp epaths.h >nul +rm -f epaths.tmp rem Create "config.h" rm -f config.h2 config.tmp -cp config.in config.tmp +sed -e '' config.in > config.tmp if "%X11%" == "" goto src4 sed -f ../msdos/sed2x.inp config.tmp :src4 +if "%DJGPP_VER%" == "2" Goto src41 sed -f ../msdos/sed2.inp config.h2 +goto src42 +:src41 +sed -f ../msdos/sed2v2.inp 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.h2 + +:cfgDone +rm -f junk.c junk junk.exe update config.h2 config.h >nul rm -f config.tmp config.h2 @@ -141,25 +196,25 @@ 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". -rm -f makefile junk.c -sed -e "1,/cpp stuff/s@^# .*$@@" junk.c +rm -f Makefile junk.c +sed -e "1,/== start of cpp stuff ==/s@^# .*$@@" junk.c If "%DJGPP_VER%" == "1" Goto mfV1 -gcc -E junk.c | sed -f ../msdos/sed1v2.inp >makefile +gcc -E -traditional junk.c | sed -f ../msdos/sed1v2.inp >Makefile goto mfDone :mfV1 -gcc -E junk.c | sed -f ../msdos/sed1.inp >makefile +gcc -E -traditional junk.c | sed -f ../msdos/sed1.inp >Makefile :mfDone rm -f junk.c if "%X11%" == "" goto src5 -mv makefile makefile.tmp -sed -f ../msdos/sed1x.inp makefile +mv Makefile makefile.tmp +sed -f ../msdos/sed1x.inp Makefile rm -f makefile.tmp :src5 if "%nodebug%" == "" goto src6 -sed -e "/^CFLAGS *=/s/ *-g//" makefile.tmp -sed -e "/^LDFLAGS *=/s/=/=-s/" makefile +sed -e "/^CFLAGS *=/s/ *-gcoff//" makefile.tmp +sed -e "/^LDFLAGS *=/s/=/=-s/" Makefile rm -f makefile.tmp :src6 cd .. @@ -167,18 +222,18 @@ rem ---------------------------------------------------------------------- Echo Configuring the library source directory... cd lib-src rem Create "makefile" from "makefile.in". -sed -e "1,/cpp stuff/s@^# .*$@@" junk.c -gcc -E -I. -I../src junk.c | sed -e "s/^ / /" -e "/^#/d" -e "/^[ ]*$/d" >makefile.new +sed -e "1,/== start of cpp stuff ==/s@^#[ ].*$@@" 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 -sed -f ../msdos/sed3.inp makefile +sed -f ../msdos/sed3.inp Makefile Goto libsrc2 :libsrc-v2 -sed -f ../msdos/sed3v2.inp makefile +sed -f ../msdos/sed3v2.inp Makefile :libsrc2 rm -f makefile.new junk.c if "%nodebug%" == "" goto libsrc3 -sed -e "/^CFLAGS *=/s/ *-g//" makefile.tmp -sed -e "/^ALL_CFLAGS *=/s/=/= -s/" makefile +sed -e "/^CFLAGS *=/s/ *-gcoff//" makefile.tmp +sed -e "/^ALL_CFLAGS *=/s/=/= -s/" Makefile rm -f makefile.tmp :libsrc3 cd .. @@ -186,17 +241,39 @@ rem ---------------------------------------------------------------------- if "%X11%" == "" goto oldx1 Echo Configuring the oldxmenu directory... cd oldxmenu -sed -f ../msdos/sed5x.inp makefile +sed -f ../msdos/sed5x.inp Makefile if "%nodebug%" == "" goto oldx2 -sed -e "/^CFLAGS *=/s/ *-g//" makefile.tmp -mv -f makefile.tmp makefile +sed -e "/^CFLAGS *=/s/ *-gcoff//" makefile.tmp +mv -f makefile.tmp Makefile :oldx2 cd .. :oldx1 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 +cd .. +rem ---------------------------------------------------------------------- +Echo Configuring the lisp directory... +cd lisp +sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile +cd .. +rem ---------------------------------------------------------------------- +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 Echo Configuring the main directory... +If Exist .dir-locals.el update .dir-locals.el _dir-locals.el +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 @@ -208,11 +285,21 @@ Echo Then run CONFIG.BAT again with the same arguments you did now. goto End :gdbinitOk Echo Looking for the GDB init file...found -copy msdos\mainmake.v2 makefile >nul +copy msdos\mainmake.v2 Makefile >nul :mainv1 -If "%DJGPP_VER%" == "1" copy msdos\mainmake makefile >nul +If "%DJGPP_VER%" == "1" copy msdos\mainmake Makefile >nul 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$= :end set X11= set nodebug= set djgpp_ver= +set sys_malloc= + +goto skipArchTag + arch-tag: 2d2fed23-4dc6-4006-a2e4-49daf0031f33 +:skipArchTag