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

### Copyright (C) 2005, 2007-2012 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

