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

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
