# OBSOLETE #   Mitsubishi Electric Corp. D30V Simulator.
# OBSOLETE #   Copyright (C) 1997, Free Software Foundation, Inc.
# OBSOLETE #   Contributed by Cygnus Support.
# OBSOLETE # 
# OBSOLETE # This file is part of GDB, the GNU debugger.
# 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, or (at your option)
# OBSOLETE # 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 M4= @M4@
# OBSOLETE 
# OBSOLETE 
# OBSOLETE ## COMMON_PRE_CONFIG_FRAG
# OBSOLETE 
# OBSOLETE # These variables are given default values in COMMON_PRE_CONFIG_FRAG.
# OBSOLETE # We override the ones we need to here.
# OBSOLETE # Not all of these need to be mentioned, only the necessary ones.
# OBSOLETE 
# OBSOLETE # List of object files, less common parts.
# OBSOLETE SIM_OBJS = \
# OBSOLETE 	$(SIM_NEW_COMMON_OBJS) \
# OBSOLETE 	engine.o cpu.o \
# OBSOLETE 	s_support.o l_support.o \
# OBSOLETE 	s_idecode.o l_idecode.o  \
# OBSOLETE 	s_semantics.o l_semantics.o \
# OBSOLETE 	sim-calls.o itable.o \
# OBSOLETE 	sim-hload.o \
# OBSOLETE 	sim-hrw.o \
# OBSOLETE 	sim-engine.o \
# OBSOLETE 	sim-stop.o \
# OBSOLETE 	sim-reason.o \
# OBSOLETE 	sim-resume.o
# OBSOLETE 
# OBSOLETE # List of extra dependencies.
# OBSOLETE # Generally this consists of simulator specific files included by sim-main.h.
# OBSOLETE SIM_EXTRA_DEPS = itable.h s_idecode.h l_idecode.h cpu.h alu.h
# OBSOLETE 
# OBSOLETE # List of generators
# OBSOLETE SIM_GEN=tmp-igen
# OBSOLETE 
# OBSOLETE # List of extra flags to always pass to $(CC).
# OBSOLETE SIM_EXTRA_CFLAGS = @sim_trapdump@
# OBSOLETE 
# OBSOLETE # List of main object files for `run'.
# OBSOLETE SIM_RUN_OBJS = nrun.o
# OBSOLETE 
# OBSOLETE # Dependency of `clean' to clean any extra files.
# OBSOLETE SIM_EXTRA_CLEAN = clean-igen
# OBSOLETE 
# OBSOLETE # This selects the d30v newlib/libgloss syscall definitions.
# OBSOLETE NL_TARGET=-DNL_TARGET_d30v
# OBSOLETE 
# OBSOLETE ## COMMON_POST_CONFIG_FRAG
# OBSOLETE 
# OBSOLETE MAIN_INCLUDE_DEPS = tconfig.h
# OBSOLETE INCLUDE_DEPS = $(MAIN_INCLUDE_DEPS) $(SIM_EXTRA_DEPS)
# OBSOLETE 
# OBSOLETE # Rules need to build $(SIM_OBJS), plus whatever else the target wants.
# OBSOLETE 
# OBSOLETE # ... target specific rules ...
# OBSOLETE 
# OBSOLETE # Filter to eliminate known warnings
# OBSOLETE FILTER = 2>&1 | egrep -v "Discarding instruction|instruction field of type \`compute\' changed to \`cache\'|Instruction format is not 64 bits wide"
# OBSOLETE 
# OBSOLETE BUILT_SRC_FROM_IGEN = \
# OBSOLETE 	s_icache.h \
# OBSOLETE 	s_icache.c \
# OBSOLETE 	s_idecode.h \
# OBSOLETE 	s_idecode.c \
# OBSOLETE 	s_semantics.h \
# OBSOLETE 	s_semantics.c \
# OBSOLETE 	s_model.h \
# OBSOLETE 	s_model.c \
# OBSOLETE 	s_support.h \
# OBSOLETE 	s_support.c \
# OBSOLETE 	l_icache.h \
# OBSOLETE 	l_icache.c \
# OBSOLETE 	l_idecode.h \
# OBSOLETE 	l_idecode.c \
# OBSOLETE 	l_semantics.h \
# OBSOLETE 	l_semantics.c \
# OBSOLETE 	l_model.h \
# OBSOLETE 	l_model.c \
# OBSOLETE 	l_support.h \
# OBSOLETE 	l_support.c \
# OBSOLETE 	itable.h itable.c
# OBSOLETE $(BUILT_SRC_FROM_IGEN): tmp-igen
# OBSOLETE #
# OBSOLETE 
# OBSOLETE .PHONY: clean-igen
# OBSOLETE clean-igen:
# OBSOLETE 	rm -f $(BUILT_SRC_FROM_IGEN)
# OBSOLETE 	rm -f tmp-igen tmp-insns
# OBSOLETE 
# OBSOLETE ../igen/igen:
# OBSOLETE 	cd ../igen && $(MAKE)
# OBSOLETE 
# OBSOLETE tmp-igen: $(srcdir)/dc-short $(srcdir)/d30v-insns $(srcdir)/ic-d30v ../igen/igen
# OBSOLETE 	cd ../igen && $(MAKE)
# OBSOLETE 	echo "# 1 \"$(srcdir)/d30v-insns\"" > tmp-insns
# OBSOLETE 	$(M4) < $(srcdir)/d30v-insns >> tmp-insns 
# OBSOLETE 	@echo "Generating short version ..."
# OBSOLETE 	../igen/igen \
# OBSOLETE 		-G gen-zero-r0 \
# OBSOLETE 		-G direct-access \
# OBSOLETE 		-G default-nia-minus-one \
# OBSOLETE 		-G conditional-issue \
# OBSOLETE 		-G verify-slot \
# OBSOLETE 		-G field-widths \
# OBSOLETE 		-F short,emul \
# OBSOLETE 		-B 32 \
# OBSOLETE 		-P "s_" \
# OBSOLETE 		-o $(srcdir)/dc-short \
# OBSOLETE 		-k $(srcdir)/ic-d30v \
# OBSOLETE 		-n $(srcdir)/d30v-insns -i tmp-insns \
# OBSOLETE 		-n s_icache.h    -hc tmp-icache.h \
# OBSOLETE 		-n s_icache.c    -c  tmp-icache.c \
# OBSOLETE 		-n s_semantics.h -hs tmp-semantics.h \
# OBSOLETE 		-n s_semantics.c -s  tmp-semantics.c \
# OBSOLETE 		-n s_idecode.h   -hd tmp-idecode.h \
# OBSOLETE 		-n s_idecode.c   -d  tmp-idecode.c \
# OBSOLETE 		-n s_model.h     -hm tmp-model.h \
# OBSOLETE 		-n s_model.c     -m  tmp-model.c \
# OBSOLETE 		-n s_support.h   -hf tmp-support.h \
# OBSOLETE 		-n s_support.c   -f  tmp-support.c $(FILTER)
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-icache.h s_icache.h
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-icache.c s_icache.c
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-idecode.h s_idecode.h
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-idecode.c s_idecode.c
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-semantics.h s_semantics.h
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-semantics.c s_semantics.c
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-model.h s_model.h
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-model.c s_model.c
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-support.h s_support.h
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-support.c s_support.c
# OBSOLETE 	@echo "Generating long version ..."
# OBSOLETE 	../igen/igen \
# OBSOLETE 		-G gen-zero-r0 \
# OBSOLETE 		-G direct-access \
# OBSOLETE 		-G default-nia-minus-one \
# OBSOLETE 		-G conditional-issue \
# OBSOLETE 		-G field-widths \
# OBSOLETE 		-F long,emul \
# OBSOLETE 		-B 64 \
# OBSOLETE 		-P "l_" \
# OBSOLETE 		-o $(srcdir)/dc-short \
# OBSOLETE 		-k $(srcdir)/ic-d30v \
# OBSOLETE 		-i tmp-insns \
# OBSOLETE 		-n l_icache.h    -hc tmp-icache.h \
# OBSOLETE 		-n l_icache.c    -c  tmp-icache.c \
# OBSOLETE 		-n l_semantics.h -hs tmp-semantics.h \
# OBSOLETE 		-n l_semantics.c -s  tmp-semantics.c \
# OBSOLETE 		-n l_idecode.h   -hd tmp-idecode.h \
# OBSOLETE 		-n l_idecode.c   -d  tmp-idecode.c \
# OBSOLETE 		-n l_model.h     -hm tmp-model.h \
# OBSOLETE 		-n l_model.c     -m  tmp-model.c \
# OBSOLETE 		-n l_support.h   -hf tmp-support.h \
# OBSOLETE 		-n l_support.c   -f  tmp-support.c $(FILTER)
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-icache.h l_icache.h
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-icache.c l_icache.c
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-idecode.h l_idecode.h
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-idecode.c l_idecode.c
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-semantics.h l_semantics.h
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-semantics.c l_semantics.c
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-model.h l_model.h
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-model.c l_model.c
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-support.h l_support.h
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-support.c l_support.c
# OBSOLETE 	@echo "Generating instruction database ..."
# OBSOLETE 	../igen/igen \
# OBSOLETE 		-G field-widths \
# OBSOLETE 		-F short,long,emul \
# OBSOLETE 		-B 64 \
# OBSOLETE 		-o $(srcdir)/dc-short \
# OBSOLETE 		-k $(srcdir)/ic-d30v \
# OBSOLETE 		-i tmp-insns \
# OBSOLETE 		-n itable.h    -ht tmp-itable.h \
# OBSOLETE 		-n itable.c    -t  tmp-itable.c $(FILTER)
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-itable.h itable.h
# OBSOLETE 	$(srcdir)/../../move-if-change tmp-itable.c itable.c
# OBSOLETE 	touch tmp-igen
# OBSOLETE 
# OBSOLETE ENGINE_H = \
# OBSOLETE 	sim-main.h \
# OBSOLETE 	$(srcdir)/../common/sim-basics.h \
# OBSOLETE 	config.h \
# OBSOLETE 	$(srcdir)/../common/sim-config.h \
# OBSOLETE 	$(srcdir)/../common/sim-inline.h \
# OBSOLETE 	$(srcdir)/../common/sim-types.h \
# OBSOLETE 	$(srcdir)/../common/sim-bits.h \
# OBSOLETE 	$(srcdir)/../common/sim-endian.h \
# OBSOLETE 	itable.h \
# OBSOLETE 	l_idecode.h s_idecode.h \
# OBSOLETE 	cpu.h \
# OBSOLETE 	alu.h \
# OBSOLETE 	$(srcdir)/../common/sim-alu.h \
# OBSOLETE 	$(srcdir)/../common/sim-core.h \
# OBSOLETE 	$(srcdir)/../common/sim-events.h \
# OBSOLETE 
# OBSOLETE engine.o: engine.c $(ENGINE_H)
# OBSOLETE sim-calls.o: sim-calls.c $(ENGINE_H) $(srcdir)/../common/sim-utils.h $(srcdir)/../common/sim-options.h
# OBSOLETE cpu.o: cpu.c $(ENGINE_H)
# OBSOLETE s_support.o: s_support.c $(ENGINE_H)
# OBSOLETE l_support.o: l_support.c $(ENGINE_H)
# OBSOLETE s_semantics.o: s_semantics.c $(ENGINE_H)
# OBSOLETE l_semantics.o: l_semantics.c $(ENGINE_H)
