# 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 {verify} == 1
	Echo "#" Doing "{ThisScript}" "{BuildTarget}" in "`Directory`" ... 
End If

If "`Exists Makefile`" != ""
	Echo "Set Echo 1" >{BuildTarget}.makeout
	Make -f Makefile {BuildTarget} >>{BuildTarget}.makeout
	{BuildTarget}.makeout
	Delete {BuildTarget}.makeout
Else If "{BuildTarget}" =~ /all/
	Echo Started `Date`
	"{ThisScript}" all-gcc
	"{ThisScript}" all-ld
	"{ThisScript}" all-gdb
	Echo Finished `Date`
Else If "{BuildTarget}" =~ /all-binutils/
	"{ThisScript}" do-libiberty
	"{ThisScript}" do-bfd
	"{ThisScript}" do-opcodes
	"{ThisScript}" do-binutils
Else If "{BuildTarget}" =~ /all-gas/
	"{ThisScript}" do-libiberty
	"{ThisScript}" do-bfd
	"{ThisScript}" do-opcodes
	"{ThisScript}" do-gas
Else If "{BuildTarget}" =~ /all-gcc/
	"{ThisScript}" all-gas
	"{ThisScript}" all-binutils
	"{ThisScript}" do-gcc
Else If "{BuildTarget}" =~ /all-gdb/
	"{ThisScript}" do-libiberty
	"{ThisScript}" do-bfd
	"{ThisScript}" do-opcodes
	"{ThisScript}" do-gdb
Else If "{BuildTarget}" =~ /all-ld/
	"{ThisScript}" do-libiberty
	"{ThisScript}" do-bfd
	"{ThisScript}" do-opcodes
	"{ThisScript}" do-ld
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 all
Else If "{BuildTarget}" =~ /do-gas/
	SetDirectory :gas:
	::mpw-build :config.h
	::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-ld/
	SetDirectory :ld:
	::mpw-build all
Else If "{BuildTarget}" =~ /install/
	"{ThisScript}" install-binutils
	"{ThisScript}" install-gas
	"{ThisScript}" install-gcc
	"{ThisScript}" install-gdb
	"{ThisScript}" install-ld
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-ld/
	SetDirectory :ld:
	::mpw-build install
Else If "{BuildTarget}" =~ /install-only/
	"{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-ld/
	SetDirectory :ld:
	::mpw-build install-only
Else
	Echo {BuildTarget} not understood, ignoring
End If

SetDirectory "{savedir}"
