#    Makefile template for Configure for the moxie sim library.
#    Copyright (C) 2008, 2010-2012 Free Software Foundation, Inc.
#    Written by Anthony Green
# 
# 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

dtbdir = @datadir@/gdb-`sed q ${srcdir}/../../gdb/version.in`/dtb

SIM_OBJS = interp.o sim-load.o sim-io.o sim-config.o sim-utils.o	\
sim-options.o sim-module.o sim-core.o sim-endian.o sim-trace.o 	\
sim-engine.o sim-fpu.o sim-bits.o sim-profile.o sim-events.o \
sim-memopt.o

SIM_EXTRA_LIBS = -lm -lz
SIM_EXTRA_CLEAN = moxie-clean
SIM_EXTRA_INSTALL = install-dtb
SIM_CFLAGS = -DDTB="\"$(dtbdir)/moxie-gdb.dtb\""

## COMMON_POST_CONFIG_FRAG

all: interp.o moxie-gdb.dtb

interp.o: interp.c

moxie-gdb.dtb: moxie-gdb.dts
	dtc -O dtb -o moxie-gdb.dtb ${srcdir}/moxie-gdb.dts

install-dtb: moxie-gdb.dtb
	$(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(dtbdir)
	$(INSTALL_DATA) moxie-gdb.dtb $(DESTDIR)$(dtbdir)/moxie-gdb.dtb

moxie-clean:
