#    Makefile template for Configure for the moxie sim library.
#    Copyright (C) 2008-2016 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/dtb

SIM_OBJS = \
	$(SIM_NEW_COMMON_OBJS) \
	interp.o \
	sim-resume.o

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

## COMMON_POST_CONFIG_FRAG

all: moxie-gdb.dtb

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
