Browse Source
* mpw-README, mpw-build.in, mpw-config.in, mpw-configure,
mpw-install: Remove files.
* src-release (DEVO_SUPPORT): Remove names of removed files.
* MAINTAINERS: Likewise.
jimb-rda-nptl-branch
8 changed files with 9 additions and 1266 deletions
@ -1,376 +0,0 @@ |
|||
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. |
|||
|
|||
(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.) |
|||
|
|||
INSTALLING GNU TOOLS |
|||
|
|||
* System Requirements |
|||
|
|||
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 |
|||
|
|||
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 |
|||
|
|||
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. |
|||
|
|||
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. |
|||
|
|||
'/' or ' ' embedded in any device, directory, or file name may or may |
|||
not work. |
|||
|
|||
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 |
|||
@ -1,204 +0,0 @@ |
|||
# Top-level script fragment to build everything for MPW. |
|||
|
|||
Set savedir "`Directory`" |
|||
|
|||
#Set Echo 1 |
|||
|
|||
Set ThisScript "{0}" |
|||
|
|||
Set objdir ":" |
|||
|
|||
Set verify 0 |
|||
|
|||
Set BuildTarget "none" |
|||
|
|||
# Parse arguments. |
|||
|
|||
Loop |
|||
Break If {#} == 0 |
|||
If "{BuildTarget}" =~ /none/ |
|||
Set BuildTarget "{1}" |
|||
Else |
|||
Echo Only one build target allowed, ignoring "{1}" |
|||
End If |
|||
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 |
|||
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-gdb |
|||
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}" 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}" 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}" 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 |
|||
Else If "{BuildTarget}" =~ /do-libiberty/ |
|||
SetDirectory :libiberty: |
|||
::mpw-build all |
|||
Else If "{BuildTarget}" =~ /do-opcodes/ |
|||
SetDirectory :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 |
|||
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-ld |
|||
"{ThisScript}" install-gdb |
|||
Else If "{BuildTarget}" =~ /install-binutils/ |
|||
SetDirectory :binutils: |
|||
::mpw-build install |
|||
Else If "{BuildTarget}" =~ /install-gas/ |
|||
SetDirectory :gas: |
|||
::mpw-build install |
|||
Else If "{BuildTarget}" =~ /install-gcc/ |
|||
SetDirectory :gcc: |
|||
: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}" |
|||
@ -1,113 +0,0 @@ |
|||
# Configuration fragment for Cygnus source tree. |
|||
|
|||
# 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 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 host_libs "mmalloc libiberty opcodes bfd readline gash tcl tk tclX" |
|||
|
|||
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 |
|||
|
|||
# Make up a special include directory that tools will share. |
|||
|
|||
If "`Exists "{objdir}"extra-include`" == "" |
|||
NewFolder "{objdir}"extra-include |
|||
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 |
|||
@ -1,448 +0,0 @@ |
|||
# Configuration script |
|||
# 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 |
|||
# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|||
|
|||
### WARNING |
|||
### This script must NOT use any 8-bit chars! |
|||
### WARNING |
|||
|
|||
# This is an MPW Shell script that sets everything up for compilation, |
|||
# mainly creating directories, and editing copies of files. |
|||
|
|||
Set savedir "`Directory`" |
|||
|
|||
#Set Echo 1 |
|||
|
|||
Set ThisScript "{0}" |
|||
|
|||
Set srcroot "--------" |
|||
|
|||
Set srcdir ":" |
|||
|
|||
Set objdir ":" |
|||
|
|||
Set prefix "{MPW}":GNUTools: |
|||
|
|||
Set exec_prefix "" |
|||
|
|||
Set bindir "" |
|||
|
|||
Set host_alias "m68k-apple-mpw" |
|||
|
|||
Set target_alias {host_alias} |
|||
|
|||
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 |
|||
Break If {#} == 0 |
|||
If "{1}" =~ /--cc/ |
|||
Set host_cc "{2}" |
|||
Shift 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 |
|||
Else If "{1}" =~ /--srcdir/ |
|||
Set srcdir "{2}" |
|||
Shift 1 |
|||
Else If "{1}" =~ /--srcroot/ |
|||
Set srcroot "{2}" |
|||
Shift 1 |
|||
Else If "{1}" =~ /--target/ |
|||
Set target_alias "{2}" |
|||
Shift 1 |
|||
Else If "{1}" =~ /-v/ |
|||
Set verify 1 |
|||
Set verifystr "-v" |
|||
Else If "{1}" =~ /--with-gnu-ld/ |
|||
Set with_gnu_ld 1 |
|||
Else |
|||
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. |
|||
|
|||
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 ' |
|||
Set ar_name '{AR_LIB}' |
|||
Set ranlib_name '{RANLIB_NULL}' |
|||
Set cc_ld_name '{CC_LD_LINK}' |
|||
Set prog_ext_name '{PROG_EXT_68K}' |
|||
Set extralibs_name '{EXTRALIBS_C}' |
|||
Set makepef_name '{MAKEPEF_NULL}' |
|||
Set rez_name '{REZ_68K}' |
|||
Else If "{host_cc}" =~ /sc68k/ |
|||
Set host_alias "m68k-apple-mpw" |
|||
Set cc_name '{CC_SC}' |
|||
Set segment_flag '-s ' |
|||
Set ar_name '{AR_LIB}' |
|||
Set ranlib_name '{RANLIB_NULL}' |
|||
Set cc_ld_name '{CC_LD_LINK}' |
|||
Set prog_ext_name '{PROG_EXT_68K}' |
|||
Set extralibs_name '{EXTRALIBS_C}' |
|||
Set makepef_name '{MAKEPEF_NULL}' |
|||
Set rez_name '{REZ_68K}' |
|||
Else If "{host_cc}" =~ /mwc68k/ |
|||
Set host_alias "m68k-apple-mpw" |
|||
Set cc_name '{CC_MWC68K}' |
|||
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_MWC68K}' |
|||
Set makepef_name '{MAKEPEF_NULL}' |
|||
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 ' |
|||
Set ar_name '{AR_68K_AR}' |
|||
Set ranlib_name '{RANLIB_RANLIB}' |
|||
Set cc_ld_name '{CC_68K_GCC}' |
|||
Set prog_ext_name '{PROG_EXT_68K}' |
|||
Set extralibs_name '{EXTRALIBS_C}' |
|||
Set makepef_name '{MAKEPEF_NULL}' |
|||
Set rez_name '{REZ_68K}' |
|||
Else If "{host_cc}" =~ /ppcc/ |
|||
Set host_alias "powerpc-apple-mpw" |
|||
Set cc_name '{CC_PPCC}' |
|||
Set segment_flag '-d ___s_e_g___=' |
|||
Set ar_name '{AR_PPCLINK}' |
|||
Set ranlib_name '{RANLIB_NULL}' |
|||
Set cc_ld_name '{CC_LD_PPCLINK}' |
|||
Set prog_ext_name '{PROG_EXT_XCOFF}' |
|||
Set extralibs_name '{EXTRALIBS_PPC}' |
|||
Set makepef_name '{MAKEPEF_PPC}' |
|||
Set rez_name '{REZ_PPC}' |
|||
Else If "{host_cc}" =~ /mrc/ |
|||
Set host_alias "powerpc-apple-mpw" |
|||
Set cc_name '{CC_MRC}' |
|||
Set segment_flag '-d ___s_e_g___=' |
|||
Set ar_name '{AR_PPCLINK}' |
|||
Set ranlib_name '{RANLIB_NULL}' |
|||
Set cc_ld_name '{CC_LD_PPCLINK}' |
|||
Set prog_ext_name '{PROG_EXT_XCOFF}' |
|||
Set extralibs_name '{EXTRALIBS_PPC}' |
|||
Set makepef_name '{MAKEPEF_PPC}' |
|||
Set rez_name '{REZ_PPC}' |
|||
Else If "{host_cc}" =~ /scppc/ |
|||
Set host_alias "powerpc-apple-mpw" |
|||
Set cc_name '{CC_SC}' |
|||
Set segment_flag '-d ___s_e_g___=' |
|||
Set ar_name '{AR_PPCLINK}' |
|||
Set ranlib_name '{RANLIB_NULL}' |
|||
Set cc_ld_name '{CC_LD_PPCLINK}' |
|||
Set prog_ext_name '{PROG_EXT_XCOFF}' |
|||
Set extralibs_name '{EXTRALIBS_PPC}' |
|||
Set makepef_name '{MAKEPEF_PPC}' |
|||
Set rez_name '{REZ_PPC}' |
|||
Else If "{host_cc}" =~ /mwcppc/ |
|||
Set host_alias "powerpc-apple-mpw" |
|||
Set cc_name '{CC_MWCPPC}' |
|||
Set segment_flag '-d ___s_e_g___=' |
|||
Set ar_name '{AR_MWLINKPPC}' |
|||
Set ranlib_name '{RANLIB_NULL}' |
|||
Set cc_ld_name '{CC_LD_MWLINKPPC}' |
|||
# Misleading, but we don't need a PEF step. |
|||
Set prog_ext_name '{PROG_EXT_68K}' |
|||
Set extralibs_name '{EXTRALIBS_MWCPPC}' |
|||
Set makepef_name '{MAKEPEF_NULL}' |
|||
Set rez_name '{REZ_PPC}' |
|||
Else If "{host_cc}" =~ /gccppc/ |
|||
Set host_alias "powerpc-apple-mpw" |
|||
Set cc_name '{CC_PPC_GCC}' |
|||
Set segment_flag '-d ___s_e_g___=' |
|||
Set ar_name '{AR_PPCLINK}' |
|||
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}' |
|||
Set extralibs_name '{EXTRALIBS_PPC}' |
|||
Set makepef_name '{MAKEPEF_PPC}' |
|||
Set rez_name '{REZ_PPC}' |
|||
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}" |
|||
|
|||
Set target_canonical "{target_alias}" |
|||
|
|||
Set configdirs "" |
|||
|
|||
If "{srcroot}" =~ /--------/ |
|||
Set srcroot "{srcdir}" |
|||
End If |
|||
If "`Exists "{srcdir}"`" == "" |
|||
Echo Source directory {srcdir} does not exist! |
|||
Exit 1 |
|||
End If |
|||
If "`Exists "{srcroot}"`" == "" |
|||
Echo Top-level source directory {srcroot} does not exist! |
|||
Exit 1 |
|||
End If |
|||
|
|||
Set target_cpu "`echo {target_canonical} | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`" |
|||
Set target_vendor "`echo {target_canonical} | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`" |
|||
Set target_os "`echo {target_canonical} | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`" |
|||
|
|||
# Create a file that is guaranteed to be older than any other here. |
|||
|
|||
If "`Exists "{objdir}"_oldest`" == "" |
|||
mpw-touch _oldest |
|||
End If |
|||
|
|||
# Record this before creating any files, makefiles sometimes mention |
|||
# 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} {verifystr} {enable_options} {disable_options} --norecursion" >>config.new |
|||
MoveIfChange config.new config.status |
|||
|
|||
If "`Exists "{srcdir}"mpw-config.in`" != "" |
|||
tr-7to8 "{srcdir}"mpw-config.in >"{objdir}"mpw-config.in |
|||
Execute "{objdir}"mpw-config.in |
|||
End If |
|||
|
|||
# Start Makefile construction by defining all the variables chosen by |
|||
# configuration. |
|||
|
|||
Echo "# This Makefile produced by mpw-configure. Changes may get lost!" > "{objdir}"Makefile.tem |
|||
Echo "srcroot = " {srcroot} >> "{objdir}"Makefile.tem |
|||
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 |
|||
Echo "target_vendor = " {target_vendor} >> "{objdir}"Makefile.tem |
|||
Echo "target_os = " {target_os} >> "{objdir}"Makefile.tem |
|||
Echo "target_canonical = " {target_canonical} >> "{objdir}"Makefile.tem |
|||
Echo "host_makefile_frag = " >> "{objdir}"Makefile.tem |
|||
Echo "target_makefile_frag = " >> "{objdir}"Makefile.tem |
|||
Echo "CC = " {cc_name} >> "{objdir}"Makefile.tem |
|||
Echo "AR = " {ar_name} >> "{objdir}"Makefile.tem |
|||
Echo "RANLIB = " {ranlib_name} >> "{objdir}"Makefile.tem |
|||
Echo "CC_LD = " {cc_ld_name} >> "{objdir}"Makefile.tem |
|||
Echo "PROG_EXT = " {prog_ext_name} >> "{objdir}"Makefile.tem |
|||
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`" != "" |
|||
tr-7to8 "{srcdir}"config:mpw-mh-mpw >>"{objdir}"Makefile.tem |
|||
Else If "`Exists "{srcroot}"config:mpw-mh-mpw`" != "" |
|||
tr-7to8 "{srcroot}"config:mpw-mh-mpw >>"{objdir}"Makefile.tem |
|||
Else |
|||
Echo "can't find a host config file!" |
|||
Exit 0 |
|||
End If |
|||
|
|||
# Append anything produced by the directory's mpw-config.in. |
|||
|
|||
If "`Exists "{objdir}"mk.tmp`" != "" |
|||
Catenate "{objdir}"mk.tmp >>"{objdir}"Makefile.tem |
|||
# An mpw-config.in might change so as not to create this |
|||
# anymore, so get rid of it now to be safe. |
|||
Delete -i -y "{objdir}"mk.tmp |
|||
End If |
|||
|
|||
# If there are sed scripts to edit the Unix Makefile.in, use them; otherwise |
|||
# use an mpw-make.in if present. |
|||
|
|||
If "`Exists "{srcdir}"mpw-make.sed`" != "" |
|||
If "`Exists "{objdir}"hacked_Makefile.in`" != "" |
|||
Set MakefileIn "{objdir}"hacked_Makefile.in |
|||
Else |
|||
Set MakefileIn "{srcdir}"Makefile.in |
|||
End If |
|||
# 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' -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 |
|||
Echo Created Makefile in "`Directory`" |
|||
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/@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 |
|||
Echo Created Makefile in "`Directory`" |
|||
End If |
|||
End If |
|||
|
|||
# Produce a build script if the source is defined. |
|||
|
|||
If "`Exists "{srcdir}"mpw-build.in`" != "" |
|||
Echo "Set srcroot " {srcroot} > "{objdir}"mpw-build.tem |
|||
Echo "Set srcdir " {srcdir} >> "{objdir}"mpw-build.tem |
|||
Echo "Set target_canonical " {target_canonical} >> "{objdir}"mpw-build.tem |
|||
Echo "Set prefix " {prefix} >> "{objdir}"mpw-build.tem |
|||
tr-7to8 "{srcdir}"mpw-build.in >>"{objdir}"mpw-build.tem |
|||
MoveIfChange "{objdir}"mpw-build.tem "{objdir}"mpw-build |
|||
If {verify} == 1 |
|||
Echo Created mpw-build in "`Directory`" |
|||
End If |
|||
End If |
|||
|
|||
# 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}" |
|||
@ -1,122 +0,0 @@ |
|||
# 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}" |
|||
Loading…
Reference in new issue