#    Makefile template for Configure for the SH sim library.
#    Copyright (C) 1990, 91, 92, 95, 96, 1997, 2007, 2008, 2009
#    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 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

SIM_OBJS = interp.o table.o sim-load.o
SIM_EXTRA_LIBS = -lm
SIM_EXTRA_CLEAN = sh-clean

## COMMON_POST_CONFIG_FRAG

interp.o: interp.c code.c table.c ppi.c $(srcroot)/include/gdb/sim-sh.h

code.c: gencode
	./gencode -x >code.c
#	indent code.c

table.c: gencode
	./gencode -s >table.c
#	indent table.c

ppi.c: gencode
	./gencode -p >ppi.c

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

sh-clean:
	rm -f gencode code.c table.c
