#
#   This file is part of the program psim.
#
#   Copyright (C) 1994-1997, Andrew Cagney <cagney@highland.com.au>
#
#   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)

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@
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)

STD_CFLAGS	= $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(WARNING_CFLAGS) $(SIM_CFLAGS) $(HDEFINES) $(TDEFINES) $(INCLUDES) $(INTL_CFLAGS)
NOWARN_CFLAGS	= $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(SIM_CFLAGS) $(HDEFINES) $(TDEFINES) $(INCLUDES)
BUILD_CFLAGS	= -g -O $(INCLUDES) $(WARNING_CFLAGS)

BUILD_LDFLAGS	=

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 -I$(srcdir)/../../mmalloc
INCLUDES	= -I. -I$(srcdir) $(LIB_INCLUDES) $(BFD_INCLUDES) $(GDB_INCLUDES)

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

INTLLIBS = @INTLLIBS@
INTLDEPS = @INTLDEPS@
INTL_DIR = ../../intl
INTL_SRC = $(srcdir)/$(INTL_DIR)
INTL_CFLAGS = -I$(INTL_DIR) -I$(INTL_SRC)


TARGETLIB	= libsim.a

all:	run $(TARGETLIB) $(GDB_OBJ)

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



BASICS_H = \
	basics.h \
	config.h \
	ppc-config.h \
	inline.h \
	sim_callbacks.h \
	debug.h filter_filename.h \
	words.h \
	bits.h \
	sim-endian.h

PSIM_H = \
	psim.h \
	$(BASICS_H)

IDECODE_H = \
	idecode.h \
	idecode_expression.h \
	idecode_branch.h \
	idecode_fields.h \
	icache.h

REGISTERS_H = \
	registers.h \
	spreg.h

CPU_H = \
	cpu.h \
	$(BASICS_H) \
	$(REGISTERS_H) \
	$(IDECODE_H) \
	device.h \
	corefile.h \
	vm.h \
	events.h \
	interrupts.h \
	psim.h \
	itable.h \
	mon.h \
	model.h

DEVICE_TABLE_H = \
	$(BASICS_H) \
	device_table.h \
	device.h \
	tree.h \
	hw.h

EMUL_GENERIC_H = \
	$(CPU_H) \
	$(IDECODE_H) \
	emul_generic.h \
	tree.h \
	os_emul.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 \
	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 \
	$(PACKAGE_OBJ) \
	$(HW_OBJ) \
	options.o


GDB_OBJ = sim_calls.o @sim_callback@

ICACHE_CFLAGS = @sim_fpu_cflags@
SEMANTICS_CFLAGS = @sim_fpu_cflags@

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) $(INTLDEPS)
	$(CC) $(CFLAGS) $(SIM_CFLAGS) $(LDFLAGS) -o psim$(EXEEXT) main.o $(TARGETLIB) $(BFD_LIB) $(INTLLIBS) $(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)

psim.o: psim.c psim.h tree.h $(CPU_H) $(IDECODE_H)

bits.o: bits.c $(BASICS_H)

debug.o: debug.c $(BASICS_H)
filter_filename.o: filter_filename.c filter_filename.h config.h ppc-config.h

sim-endian.o: sim-endian.c sim-endian-n.h $(BASICS_H)

os_emul.o: os_emul.c emul_netbsd.h emul_unix.h emul_chirp.h emul_bugapi.h $(EMUL_GENERIC_H)
emul_generic.o: emul_generic.c $(EMUL_GENERIC_H)

emul_bugapi.o: emul_bugapi.c emul_bugapi.h $(EMUL_GENERIC_H)
emul_chirp.o: emul_chirp.c emul_chirp.h $(EMUL_GENERIC_H)
emul_netbsd.o: emul_netbsd.c emul_netbsd.h $(EMUL_GENERIC_H)
emul_unix.o: emul_unix.c emul_unix.h $(EMUL_GENERIC_H)

registers.o: registers.c $(REGISTERS_H) $(BASICS_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)
	$(CC) -c $(NOWARN_CFLAGS) $<

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

vm.o: vm.c vm.h vm_n.h $(CPU_H)

corefile.o: corefile.c corefile.h corefile-n.h $(BASICS_H) $(DEVICE_TABLE_H)

model.o: model.c $(CPU_H)

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

sim_calls.o: sim_calls.c $(PSIM_H) itable.h ../../gdb/tm.h options.h

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

main.o: main.c $(PSIM_H) itable.h options.h

device.o: device.c $(DEVICE_TABLE_H) cap.h

tree.o: tree.c tree.h device.h $(DEVICE_TABLE_H)

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

cap.o: cap.c cap.h $(BASICS_H)

semantics.o: semantics.c semantics.h $(CPU_H) $(IDECODE_H)
	$(CC) -c $(SEMANTICS_CFLAGS) $(NOWARN_CFLAGS) $<

icache.o: icache.c icache.h $(IDECODE_H) $(CPU_H)
	$(CC) -c $(ICACHE_CFLAGS) $(NOWARN_CFLAGS) $<

