#    Makefile template for Configure for the D10v sim library.
#    Copyright (C) 1996-2013 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 3 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, see <http://www.gnu.org/licenses/>.

## 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
