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

### Copyright (C) 2005, 2007, 2008, 2009, 2010, 2011
### 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 -DTIMER_A

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_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) $^ -o $@ $(BUILD_LIBS)

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
reg.o : cpu.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

opc2c.o : opc2c.c safe-fgets.h
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/opc2c.c

safe-fgets.o : safe-fgets.c safe-fgets.h
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/safe-fgets.c

