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

### Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc.
### Contributed by Red Hat, Inc.
### 
### This file is part of the GNU simulators.
### 
### 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_EXTRA_CFLAGS = -Wall

SIM_RUN_OBJS = \
	main.o \
	$(ENDLIST)

SIM_OBJS = \
	gdb-if.o \
	int.o \
	load.o \
	mem.o \
	misc.o \
	reg.o \
	r8c.o \
	m32c.o \
	srcdest.o \
	syscalls.o \
	trace.o \
	$(ENDLIST)

# SIM_EXTRA_ALL = sample.x sample2.x

LIBS = $B/bfd/libbfd.a $B/libiberty/libiberty.a

## COMMON_POST_CONFIG_FRAG

arch = m32c

r8c.c : r8c.opc opc2c
	./opc2c -l r8c.out $(srcdir)/r8c.opc > r8c.c

m32c.c : m32c.opc opc2c
	./opc2c -l m32c.out $(srcdir)/m32c.opc > m32c.c

opc2c : opc2c.o safe-fgets.o
	$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@

sample.x : $(srcdir)/sample.S $(srcdir)/sample.ld
	../../gcc/xgcc $(CPUFLAGS) -B../../gcc/ -c $(srcdir)/sample.S -o sample.o
	../../ld/ld-new sample.o -o sample.x -T$(srcdir)/sample.ld

sample.mot : sample.x
	../../binutils/objcopy --srec-forceS3 -O srec sample.x sample.mot

sample2.x : sample2.o gloss.o $(srcdir)/sample.ld
	../../ld/ld-new sample2.o gloss.o -o sample2.x -T$(srcdir)/sample.ld

sample2.o : $(srcdir)/sample2.c
	../../gcc/xgcc $(CPUFLAGS) -B../../gcc/ -c $(srcdir)/sample2.c -o sample2.o

gloss.o : $(srcdir)/gloss.S
	../../gcc/xgcc $(CPUFLAGS) -B../../gcc/ -c $(srcdir)/gloss.S -o gloss.o

encodings:
	grep '/\* [01]' $(srcdir)/r8c.opc | sort

gdb-if.o : cpu.h mem.h load.h syscalls.h
int.o : int.h cpu.h mem.h
load.o : load.h cpu.h mem.h
main.o : cpu.h mem.h misc.h load.h
mem.o : mem.h cpu.h syscalls.h
misc.o : cpu.h misc.h
opc2c.o : safe-fgets.h
reg.o : cpu.h
safe-fgets.o : safe-fgets.h
srcdest.c : cpu.h mem.h
syscalls.c : cpu.h mem.h syscalls.h

r8c.o : cpu.h mem.h misc.h int.h
