#    Makefile template for Configure for the 68HC11 sim library.
#    Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
#    Written by Cygnus Support.
# 
# 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

## COMMON_PRE_CONFIG_FRAG

M68HC11_OBJS = interp.o m68hc11int.o m68hc12int.o \
		emulos.o interrupts.o m68hc11_sim.o

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

SIM_OBJS = $(M68HC11_OBJS) \
	$(SIM_NEW_COMMON_OBJS) \
	sim-load.o \
	sim-hload.o \
	sim-engine.o \
	sim-stop.o \
	sim-hrw.o \
	sim-reason.o \
        $(SIM_EXTRA_OBJS)

SIM_PROFILE= -DPROFILE=1 -DWITH_PROFILE=-1
# We must use 32-bit addresses to support memory bank switching.
# The WORD_BITSIZE is normally 16 but must be switched (temporarily)
# to 32 to avoid a bug in the sim-common which uses 'unsigned_word'
# instead of 'address_word' in some places (the result is a truncation
# of the 32-bit address to 16-bit; and this breaks the simulator).
SIM_EXTRA_CFLAGS = -DWITH_TARGET_WORD_BITSIZE=32 \
		   -DWITH_TARGET_CELL_BITSIZE=32 \
		   -DWITH_TARGET_ADDRESS_BITSIZE=32 \
		   -DWITH_TARGET_WORD_MSB=31
SIM_EXTRA_CLEAN = clean-extra

SIM_EXTRA_OBJS = @m68hc11_extra_objs@

INCLUDE = $(srcdir)/../../include/gdb/callback.h \
	  interrupts.h sim-main.h


## COMMON_POST_CONFIG_FRAG

m68hc11int.c: gencode
	./gencode -m6811 > $@

m68hc12int.c: gencode
	./gencode -m6812 > $@

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

interp.o: interp.c $(INCLUDE)

clean-extra:
	rm -f gencode m68hc11int.c
