#### Makefile.in --- Makefile template for the RL78 simulator

### Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
### Contributed by Red Hat, Inc.
### 
### This file is part of the GNU simulators.
### 
### The GNU simulators are free software; you can redistribute them and/or
### modify them 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.
### 
### The GNU simulators are distributed in the hope that they 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 the GNU simulators; if not, write to the Free Software
### Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
### 02110-1301, USA

## COMMON_PRE_CONFIG_FRAG

SIM_EXTRA_CFLAGS = -Wall

SIM_RUN_OBJS = \
	main.o

SIM_OBJS = \
	load.o \
	mem.o \
	cpu.o \
	rl78.o \
	trace.o

## COMMON_POST_CONFIG_FRAG

arch = rl78

err.o : err.h
fpu.o : cpu.h fpu.h
gdb-if.o : cpu.h mem.h load.h \
           $(srcdir)/../../include/gdb/callback.h \
	   $(srcdir)/../../include/gdb/remote-sim.h \
	   $(srcdir)/../../include/gdb/signals.h \
	   $(srcdir)/../../include/gdb/sim-rl78.h
load.o : ../../bfd/bfd.h cpu.h mem.h
main.o : ../../bfd/bfd.h cpu.h mem.h load.h
mem.o : mem.h cpu.h
reg.o : cpu.h
rl78.o : $(srcdir)/../../include/opcode/rl78.h cpu.h mem.h
