8sa1-binutils-gdb/sim/ppc/Makefile.in
Simon Marchi 2b8d134be4 sim: set ASAN_OPTIONS=detect_leaks=0 when running igen and opc2c
The igen/dgen and opc2c tools leak their heap-allocated memory (on
purpose) at program exit, which makes AddressSanitizer fail the tool
execution.  This breaks the build, as it makes the tool return a
non-zero exit code.

Fix that by disabling leak detection through the setting of that
environment variable.

I also changed the opc2c rules for m32c to go through a temporary file.
What happened is that the failing opc2c would produce an incomplete file
(probably because ASan exits the process before stdout is flushed).
This meant that further make attempts didn't try to re-create the file,
as it already existed.  A "clean" was therefore necessary.  This can
also happen in regular builds if the user interrupts the build (^C) in
the middle of the opc2c execution and tries to resume it.  Going to a
temporary file avoids this issue.

sim/m32c/ChangeLog:

	* Makefile.in: Set ASAN_OPTIONS when running opc2c.

sim/mips/ChangeLog:

	* Makefile.in: Set ASAN_OPTIONS when running igen.

sim/mn10300/ChangeLog:

	* Makefile.in: Set ASAN_OPTIONS when running igen.

sim/ppc/ChangeLog:

	* Makefile.in: Set ASAN_OPTIONS when running igen.

sim/v850/ChangeLog:

	* Makefile.in: Set ASAN_OPTIONS when running igen.

Change-Id: I00f21d4dc1aff0ef73471925d41ce7c23e83e082
2021-04-08 09:49:30 -04:00

908 lines
23 KiB
Makefile