support.o: support.c support.h $(IDECODE_H) $(CPU_H)

itable.o: itable.c itable.h

mon.o: mon.c $(CPU_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_FLAGS) -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
	$(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
	$(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
	$(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 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 $(BASICS_H) $(CPU_H) $(IDECODE_H) $(INLINE) $(LIB_SRC) $(BUILT_SRC) config.status Makefile defines.h
	$(CC) -c $(STD_CFLAGS) '-DOPCODE_RULES="@sim_opcode@"' '-DIGEN_FLAGS="$(IGEN_FLAGS)"' '-DDGEN_FLAGS="$(DGEN_FLAGS)"' $<

tmp-defines: config.h Makefile
	sed -n -e '/^#define HAVE_/s/ 1$$/",/' -e '/^#define HAVE_/s//"HAVE_/p' < config.h > tmp-defines.h
	$(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
	$(srcdir)/../../move-if-change tmp-spreg.h spreg.h
	$(srcdir)/../../move-if-change tmp-spreg.c spreg.c
	touch tmp-dgen


tmp-igen: igen ppc-instructions $(IGEN_OPCODE_RULES) ppc-cache-rules $(srcdir)/../../move-if-change tmp-ld-decode tmp-ld-cache tmp-ld-insn tmp-filter
	./igen	$(IGEN_FLAGS) \
		-o $(srcdir)/$(IGEN_OPCODE_RULES) \
		-k $(srcdir)/ppc-cache-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
	$(srcdir)/../../move-if-change tmp-icache.h icache.h
	$(srcdir)/../../move-if-change tmp-icache.c icache.c
	$(srcdir)/../../move-if-change tmp-idecode.h idecode.h
	$(srcdir)/../../move-if-change tmp-idecode.c idecode.c
	$(srcdir)/../../move-if-change tmp-semantics.h semantics.h
	$(srcdir)/../../move-if-change tmp-semantics.c semantics.c
	$(srcdir)/../../move-if-change tmp-itable.h itable.h
	$(srcdir)/../../move-if-change tmp-itable.c itable.c
	$(srcdir)/../../move-if-change tmp-model.h model.h
	$(srcdir)/../../move-if-change tmp-model.c model.c
	$(srcdir)/../../move-if-change tmp-support.h support.h
	$(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 filter_filename.h config.h ppc-config.h
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c filter_host.c

table.o: table.c misc.h filter_filename.h lf.h table.h
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/table.c

lf.o: lf.c misc.h filter_filename.h lf.h
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/lf.c

filter.o: filter.c misc.h lf.h table.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.o 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.o 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 ld-insn.h ld-decode.h igen.h
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/ld-insn.c
tmp-ld-insn: ld-insn.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 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 gen-model.h ld-decode.h igen.h ld-insn.h
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-model.c

gen-itable.o: gen-itable.c misc.h lf.h table.h gen-itable.h ld-decode.h igen.h ld-insn.h igen.h
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-itable.c

gen-icache.o: gen-icache.c misc.h lf.h table.h gen-icache.h ld-decode.h igen.h ld-insn.h gen-semantics.h gen-idecode.h
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-icache.c

gen-semantics.o: gen-semantics.c misc.h lf.h table.h gen-semantics.h ld-decode.h igen.h ld-insn.h
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-semantics.c

gen-idecode.o: gen-idecode.c misc.h lf.h table.h gen-idecode.h gen-icache.h gen-semantics.h ld-decode.h igen.h ld-insn.h 
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-idecode.c

gen-support.o: gen-support.c misc.h lf.h table.h gen-support.h ld-decode.h igen.h ld-insn.h
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-support.c

dgen.o: dgen.c misc.h filter_filename.h lf.h table.h
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/dgen.c

igen.o: igen.c misc.h filter_filename.h lf.h table.h ld-decode.h ld-cache.h ld-insn.h filter.h gen-model.h gen-itable.h gen-icache.h gen-idecode.h gen-semantics.h gen-support.h igen.h 
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/igen.c

misc.o: misc.c misc.h filter_filename.h
	$(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/misc.c



# real hardware
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
	$(srcdir)/../../move-if-change tmp-hw.h hw.h
	$(srcdir)/../../move-if-change tmp-hw.c hw.c
	touch tmp-hw

hw_cpu.o: hw_cpu.c $(DEVICE_TABLE_H) $(CPU_H)
hw_core.o: hw_core.c $(DEVICE_TABLE_H)
hw_disk.o: hw_disk.c $(DEVICE_TABLE_H) pk.h
hw_glue.o: hw_glue.c $(DEVICE_TABLE_H)
hw_htab.o: hw_htab.c $(DEVICE_TABLE_H)
hw_ide.o: hw_ide.c $(DEVICE_TABLE_H)
hw_init.o: hw_init.c $(DEVICE_TABLE_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
hw_register.o: hw_register.c $(DEVICE_TABLE_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
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
	$(srcdir)/../../move-if-change tmp-pk.h pk.h
	touch tmp-pk

pk_disklabel.o: pk.h $(DEVICE_TABLE_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) $(bindir)/$$n$(EXEEXT)

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