#    Makefile template for Configure for the SH sim library.
#    Copyright (C) 1990-2013 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
