#
#   This file is part of the program psim.
#
#   Copyright 1994, 1995, 1996, 1997, 2003 Andrew Cagney
#
#   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.
#

default: all

VPATH = @srcdir@
srcdir = @srcdir@
srcroot = $(srcdir)/../..

prefix = @prefix@
exec_prefix = @exec_prefix@

host_alias = @host_alias@
target_alias = @target_alias@
program_transform_name = @program_transform_name@
bindir = @bindir@
libdir = @libdir@
tooldir = $(libdir)/$(target_alias)

datarootdir = @datarootdir@
datadir = @datadir@
mandir = @mandir@
man1dir = $(mandir)/man1
man2dir = $(mandir)/man2
man3dir = $(mandir)/man3
man4dir = $(mandir)/man4
man5dir = $(mandir)/man5
man6dir = $(mandir)/man6
man7dir = $(mandir)/man7
man8dir = $(mandir)/man8
man9dir = $(mandir)/man9
infodir = @infodir@
includedir = @includedir@

# This can be referenced by the gettext configuration code.
top_builddir = ..

EXEEXT = @EXEEXT@
SHELL = /bin/sh

INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@

AR = @AR@
AR_FLAGS = rc
CC = @CC@
CFLAGS = @CFLAGS@
CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
BISON = bison
MAKEINFO = makeinfo
RANLIB = @RANLIB@

SIM_CFLAGS = @sim_cflags@
INLINE_CFLAGS = @sim_inline@
BSWAP_CFLAGS = @sim_bswap@
ENDIAN_CFLAGS = @sim_endian@
REGPARM_CFLAGS = @sim_regparm@
STDCALL_CFLAGS = @sim_stdcall@
HOSTENDIAN_CFLAGS = @sim_hostendian@
SMP_CFLAGS = @sim_smp@
XOR_ENDIAN_CFLAGS = @sim_xor_endian@
BITSIZE_CFLAGS = @sim_bitsize@
HOSTBITSIZE_CFLAGS = @sim_hostbitsize@
ENV_CFLAGS = @sim_env@
TIMEBASE_CFLAGS = @sim_timebase@
ALIGNMENT_CFLAGS = @sim_alignment@
FLOAT_CFLAGS = @sim_float@
TRACE_CFLAGS = @sim_trace@
ASSERT_CFLAGS = @sim_assert@
RESERVED_CFLAGS = @sim_reserved@
MONITOR_CFLAGS = @sim_monitor@
MODEL_CFLAGS = @sim_model@ @sim_default_model@ @sim_model_issue@
STDIO_CFLAGS = @sim_stdio@
TERMIO_CFLAGS = @sim_termio@
WARNING_CFLAGS = @sim_warnings@
DEVZERO_CFLAGS = @sim_devzero@
CONFIG_CFLAGS = $(BSWAP_CFLAGS) \
  $(ENDIAN_CFLAGS) \
  $(REGPARM_CFLAGS) \
  $(STDCALL_CFLAGS) \
  $(HOSTENDIAN_CFLAGS) \
  $(SMP_CFLAGS) \
  $(XOR_ENDIAN_CFLAGS) \
  $(BITSIZE_CFLAGS) \
  $(HOSTBITSIZE_CFLAGS) \
  $(ENV_CFLAGS) \
  $(TIMEBASE_CFLAGS) \
  $(ALIGNMENT_CFLAGS) \
  $(FLOAT_CFLAGS) \
  $(TRACE_CFLAGS) \
  $(ASSERT_CFLAGS) \
  $(RESERVED_CFLAGS) \
  $(MONITOR_CFLAGS) \
  $(MODEL_CFLAGS) \
  $(STDIO_CFLAGS) \
  $(TERMIO_CFLAGS) \
  $(DEVZERO_CFLAGS)
SIM_FPU_CFLAGS = @sim_fpu_cflags@

STD_CFLAGS	= $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(WARNING_CFLAGS) $(SIM_CFLAGS) $(HDEFINES) $(TDEFINES) $(INCLUDES) $(INTL_CFLAGS) $(SIM_FPU_CFLAGS)
NOWARN_CFLAGS	= $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(SIM_CFLAGS) $(HDEFINES) $(TDEFINES) $(INCLUDES)  $(SIM_FPU_CFLAGS)
BUILD_CFLAGS	= $(CFLAGS_FOR_BUILD) $(INCLUDES) $(WARNING_CFLAGS)

BUILD_LDFLAGS	=
LIBS = @LIBS@

