# Makefile template for Configure for the CR16 sim library.
# Copyright (C) 2008-2016 Free Software Foundation, Inc.
# Contributed by M Ranga Swami Reddy <MR.Swami.Reddy@nsc.com>
#
# 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 = \
	$(SIM_NEW_COMMON_OBJS) \
	sim-resume.o \
	interp.o \
	table.o \
	simops.o
SIM_EXTRA_CLEAN = clean-extra

INCLUDE = cr16_sim.h $(srcroot)/include/gdb/callback.h targ-vals.h \
	$(srcroot)/include/gdb/sim-cr16.h

# This selects the cr16 newlib/libgloss syscall definitions.
NL_TARGET = -DNL_TARGET_cr16

## COMMON_POST_CONFIG_FRAG

simops.o: simops.h

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

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

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

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

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

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