AR_FLAGS = rc
CC = @CC@
CFLAGS = @CFLAGS@
+WERROR_CFLAGS = @WERROR_CFLAGS@
CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
BISON = bison
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@
$(BITSIZE_CFLAGS) \
$(HOSTBITSIZE_CFLAGS) \
$(TIMEBASE_CFLAGS) \
- $(ALIGNMENT_CFLAGS) \
$(FLOAT_CFLAGS) \
$(RESERVED_CFLAGS) \
$(MONITOR_CFLAGS) \
$(DEVZERO_CFLAGS)
SIM_FPU_CFLAGS = @sim_fpu_cflags@
-STD_CFLAGS = $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(WARNING_CFLAGS) $(INCLUDES) $(INTL_CFLAGS) $(SIM_FPU_CFLAGS)
+STD_CFLAGS = $(CFLAGS) $(WERROR_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)
-BUILD_LDFLAGS =
+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_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=
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)
+INCLUDES = -I. -I$(srcdir) $(LIB_INCLUDES) $(BFD_INCLUDES) $(GDB_INCLUDES) -I../..
LIBIBERTY_LIB = ../../libiberty/libiberty.a
BFD_LIB = ../../bfd/libbfd.a
TARGETLIB = libsim.a
-all: run $(TARGETLIB) $(GDB_OBJ)
+all: run$(EXEEXT) $(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_CALLBACK_H = $(srcroot)/include/sim/callback.h
+GDB_REMOTE_SIM_H = $(srcroot)/include/sim/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
gdb-sim.c \
sim_calls.c
+COMMON_OBJS_NAMES = \
+ version.o
+COMMON_OBJS = $(COMMON_OBJS_NAMES:%=../common/common_libcommon_a-%)
# NOTE: semantics, idecode and psim put last so smaller files are compiled
# first
support.o \
@sim_fpu@ \
psim.o \
- version.o \
+ $(COMMON_OBJS) \
$(PACKAGE_OBJ) \
$(HW_OBJ) \
options.o
PACKAGE_OBJ = @sim_pk_obj@
-psim: $(TARGETLIB) main.o $(LIBIBERTY_LIB) $(BFD_LIB) $(LIBINTL_DEP)
+psim$(EXEEXT): $(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
+run$(EXEEXT): psim$(EXEEXT)
rm -f run$(EXEEXT)
ln psim$(EXEEXT) run$(EXEEXT)
$(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)
# 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
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) -I. -I../common -I$(srcdir)/../common \
- -o gentmap $(srcdir)/../common/gentmap.c
+ $(LINK_FOR_BUILD) -I. -I../common -I$(srcdir)/../common \
+ $(srcdir)/../common/gentmap.c -DUSE_CONFIG_H
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
+targ-vals.h: stamp-vals ; @true
+stamp-vals: 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
+ @echo stamp > stamp-vals
-targ-map.c: Makefile gentmap $(srcdir)/../../move-if-change
+targ-map.c: stamp-map; @true
+stamp-map: 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
+ @echo stamp > stamp-map
callback.o: $(srcdir)/../common/callback.c $(TARG_VALS_H) $(CONFIG_H)
$(CC) -c $(STD_CFLAGS) -DHAVE_CONFIG_H $(srcdir)/../common/callback.c
tmp-dgen: dgen ppc-spr-table $(srcdir)/../../move-if-change
- ./dgen $(DGEN_FLAGS) \
+ $(DGEN) $(DGEN_FLAGS) \
-r $(srcdir)/ppc-spr-table \
-n spreg.h -hp tmp-spreg.h \
-n spreg.c -p tmp-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) \
+ $(IGEN) $(IGEN_FLAGS) \
-o $(srcdir)/$(IGEN_OPCODE_RULES) \
-I $(srcdir) -i $(srcdir)/ppc-instructions \
-n icache.h -hc tmp-icache.h \
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
+ $(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
- $(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
+ $(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)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c filter_host.c
+ $(COMPILE_FOR_BUILD) -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
+ $(COMPILE_FOR_BUILD) -c $(srcdir)/table.c
lf.o: lf.c $(CONFIG_H) $(MISC_H) $(LF_H)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/lf.c
+ $(COMPILE_FOR_BUILD) -c $(srcdir)/lf.c
filter.o: filter.c $(CONFIG_H) $(MISC_H) $(FILTER_H)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/filter.c
+ $(COMPILE_FOR_BUILD) -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
+ $(LINK_FOR_BUILD) -DMAIN $(srcdir)/filter.c misc.o
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
+ $(COMPILE_FOR_BUILD) -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
+ $(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)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/ld-cache.c
+ $(COMPILE_FOR_BUILD) -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
+ $(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)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/ld-insn.c
+ $(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
- $(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
+ $(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)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-model.c
+ $(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)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-itable.c
+ $(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)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-icache.c
+ $(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)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-semantics.c
+ $(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)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-idecode.c
+ $(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)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-support.c
+ $(COMPILE_FOR_BUILD) -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
+ $(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)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/igen.c
+ $(COMPILE_FOR_BUILD) -c $(srcdir)/igen.c
misc.o: misc.c $(CONFIG_H) $(MISC_H)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/misc.c
+ $(COMPILE_FOR_BUILD) -c $(srcdir)/misc.c
clean mostlyclean:
rm -f tmp-* *.[oasi] core psim$(EXEEXT) run$(EXEEXT) igen dgen $(BUILT_SRC_WO_CONFIG) gentmap
+ rm -f stamp-vals targ-vals.h stamp-map targ-map.c
distclean realclean: clean
rm -f TAGS Makefile config.cache config.status config.h defines.h stamp-h config.log
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)