CONFIG_FILE = @sim_config@
IGEN_OPCODE_RULES = @sim_opcode@
IGEN_DECODE_MECHANISM = @sim_decode_mechanism@
IGEN_DUPLICATE = @sim_dup@
IGEN_JUMP = @sim_jump@
IGEN_FILTER = @sim_filter@
IGEN_ICACHE = @sim_icache@
IGEN_SMP = @sim_igen_smp@
IGEN_LINE_NR = @sim_line_nr@
DGEN_FLAGS = @sim_switch@

HDEFINES = @HDEFINES@
TDEFINES =
IGEN_FLAGS = \
	$(IGEN_DECODE_MECHANISM) \
	$(IGEN_DUPLICATE) \
	$(IGEN_JUMP) \
	$(IGEN_FILTER) \
	$(IGEN_ICACHE) \
	$(IGEN_SMP) \
	$(IGEN_LINE_NR)

.NOEXPORT:
MAKEOVERRIDES=

LIB_INCLUDES	= -I$(srcdir)/../../include
BFD_INCLUDES	= -I../../bfd -I$(srcdir)/../../bfd
GDB_INCLUDES	= -I../../gdb -I$(srcdir)/../../gdb  -I$(srcdir)/../../gdb/config

INCLUDES	= -I. -I$(srcdir) $(LIB_INCLUDES) $(BFD_INCLUDES) $(GDB_INCLUDES)

LIBIBERTY_LIB	= ../../libiberty/libiberty.a
BFD_LIB		= ../../bfd/libbfd.a

LIBINTL = @LIBINTL@
LIBINTL_DEP = @LIBINTL_DEP@
INTL_CFLAGS = @INCINTL@


TARGETLIB	= libsim.a

all:	run $(TARGETLIB) $(GDB_OBJ)

.c.o:
	$(CC) -c $(STD_CFLAGS) $<


# Headers outside sim/ppc.
ANSIDECL_H = $(srcroot)/include/ansidecl.h
BFD_H = ../../bfd/bfd.h
GDB_CALLBACK_H = $(srcroot)/include/gdb/callback.h
GDB_REMOTE_SIM_H = $(srcroot)/include/gdb/remote-sim.h
GDB_SIM_PPC_H = $(srcroot)/include/gdb/sim-ppc.h
COMMON_SIM_BASE_H = $(srcroot)/sim/common/sim-base.h
COMMON_SIM_BASICS_H = $(srcroot)/sim/common/sim-basics.h
COMMON_SIM_FPU_H = $(srcroot)/sim/common/sim-fpu.h
COMMON_SIM_INLINE_H = $(srcroot)/sim/common/sim-inline.h
COMMON_SIM_SIGNAL_H = $(srcroot)/sim/common/sim-signal.h

# Headers in sim/ppc.
ACCONFIG_H = \
	acconfig.h

ALTIVEC_EXPRESSION_H = \
	altivec_expression.h

ALTIVEC_REGISTERS_H = \
	altivec_registers.h

BASICS_H = \
	basics.h \
	$(CONFIG_H) \
	$(PPC_CONFIG_H) \
	$(INLINE_H) \
	$(SIM_CALLBACKS_H) \
	$(DEBUG_H) \
	$(WORDS_H) \
	$(BITS_H) \
	$(SIM_ENDIAN_H)

BITS_H = \
	bits.h \
	bits.c

CAP_H = \
	cap.h \
	$(BASICS_H)

COREFILE_H = \
	corefile.h

COREFILE_N_H = \
	corefile-n.h

CPU_H = \
	cpu.h \
	$(BASICS_H) \
	$(REGISTERS_H) \
	$(DEVICE_H) \
	$(COREFILE_H) \
	$(VM_H) \
	$(EVENTS_H) \
	$(INTERRUPTS_H) \
	$(PSIM_H) \
	$(IDECODE_H) \
	$(ITABLE_H) \
	$(OS_EMUL_H) \
	$(MON_H) \
	$(MODEL_H) \
	cpu.c

DEBUG_H = \
	debug.h \
	$(FILTER_FILENAME_H)

DEVICE_H = \
	device.h

DEVICE_TABLE_H = \
	device_table.h \
	$(BASICS_H) \
	$(DEVICE_H) \
	$(TREE_H) \
	$(HW_H)

E500_EXPRESSION_H = \
	e500_expression.h

E500_REGISTERS_H = \
	e500_registers.h

EMUL_BUGAPI_H = \
	emul_bugapi.h

