dummy commit before egcs merge

This commit is contained in:
Jeff Law 1998-11-11 05:47:47 +00:00
parent 10b2757be5
commit 1e490350ff
14 changed files with 1247 additions and 74 deletions

View File

@ -1,3 +1,35 @@
Mon Nov 2 15:15:33 1998 Geoffrey Noer <noer@cygnus.com>
* mh-cygwin32: delete
* mh-cygwin: was mh-cygwin32
1998-10-26 Syd Polk <spolk@cygnus.com>
* acinclude.m4: TCLHDIR and TKHDIR need to be run through
cygpath for Microsoft builds.
1998-10-20 Syd Polk <spolk@cygnus.com>
* acinclude.m4: Re-exported TCL_LIBS and TCL_LD_SEARCH_FLAGS
because itcl needs them.
Mon Aug 31 17:50:53 1998 David Edelsohn <edelsohn@mhpcc.edu>
* mh-aix43 (NM_FOR_TARGET): Add -X32_64 as well.
Sat Aug 29 14:32:55 1998 David Edelsohn <edelsohn@mhpcc.edu>
* mh-aix43: New file.
Mon Aug 10 00:15:47 1998 HJ Lu (hjl@gnu.org)
* mt-linux (CXXFLAGS_FOR_TARGET): Add -D_GNU_SOURCE.
start-sanitize-tmgr
1998-07-29 Rob Savoye <rob@chinadoll.cygnus.com>
* .Sanitize: Add acinclude.m4 to Things-To-Lose.
end-sanitize-tmgr
start-sanitize-sky
Mon Jul 27 16:23:04 1998 Doug Evans <devans@canuck.cygnus.com>

9
config/mh-cygwin Normal file
View File

@ -0,0 +1,9 @@
# We don't want debugging info in Win32-hosted toolchains.
# Accomplish this by overriding CFLAGS.
CFLAGS=-O2
CXXFLAGS=-O2
# We also need to override LIBGCC2_DEBUG_CFLAGS so libgcc2 will be
# built without debugging information
LIBGCC2_DEBUG_CFLAGS=

View File

@ -743,6 +743,11 @@ if test -z "$show_help"; then
if test "$hardcode_direct" = no; then
compile_command="$compile_command $dir/$linklib"
elif test "$hardcode_minus_L" = no; then
case "$host" in
*-*-sunos*)
compile_shlibpath="$compile_shlibpath$dir:"
;;
esac
compile_command="$compile_command -L$dir -l$name"
elif test "$hardcode_shlibpath_var" = no; then
compile_shlibpath="$compile_shlibpath$dir:"
@ -1055,8 +1060,8 @@ if test -z "$show_help"; then
major=
versuffix=
verstring="0.0"
case "$version_type" in
sunos)
case "$host" in
*-*-sunos*)
versuffix=".0.0"
;;
esac
@ -1757,7 +1762,7 @@ libdir='$install_libdir'\
# There may be an optional sh(1) argument at the beginning of
# install_prog (especially on Windows NT).
if test "$nonopt" = "$SHELL"; then
if test "$nonopt" = "$SHELL" || test "$nonopt" = "/bin/sh"; then
# Aesthetically quote it.
arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
case "$arg" in

188
missing Executable file
View File

