#    Makefile template for Configure for the Blackfin simulator.
#    Copyright (C) 2005-2015 Free Software Foundation, Inc.
#    Written by Analog Devices, Inc.
# 
# 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/>.

# This selects the bfin newlib/libgloss syscall definitions.
NL_TARGET = -DNL_TARGET_bfin

## COMMON_PRE_CONFIG_FRAG

# List of main object files for `run'.
SIM_RUN_OBJS = nrun.o

SIM_OBJS = \
	$(SIM_NEW_COMMON_OBJS) \
	bfin-sim.o \
	devices.o \
	gui.o \
	interp.o \
	machs.o \
	sim-cpu.o \
	sim-engine.o \
	sim-hload.o \
	sim-hrw.o \
	sim-model.o \
	sim-reason.o \
	sim-reg.o \
	sim-resume.o \
	sim-stop.o \
	@BFIN_SIM_EXTRA_OBJS@ \
	$(SIM_EXTRA_OBJS)

INCLUDE = bfin-sim.h

SIM_EXTRA_CFLAGS = @SDL_CFLAGS@
SIM_EXTRA_LIBS = @SDL_LIBS@ -lm

## COMMON_POST_CONFIG_FRAG

$(srcdir)/linux-fixed-code.h: @MAINTAINER_MODE_TRUE@ $(srcdir)/linux-fixed-code.s Makefile.in
	$(AS_FOR_TARGET) $< -o linux-fixed-code.o
	(	set -e; \
		echo "/* DO NOT EDIT: Autogenerated from linux-fixed-code.s.  */"; \
		echo "static const unsigned char bfin_linux_fixed_code[] ="; \
		echo "{"; \
		$(OBJDUMP_FOR_TARGET) -d -z linux-fixed-code.o > $@.dis; \
		sed -n $@.dis \
			-e 's:^[^	]*	:0x:' \
			-e '/^0x/{s:	.*::;s: *$$:,:;s: :, 0x:g;p}'; \
		rm -f $@.dis; \
		echo "};" \
	) > $@.tmp
	rm -f linux-fixed-code.o
	mv $@.tmp $@