EMUL_CHIRP_H = \
	emul_chirp.h

EMUL_GENERIC_H = \
	emul_generic.h \
	$(CPU_H) \
	$(IDECODE_H) \
	$(OS_EMUL_H) \
	$(TREE_H) \
	$(BFD_H)

EMUL_NETBSD_H = \
	emul_netbsd.h

EMUL_UNIX_H = \
	emul_unix.h

EVENTS_H = \
	events.h

FILTER_FILENAME_H = \
	filter_filename.h

FILTER_H = \
	filter.h

GEN_ICACHE_H = \
	gen-icache.h

GEN_IDECODE_H = \
	gen-idecode.h

GEN_ITABLE_H = \
	gen-itable.h

GEN_MODEL_H = \
	gen-model.h

GEN_SEMANTICS_H = \
	gen-semantics.h

GEN_SUPPORT_H = \
	gen-support.h

HW_CPU_H = \
	hw_cpu.h

HW_PHB_H = \
	hw_phb.h

IDECODE_BRANCH_H = \
	idecode_branch.h

IDECODE_EXPRESSION_H = \
	idecode_expression.h \
	$(ALTIVEC_EXPRESSION_H) \
	$(E500_EXPRESSION_H)

IDECODE_FIELDS_H = \
	idecode_fields.h

IGEN_H = \
	igen.h

INLINE_H = \
	inline.h

INTERRUPTS_H = \
	interrupts.h

LD_CACHE_H = \
	ld-cache.h

LD_DECODE_H = \
	ld-decode.h

LD_INSN_H = \
	ld-insn.h

LF_H = \
	lf.h

MISC_H = \
	misc.h \
	$(CONFIG_H) \
	$(FILTER_FILENAME_H)

MON_H = \
	mon.h \
	$(BASICS_H) \
	$(ITABLE_H)

OPTIONS_H = \
	options.h

OS_EMUL_H = \
	os_emul.h

PSIM_H = \
	psim.h \
	$(BASICS_H)

REGISTERS_H = \
	registers.h \
	$(E500_REGISTERS_H) \
	$(ALTIVEC_REGISTERS_H) \
	$(SPREG_H)

SIM_CALLBACKS_H = \
	sim_callbacks.h

SIM_ENDIAN_H = \
	sim-endian.h \
	sim-endian.c

SIM_ENDIAN_N_H = \
	sim-endian-n.h

SIM_MAIN_H = \
	sim-main.h \
	$(COMMON_SIM_BASICS_H) \
	$(COMMON_SIM_SIGNAL_H) \
	$(COMMON_SIM_BASE_H)

STD_CONFIG_H = \
	std-config.h

TABLE_H = \
	table.h

TREE_H = \
	tree.h

VM_H = \
	vm.h

VM_N_H = \
	vm_n.h

WORDS_H = \
	words.h


# Generated headers.
CONFIG_H = \
        config.h

DEFINES_H = \
        defines.h

HW_H = \
        hw.h

ICACHE_H = \
        icache.h

IDECODE_H = \
        idecode.h \
        $(IDECODE_EXPRESSION_H) \
        $(IDECODE_FIELDS_H) \
        $(IDECODE_BRANCH_H)

ITABLE_H = \
        itable.h

MODEL_H = \
        model.h

PK_H = \
        pk.h

PPC_CONFIG_H = \
        ppc-config.h

SEMANTICS_H = \
        semantics.h

SPREG_H = \
        spreg.h

SUPPORT_H = \
        support.h \
        support.c

TARG_VALS_H = \
        targ-vals.h

TCONFIG_H = \
        tconfig.h

INLINE = \
	inline.h \
	inline.c

BUILT_SRC_WO_CONFIG = \
	icache.h icache.c \
	support.h support.c \
	idecode.h idecode.c \
	semantics.h semantics.c \
	itable.h itable.c \
	spreg.h spreg.c \
	model.h model.c \
	support.h support.c \
	pk.h \
	hw.h hw.c \
	filter_host.c \
	@sim_targ_vals@

BUILT_SRC = \
	$(BUILT_SRC_WO_CONFIG) \
	config.h \
	ppc-config.h 

LIB_INLINE_SRC = \
	psim.c \
	bits.c \
	debug.c \
	sim-endian.c \
	sim-endian.h \
	sim-endian-n.h \
	vm.c \
	vm_n.h \
	corefile.c \
	events.c \
	os_emul.c \
	registers.c \
	cpu.c \
	interrupts.c \
	device.c \
	tree.c \
	device_table.c \
	cap.c \
	mon.c \
	options.c