@ -0,0 +1,188 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
# Copyright (C) 1996, 1997 Free Software Foundation, Inc.
# Franc,ois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
case "$1" in
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing - GNU libit 0.0"
;;
-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;
aclocal)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`acinclude.m4' or \`configure.in'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`configure.in'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`acconfig.h' or \`configure.in'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER([^):]*:\([^)]*\)).*/\1/p' configure.in`
if test -z "$files"; then
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^):]*\)).*/\1/p' configure.in`
test -z "$files" || files="$files.in"
else
files=`echo "$files" | sed -e 's/:/ /g'`
fi
test -z "$files" && files="config.h.in"
touch $files
;;
automake)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print \
| sed 's/^\(.*\).am$/touch \1.in/' \
| sh
;;
bison|yacc)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if [ $# -ne 1 ]; then
eval LASTARG="\${$#}"
case "$LASTARG" in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
if [ ! -f y.tab.h ]; then
echo >y.tab.h
fi
if [ ! -f y.tab.c ]; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
lex|flex)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if [ $# -ne 1 ]; then
eval LASTARG="\${$#}"
case "$LASTARG" in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
if [ ! -f lex.yy.c ]; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
makeinfo)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy \`make' (AIX,
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
if test -z "$file"; then
file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
fi
touch $file
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and you do not seem to have it handy on your
system. You might have modified some files without having the
proper tools for further handling them. Check the \`README' file,
it often tells you about the needed prerequirements for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1' program."
exit 1
;;
esac
exit 0

87
mkdep Executable file
View File

@ -0,0 +1,87 @@
#!/bin/sh -
#
# Copyright (c) 1987 Regents of the University of California.
# All rights reserved.
#
# Redistribution and use in source and binary forms are permitted
# provided that the above copyright notice and this paragraph are
# duplicated in all such forms and that any documentation,
# advertising materials, and other materials related to such
# distribution and use acknowledge that the software was developed
# by the University of California, Berkeley. The name of the
# University may not be used to endorse or promote products derived
# from this software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
# @(#)mkdep.sh 5.12 (Berkeley) 6/30/88
#
MAKE=Makefile # default makefile name is "Makefile"
while :
do case "$1" in
# -f allows you to select a makefile name
-f)
MAKE=$2
shift; shift ;;
# the -p flag produces "program: program.c" style dependencies
# so .o's don't get produced
-p)
SED='s;\.o;;'
shift ;;
*)
break ;;
esac
done
if [ $# = 0 ] ; then
echo 'usage: mkdep [-p] [-f makefile] [flags] file ...'
exit 1
fi
if [ ! -w $MAKE ]; then
echo "mkdep: no writeable file \"$MAKE\""
exit 1
fi
TMP=/tmp/mkdep$$
trap 'rm -f $TMP ; exit 1' 1 2 3 13 15
cp $MAKE ${MAKE}.bak
sed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP
cat << _EOF_ >> $TMP
# DO NOT DELETE THIS LINE -- mkdep uses it.
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
_EOF_
# If your compiler doesn't have -M, add it. If you can't, the next two
# lines will try and replace the "cc -M". The real problem is that this
# hack can't deal with anything that requires a search path, and doesn't
# even try for anything using bracket (<>) syntax.
#
# egrep '^#include[ ]*".*"' /dev/null $* |
# sed -e 's/:[^"]*"\([^"]*\)".*/: \1/' -e 's/\.c/.o/' |
gcc -MM $* |
sed "
s; \./; ;g
$SED" >> $TMP
cat << _EOF_ >> $TMP
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
_EOF_
# copy to preserve permissions
cp $TMP $MAKE
rm -f ${MAKE}.bak $TMP
exit 0

36
mkinstalldirs Executable file
View File

@ -0,0 +1,36 @@
#! /bin/sh
# mkinstalldirs --- make directory hierarchy
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
# Last modified: 1994-03-25
# Public domain
errstatus=0
for file in ${1+"$@"} ; do
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
shift
pathcomp=
for d in ${1+"$@"} ; do
pathcomp="$pathcomp$d"
case "$pathcomp" in
-* ) pathcomp=./$pathcomp ;;
esac
if test ! -d "$pathcomp"; then
echo "mkdir $pathcomp" 1>&2
mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$?
fi
if test ! -d "$pathcomp"; then
errstatus=$lasterr
fi
pathcomp="$pathcomp/"
done
done
exit $errstatus
# mkinstalldirs ends here

32
move-if-change Executable file
View File

@ -0,0 +1,32 @@
#!/bin/sh
# Copyright (C) 1996 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
if
test -r $2
then
if
cmp $1 $2 > /dev/null
then
echo $2 is unchanged
rm -f $1
else
mv -f $1 $2
fi
else
mv -f $1 $2
fi

View File

@ -1,25 +1,376 @@
This is preliminary information about the Mac MPW port of the Cygnus tools.
This is basic information about the Macintosh(tm) MPW(tm) port of the
GNU tools. The information below applies to both native and cross
compilers.
To build everything, create an object directory, setdirectory into it, and do:
(Please note that there are two versions of this file; "mpw-README"
is the source form, and "Read Me for MPW" is the distribution form.
"Read Me for MPW" has 8-bit chars such as \Option-d embedded in it.)
::src:mpw-configure --target <name> --srcdir ::src: --prefix <whatever>
INSTALLING GNU TOOLS
Then
mpw-build all
* System Requirements
will build everything, and
To use these tools, you will need a Mac with a 68020 or better or else
any PowerMac, System 7.1 or later, and MPW 3.3 or 3.4. You will *not*
need any other MPW compiler unless you want to rebuild from sources,
nor even any include files, unless you are building actual Mac
applications. For PowerMac native you will need PPCLink, however;
also the executables are PowerPC-only.
* Automated Installation
The simplest way to install GNU tools is to run the Install script.
The script will copy things to where you want to keep them, will build
a UserStartup file with settings corresponding to where things were
copied, and offer to put that UserStartup file in your MPW folder.
The Install script does not alter anything in the System Folder, and
it does not take any action without confirmation.
The Install script will be at the top level of the binary
distribution, or at the top level of the object directory if
rebuilding from source. (The sources include a file called
"mpw-install" at the top level, but it is the source to the Install
script and cannot be run directly.)
* Manual Installation
If you don't want to run the Install script, you can do installation
manually; this section describes the steps involved.
The GNU tools can go in any directory that is in your {Commands} list.
We generally put all the tools somewhere like {Boot}Cygnus:latest:bin,
and then add to a UserStartup file:
set Commands "{Boot}Cygnus:latest:bin:,{Commands}"
However, the cpp and cc1 programs of GCC are not normally stored here.
Instead, they will be in a "lib" directory that is alongside "bin",
and organized by target and version underneath, with names like
:lib:gcc-lib:<target>:cygnus-<version>:
If you build and install everything yourself according to the build
instructions below, then you will not have any problems. However, you
may discover that GCC seems unable to find the right cpp and cc1;
usually this will be because directory names have changed. (Even
renaming your hard disk will make this happen.) In such cases, you
have several choices. One is just to add this directory to
{Commands}, but then you will not be able to get any other cpp or cc1,
such as those used by a different target or version. Another way is
to rename your disk and directories to match the prefix used when the
tools were compiled. Finally, you can set the variable
GCC_EXEC_PREFIX to point to the library directory:
set GCC_EXEC_PREFIX MyDisk:Stuff:lib:gcc-lib:
export GCC_EXEC_PREFIX
You may also want to edit MPW's HEXA 128 resource. When GCC is built
using a native GCC, it is compiled to use a special stack allocator
function alloca(). While this is very efficient, it means that GCC
will need considerable stack space to run, especially when compiling
large programs with optimization turned on. You give MPW more stack
by editing the HEXA 128 resource of the MPW Shell. A value of "0008
0000" gives 512K of stack size, which is usually sufficient.
USING GNU TOOLS
* Using Native PowerMac GCC
Using a native PowerMac GCC to produce MPW tools or MacOS applications
is more complicated than just "gC foo.c", although no more complicated
than with other Mac compilers.
To build a native PowerMac MPW tool, use this sequence, where hello.c
is the usual "hello world" program, and genericcfrg.r is the Rez file
with the code fragment resource:
gC -I{CIncludes} -fno-builtin -Dpascal= -c -g hello.c
PPCLink hello.o -o hello \Option-d
"{PPCLibraries}"StdCRuntime.o \Option-d
"{SharedLibraries}"InterfaceLib \Option-d
"{SharedLibraries}"StdCLib \Option-d
"{PPCLibraries}"PPCToolLibs.o \Option-d
"{PPCLibraries}"PPCCRuntime.o \Option-d
"{GCCPPCLibraries}"libgcc.xcoff
rez -d APPNAME='"'hello'"' GenericCFRG.r -o hello
setfile -t 'MPST' -c 'MPS ' hello
The same sequence works to build a MacOS application, but you set the file
type to 'APPL' and don't link in PPCToolLibs.o. For further details on
using MPW to build Mac applications, see the general MPW documentation.
Recent versions of PPCLink have an option to generate the code
fragment resource and automatically set creator and file type;
here is what GenericCFRG.r should look like if you have an older
PPCLink or are using GNU ld:
#include "CodeFragmentTypes.r"
resource 'cfrg' (0) {
{
kPowerPC,
kFullLib,
kNoVersionNum,kNoVersionNum,
0,0,
kIsApp,kOnDiskFlat,kZeroOffset,kWholeFork,
APPNAME // must be defined on Rez command line with -d option
}
};
In general this port of GCC supports the same option syntax and
behavior as its Unix counterpart. It also has similar compilation
rules, so it will run the assembler on .s files and so forth.
The GCC manual includes full information on the available options.
One option that may be especially useful is "-v", which shows you what
tools and options are being used; unlike most Mac C compilers, GCC
directs assembly and linking in addition to compilation.
MPW GCC does feature two extensions to the option syntax; '-d macro=name'
works just as '-Dmacro=name' does in Unix, and '-i directory' works the
same as '-Idirectory'.
MPW GCC supports the usual Pascal-style strings and alignment pragmas.
To find standard include files you can set the variable GCCIncludes:
set GCCIncludes MyDisk:MyIncludes:
export GCCIncludes
GCCIncludes is similar to MPW's CIncludes or CW's MWCIncludes. In
order to use MPW's usual include files, just say:
set GCCIncludes "{CIncludes}"
export GCCIncludes
* Using GCC as a Cross-Compiler
If you have a cross-compiler, and you have all of the correct
target-side crt0 and libraries available, then to compile and link a
file "foo.c", you can say just
gC foo.c
The output file will be an MPW binary file named "a.out"; the format
of the contents will depend on which target is in use, so for instance
a MIPS-targeting GCC will produce ECOFF or ELF executables.
Note that using MPW include files with a cross-compiler is somewhat
dangerous.
* Using the Assembler and Friends
The assembler ("as") and linker ("ld") are faithful ports of their
Unix counterparts. Similarly, the binutils "ar", "cplusfilt", "nm",
"objcopy", "objdump", "ranlib", "size", "strings", and "strip" are all
like they are under Unix. (Note that "cplusfilt" is usually called
"c++filt" under Unix.)
* Using GDB
There are two flavors of GDB. "gdb" is an MPW tool that works very
much like it does in Unix; put a command into the MPW worksheet and
type the <enter> key to send it to GDB. While "gdb" is running, you
cannot do anything else in MPW, although you can switch to other
Mac applications and use them.
"SiowGDB" is also a Mac application, but it is GDB using the SIOW
package to provide console emulation. Commands are exactly as for the
MPW tool, but since this is its own application, you can switch
between it and MPW.
BUILDING GNU TOOLS
This port of the GNU tools uses a configure script similar to
that used for GNU tools under Unix, but rewritten for MPW. As with
Unix configuration, there is an "object" directory that may be
different from the "source" directory. In the example commands below,
we will assume that we are currently in the object directory, and that
the source directory is "{Boot}Cygnus:src:".
* Requirements for Building
In addition to the sources, you will need a set of tools that the
configure and build scripts assume to be available. These tools
(and their versions, if relevant) are as follows:
byacc tool
flex (2.3.7) tool (and Flex.skel file)
forward-include script
MoveIfChange script
mpw-touch script
mpw-true script
NewFolderRecursive script
null-command script
open-brace script
sed (1.13) tool
tr-7to8 script
true script
The scripts are in the sources, under utils:mpw:. You must arrange to
get the other tools yourself (they are readily available from the
"usual" net sites, and are also on many CDROMS). In addition, there
will usually be a set of these available at ftp.cygnus.com, in pub/mac.
You may put the build tools in your usual Tools or Scripts
directories, or keep them in a separate directories. We prefer to
make a directory called "buildtools" and we put this in one of our
UserStartup files:
set Commands "{Boot}Cygnus:buildtools:,{Commands}"
Flex uses an environment variable FLEX_SKELETON to locate its skeleton
file, so you need to do something like this, preferably in a UserStartup:
Set FLEX_SKELETON "{Boot}"Cygnus:buildtools:Flex.skel
Export FLEX_SKELETON
* Configuring
Before you can build anything, you must configure. You do this by
creating an directory where object files will be stored, setdirectory
to that directory and do a configure command:
{Boot}Cygnus:src:mpw-configure --target <name> --cc <compiler> --srcdir {Boot}Cygnus:src: --prefix <whatever>
If the source directory is not in your {Commands} list, then you must
supply a full pathname to mpw-configure, since mpw-configure invokes
itself after switching into each subdirectory. Using a relative
pathname, even something like ':mpw-configure', will therefore not work.
<name> must be a known target. Valid ones include "m68k-apple-macos",
"powerpc-apple-macos", "i386-unknown-go32", "mips-idt-ecoff", and
"sh-hitachi-hms". Not all target types are accepted for all of the
tools yet.
<compiler> must be the name of the compiler to use. It defaults to "mpwc".
(m68k)
mpwc MPW C
sc68k Symantec C
mwc68k Metrowerks C (Codewarrior)
gcc68k GCC
(powerpc)
ppcc PPCC
mrc Macintosh on RisC (Mister C, aka(?) Frankenstein)
scppc Symantec C
mwcppc Metrowerks C (Codewarrior)
gccppc GCC
Not all compilers will compile all tools equally well! For m68k Macs,
MPW C has the best record so far (it has problems, but they can be
worked around), while for PowerMacs, CodeWarrior is the only compiler
that has successfully compiled everything into running code.
<prefix> is the path that "gcc" will prepend when looking for tools
to execute. GCC_EXEC_PREFIX overrides this value, so you need not
include it if you plan to use GCC_EXEC_PREFIX.
As an example, here is the configure line that you could use to build
native PowerMac GCC:
"{Boot}"Cygnus:src:mpw-configure --cc mwcppc --target powerpc-apple-macos --srcdir "{Boot}"Cygnus:src: --prefix "{Boot}"GNUTools:
* Building
If you use CodeWarrior, you *must* first set MWCIncludes to
{CIncludes}. This is because you will be building MPW tools, and
their standard I/O works by making references to data that is part of
the MPW Shell, which means that the code must be compiled and linked
with macros that refer to that data, and those macros are in
{CIncludes}, not the default {MWCIncludes}. Without this change, you
will encounter problems compiling libiberty/mpw.c, but tweaking that
file only masks the real problem, and does not fix it.
The command
mpw-build
will build everything. Building will take over an hour on a Quadra 800
or PowerMac 8100/110, longer if the sources are on a shared volume.
You may see some warnings; these are mostly likely benign, typically
disagreements about declarations of library and system functions.
* Installing
To install the just-built tools, use the command
mpw-build install
will install it.
This part of the installation procedure just copies files to the
location specified at configure time by <prefix>, and, in some cases,
renames them from temporary internal names to their usual names. This
install process is *not* the same as what the Install script does;
Install can copy tools from the installation location chosen at
configuration time to a user-chosen place, and sets up a UserStartup
file. Note that while the Install script is optional, the install
build action performs some tasks would be very hard to replicate
manually, so you should always do it before using the tools.
* Known Problems With Using Various Compilers to Build
Most versions of MPW C have problems with compiling GNU software.
MPW C 3.2.x has preprocessing bugs that render it incapable of
compiling the BFD library, so it can't be used at all for building BFD.
MPW C 3.3, 3.3.1, and 3.3.2 will spontaneously claim to have found
errors in the source code, but in fact the code is perfectly fine. If
this happens, just set the working directory back to the top-level
objdir (where the configure command above was performed), and type
"mpw-build all" again. If it goes on through the supposed error, then
you got one of the spurious errors. A full build may require a number
of these restarts.
MPW C 3.3.3 seems to work OK, at least with the aid of a number of
workarounds that are in the sources (look for #ifdef MPW_C).
Versions of MPW Make earlier than 4.0d2 have exhibited bizarre behavior,
failure to substitute variables and the like.
Metrowerks CW6 PPC linker (MWLinkPPC) seems to do bad things with memory
if the "Modern Memory Manager" is turned on (in the Memory control panel),
but works OK if it is turned off.
Metrowerks CW6 loses bigtime compiling opcodes:ppc-opc.c, which has
some deeply nested macros. (CW7 is OK.) There is a way to patch the
file, by substituting constant values. If you need to do this,
contact shebs@cygnus.com for details.
<Gestalt.h> is missing from {CIncludes} in the MPW version that comes
with CW7. You can just copy the one in CW7's {MWCIncludes}.
CW8 and later have changes to headers and such that will require changes
to the source in order to be able to use them to rebuild.
KNOWN BUGS
ar rc xxx doesn't work.
The declarations for memcpy and memcmp in some versions of header files
may conflict with GCC's builtin definition. Either use -fno-builtin
or ignore the warnings.
objdump -i idiocy where it creates dummy files.
This is not a bug, but - watch out for cr/nl translation! For instance,
if config/mpw-mh-mpw is not properly translated because it has been
copied or updated separately, then everything will almost build, but
you will get puzzling error messages from make or the compiler.
objcopy -O srec foo.o makes weird output filenames.
'/' or ' ' embedded in any device, directory, or file name may or may
not work.
Mac host requires -mgas but Unix hosts don't.
objcopy -O srec foo.o makes random output filenames.
Mac-x-mips requires -mgas but Unix hosts don't.
GDB will frequently require a '/' on the front of a device name in order
to recognize it as an absolute rather than a relative pathname.
GDB doesn't seem to use the printer port correctly, although it tries.
The cursor doesn't always spin as much as it should. To get elaborate
statistics and warnings about spin rates, add this to UserStartup:
set MEASURE_SPIN all
export MEASURE_SPIN

View File

@ -24,43 +24,91 @@ Loop
Shift 1
End Loop
If "{BuildTarget}" =~ /none/
Set BuildTarget "all"
End If
If {verify} == 1
Echo "#" Doing "{ThisScript}" "{BuildTarget}" in "`Directory`" ...
End If
Set ranmake 0
If "`Exists Makefile`" != ""
Echo "Set Echo 1" >{BuildTarget}.makeout
Make -f Makefile {BuildTarget} >>{BuildTarget}.makeout
{BuildTarget}.makeout
Delete {BuildTarget}.makeout
Else If "{BuildTarget}" =~ /all/
Set ranmake 1
End If
If "`Exists Makefile.PPC`" != ""
Echo "Set Echo 1" >{BuildTarget}.makeout.ppc
Make -f Makefile.PPC {BuildTarget} >>{BuildTarget}.makeout.ppc
{BuildTarget}.makeout.ppc
Delete {BuildTarget}.makeout.ppc
Set ranmake 1
End If
If {ranmake} == 1
Exit
End If
# Dispatch on various pseudo-targets.
If "{BuildTarget}" =~ /all/
Echo Started `Date`
"{ThisScript}" all-gcc
"{ThisScript}" all-ld
"{ThisScript}" all-gdb
Else If "{BuildTarget}" =~ /all-binutils/
Echo Finished `Date`
Else If "{BuildTarget}" =~ /all-libiberty/
"{ThisScript}" do-libiberty
Else If "{BuildTarget}" =~ /all-bfd/
"{ThisScript}" do-bfd
Else If "{BuildTarget}" =~ /all-opcodes/
"{ThisScript}" do-opcodes
Else If "{BuildTarget}" =~ /all-byacc/
"{ThisScript}" do-byacc
Else If "{BuildTarget}" =~ /all-flex/
"{ThisScript}" all-libiberty
"{ThisScript}" do-flex
Else If "{BuildTarget}" =~ /all-binutils/
"{ThisScript}" all-libiberty
"{ThisScript}" all-bfd
"{ThisScript}" all-opcodes
"{ThisScript}" do-binutils
Else If "{BuildTarget}" =~ /all-gas/
"{ThisScript}" do-libiberty
"{ThisScript}" do-bfd
"{ThisScript}" do-opcodes
"{ThisScript}" all-libiberty
"{ThisScript}" all-bfd
"{ThisScript}" all-opcodes
"{ThisScript}" do-gas
Else If "{BuildTarget}" =~ /all-gcc/
"{ThisScript}" all-libiberty
"{ThisScript}" all-gas
"{ThisScript}" all-binutils
"{ThisScript}" all-ld
"{ThisScript}" do-gcc
Else If "{BuildTarget}" =~ /all-gdb/
"{ThisScript}" do-libiberty
"{ThisScript}" do-bfd
"{ThisScript}" do-opcodes
"{ThisScript}" all-libiberty
"{ThisScript}" all-bfd
"{ThisScript}" all-opcodes
"{ThisScript}" do-gdb
Else If "{BuildTarget}" =~ /all-grez/
"{ThisScript}" all-libiberty
"{ThisScript}" all-bfd
"{ThisScript}" do-grez
Else If "{BuildTarget}" =~ /all-ld/
"{ThisScript}" do-libiberty
"{ThisScript}" do-bfd
"{ThisScript}" do-opcodes
"{ThisScript}" all-libiberty
"{ThisScript}" all-bfd
"{ThisScript}" all-opcodes
"{ThisScript}" do-ld
Else If "{BuildTarget}" =~ /do-byacc/
SetDirectory :byacc:
::mpw-build all
Else If "{BuildTarget}" =~ /do-flex/
SetDirectory :flex:
::mpw-build _bootstrap
::mpw-build all
Else If "{BuildTarget}" =~ /do-bfd/
SetDirectory :bfd:
::mpw-build all
@ -72,25 +120,34 @@ Else If "{BuildTarget}" =~ /do-opcodes/
::mpw-build all
Else If "{BuildTarget}" =~ /do-binutils/
SetDirectory :binutils:
::mpw-build stamps
::mpw-build all
Else If "{BuildTarget}" =~ /do-gas/
SetDirectory :gas:
::mpw-build stamps
::mpw-build all
Else If "{BuildTarget}" =~ /do-gcc/
SetDirectory :gcc:
::mpw-build all
:mpw-build all
Else If "{BuildTarget}" =~ /do-gdb/
SetDirectory :gdb:
::mpw-build all
Else If "{BuildTarget}" =~ /do-grez/
SetDirectory :grez:
::mpw-build all
Else If "{BuildTarget}" =~ /do-ld/
SetDirectory :ld:
::mpw-build all
Else If "{BuildTarget}" =~ /do-newlib/
SetDirectory :newlib:
::mpw-build all
Else If "{BuildTarget}" =~ /install/
"{ThisScript}" install-only-top
"{ThisScript}" install-binutils
"{ThisScript}" install-gas
"{ThisScript}" install-gcc
# "{ThisScript}" install-gdb
"{ThisScript}" install-ld
"{ThisScript}" install-gdb
Else If "{BuildTarget}" =~ /install-binutils/
SetDirectory :binutils:
::mpw-build install
@ -99,14 +156,49 @@ Else If "{BuildTarget}" =~ /install-gas/
::mpw-build install
Else If "{BuildTarget}" =~ /install-gcc/
SetDirectory :gcc:
::mpw-build install
:mpw-build install
Else If "{BuildTarget}" =~ /install-gdb/
SetDirectory :gdb:
::mpw-build install
Else If "{BuildTarget}" =~ /install-grez/
SetDirectory :grez:
::mpw-build install
Else If "{BuildTarget}" =~ /install-ld/
SetDirectory :ld:
::mpw-build install
Else If "{BuildTarget}" =~ /install-only/
"{ThisScript}" install-only-top
"{ThisScript}" install-only-binutils
"{ThisScript}" install-only-gas
"{ThisScript}" install-only-gcc
"{ThisScript}" install-only-gdb
"{ThisScript}" install-only-ld
Else If "{BuildTarget}" =~ /install-only-binutils/
SetDirectory :binutils:
::mpw-build install-only
Else If "{BuildTarget}" =~ /install-only-gas/
SetDirectory :gas:
::mpw-build install-only
Else If "{BuildTarget}" =~ /install-only-gcc/
SetDirectory :gcc:
:mpw-build install-only
Else If "{BuildTarget}" =~ /install-only-gdb/
SetDirectory :gdb:
::mpw-build install-only
Else If "{BuildTarget}" =~ /install-only-grez/
SetDirectory :grez:
::mpw-build install-only
Else If "{BuildTarget}" =~ /install-only-ld/
SetDirectory :ld:
::mpw-build install-only
Else If "{BuildTarget}" =~ /install-only-top/
NewFolderRecursive "{prefix}"
If "{prefix}" != "`Directory`"
Duplicate -y 'Read Me for MPW' "{prefix}"'Read Me for MPW'
Duplicate -y Install "{prefix}"Install
End If
Else
Echo {BuildTarget} not understood, ignoring
End If
SetDirectory "{savedir}"

View File

@ -1,13 +1,42 @@
# Configuration fragment for Cygnus source tree.
Set host_libs "libiberty opcodes bfd readline"
# Check that we can find all the special tools that we will need.
# The test for sed is semi-pointless, because it's already been invoked
# by the calculation of target_cpu in the main configure script, but
# the test will also show which one is being used.
Set host_tools "byacc flex binutils ld gas gcc gdb"
Set Exit 0
Echo byacc is `Which byacc`
Echo flex is `Which flex`
Echo forward-include is `Which forward-include`
Echo MoveIfChange is `Which MoveIfChange`
Echo mpw-touch is `Which mpw-touch`
Echo mpw-true is `Which mpw-true`
Echo NewFolderRecursive is `Which NewFolderRecursive`
Echo null-command is `Which null-command`
Echo open-brace is `Which open-brace`
Echo sed is `Which sed`
Echo 'tr-7to8' is `Which tr-7to8`
Echo true is `Which true`
Set Exit 1
Set target_libs ""
Set host_libs "mmalloc libiberty opcodes bfd readline gash tcl tk tclX"
Set target_tools ""
Set host_tools "texinfo byacc flex bison binutils ld gas gcc gdb make patch \Option-d
prms send-pr gprof gdbtest tgas etc expect dejagnu sim bash \Option-d
m4 autoconf ispell grep diff rcs cvs fileutils shellutils time \Option-d
textutils wdiff find emacs emacs19 uudecode hello tar gzip indent \Option-d
recode release sed utils guile perl apache inet gawk"
Set target_libs "newlib"
Set target_tools "examples"
# Configure the resource compiler if targeting Macs.
If {target_os} =~ /macos/ || {target_os} =~ /mpw/
Set host_tools "{host_tools} grez"
End If
Set configdirs "{host_libs} {host_tools} {target_libs} {target_tools}"
Export configdirs
@ -20,8 +49,65 @@ End If
Set edir "{objdir}extra-include:"
forward-include "{srcdir}"include:mpw:sys:file.h "{edir}"'sys/file.h'
forward-include "{srcdir}"include:mpw:sys:ioctl.h "{edir}"'sys/ioctl.h'
forward-include "{srcdir}"include:mpw:sys:param.h "{edir}"'sys/param.h'
forward-include "{srcdir}"include:mpw:sys:resource.h "{edir}"'sys/resource.h'
forward-include "{srcdir}"include:mpw:sys:stat.h "{edir}"'sys/stat.h'
forward-include "{srcdir}"include:mpw:sys:time.h "{edir}"'sys/time.h'
forward-include "{srcdir}"include:mpw:sys:types.h "{edir}"'sys/types.h'
forward-include "{srcroot}"include:aout:aout64.h "{edir}"'aout/aout64.h'
forward-include "{srcroot}"include:aout:ar.h "{edir}"'aout/ar.h'
forward-include "{srcroot}"include:aout:ranlib.h "{edir}"'aout/ranlib.h'
forward-include "{srcroot}"include:aout:reloc.h "{edir}"'aout/reloc.h'
forward-include "{srcroot}"include:aout:stab.def "{edir}"'aout/stab.def'
forward-include "{srcroot}"include:aout:stab_gnu.h "{edir}"'aout/stab_gnu.h'
If "`Exists "{srcroot}"include:aout:"{target_cpu}".h`" != ""
forward-include "{srcroot}"include:aout:"{target_cpu}".h "{edir}"'aout/'"{target_cpu}"'.h'
End If
forward-include "{srcroot}"include:coff:ecoff.h "{edir}"'coff/ecoff.h'
forward-include "{srcroot}"include:coff:internal.h "{edir}"'coff/internal.h'
forward-include "{srcroot}"include:coff:sym.h "{edir}"'coff/sym.h'
forward-include "{srcroot}"include:coff:symconst.h "{edir}"'coff/symconst.h'
If "`Exists "{srcroot}"include:coff:"{target_cpu}".h`" != ""
forward-include "{srcroot}"include:coff:"{target_cpu}".h "{edir}"'coff/'"{target_cpu}"'.h'
End If
If "{target_cpu}" =~ /powerpc/
forward-include "{srcroot}"include:coff:rs6000.h "{edir}"'coff/rs6000.h'
End If
forward-include "{srcroot}"include:elf:common.h "{edir}"'elf/common.h'
forward-include "{srcroot}"include:elf:dwarf.h "{edir}"'elf/dwarf.h'
forward-include "{srcroot}"include:elf:dwarf2.h "{edir}"'elf/dwarf2.h'
forward-include "{srcroot}"include:elf:external.h "{edir}"'elf/external.h'
forward-include "{srcroot}"include:elf:internal.h "{edir}"'elf/internal.h'
# Believe it or not, GDB needs this for all targets.
forward-include "{srcroot}"include:elf:mips.h "{edir}"'elf/mips.h'
If "`Exists "{srcroot}"include:elf:"{target_cpu}".h`" != ""
forward-include "{srcroot}"include:elf:"{target_cpu}".h "{edir}"'elf/'"{target_cpu}"'.h'
End If
If "{target_cpu}" =~ /powerpc/
forward-include "{srcroot}"include:elf:ppc.h "{edir}"'elf/ppc.h'
End If
If "`Exists "{srcroot}"include:opcode:"{target_cpu}".h`" != ""
forward-include "{srcroot}"include:opcode:"{target_cpu}".h "{edir}"'opcode/'"{target_cpu}"'.h'
End If
If "{target_cpu}" =~ /powerpc/
forward-include "{srcroot}"include:opcode:ppc.h "{edir}"'opcode/ppc.h'
End If
# Add some bfd includes that get mentioned outside the bfd dir.
forward-include "{srcroot}"bfd:libcoff.h "{edir}"'bfd/libcoff.h'
forward-include "{srcroot}"bfd:libecoff.h "{edir}"'bfd/libecoff.h'
# Translate random files into MPW-only character set.
tr-7to8 "{srcdir}"mpw-README > "{objdir}Read Me for MPW"
tr-7to8 "{srcdir}"mpw-install > "{objdir}"Install

View File

@ -1,5 +1,5 @@
# Configuration script
# Copyright (C) 1994, 1995 Free Software Foundation, Inc.
# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -16,7 +16,7 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
### WARNING
### This script (and mpw-config.in fragments) must NOT use any 8-bit chars!
### This script must NOT use any 8-bit chars!
### WARNING
# This is an MPW Shell script that sets everything up for compilation,
@ -38,6 +38,8 @@ Set prefix "{MPW}":GNUTools:
Set exec_prefix ""
Set bindir ""
Set host_alias "m68k-apple-mpw"
Set target_alias {host_alias}
@ -46,9 +48,16 @@ Set host_cc "mpwc"
Set with_gnu_ld 0
Set helpoutput 0
Set recurse 1
Set verify 0
Set verifystr ""
Set enable_options ""
Set disable_options ""
# Parse arguments.
Loop
@ -56,15 +65,25 @@ Loop
If "{1}" =~ /--cc/
Set host_cc "{2}"
Shift 1
Else If "{1}" =~ /--enable/
Set "{2}" 1
Else If "{1}" =~ /--bindir/
Set bindir "{2}"
Shift 1
Else If "{1}" =~ /--disable-?+/
Set `Echo {1} | sed -e 's/--disable-/enable_/'` no
Set disable_options "{disable_options} '{1}'"
Else If "{1}" =~ /--enable-?+/
Set `Echo {1} | sed -e 's/--enable-/enable_/'` yes
Set enable_options "{enable_options} '{1}'"
Else If "{1}" =~ /--exec-prefix/
Set exec_prefix "{2}"
Shift 1
Else If "{1}" =~ /--help/
Set helpoutput 1
Else If "{1}" =~ /--host/
Set host_alias "{2}"
Shift 1
Else If "{1}" =~ /--norecursion/
Set recurse 0
Else If "{1}" =~ /--prefix/
Set prefix "{2}"
Shift 1
@ -83,12 +102,35 @@ Loop
Else If "{1}" =~ /--with-gnu-ld/
Set with_gnu_ld 1
Else
Echo "{1}" is not a valid argument
Echo -n 'mpw-configure: Unrecognized option: "'
Echo -n "{1}"
Echo '"; use --help for usage.'
Exit 1
End If
Shift 1
End Loop
If {helpoutput} == 1
Echo "Usage: mpw-configure [OPTIONS]"
Echo ""
Echo "Options: [defaults in brackets]"
Echo "--bindir DIR directory for binaries []"
Echo "--cc CC use C compiler CC [mpwc]"
Echo "--disable-FOO do not include feature FOO"
Echo "--enable-FOO include feature FOO"
Echo "--exec-prefix DIR install host-dependent files into DIR []"
Echo "--help print this message"
Echo "--host HOST configure for HOST [m68k-apple-mpw]"
Echo "--norecursion configure this directory only [recurse]"
Echo "--prefix DIR install into DIR [{MPW}:GNUTools:]"
Echo "--srcdir DIR find the sources in DIR [:]"
Echo "--srcroot DIR find the toplevel sources in DIR [:]"
Echo "--target TARGET configure for TARGET [TARGET=HOST]"
Echo "-v verbose"
Echo "--with-gnu-ld link using GNU ld [no]"
Exit 0
End If
Set Exit 0
# Default exec_prefix from prefix.
@ -97,12 +139,16 @@ If "{exec_prefix}" == ""
Set exec_prefix "{prefix}"
End If
If "{bindir}" == ""
Set bindir "{prefix}"bin:
End If
# Point to the correct set of tools to use with the chosen compiler.
If "{host_cc}" =~ /mpwc/
Set host_alias "m68k-apple-mpw"
Set cc_name '{CC_MPW_C}'
Set segment_flag '-s {Default}'
Set segment_flag '-s '
Set ar_name '{AR_LIB}'
Set ranlib_name '{RANLIB_NULL}'
Set cc_ld_name '{CC_LD_LINK}'
@ -113,7 +159,7 @@ If "{host_cc}" =~ /mpwc/
Else If "{host_cc}" =~ /sc68k/
Set host_alias "m68k-apple-mpw"
Set cc_name '{CC_SC}'
Set segment_flag '-s {Default}'
Set segment_flag '-s '
Set ar_name '{AR_LIB}'
Set ranlib_name '{RANLIB_NULL}'
Set cc_ld_name '{CC_LD_LINK}'
@ -124,18 +170,18 @@ Else If "{host_cc}" =~ /sc68k/
Else If "{host_cc}" =~ /mwc68k/
Set host_alias "m68k-apple-mpw"
Set cc_name '{CC_MWC68K}'
Set segment_flag '-s {Default}'
Set segment_flag '-s '
Set ar_name '{AR_MWLINK68K}'
Set ranlib_name '{RANLIB_NULL}'
Set cc_ld_name '{CC_LD_MWLINK68K}'
Set prog_ext_name '{PROG_EXT_68K}'
Set extralibs_name '{EXTRALIBS_C}'
Set extralibs_name '{EXTRALIBS_MWC68K}'
Set makepef_name '{MAKEPEF_NULL}'
Set rez_name '{REZ_PPC}'
Set rez_name '{REZ_68K}'
Else If "{host_cc}" =~ /gcc68k/
Set host_alias "m68k-apple-mpw"
Set cc_name '{CC_68K_GCC}'
Set segment_flag '-s {Default}'
Set segment_flag '-s '
Set ar_name '{AR_68K_AR}'
Set ranlib_name '{RANLIB_RANLIB}'
Set cc_ld_name '{CC_68K_GCC}'
@ -146,7 +192,7 @@ Else If "{host_cc}" =~ /gcc68k/
Else If "{host_cc}" =~ /ppcc/
Set host_alias "powerpc-apple-mpw"
Set cc_name '{CC_PPCC}'
Set segment_flag ''
Set segment_flag '-d ___s_e_g___='
Set ar_name '{AR_PPCLINK}'
Set ranlib_name '{RANLIB_NULL}'
Set cc_ld_name '{CC_LD_PPCLINK}'
@ -157,7 +203,7 @@ Else If "{host_cc}" =~ /ppcc/
Else If "{host_cc}" =~ /mrc/
Set host_alias "powerpc-apple-mpw"
Set cc_name '{CC_MRC}'
Set segment_flag ''
Set segment_flag '-d ___s_e_g___='
Set ar_name '{AR_PPCLINK}'
Set ranlib_name '{RANLIB_NULL}'
Set cc_ld_name '{CC_LD_PPCLINK}'
@ -168,7 +214,7 @@ Else If "{host_cc}" =~ /mrc/
Else If "{host_cc}" =~ /scppc/
Set host_alias "powerpc-apple-mpw"
Set cc_name '{CC_SC}'
Set segment_flag ''
Set segment_flag '-d ___s_e_g___='
Set ar_name '{AR_PPCLINK}'
Set ranlib_name '{RANLIB_NULL}'
Set cc_ld_name '{CC_LD_PPCLINK}'
@ -179,7 +225,7 @@ Else If "{host_cc}" =~ /scppc/
Else If "{host_cc}" =~ /mwcppc/
Set host_alias "powerpc-apple-mpw"
Set cc_name '{CC_MWCPPC}'
Set segment_flag ''
Set segment_flag '-d ___s_e_g___='
Set ar_name '{AR_MWLINKPPC}'
Set ranlib_name '{RANLIB_NULL}'
Set cc_ld_name '{CC_LD_MWLINKPPC}'
@ -191,12 +237,13 @@ Else If "{host_cc}" =~ /mwcppc/
Else If "{host_cc}" =~ /gccppc/
Set host_alias "powerpc-apple-mpw"
Set cc_name '{CC_PPC_GCC}'
Set segment_flag ''
Set segment_flag '-d ___s_e_g___='
Set ar_name '{AR_PPCLINK}'
Set ranlib_name '{RANLIB_RANLIB}'
If {with_gnu_ld} == 1
Set ranlib_name '{RANLIB_RANLIB}'
Set cc_ld_name '{CC_LD_GLD}'
Else
Set ranlib_name '{RANLIB_NULL}'
Set cc_ld_name '{CC_LD_PPCLINK}'
End If
Set prog_ext_name '{PROG_EXT_XCOFF}'
@ -207,6 +254,13 @@ Else
Echo "{host_cc}" is not a known MPW compiler type
End If
Set dash_c_flag ''
If "{host_cc}" =~ /gcc68k/
Set dash_c_flag '-c'
Else If "{host_cc}" =~ /gccppc/
Set dash_c_flag '-c'
End If
# (should interpret aliases if not in canonical form)
Set host_canonical "{host_alias}"
@ -241,7 +295,7 @@ End If
# dependencies on config.status.
Echo "# This directory was configured as follows:" >config.new
Echo "{ThisScript} --host {host_alias} --target {target_alias} --srcdir {srcdir} --srcroot {srcroot} --prefix {prefix} --cc {host_cc}" >>config.new
Echo "{ThisScript} --host {host_alias} --target {target_alias} --srcdir {srcdir} --srcroot {srcroot} --prefix {prefix} --cc {host_cc} {verifystr} {enable_options} {disable_options} --norecursion" >>config.new
MoveIfChange config.new config.status
If "`Exists "{srcdir}"mpw-config.in`" != ""
@ -258,6 +312,7 @@ Echo "topsrcdir = " {srcroot} >> "{objdir}"Makefile.tem
Echo "srcdir = " {srcdir} >> "{objdir}"Makefile.tem
Echo "mpw_prefix = " {prefix} >> "{objdir}"Makefile.tem
Echo "mpw_exec_prefix = " {exec_prefix} >> "{objdir}"Makefile.tem
Echo "mpw_bindir = " {bindir} >> "{objdir}"Makefile.tem
Echo "host_alias = " {host_alias} >> "{objdir}"Makefile.tem
Echo "target_alias = " {target_alias} >> "{objdir}"Makefile.tem
Echo "target_cpu = " {target_cpu} >> "{objdir}"Makefile.tem
@ -275,6 +330,16 @@ Echo "EXTRALIBS = " {extralibs_name} >> "{objdir}"Makefile.tem
Echo "MAKEPEF = " {makepef_name} >> "{objdir}"Makefile.tem
Echo "REZ = " {rez_name} >> "{objdir}"Makefile.tem
If {host_cc} =~ /gccppc/
Echo -n "dq =\Option-d\Option-d\Option-d" > "{objdir}"Makefile.tem0
Echo '"' >> "{objdir}"Makefile.tem0
tr-7to8 "{objdir}"Makefile.tem0 >>"{objdir}"Makefile.tem
Else
Echo -n "dq ='" >> "{objdir}"Makefile.tem
Echo -n '"' >> "{objdir}"Makefile.tem
Echo "'" >> "{objdir}"Makefile.tem
End If
# Append the master set of definitions for the various compilers.
If "`Exists "{srcdir}"config:mpw-mh-mpw`" != ""
@ -304,15 +369,25 @@ If "`Exists "{srcdir}"mpw-make.sed`" != ""
Else
Set MakefileIn "{srcdir}"Makefile.in
End If
If "`Exists "{srcroot}"utils:mpw:g-mpw-make.sed`" != ""
# Find the generic makefile editing script.
If "`Exists "{srcroot}"config:mpw:g-mpw-make.sed`" != ""
sed -f "{srcroot}"config:mpw:g-mpw-make.sed "{MakefileIn}" >"{objdir}"Makefile.tem1
Else If "`Exists "{srcroot}"utils:mpw:g-mpw-make.sed`" != ""
sed -f "{srcroot}"utils:mpw:g-mpw-make.sed "{MakefileIn}" >"{objdir}"Makefile.tem1
Else If "`Exists "{srcdir}"g-mpw-make.sed`" != ""
sed -f "{srcdir}"g-mpw-make.sed "{MakefileIn}" >"{objdir}"Makefile.tem1
Else
Echo Warning: g-mpw-make.sed not found, copying "{MakefileIn}" verbatim...
Catenate "{MakefileIn}" >"{objdir}"Makefile.tem1
End If
sed -f "{srcdir}"mpw-make.sed "{objdir}"Makefile.tem1 >"{objdir}"Makefile.tem2
sed -e 's/^prefix = .*$/prefix = {mpw_prefix}/g' -e 's/^exec_prefix = .*$/exec_prefix = {mpw_exec_prefix}/g' "{objdir}"Makefile.tem2 >"{objdir}"Makefile.tem3
sed -e "s/@SEGMENT_FLAG@/{segment_flag}/" "{objdir}"Makefile.tem3 >"{objdir}"mpw-make.in
sed -e 's/^prefix = .*$/prefix = {mpw_prefix}/g' -e 's/^exec_prefix = .*$/exec_prefix = {mpw_exec_prefix}/g' -e 's/^bindir = @bindir@/bindir = {mpw_bindir}/g' "{objdir}"Makefile.tem2 >"{objdir}"Makefile.tem3
sed -e "s/@DASH_C_FLAG@/{dash_c_flag}/" -e "s/@SEGMENT_FLAG(\([^)]*\))@/{segment_flag}\1/" "{objdir}"Makefile.tem3 >"{objdir}"mpw-make.in
tr-7to8 "{objdir}"mpw-make.in >>"{objdir}"Makefile.tem
If "`Exists "{objdir}"mk.sed`" != ""
sed -f "{objdir}"mk.sed "{objdir}"Makefile.tem >"{objdir}"Makefile.tem2
Rename -y "{objdir}"Makefile.tem2 "{objdir}"Makefile.tem
End If
MoveIfChange "{objdir}"Makefile.tem "{objdir}"Makefile
Delete -i -y "{objdir}"Makefile.tem[12]
If {verify} == 1
@ -320,8 +395,12 @@ If "`Exists "{srcdir}"mpw-make.sed`" != ""
End If
Else If "`Exists "{srcdir}"mpw-make.in`" != ""
sed -e 's/^prefix = .*$/prefix = {mpw_prefix}/g' "{srcdir}"mpw-make.in >"{objdir}"Makefile.tem1
sed -e "s/@SEGMENT_FLAG@/{segment_flag}/" "{objdir}"Makefile.tem1 >"{objdir}"Makefile.tem2
sed -e "s/@DASH_C_FLAG@/{dash_c_flag}/" -e "s/@SEGMENT_FLAG(\([^)]*\))@/{segment_flag}}\1/" "{objdir}"Makefile.tem1 >"{objdir}"Makefile.tem2
tr-7to8 "{objdir}"Makefile.tem2 >>"{objdir}"Makefile.tem
If "`Exists "{objdir}"mk.sed`" != ""
sed -f "{objdir}"mk.sed "{objdir}"Makefile.tem >"{objdir}"Makefile.tem2
Rename -y "{objdir}"Makefile.tem2 "{objdir}"Makefile.tem
End If
MoveIfChange "{objdir}"Makefile.tem "{objdir}"Makefile
Delete -i -y "{objdir}"Makefile.tem[12]
If {verify} == 1
@ -343,21 +422,27 @@ If "`Exists "{srcdir}"mpw-build.in`" != ""
End If
End If
For subdir In {configdirs}
Set savedir "`Directory`"
If "`Exists "{srcdir}{subdir}:"`" == ""
Echo Strange, no {subdir} in {srcdir}
Continue
End If
If {verify} == 1
Echo Configuring {subdir}...
End If
If "`Exists "{objdir}{subdir}:"`" == ""
NewFolder "{objdir}{subdir}"
End If
SetDirectory "{objdir}{subdir}:"
"{ThisScript}" --target "{target_canonical}" --srcdir "{srcdir}{subdir}:" --srcroot "{srcroot}" --prefix "{prefix}" --cc "{host_cc}" {verifystr}
SetDirectory "{savedir}"
End For
# Apply ourselves recursively to the list of subdirectories to configure.
If {recurse} == 1
For subdir In {configdirs}
Set savedir "`Directory`"
If "`Exists "{srcdir}{subdir}:"`" == ""
If {verify} == 1
Echo No "{srcdir}{subdir}:" found, skipping
End If
Continue
End If
If {verify} == 1
Echo Configuring {subdir}...
End If
If "`Exists "{objdir}{subdir}:"`" == ""
NewFolder "{objdir}{subdir}"
End If
SetDirectory "{objdir}{subdir}:"
"{ThisScript}" --target "{target_canonical}" --srcdir "{srcdir}{subdir}:" --srcroot "{srcroot}" --prefix "{prefix}" --cc "{host_cc}" {verifystr} {enable_options} {disable_options}
SetDirectory "{savedir}"
End For
End If
SetDirectory "{savedir}"

122
mpw-install Normal file
View File

@ -0,0 +1,122 @@
# GNU Install script for MPW.
Set OldExit "{Exit}"
Set Exit 0
Set TempUserStartup "{TempFolder}"__temp__UserStartup
Echo '# UserStartup generated by GNU Install script' > "{TempUserStartup}"
Echo '' >> "{TempUserStartup}"
# (should) Check that disk space is sufficient for installation.
# Assume that the install script is where everything else is.
Set thisdir "`Directory`"
# Copy the binaries to the desired place.
Confirm -t "Copy the binaries to somewhere else?"
Set TmpStatus {Status}
If {TmpStatus} == 0
Set bindest "`GetFileName -d -m "Where to install the binaries?"`"
If {Status} == 0
If "`Exists "{thisdir}bin"`" != ""
For afile In "{thisdir}"bin:\Option-x
Duplicate -y "{afile}" "{bindest}"
End For
Else
Echo "bin directory not found, exiting"
Exit 1
End If
Else
Echo "No destination supplied, exiting"
Exit 1
End If
Else If {TmpStatus} == 4
# Use the existing directory.
Set bindest "{thisdir}bin:"
Else
# Cancelled from confirmation, escape altogether.
Exit 1
End If
# Copy the libraries to the desired place.
Confirm -t "Copy the libraries to somewhere else?"
Set TmpStatus {Status}
If {TmpStatus} == 0
Set libdest "`GetFileName -d -m "Where to install the libraries?"`"
If {Status} == 0
If "`Exists "{thisdir}lib:"`" != ""
For afile In "{thisdir}"lib:\Option-x
Duplicate -y "{afile}" "{libdest}"
End For
Else
Echo "lib directory not found, exiting"
Exit 1
End If
Else
Echo "No destination supplied, exiting"
Exit 1
End If
Else If {TmpStatus} == 4
# Use the existing directory.
Set libdest "{thisdir}lib:"
Else
# Cancelled from confirmation, escape altogether.
Exit 1
End If
# Add the location of the binaries to the command path.
Echo -n 'Set Commands "' >> "{TempUserStartup}"
Echo -n "{bindest}" >> "{TempUserStartup}"
Echo ',{Commands}"' >> "{TempUserStartup}"
Echo '' >> "{TempUserStartup}"
# Set up GCC exec prefix.
Set gcclibdir "{libdest}"gcc-lib:
Echo -n 'Set GCC_EXEC_PREFIX "' >> "{TempUserStartup}"
Echo -n "{gcclibdir}" >> "{TempUserStartup}"
Echo '"' >> "{TempUserStartup}"
Echo "Export GCC_EXEC_PREFIX" >> "{TempUserStartup}"
Echo '' >> "{TempUserStartup}"
# Set up path to libgcc.xcoff etc.
Echo -n 'Set GCCPPCLibraries "' >> "{TempUserStartup}"
Echo -n "{libdest}" >> "{TempUserStartup}"
Echo '"' >> "{TempUserStartup}"
Echo "Export GCCPPCLibraries" >> "{TempUserStartup}"
Echo '' >> "{TempUserStartup}"
# Display contents of UserStartup, confirm installation.
Set UserStartupName "UserStartup\Option-8GNU"
Echo "Contents of" {UserStartupName} "will be:"
Catenate "{TempUserStartup}"
Confirm "Install {UserStartupName} into the MPW folder {MPW} ?"
If {Status} == 0
Duplicate "{TempUserStartup}" "{MPW}{UserStartupName}"
Delete -y "{TempUserStartup}"
Else
Echo "{UserStartupName} file not installed"
End If
# (should) Check HEXA resource, warn if low.
# (should) Check for spaces in pathnames, warn if found.
Echo "Installation was successful."
Echo ""
Echo "Be sure to review the usage notes in 'Read Me for MPW' before proceeding!"
# Restore previous settings.
Set Exit "{OldExit}"

48
symlink-tree Executable file
View File

@ -0,0 +1,48 @@
#!/bin/sh
# Create a symlink tree.
#
# Syntax: symlink-tree srcdir "ignore1 ignore2 ..."
#
# where srcdir is the directory to create a symlink tree to,
# and "ignoreN" is a list of files/directories to ignore.
prog=$0
srcdir=$1
ignore="$2"
ignore_additional=". .. CVS"
# If we were invoked with a relative path name, adjust ${prog} to work
# in subdirs.
case ${prog} in
/*) ;;
*) prog=../${prog} ;;
esac
# Set newsrcdir to something subdirectories can use.
case ${srcdir} in
/*) newsrcdir=${srcdir} ;;
*) newsrcdir=../${srcdir} ;;
esac
for f in `ls -a ${srcdir}`; do
if [ -d ${srcdir}/$f ]; then
found=
for i in ${ignore} ${ignore_additional}; do
if [ "$f" = "$i" ]; then
found=yes
fi
done
if [ -z "${found}" ]; then
echo "$f ..working in"
if [ -d $f ]; then true; else mkdir $f; fi
(cd $f; ${prog} ${newsrcdir}/$f "${ignore}")
fi
else
echo "$f ..linked"
rm -f $f
ln -s ${srcdir}/$f .
fi
done
exit 0

6
ylwrap
View File

@ -31,7 +31,7 @@ prog="$1"
shift
# Make any relative path in $prog absolute.
case "$prog" in
/*) ;;
/* | [A-Za-z]:\\*) ;;
*/*) prog="`pwd`/$prog" ;;
esac
@ -75,7 +75,7 @@ mkdir $dirname || exit 1
cd $dirname
case "$input" in
/*)
/* | [A-Za-z]:\\*)
# Absolute path; do nothing.
;;
*)
@ -95,7 +95,7 @@ if test $status -eq 0; then
# If $2 is an absolute path name, then just use that,
# otherwise prepend `../'.
case "$2" in
/*) target="$2";;
/* | [A-Za-z]:\\*) target="$2";;
*) target="../$2";;
esac
mv "$1" "$target" || status=$?