#    Makefile template for Configure for the Blackfin simulator.
#    Copyright (C) 2005-2013 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: $(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 $@
