# 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}"