LIB_SRC = \
	$(PACKAGE_SRC) \
	$(HW_SRC) \
	$(LIB_INLINE_SRC)

MAIN_SRC = \
	main.c \
	gdb-sim.c \
	sim_calls.c


# NOTE: semantics, idecode and psim put last so smaller files are compiled
#       first
LIB_OBJ = \
	debug.o \
	filter_filename.o \
	bits.o \
	sim-endian.o \
	os_emul.o \
	emul_generic.o \
	emul_bugapi.o \
	emul_chirp.o \
	emul_netbsd.o \
	emul_unix.o \
	registers.o \
	vm.o \
	corefile.o \
	model.o \
	spreg.o \
	cpu.o \
	interrupts.o \
	events.o \
	cap.o \
	device.o \
	tree.o \
	device_table.o \
	itable.o \
	mon.o \
	icache.o \
	semantics.o \
	idecode.o \
	support.o \
	@sim_fpu@ \
	psim.o \
	version.o \
	$(PACKAGE_OBJ) \
	$(HW_OBJ) \
	options.o


GDB_OBJ = gdb-sim.o sim_calls.o @sim_callback@

HW_SRC = @sim_hw_src@
HW_OBJ = @sim_hw_obj@

PACKAGE_SRC = @sim_pk_src@
PACKAGE_OBJ = @sim_pk_obj@


psim: $(TARGETLIB) main.o $(LIBIBERTY_LIB) $(BFD_LIB) $(LIBS) $(LIBINTL_DEP)
	$(CC) $(CFLAGS) $(SIM_CFLAGS) $(LDFLAGS) -o psim$(EXEEXT) main.o $(TARGETLIB) $(BFD_LIB) $(LIBINTL) $(LIBIBERTY_LIB) $(LIBS)

run: psim
	rm -f run$(EXEEXT)
	ln psim$(EXEEXT) run$(EXEEXT)

$(TARGETLIB): tmp-igen tmp-dgen tmp-hw tmp-pk tmp-defines $(LIB_OBJ) $(GDB_OBJ)
	rm -f $(TARGETLIB)
	$(AR) $(AR_FLAGS) $(TARGETLIB) $(LIB_OBJ) $(GDB_OBJ)
	$(RANLIB) $(TARGETLIB)

version.c: Makefile ../../gdb/version.in
	rm -f version.c-tmp version.c
	echo '#include "version.h"' >> version.c-tmp
	echo 'const char version[] = "'"`sed q ${srcdir}/../../gdb/version.in`"'";' >> version.c-tmp
	mv version.c-tmp version.c
version.o: version.c $(version_h)

psim.o: psim.c $(CPU_H) $(IDECODE_H) $(OPTIONS_H) $(TREE_H) $(BFD_H)

bits.o: bits.c $(BASICS_H)

debug.o: debug.c $(CONFIG_H) $(BASICS_H)
filter_filename.o: filter_filename.c $(CONFIG_H) $(PPC_CONFIG_H) $(FILTER_FILENAME_H)

sim-endian.o: sim-endian.c $(CONFIG_H) $(BASICS_H) $(SIM_ENDIAN_N_H)

os_emul.o: os_emul.c $(CPU_H) $(IDECODE_H) $(OS_EMUL_H) $(EMUL_GENERIC_H) $(EMUL_NETBSD_H) $(EMUL_UNIX_H) $(EMUL_CHIRP_H) $(EMUL_BUGAPI_H)
emul_generic.o: emul_generic.c $(EMUL_GENERIC_H)

emul_bugapi.o: emul_bugapi.c $(EMUL_GENERIC_H) $(EMUL_BUGAPI_H)
emul_chirp.o: emul_chirp.c $(EMUL_GENERIC_H) $(EMUL_CHIRP_H)
emul_netbsd.o: emul_netbsd.c $(EMUL_GENERIC_H) $(EMUL_NETBSD_H)
emul_unix.o: emul_unix.c $(EMUL_GENERIC_H) $(EMUL_UNIX_H)

registers.o: registers.c $(BASICS_H) $(REGISTERS_H)

cpu.o: cpu.c $(CPU_H) $(IDECODE_H)

interrupts.o: interrupts.c $(CPU_H) $(IDECODE_H) $(OS_EMUL_H)

