# OBSOLETE # Makefile template for Configure for the fr30 simulator
# OBSOLETE # Copyright (C) 1998, 2000 Free Software Foundation, Inc.
# OBSOLETE # Contributed by Cygnus Support.
# OBSOLETE #
# OBSOLETE # This program is free software; you can redistribute it and/or modify
# OBSOLETE # it under the terms of the GNU General Public License as published by
# OBSOLETE # the Free Software Foundation; either version 2 of the License, or
# OBSOLETE # (at your option) any later version.
# OBSOLETE #
# OBSOLETE # This program is distributed in the hope that it will be useful,
# OBSOLETE # but WITHOUT ANY WARRANTY; without even the implied warranty of
# OBSOLETE # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# OBSOLETE # GNU General Public License for more details.
# OBSOLETE #
# OBSOLETE # You should have received a copy of the GNU General Public License along
# OBSOLETE # with this program; if not, write to the Free Software Foundation, Inc.,
# OBSOLETE # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# OBSOLETE 
# OBSOLETE ## COMMON_PRE_CONFIG_FRAG
# OBSOLETE 
# OBSOLETE FR30_OBJS = fr30.o cpu.o decode.o sem.o model.o arch.o mloop.o
# OBSOLETE 
# OBSOLETE CONFIG_DEVICES = dv-sockser.o
# OBSOLETE CONFIG_DEVICES =
# OBSOLETE 
# OBSOLETE SIM_OBJS = \
# OBSOLETE 	$(SIM_NEW_COMMON_OBJS) \
# OBSOLETE 	sim-cpu.o \
# OBSOLETE 	sim-hload.o \
# OBSOLETE 	sim-hrw.o \
# OBSOLETE 	sim-model.o \
# OBSOLETE 	sim-reg.o \
# OBSOLETE 	cgen-utils.o cgen-trace.o cgen-scache.o \
# OBSOLETE 	cgen-run.o sim-reason.o sim-engine.o sim-stop.o \
# OBSOLETE 	sim-if.o \
# OBSOLETE 	$(FR30_OBJS) \
# OBSOLETE 	traps.o devices.o \
# OBSOLETE 	$(CONFIG_DEVICES)
# OBSOLETE 
# OBSOLETE # Extra headers included by sim-main.h.
# OBSOLETE SIM_EXTRA_DEPS = \
# OBSOLETE 	$(CGEN_INCLUDE_DEPS) \
# OBSOLETE 	arch.h cpuall.h fr30-sim.h $(srcdir)/../../opcodes/fr30-desc.h
# OBSOLETE 
# OBSOLETE SIM_EXTRA_CFLAGS =
# OBSOLETE 
# OBSOLETE SIM_RUN_OBJS = nrun.o
# OBSOLETE SIM_EXTRA_CLEAN = fr30-clean
# OBSOLETE 
# OBSOLETE # This selects the fr30 newlib/libgloss syscall definitions.
# OBSOLETE NL_TARGET = -DNL_TARGET_fr30
# OBSOLETE 
# OBSOLETE ## COMMON_POST_CONFIG_FRAG
# OBSOLETE 
# OBSOLETE arch = fr30
# OBSOLETE 
# OBSOLETE sim-if.o: sim-if.c $(SIM_MAIN_DEPS) $(srcdir)/../common/sim-core.h
# OBSOLETE 
# OBSOLETE arch.o: arch.c $(SIM_MAIN_DEPS)
# OBSOLETE 
# OBSOLETE devices.o: devices.c $(SIM_MAIN_DEPS)
# OBSOLETE 
# OBSOLETE # FR30 objs
# OBSOLETE 
# OBSOLETE FR30BF_INCLUDE_DEPS = \
# OBSOLETE 	$(CGEN_MAIN_CPU_DEPS) \
# OBSOLETE 	cpu.h decode.h eng.h
# OBSOLETE 
# OBSOLETE fr30.o: fr30.c $(FR30BF_INCLUDE_DEPS)
# OBSOLETE 
# OBSOLETE # FIXME: Use of `mono' is wip.
# OBSOLETE mloop.c eng.h: stamp-mloop
# OBSOLETE stamp-mloop: $(srcdir)/../common/genmloop.sh mloop.in Makefile
# OBSOLETE 	$(SHELL) $(srccom)/genmloop.sh \
# OBSOLETE 		-mono -fast -pbb -switch sem-switch.c \
# OBSOLETE 		-cpu fr30bf -infile $(srcdir)/mloop.in
# OBSOLETE 	$(SHELL) $(srcroot)/move-if-change eng.hin eng.h
# OBSOLETE 	$(SHELL) $(srcroot)/move-if-change mloop.cin mloop.c
# OBSOLETE 	touch stamp-mloop
# OBSOLETE mloop.o: mloop.c sem-switch.c $(FR30BF_INCLUDE_DEPS)
# OBSOLETE 
# OBSOLETE cpu.o: cpu.c $(FR30BF_INCLUDE_DEPS)
# OBSOLETE decode.o: decode.c $(FR30BF_INCLUDE_DEPS)
# OBSOLETE sem.o: sem.c $(FR30BF_INCLUDE_DEPS)
# OBSOLETE model.o: model.c $(FR30BF_INCLUDE_DEPS)
# OBSOLETE 
# OBSOLETE fr30-clean:
# OBSOLETE 	rm -f mloop.c eng.h stamp-mloop
# OBSOLETE 	rm -f tmp-*
# OBSOLETE 	rm -f stamp-arch stamp-cpu
# OBSOLETE 
# OBSOLETE # cgen support, enable with --enable-cgen-maint
# OBSOLETE CGEN_MAINT = ; @true
# OBSOLETE # The following line is commented in or out depending upon --enable-cgen-maint.
# OBSOLETE @CGEN_MAINT@CGEN_MAINT =
# OBSOLETE 
# OBSOLETE stamp-arch: $(CGEN_READ_SCM) $(CGEN_ARCH_SCM) $(CGEN_CPU_DIR)/fr30.cpu
# OBSOLETE 	$(MAKE) cgen-arch $(CGEN_FLAGS_TO_PASS) mach=all \
# OBSOLETE 	  FLAGS="with-scache with-profile=fn"
# OBSOLETE 	touch stamp-arch
# OBSOLETE arch.h arch.c cpuall.h: $(CGEN_MAINT) stamp-arch
# OBSOLETE 
# OBSOLETE stamp-cpu: $(CGEN_READ_SCM) $(CGEN_CPU_SCM) $(CGEN_DECODE_SCM) $(CGEN_CPU_DIR)/fr30.cpu
# OBSOLETE 	$(MAKE) cgen-cpu-decode $(CGEN_FLAGS_TO_PASS) \
# OBSOLETE 	  cpu=fr30bf mach=fr30 SUFFIX= FLAGS="with-scache with-profile=fn" EXTRAFILES="$(CGEN_CPU_SEM) $(CGEN_CPU_SEMSW)"
# OBSOLETE 	touch stamp-cpu
# OBSOLETE cpu.h sem.c sem-switch.c model.c decode.c decode.h: $(CGEN_MAINT) stamp-cpu
