config.bat 7.32 KB
Newer Older
Richard M. Stallman's avatar
Richard M. Stallman committed
1 2 3
@echo off
rem   ----------------------------------------------------------------------
rem   Configuration script for MSDOS
4 5
rem   Copyright (C) 1994 Free Software Foundation, Inc.

Richard M. Stallman's avatar
Richard M. Stallman committed
6 7 8 9 10 11 12 13 14 15 16 17 18
rem   This file is part of GNU Emacs.

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   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
Karl Heuer's avatar
Karl Heuer committed
19 20 21
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.
Richard M. Stallman's avatar
Richard M. Stallman committed
22 23 24
rem   ----------------------------------------------------------------------
rem   YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:
rem
25
rem   + msdos version 3 or better.
26
rem   + djgpp version 1.12maint1 or later (version 2.0 or later recommended).
27 28
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
29
rem     line length limit.  The make that comes with djgpp does work.
30 31
rem   + rm and mv (from GNU file utilities).
rem   + sed (you can use the port that comes with DJGPP).
32
rem
33 34 35 36 37
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.
Richard M. Stallman's avatar
Richard M. Stallman committed
38
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
39 40
set X11=
set nodebug=
41
set djgpp_ver=
Morten Welinder's avatar
Morten Welinder committed
42 43 44 45
:again
if "%1" == "" goto usage
if "%1" == "--with-x" goto withx
if "%1" == "--no-debug" goto nodebug
Richard M. Stallman's avatar
Richard M. Stallman committed
46 47
if "%1" == "msdos" goto msdos
:usage
Morten Welinder's avatar
Morten Welinder committed
48 49
echo Usage: config [--with-x] [--no-debug] msdos
echo [Read the script before you run it.]
Richard M. Stallman's avatar
Richard M. Stallman committed
50 51
goto end
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
52 53 54 55
:withx
set X11=Y
shift
goto again
56
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
57 58 59 60
:nodebug
set nodebug=Y
shift
goto again
Richard M. Stallman's avatar
Richard M. Stallman committed
61
rem   ----------------------------------------------------------------------
Morten Welinder's avatar
Morten Welinder committed
62
:msdos
63 64
Echo Checking whether 'sed' is available...
sed -e "w junk.$$$" <Nul
Morten Welinder's avatar
Morten Welinder committed
65
If Exist junk.$$$ Goto sedOk
66
Echo To configure 'Emacs' you need to have 'sed'!
Morten Welinder's avatar
Morten Welinder committed
67 68
Goto End
:sedOk
69
Echo Checking whether 'rm' is available...
Morten Welinder's avatar
Morten Welinder committed
70 71
rm -f junk.$$$
If Not Exist junk.$$$ Goto rmOk
72
Echo To configure 'Emacs' you need to have 'rm'!
Morten Welinder's avatar
Morten Welinder committed
73 74
Goto End
:rmOk
75
Echo Checking whether 'mv' is available...
Morten Welinder's avatar
Morten Welinder committed
76 77
rm -f junk.1 junk.2
echo foo >junk.1
78
mv junk.1 ./junk.2
Morten Welinder's avatar
Morten Welinder committed
79
If Exist junk.2 Goto mvOk
80
Echo To configure 'Emacs' you need to have 'mv'!
Morten Welinder's avatar
Morten Welinder committed
81 82 83 84
rm -f junk.1
Goto End
:mvOk
rm -f junk.2
85
Echo Checking whether 'gcc' is available...
Morten Welinder's avatar
Morten Welinder committed
86 87 88
echo main(){} >junk.c
gcc -c junk.c
if exist junk.o goto gccOk
89
Echo To configure 'Emacs' you need to have 'gcc'!
Morten Welinder's avatar
Morten Welinder committed
90 91 92
rm -f junk.c
Goto End
:gccOk
93
rm -f junk.c junk.o junk junk.exe
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
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
109 110
gcc -o junk junk.c
if not exist junk.exe coff2exe junk
111 112 113 114 115 116
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
117 118
set djgpp_ver=1
If ErrorLevel 20 set djgpp_ver=2
119
rm -f junk.c junk junk.exe
120
Echo Configuring for DJGPP Version %DJGPP_VER% ...
Morten Welinder's avatar
Morten Welinder committed
121
Rem   ----------------------------------------------------------------------
Richard M. Stallman's avatar
Richard M. Stallman committed
122 123 124 125
Echo Configuring the source directory...
cd src