# Given that inlines are turned on now, rebuild idecode whenever
# anything changes.
idecode.o: idecode.c $(CPU_H) $(IDECODE_H) $(SEMANTICS_H) $(LIB_INLINE_SRC) $(BUILT_SRC)

# double.o: double.c dp-bit.c

vm.o: vm.c $(BASICS_H) $(REGISTERS_H) $(DEVICE_H) $(COREFILE_H) $(VM_H) $(INTERRUPTS_H) $(MON_H) $(CPU_H) $(VM_N_H)

corefile.o: corefile.c $(BASICS_H) $(DEVICE_TABLE_H) $(COREFILE_H) $(COREFILE_N_H)

model.o: model.c $(CPU_H) $(MON_H)

events.o: events.c $(BASICS_H) $(EVENTS_H)

sim_calls.o: sim_calls.c $(PSIM_H) $(OPTIONS_H) $(DEFS_H) $(BFD_H) $(GDB_CALLBACK_H) $(GDB_REMOTE_SIM_H)

gdb-sim.o: gdb-sim.c $(PSIM_H)  $(OPTIONS_H) $(REGISTERS_H) $(GDB_REMOTE_SIM_H) $(GDB_SIM_PPC_H) $(SIM_CALLBACK_H)

spreg.o: spreg.c $(BASICS_H) $(SPREG_H)

main.o: main.c $(PSIM_H) $(OPTIONS_H) $(DEVICE_H) $(EVENTS_H) $(BFD_H) $(GDB_CALLBACK_H) $(GDB_REMOTE_SIM_H)

device.o: device.c $(DEVICE_TABLE_H) $(CAP_H) $(EVENTS_H) $(PSIM_H)

tree.o: tree.c $(BASICS_H) $(DEVICE_H) $(TREE_H)

device_table.o: device_table.c $(DEVICE_TABLE_H) hw.c

cap.o: cap.c $(CAP_H)

semantics.o: semantics.c $(CPU_H) $(IDECODE_H) $(SEMANTICS_H) $(COMMON_SIM_INLINE_H) $(COMMON_SIM_FPU_H) $(SUPPORT_H)

icache.o: icache.c $(CPU_H) $(IDECODE_H) $(SEMANTICS_H) $(ICACHE_H) $(COMMON_SIM_INLINE_H) $(COMMON_SIM_FPU_H) $(SUPPORT_H)

support.o: support.c $(CPU_H) $(IDECODE_H) $(COMMON_SIM_INLINE_H) $(COMMON_SIM_FPU_H) $(SUPPORT_H)

itable.o: itable.c $(ITABLE_H)

mon.o: mon.c $(BASICS_H) $(CPU_H) $(MON_H)

# GDB after 4.16 expects the default_callback structure to be setup.
# As a kludge, build the common stuff here for now.
gentmap: ../common/gentmap.c Makefile targ-vals.def
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -I. -I../common -I$(srcdir)/../common -o gentmap $< $(BUILD_LIBS)

targ-vals.def: $(srcdir)/../common/nltvals.def
	rm -f targ-vals.def tmp-def
	cat $(srcdir)/../common/nltvals.def > tmp-vals.def
	$(SHELL) $(srcdir)/../../move-if-change tmp-vals.def targ-vals.def

targ-vals.h: Makefile gentmap $(srcdir)/../../move-if-change
	rm -f tmp-vals.h
	./gentmap -h > tmp-vals.h
	$(SHELL) $(srcdir)/../../move-if-change tmp-vals.h targ-vals.h

targ-map.c: Makefile gentmap $(srcdir)/../../move-if-change
	rm -f tmp-map.c
	./gentmap -c > tmp-map.c
	$(SHELL) $(srcdir)/../../move-if-change tmp-map.c targ-map.c

callback.o: ../common/callback.c $(TARG_VALS_H) $(CONFIG_H)
	$(CC) -c $(STD_CFLAGS) -DHAVE_CONFIG_H $<

targ-map.o: targ-map.c $(ANSIDECL_H) $(GDB_CALLBACK_H) $(TARG_VALS_H)

sim-fpu.o: $(srcdir)/../common/sim-fpu.c $(CONFIG_H) $(TCONFIG_H)
	$(CC) -c $(STD_CFLAGS) -DHAVE_CONFIG_H $(srcdir)/../common/sim-fpu.c 

tconfig.h:
	rm -f tconfig.h
	echo > tconfig.h

