mac-rom/Make/Build

318 lines
8.3 KiB
Plaintext

#
# File: Build
#
# Contains: The main build script for building Universal ROMs.
#
# Copyright: © 1989-1993 by Apple Computer, Inc., all rights reserved.
#
# Change History (most recent first):
#
# <SM3> 9/21/93 kc Remove -symbols option. It is now turned on by default in the
# various makefiles.
# <SM2> 3/31/93 kc Update -Symbols option and move makeout file into the new text
# folder.
# <1> 2/21/93 kc first checked in
# <SM43> 2/11/93 CSS Rollin build script support for DBlite
# <SM42> 12/8/92 RC Added Build RISC feature (similar to the way Build LC930 works)
# <SM41> 12/2/92 kc Update AOpts and MOpts. Moved the line that sets the shell
# variable "Commands" into the makefiles, so that the output of
# make can be executed indipendently from the build script.
# <SM40> 11/23/92 kc Fix -p and add -ram option.
# <SM39> 11/23/92 kc Rewrite for new makefiles.
#
# Setup our aliases, variables, exports and defaults.
#
Set StartTime `Date -n`
Set Exit 0
UnSet Targets EchoCmds Quiet Progress BuildSet Overrides
Set Usage "¶
/ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ\¶n¶
| usage: Build buildNameÉ [targetsÉ] [optionsÉ] |¶n¶
| |¶n¶
| buildNames: ROM 68k Universal ROM |¶n¶
| RISC RISC Universal ROM |¶n¶
| LC930 One meg rom for LC930 |¶n¶
| dbLite One meg rom for dbLite |¶n¶
| |¶n¶
| options: -ao <options> Assembler options |¶n¶
| -co <options> C compiler options |¶n¶
| -po <options> Pascal Compiler Options |¶n¶
| -lo <options> Linker Options |¶n¶
| -mo <options> Make Options |¶n¶
| -d <equates> Define (or override) equates |¶n¶
| -e Everything is forced to be rebuilt |¶n¶
| -echo Echo Build Commands |¶n¶
| -help Print this message |¶n¶
| -listing Generating assembly listings |¶n¶
| -p Display build progress information |¶n¶
| -q Do a quiet build (no progress info.) |¶n¶
| -ram Build an image for Romulator |¶n¶
| -src <dir> Use sources in specified directory |¶n¶
| -novectorize Inhibit vectorization |¶n¶
| -warnings <off | on> Turn warning off or on. |¶n¶
\ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ/"
#
# If we have no parameters, run commando (if we haven't allready).
#
If !{#}
If {DoCommando} || {BackgroundShell}
Build -help
Exit 0
End
Set DoCommando True
Export DoCommando
BuildÉ
Exit
End
#
# Don't use dialogs if we didn't use commando.
#
If !{DoCommando}
Alias Alert 'Echo > Dev:StdErr'
End
#
# Loop thru and parse our parameters.
#
Loop
If !{#} # Done?
If !"{BuildSet}"
Alert "You must specify at least one build name or target"
Exit 0
End
Break
End
If "{1}" =~ /"ROM"/ # Build universal ROM?
Set BuildSet "{BuildSet} {1}"
Shift; Continue
End
If "{1}" =~ /"RISC"/ # Build RISC?
Set BuildSet "{BuildSet} {1}"
Shift; Continue
End
If "{1}" =~ /"LC930"/ # Build LC930?
Set BuildSet "{BuildSet} {1}"
Shift; Continue
End
If "{1}" =~ /"dbLite"/ # Build LC930?
Set BuildSet "{BuildSet} {1}"
Shift; Continue
End
If "{1}" !~ /-Å/ # Target?
Set Targets "{Targets} {1}"
Shift; Continue
End
If "{1}" =~ /"-ao"/ # AOpts
If {#} < 2
Alert "You must specify <options> with the Ò-aoÓ option."
Exit 1
End
Set AOpts "{AOpts} {2}"
Shift 2; Continue
End
If "{1}" =~ /"-co"/ # COpts
If {#} < 2
Alert "You must specify <options> with the Ò-coÓ option."
Exit 1
End
Set COpts "{COpts} {2}"
Shift 2; Continue
End
If "{1}" =~ /"-po"/ # POpts
If {#} < 2
Alert "You must specify <options> with the Ò-poÓ option."
Exit 1
End
Set POpts "{POpts} {2}"
Shift 2; Continue
End
If "{1}" =~ /"-lo"/ # LOpts
If {#} < 2
Alert "You must specify <options> with the Ò-loÓ option."
Exit 1
End
Set LOpts "{LOpts} {2}"
Shift 2; Continue
End
If "{1}" =~ /"-mo"/ # MOpts
If {#} < 2
Alert "You must specify <options> with the Ò-moÓ option."
Exit 1
End
Set MOpts "{MOpts} {2}"
Shift 2; Continue
End
If "{1}" =~ /"-d"/ # Defines
If {#} < 2
Alert "You must specify <equates> with the Ò-dÓ option."
Exit 1
End
Set Overrides "{Overrides} {2}"
Shift 2; Continue
End
If "{1}" =~ /"-e"/ # Build everything
Set MOpts "{MOpts} {1}"
Shift; Continue
End
If "{1}" =~ /"-echo"/ # Echo commands
Set EchoCmds "True"
Shift; Continue
End
If "{1}" =~ /"-h"Å/ # Help
Echo "{Usage}"
Exit 0;
End
If "{1}" =~ /"-listing"/ # Listing
Set AOpts "{AOpts} -l"
Shift; Continue
End
If "{1}" =~ /"-p"/ # Progress
Set Progress "True"
Shift; Continue
End
If "{1}" =~ /"-q"/ # Quiet
Set Quiet "True"
Shift; Continue
End
If "{1}" =~ /"-ram"/ # Romulator
Set Overrides "{Overrides} forRomulator=TRUE"
Shift; Continue
End
If "{1}" =~ /"-src"/ # Directory
If {#} < 2
Alert "You must specify <dir> with the Ò-srcÓ option."
Exit 1
End
Set Sources "{2}"
Shift 2; Continue
End
If "{1}" =~ /"-novectorize"/ # Inhibit vectorization
Set VOpts "{VOpts} -nopatch"
Set Overrides "{Overrides} nonVectorizedRom=TRUE"
Shift; Continue
End
If "{1}" =~ /"-warnings"/ # Warnings
If {#} < 2
Alert "You must specify <level> with the Ò-warningsÓ option."
Exit 1
End
If "{2}" =~ /off/
Set AOpts "{AOpts} -w -wb"
Set COpts "{COpts} -warnings off"
Set LOpts "{LOpts} -w -d"
Set LibOpts "{LibOpts} -w -d"
Set VOpts "{VOpts} -w"
Else
Set COpts "{COpts} -warnings on"
End
Shift 2; Continue
Else # Unknown Option
Alert "Unknown Option ¶"{1}¶"."
Exit 1
End
End #Loop
#
# Make sure that we FeatureSet as the first target
#
If "{Targets}"
Set Targets "FeatureSet {Targets}"
End
#
# Set the make options
#
If {Progress}
Set MOpts "{MOpts} -h 'Echo Creating ¶"¶{Targ¶}¶"'"
End
Set MOpts "{MOpts} -d AOpts=¶"{AOpts}¶" ¶
-d COpts=¶"{COpts}¶" ¶
-d POpts=¶"{POpts}¶" ¶
-d LOpts=¶"{LOpts}¶" ¶
-d LibOpts=¶"{LibOpts}¶" ¶
-d VOpts=¶"{VOpts}¶" ¶
-d Sources=¶"{Sources}¶" ¶
-d Overrides=¶"{Overrides}¶""
#
# For each build
#
If !{Quiet}
Echo "Start Time: `Date -t -c {StartTime}`"
End
For Build in {BuildSet}
If "{Build}" =~ /ROM/ # locate the makefile
Set MakeFile "{Sources}Make:Universal.Make"
Set MakeOut "{Sources}BuildResults:Universal:Text:MakeOut"
Else If "{Build}" =~ /RISC/
Set MakeFile "{Sources}Make:RISC.Make"
Set MakeOut "{Sources}BuildResults:RISC:Text:MakeOut"
Else If "{Build}" =~ /LC930/
Set MakeFile "{Sources}Make:LC930.Make"
Set MakeOut "{Sources}BuildResults:LC930:Text:MakeOut"
Else If "{Build}" =~ /dbLite/
Set MakeFile "{Sources}Make:dbLite.Make"
Set MakeOut "{Sources}BuildResults:dbLite:Text:MakeOut"
Else
Alert "Error: Unknown build Ò{Build}Ó"
Exit 1
End
Make -w {MOpts} {Targets} -f "{MakeFile}" > "{MakeOut}" || Exit
If {EchoCmds}
Set Echo 1
End
Execute "{MakeOut}"
Set Echo 0
End # For each build
#
# Calculate the elapsed time
#
If !{Quiet}
Set StopTime `Date -n`
Set TotalTime `Evaluate {StopTime}-{StartTime}`
Echo "Stop Time: `Date -t -c {StopTime}`"
Echo "Total Time: "`Date -t -c {TotalTime} | StreamEdit -e "/Å/ ¶
Replace /¥12/ ¶" 00¶"; Replace /[AP]M/ ¶"¶" "`
End
Exit 0
#
# End
#