#    Makefile template for Configure for the D10v sim library.
#    Copyright (C) 1996-2021 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 \
	$(SIM_NEW_COMMON_OBJS) \
	sim-resume.o \
	table.o \
	simops.o \
	endian.o
SIM_EXTRA_CLEAN = clean-extra

SIM_EXTRA_DEPS = simops.h

INCLUDE = d10v_sim.h $(srcroot)/include/sim/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)
	$(COMPILE_FOR_BUILD) $(WARN_CFLAGS) -c $(srcdir)/gencode.c

d10v-opc.o: $(srcdir)/../../opcodes/d10v-opc.c
	$(COMPILE_FOR_BUILD) $(WARN_CFLAGS) -c $(srcdir)/../../opcodes/d10v-opc.c

gencode: gencode.o d10v-opc.o
	$(LINK_FOR_BUILD) gencode.o d10v-opc.o

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