# Rebuild options whenever something changes so the date/time is up to date.
options.o: options.c $(CPU_H) $(OPTIONS_H) $(DEFINES_H) $(BASICS_H) $(IDECODE_H) $(INLINE) $(LIB_SRC) $(BUILT_SRC) config.status Makefile
	$(CC) -c $(STD_CFLAGS) '-DOPCODE_RULES="@sim_opcode@"' '-DIGEN_FLAGS="$(IGEN_FLAGS)"' '-DDGEN_FLAGS="$(DGEN_FLAGS)"' $<

defines.h: tmp-defines; @true
tmp-defines: config.h Makefile
	sed -n -e '/^#define HAVE_/s/ 1$$/",/' -e '/^#define HAVE_/s//"HAVE_/p' < config.h > tmp-defines.h
	$(SHELL) $(srcdir)/../../move-if-change tmp-defines.h defines.h
	touch tmp-defines

#
# Rules to create the built c source code files
#

ppc-config.h: $(CONFIG_FILE)
	cp $(srcdir)/$(CONFIG_FILE) ppc-config.h


tmp-dgen: dgen ppc-spr-table $(srcdir)/../../move-if-change
	./dgen $(DGEN_FLAGS) \
		-r $(srcdir)/ppc-spr-table \
		-n spreg.h -hp tmp-spreg.h \
		-n spreg.c -p  tmp-spreg.c
	$(SHELL) $(srcdir)/../../move-if-change tmp-spreg.h spreg.h
	$(SHELL) $(srcdir)/../../move-if-change tmp-spreg.c spreg.c
	touch tmp-dgen

tmp-igen: igen $(srcdir)/ppc-instructions $(srcdir)/altivec.igen $(srcdir)/e500.igen $(IGEN_OPCODE_RULES) $(srcdir)/../../move-if-change tmp-ld-decode tmp-ld-cache tmp-ld-insn tmp-filter
	./igen	$(IGEN_FLAGS) \
		-o $(srcdir)/$(IGEN_OPCODE_RULES) \
		-I $(srcdir) -i $(srcdir)/ppc-instructions \
		-n icache.h    -hc tmp-icache.h \
		-n icache.c    -c  tmp-icache.c \
		-n semantics.h -hs tmp-semantics.h \
		-n semantics.c -s  tmp-semantics.c \
		-n idecode.h   -hd tmp-idecode.h \
		-n idecode.c   -d  tmp-idecode.c \
		-n itable.h    -ht tmp-itable.h \
		-n itable.c    -t  tmp-itable.c \
		-n model.h     -hm tmp-model.h \
		-n model.c     -m  tmp-model.c \
		-n support.h   -hf tmp-support.h \
		-n support.c   -f  tmp-support.c
	$(SHELL) $(srcdir)/../../move-if-change tmp-icache.h icache.h
	$(SHELL) $(srcdir)/../../move-if-change tmp-icache.c icache.c
	$(SHELL) $(srcdir)/../../move-if-change tmp-idecode.h idecode.h
	$(SHELL) $(srcdir)/../../move-if-change tmp-idecode.c idecode.c
	$(SHELL) $(srcdir)/../../move-if-change tmp-semantics.h semantics.h
	$(SHELL) $(srcdir)/../../move-if-change tmp-semantics.c semantics.c
	$(SHELL) $(srcdir)/../../move-if-change tmp-itable.h itable.h
	$(SHELL) $(srcdir)/../../move-if-change tmp-itable.c itable.c
	$(SHELL) $(srcdir)/../../move-if-change tmp-model.h model.h
	$(SHELL) $(srcdir)/../../move-if-change tmp-model.c model.c
	$(SHELL) $(srcdir)/../../move-if-change tmp-support.h support.h
	$(SHELL) $(srcdir)/../../move-if-change tmp-support.c support.c
	touch tmp-igen

# NOTE: Some versions of make don't handle files created as side-effects
# uncomment the below if that is the case.

$(TARGETLIB): tmp-igen tmp-dgen
itable.h itable.c icache.h icache.c idecode.h idecode.c semantics.h semantics.c model.h model.c support.h support.c: tmp-igen
spreg.h spreg.c: tmp-dgen

dgen: dgen.o table.o lf.o misc.o filter_host.o
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -o dgen dgen.o table.o lf.o misc.o filter_host.o $(BUILD_LIBS)