#
# 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 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/>.
#
default: all
VPATH = @srcdir@
srcdir = @srcdir@
srccom = $(srcdir)/../common
srcroot = $(srcdir)/../..
srcsim = $(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@
INLINE_CFLAGS = @sim_inline@
ENDIAN_CFLAGS = @sim_endian@
HOSTENDIAN_CFLAGS = @sim_hostendian@
SMP_CFLAGS = @sim_smp@
XOR_ENDIAN_CFLAGS = @sim_xor_endian@
BITSIZE_CFLAGS = @sim_bitsize@
HOSTBITSIZE_CFLAGS = @sim_hostbitsize@
TIMEBASE_CFLAGS = @sim_timebase@
ALIGNMENT_CFLAGS = @sim_alignment@
FLOAT_CFLAGS = @sim_float@
RESERVED_CFLAGS = @sim_reserved@
MONITOR_CFLAGS = @sim_monitor@
MODEL_CFLAGS = @sim_model@ @sim_default_model@ @sim_model_issue@
TERMIO_CFLAGS = @sim_termio@
WARNING_CFLAGS = @sim_warnings@
DEVZERO_CFLAGS = @sim_devzero@
CONFIG_CFLAGS = \
$(ENDIAN_CFLAGS) \
$(HOSTENDIAN_CFLAGS) \
$(SMP_CFLAGS) \
$(XOR_ENDIAN_CFLAGS) \
$(BITSIZE_CFLAGS) \
$(HOSTBITSIZE_CFLAGS) \
$(TIMEBASE_CFLAGS) \
$(ALIGNMENT_CFLAGS) \
$(FLOAT_CFLAGS) \
$(RESERVED_CFLAGS) \
$(MONITOR_CFLAGS) \
$(MODEL_CFLAGS) \
$(TERMIO_CFLAGS) \
$(DEVZERO_CFLAGS)
SIM_FPU_CFLAGS = @sim_fpu_cflags@
STD_CFLAGS = $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(WARNING_CFLAGS) $(INCLUDES) $(INTL_CFLAGS) $(SIM_FPU_CFLAGS)
NOWARN_CFLAGS = $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(INCLUDES) $(SIM_FPU_CFLAGS)
BUILD_CFLAGS = $(CFLAGS_FOR_BUILD) $(INCLUDES) $(WARNING_CFLAGS)
LDFLAGS_FOR_BUILD =
LIBS = @LIBS@
COMPILE_FOR_BUILD = $(CC_FOR_BUILD) $(BUILD_CFLAGS)
LINK_FOR_BUILD = $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(LDFLAGS_FOR_BUILD) -o $@
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@
IGEN_FLAGS = \
$(IGEN_DECODE_MECHANISM) \
$(IGEN_DUPLICATE) \
$(IGEN_JUMP) \
$(IGEN_FILTER) \
$(IGEN_ICACHE) \
$(IGEN_SMP) \
$(IGEN_LINE_NR)
# igen/dgen leak memory, and therefore makes AddressSanitizer unhappy. Disable
# leak detection while running them.
IGEN = ASAN_OPTIONS=detect_leaks=0 ./igen
DGEN = ASAN_OPTIONS=detect_leaks=0 ./dgen
.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
ZLIB = @zlibdir@ -lz
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
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) $(LIBINTL_DEP)
$(CC) $(CFLAGS) $(LDFLAGS) -o psim$(EXEEXT) main.o $(TARGETLIB) $(BFD_LIB) $(ZLIB) $(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 $(srcroot)/gdb/version.in $(srcroot)/bfd/version.h $(srcroot)/sim/common/create-version.sh
$(SHELL) $(srcroot)/sim/common/create-version.sh $(srcroot)/gdb $@.tmp
$(SHELL) $(srcroot)/move-if-change $@.tmp $@
touch $@
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: $(srcdir)/../common/gentmap.c Makefile targ-vals.def
$(LINK_FOR_BUILD) -I. -I../common -I$(srcdir)/../common \
$(srcdir)/../common/gentmap.c
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: $(srcdir)/../common/callback.c $(TARG_VALS_H) $(CONFIG_H)
$(CC) -c $(STD_CFLAGS) -DHAVE_CONFIG_H $(srcdir)/../common/callback.c
targ-map.o: targ-map.c $(ANSIDECL_H) $(GDB_CALLBACK_H) $(TARG_VALS_H)
sim-fpu.o: $(srcdir)/../common/sim-fpu.c $(CONFIG_H)
$(CC) -c $(STD_CFLAGS) -DHAVE_CONFIG_H $(srcdir)/../common/sim-fpu.c
# 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)"' $(srcdir)/options.c
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
$(LINK_FOR_BUILD) dgen.o table.o lf.o misc.o filter_host.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
$(LINK_FOR_BUILD) 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
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)
$(COMPILE_FOR_BUILD) -c filter_host.c
table.o: table.c $(CONFIG_H) $(MISC_H) $(LF_H) $(TABLE_H)
$(COMPILE_FOR_BUILD) -c $(srcdir)/table.c
lf.o: lf.c $(CONFIG_H) $(MISC_H) $(LF_H)
$(COMPILE_FOR_BUILD) -c $(srcdir)/lf.c
filter.o: filter.c $(CONFIG_H) $(MISC_H) $(FILTER_H)
$(COMPILE_FOR_BUILD) -c $(srcdir)/filter.c
tmp-filter: filter.c $(MISC_H) misc.o
$(LINK_FOR_BUILD) -DMAIN $(srcdir)/filter.c misc.o
ld-decode.o: ld-decode.c $(MISC_H) $(LF_H) $(TABLE_H) $(LD_DECODE_H)
$(COMPILE_FOR_BUILD) -c $(srcdir)/ld-decode.c
tmp-ld-decode: ld-decode.c misc.o lf.o table.o filter_host.o
$(LINK_FOR_BUILD) -DMAIN $(srcdir)/ld-decode.c misc.o lf.o table.o filter_host.o
ld-cache.o: ld-cache.c $(MISC_H) $(LF_H) $(TABLE_H) $(LD_CACHE_H)
$(COMPILE_FOR_BUILD) -c $(srcdir)/ld-cache.c
tmp-ld-cache: ld-cache.c misc.o lf.o table.o filter_host.o
$(LINK_FOR_BUILD) -DMAIN $(srcdir)/ld-cache.c misc.o lf.o table.o filter_host.o
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)
$(COMPILE_FOR_BUILD) -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
$(LINK_FOR_BUILD) -DMAIN $(srcdir)/ld-insn.c ld-cache.o misc.o lf.o table.o ld-decode.o filter_host.o filter.o
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)
$(COMPILE_FOR_BUILD) -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)
$(COMPILE_FOR_BUILD) -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)
$(COMPILE_FOR_BUILD) -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)
$(COMPILE_FOR_BUILD) -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)
$(COMPILE_FOR_BUILD) -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)
$(COMPILE_FOR_BUILD) -c $(srcdir)/gen-support.c
dgen.o: dgen.c $(CONFIG_H) $(MISC_H) $(LF_H) $(TABLE_H)
$(COMPILE_FOR_BUILD) -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)
$(COMPILE_FOR_BUILD) -c $(srcdir)/igen.c
misc.o: misc.c $(CONFIG_H) $(MISC_H)
$(COMPILE_FOR_BUILD) -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
check:
install: installdirs
a=`basename "$$(pwd)"`; \
n=`echo run | sed '$(program_transform_name)'`; \
[ "$(SIM_PRIMARY_TARGET)" = "$$a" ] || n="$$n-$$a"; \
$(INSTALL_PROGRAM) run$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
install-strip: installdirs
a=`basename "$$(pwd)"`; \
n=`echo run | sed '$(program_transform_name)'`; \
[ "$(SIM_PRIMARY_TARGET)" = "$$a" ] || n="$$n-$$a"; \
$(INSTALL_PROGRAM) run$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
$(STRIP) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
installdirs:
$(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(bindir)