# Configuration fragment for LD.

If "{target_canonical}" =~ /m68k-apple-macos/
	Set emulname m68kcoff
	forward-include "{srcdir}"mpw-em68kcoff.c em68kcoff.c
	Set emulation_ofiles "{o}"em68kcoff.c.o

Else If "{target_canonical}" =~ /powerpc-apple-macos/
	Set emulname ppcmacos
	forward-include "{srcdir}"mpw-eppcmac.c eppcmacos.c
	Set emulation_ofiles "{o}"eppcmacos.c.o

Else If "{target_canonical}" =~ /i386-\Option-x-go32/
	Set emulname i386go32
	forward-include "{srcdir}"mpw-ei386go32.c ei386go32.c
	Set emulation_ofiles "{o}"ei386go32.c.o

Else If "{target_canonical}" =~ /mips-\Option-x-ecoff/
	Set emulname mipsidt
	forward-include "{srcdir}"mpw-idtmips.c emipsidt.c
	Set emulation_ofiles "{o}"emipsidt.c.o

Else If "{target_canonical}" =~ /mips-\Option-x-\Option-x/
	Set emulname elf32ebmip
	forward-include "{srcdir}"mpw-elfmips.c eelf32ebmip.c
	Set emulation_ofiles "{o}"eelf32ebmip.c.o

Else If "{target_canonical}" =~ /sh-\Option-x-hms/
	Set emulname sh
	forward-include "{srcdir}"mpw-esh.c esh.c
	Set emulation_ofiles "{o}"esh.c.o
End If

Echo '/* This file is automatically generated.  DO NOT EDIT! */' > "{o}"ldemul-tmp.h
Echo "extern ld_emulation_xfer_type ld_{emulname}_emulation;" >> "{o}"ldemul-tmp.h
Echo '#define EMULATION_LIST \'				>> "{o}"ldemul-tmp.h
Echo "  &ld_{emulname}_emulation, \"			>> "{o}"ldemul-tmp.h
Echo '  0'						>> "{o}"ldemul-tmp.h

MoveIfChange "{o}"ldemul-tmp.h "{o}"ldemul-list.h

Echo '# From mpw-config.in'				 > "{o}"mk.tmp
Echo "EMUL = " {emulname}				>> "{o}"mk.tmp
Echo "EMULATION_OFILES = " {emulation_ofiles}		>> "{o}"mk.tmp
Echo 'version = ' `Search 'ld version ' {srcdir}ldver.c | sed -e 's/.*ld version \([^ ]*\).*/\1/'` >> "{o}"mk.tmp
Echo "TDEFINES = "					>> "{o}"mk.tmp
Echo '# End from mpw-config.in'				>> "{o}"mk.tmp

Echo '/* config.h.  Generated by mpw-configure.  */'	 > "{o}"config.new
Echo '#include "mpw.h"'					>> "{o}"config.new

MoveIfChange "{o}"config.new "{o}"config.h
