#    Makefile template for Configure for the D10v sim library.
#    Copyright (C) 1996, 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 = interp.o table.o simops.o endian.o sim-load.o
SIM_EXTRA_CLEAN = clean-extra
SIM_EXTRA_CFLAGS = -DNEED_UI_LOOP_HOOK -DSIM_HAVE_ENVIRONMENT

INCLUDE = d10v_sim.h $(srcroot)/include/gdb/callback.h targ-vals.h endian.c \
	$(srcroot)/include/gdb/sim-d10v.h

# This selects the d10v newlib/libgloss syscall definitions.
NL_TARGET = -DNL_TARGET_d10v

## COMMON_POST_CONFIG_FRAG

simops.h: gencode
	./gencode -h >$@

table.c: gencode simops.h
	./gencode >$@

gencode.o: gencode.c $(INCLUDE)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gencode.c

d10v-opc.o: $(srcdir)/../../opcodes/d10v-opc.c
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/../../opcodes/d10v-opc.c

gencode: gencode.o d10v-opc.o
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -o gencode gencode.o d10v-opc.o $(BUILD_LIB)

clean-extra:
	rm -f table.c simops.h gencode

interp.o: interp.c table.c $(INCLUDE)
simops.o: simops.c simops.h $(INCLUDE)
endian.o: endian.c $(INCLUDE)
table.o: table.c