igen: igen.o table.o lf.o misc.o filter_host.o ld-decode.o ld-cache.o filter.o ld-insn.o gen-model.o gen-itable.o gen-icache.o gen-semantics.o gen-idecode.o gen-support.o
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o igen igen.o table.o lf.o misc.o filter_host.o ld-decode.o ld-cache.o filter.o ld-insn.o gen-model.o gen-itable.o gen-icache.o gen-semantics.o gen-idecode.o gen-support.o $(BUILD_LIBS)

filter_host.c: filter_filename.c
	cat $(srcdir)/filter_filename.c > filter_host.c

filter_host.o: filter_host.c $(CONFIG_H) $(PPC_CONFIG_H) $(FILTER_FILENAME_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c filter_host.c

table.o: table.c $(CONFIG_H) $(MISC_H) $(LF_H) $(TABLE_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/table.c

lf.o: lf.c $(CONFIG_H) $(MISC_H) $(LF_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/lf.c

filter.o: filter.c $(CONFIG_H) $(MISC_H) $(FILTER_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/filter.c
tmp-filter: filter.c $(MISC_H) misc.o
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o tmp-filter -DMAIN $(srcdir)/filter.c misc.o $(BUILD_LIBS)

ld-decode.o: ld-decode.c $(MISC_H) $(LF_H) $(TABLE_H) $(LD_DECODE_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/ld-decode.c
tmp-ld-decode: ld-decode.c misc.o lf.o table.o filter_host.o 
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o tmp-ld-decode -DMAIN $(srcdir)/ld-decode.c misc.o lf.o table.o filter_host.o $(BUILD_LIBS)

ld-cache.o: ld-cache.c $(MISC_H) $(LF_H) $(TABLE_H) $(LD_CACHE_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/ld-cache.c
tmp-ld-cache: ld-cache.c misc.o lf.o table.o filter_host.o 
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o tmp-ld-cache -DMAIN $(srcdir)/ld-cache.c misc.o lf.o table.o filter_host.o $(BUILD_LIBS)

ld-insn.o: ld-insn.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/ld-insn.c
tmp-ld-insn: ld-insn.c ld-cache.o misc.o lf.o table.o ld-decode.o filter_host.o filter.o
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o tmp-ld-insn -DMAIN $(srcdir)/ld-insn.c ld-cache.o misc.o lf.o table.o ld-decode.o filter_host.o filter.o $(BUILD_LIBS)

gen-model.o: gen-model.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_CACHE_H) $(LD_DECODE_H) $(LD_INSN_H) $(GEN_MODEL_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-model.c

gen-itable.o: gen-itable.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_CACHE_H) $(LD_DECODE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_ITABLE_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-itable.c

gen-icache.o: gen-icache.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_SEMANTICS_H) $(GEN_IDECODE_H) $(GEN_ICACHE_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-icache.c

gen-semantics.o: gen-semantics.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_SEMANTICS_H) $(GEN_ICACHE_H) $(GEN_IDECODE_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-semantics.c

gen-idecode.o: gen-idecode.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_IDECODE_H) $(GEN_ICACHE_H) $(GEN_SEMANTICS_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-idecode.c

gen-support.o: gen-support.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_SEMANTICS_H) $(GEN_SUPPORT_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-support.c

dgen.o: dgen.c $(CONFIG_H) $(MISC_H) $(LF_H) $(TABLE_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/dgen.c

igen.o: igen.c $(MISC_H) $(LF_H) $(TABLE_H) $(CONFIG_H) $(FILTER_H) $(LD_CACHE_H) $(LD_DECODE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_MODEL_H) $(GEN_ICACHE_H) $(GEN_ITABLE_H) $(GEN_IDECODE_H) $(GEN_SEMANTICS_H) $(GEN_SUPPORT_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/igen.c

misc.o: misc.c $(CONFIG_H) $(MISC_H)
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/misc.c



# real hardware
hw.c hw.h: tmp-hw; @true
tmp-hw: Makefile $(HW_SRC) $(srcdir)/../../move-if-change
	# The first for loop is to remove duplicates.
	f=""; \
	for i in $(HW_SRC) ; do \
	  case " $$f " in \
	    *" $$i "*) ;; \
	    *) f="$$f $$i" ;; \
	  esac ; \
	done ; \
	for hw in $$f ; do echo $$hw ; done \
	| sed -e 's/^.*\(hw_.*\)\.c/\1/' \
		-e 's/^/extern const device_descriptor /' \
		-e 's/$$/_device_descriptor\[\];/' \
		> tmp-hw.h
	f=""; \
	for i in $(HW_SRC) ; do \
	  case " $$f " in \
	    *" $$i "*) ;; \
	    *) f="$$f $$i" ;; \
	  esac ; \
	done ; \
	for hw in $$f ; do echo $$hw ; done \
	| sed -e 's/^.*\(hw_.*\)\.c/\1/' \
		-e 's/^/    /' \
		-e 's/$$/_device_descriptor,/' \
		> tmp-hw.c
	$(SHELL) $(srcdir)/../../move-if-change tmp-hw.h hw.h
	$(SHELL) $(srcdir)/../../move-if-change tmp-hw.c hw.c
	touch tmp-hw

hw_cpu.o: hw_cpu.c $(DEVICE_TABLE_H) $(HW_CPU_H) $(INTERRUPTS_H) $(CPU_H)
hw_com.o: hw_com.c $(DEVICE_TABLE_H)
hw_core.o: hw_core.c $(DEVICE_TABLE_H) $(COREFILE_H)
hw_disk.o: hw_disk.c $(DEVICE_TABLE_H) $(PK_H)
hw_eeprom.o: hw_eeprom.c $(DEVICE_TABLE_H)
hw_glue.o: hw_glue.c $(DEVICE_TABLE_H)
hw_htab.o: hw_htab.c $(DEVICE_TABLE_H) $(BFD_H)
hw_ide.o: hw_ide.c $(DEVICE_TABLE_H)
hw_init.o: hw_init.c $(DEVICE_TABLE_H) $(BFD_H) $(PSIM_H)
hw_iobus.o: hw_iobus.c $(DEVICE_TABLE_H)
hw_memory.o: hw_memory.c $(DEVICE_TABLE_H)
hw_nvram.o: hw_nvram.c $(DEVICE_TABLE_H)
hw_opic.o: hw_opic.c $(DEVICE_TABLE_H)
hw_pal.o: hw_pal.c $(DEVICE_TABLE_H) $(CPU_H)
hw_phb.o: hw_phb.c $(DEVICE_TABLE_H) $(HW_PHB_H) $(COREFILE_H)
hw_register.o: hw_register.c $(DEVICE_TABLE_H) $(PSIM_H)
hw_sem.o: hw_sem.c $(DEVICE_TABLE_H) $(PSIM_H)
hw_shm.o: hw_shm.c $(DEVICE_TABLE_H) $(PSIM_H)
hw_trace.o: hw_trace.c $(DEVICE_TABLE_H)
hw_vm.o: hw_vm.c $(DEVICE_TABLE_H) $(CPU_H)
# ignore this line, it stops make from getting confused



# real packages
pk.h: tmp-pk; @true
tmp-pk: Makefile $(PACKAGE_SRC) $(srcdir)/../../move-if-change
	# The first for loop is to remove duplicates.
	f=""; \
	for i in $(PACKAGE_SRC) ; do \
	  case " $$f " in \
	    *" $$i "*) ;; \
	    *) f="$$f $$i" ;; \
	  esac ; \
	done ; \
	for pk in $$f ; do echo $$pk ; done \
	| sed -e 's/^.*pk_\(.*\)\.c/\1/' \
		-e 's/^/extern package_create_instance_callback pk_/' \
		-e 's/$$/_create_instance;/' \
		> tmp-pk.h
	$(SHELL) $(srcdir)/../../move-if-change tmp-pk.h pk.h
	touch tmp-pk

pk_disklabel.o: pk_disklabel.c $(DEVICE_TABLE_H) $(PK_H)
# ignore this line, it stops make from getting confused



tags etags: TAGS

TAGS: $(BUILT_SRC)
	etags $(srcdir)/*.h $(srcdir)/*.c $(BUILT_SRC)

clean mostlyclean:
	rm -f tmp-* *.[oasi] core psim$(EXEEXT) run$(EXEEXT) igen dgen $(BUILT_SRC_WO_CONFIG) gentmap

distclean realclean: clean
	rm -f TAGS Makefile config.cache config.status config.h defines.h stamp-h config.log

maintainer-clean: distclean
	rm -f *~ *.log ppc-config.h core *.core

Makefile: Makefile.in config.status
	CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status

config.h: stamp-h ; @true
stamp-h: config.in config.status
	CONFIG_FILES= CONFIG_HEADERS=config.h:config.in $(SHELL) ./config.status

config.status: configure
	$(SHELL) ./config.status --recheck

install: installdirs
	n=`echo run | sed '$(program_transform_name)'`; \
	$(INSTALL_PROGRAM) run$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT)

installdirs:
	$(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(bindir)