rem   Create "paths.h"
126
sed -f ../msdos/sed4.inp <paths.in >paths.tmp
Morten Welinder's avatar
Morten Welinder committed
127 128
update paths.tmp paths.h >nul
rm -f paths.tmp
Richard M. Stallman's avatar
Richard M. Stallman committed
129 130

rem   Create "config.h"
Morten Welinder's avatar
Morten Welinder committed
131
rm -f config.h2 config.tmp
132
cp config.in config.tmp
133
if "%X11%" == "" goto src4
134
sed -f ../msdos/sed2x.inp <config.in >config.tmp
135
:src4
Morten Welinder's avatar
Morten Welinder committed
136 137 138
sed -f ../msdos/sed2.inp <config.tmp >config.h2
update config.h2 config.h >nul
rm -f config.tmp config.h2
Richard M. Stallman's avatar
Richard M. Stallman committed
139 140 141 142

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

143
rem   Create "makefile" from "makefile.in".
144
rm -f makefile junk.c
145
sed -e "1,/cpp stuff/s@^# .*$@@" <makefile.in >junk.c
146
If "%DJGPP_VER%" == "1" Goto mfV1
147 148 149
gcc -E junk.c | sed -f ../msdos/sed1v2.inp >makefile
goto mfDone
:mfV1
Richard M. Stallman's avatar
Richard M. Stallman committed
150
gcc -E junk.c | sed -f ../msdos/sed1.inp >makefile
151
:mfDone
152
rm -f junk.c
153

Morten Welinder's avatar
Morten Welinder committed
154 155 156 157 158 159 160 161
if "%X11%" == "" goto src5
mv makefile makefile.tmp
sed -f ../msdos/sed1x.inp <makefile.tmp >makefile
rm -f makefile.tmp
:src5

if "%nodebug%" == "" goto src6
sed -e "/^CFLAGS *=/s/ *-g//" <makefile >makefile.tmp
162 163
sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >makefile
rm -f makefile.tmp
Morten Welinder's avatar
Morten Welinder committed
164
:src6
Richard M. Stallman's avatar
Richard M. Stallman committed
165 166 167 168 169
cd ..
rem   ----------------------------------------------------------------------
Echo Configuring the library source directory...
cd lib-src
rem   Create "makefile" from "makefile.in".
170 171
sed -e "1,/cpp stuff/s@^# .*$@@" <makefile.in >junk.c
gcc -E -I. -I../src junk.c | sed -e "s/^ /	/" -e "/^#/d" -e "/^[ 	]*$/d" >makefile.new
172
If "%DJGPP_VER%" == "2" goto libsrc-v2
173
sed -f ../msdos/sed3.inp <makefile.new >makefile
174 175 176 177
Goto libsrc2
:libsrc-v2
sed -f ../msdos/sed3v2.inp <makefile.new >makefile
:libsrc2
Morten Welinder's avatar
Morten Welinder committed
178
rm -f makefile.new junk.c
179
if "%nodebug%" == "" goto libsrc3
Morten Welinder's avatar
Morten Welinder committed
180
sed -e "/^CFLAGS *=/s/ *-g//" <makefile >makefile.tmp
181 182 183
sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >makefile
rm -f makefile.tmp
:libsrc3
Morten Welinder's avatar
Morten Welinder committed
184 185 186 187 188 189 190 191 192 193
cd ..
rem   ----------------------------------------------------------------------
if "%X11%" == "" goto oldx1
Echo Configuring the oldxmenu directory...
cd oldxmenu
sed -f ../msdos/sed5x.inp <makefile.in >makefile
if "%nodebug%" == "" goto oldx2
sed -e "/^CFLAGS *=/s/ *-g//" <makefile >makefile.tmp
mv -f makefile.tmp makefile
:oldx2
Richard M. Stallman's avatar
Richard M. Stallman committed
194
cd ..
Morten Welinder's avatar
Morten Welinder committed
195
:oldx1
Richard M. Stallman's avatar
Richard M. Stallman committed
196 197
rem   ----------------------------------------------------------------------
Echo Configuring the main directory...
198 199 200 201 202 203 204 205 206 207 208 209 210 211 212
If "%DJGPP_VER%" == "1" goto mainv1
Echo Looking for the GDB init file...
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
copy msdos\mainmake.v2 makefile >nul
:mainv1
213
If "%DJGPP_VER%" == "1" copy msdos\mainmake makefile >nul
Richard M. Stallman's avatar
Richard M. Stallman committed
214 215
rem   ----------------------------------------------------------------------
:end
216
set X11=
Morten Welinder's avatar
Morten Welinder committed
217
set nodebug=
218
set djgpp_ver=