#    Makefile template for Configure for the z8k sim library.
#    Copyright (C) 1993, 95, 96, 1997 Free Software Foundation, Inc.
#    Written by Cygnus Support.
# 
# 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.

## COMMON_PRE_CONFIG_FRAG

SIM_OBJS = iface.o mem.o support.o quick.o \
	comped1.o comped2.o comped3.o compedb3.o sim-load.o
# FIXME: hack to find syscall.h.  Better support for syscall.h is
# in progress.
SIM_EXTRA_CFLAGS = -I$(srcdir)/../../newlib/libc/sys/z8k
SIM_EXTRA_CLEAN = clean-extra

CONFIG_H = config.h

## COMMON_POST_CONFIG_FRAG

support.o:support.c inlines.h $(CONFIG_H)
mem.o: mem.c tm.h mem.h sim.h $(CONFIG_H)

comped1.o:comped1.c tc-gen1.h $(CONFIG_H)
comped3.o:comped3.c tc-gen3.h $(CONFIG_H)
compedb3.o:compedb3.c tc-genb3.h $(CONFIG_H)
comped2.o:comped2.c tc-gen2.h $(CONFIG_H)

tc-gen1.h:writecode
	./writecode  -1 >tc-gen1.h

tc-gen2.h:writecode
	./writecode  -2 >tc-gen2.h

tc-gen3.h:writecode
	./writecode  -3 >tc-gen3.h

tc-genb3.h:writecode
	./writecode  -b3 >tc-genb3.h

writecode: writecode.o bquick.o
	$(CC_FOR_BUILD) -o writecode writecode.o bquick.o

writecode.o: writecode.c $(CONFIG_H)
	$(CC_FOR_BUILD) -c $(CFLAGS) $(HDEFINES) $(CSEARCH) $(CSWITCHES) $(srcdir)/writecode.c

# Two copies of quick.o are created.  One for $build and one for $host.
bquick.o: quick.c
	$(CC_FOR_BUILD) -c $(CFLAGS) $(HDEFINES) $(CSEARCH) $(CSWITCHES) $(srcdir)/quick.c -o bquick.o

clean-extra:
	rm -f tc-gen1.h tc-gen2.h tc-gen3.h tc-genb3.h writecode 
