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

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
