* [PATCH] sim: generate build dependencies on the fly
@ 2011-07-12 5:18 Mike Frysinger
2011-07-13 8:26 ` [PATCH v2] " Mike Frysinger
2011-12-03 18:24 ` [PATCH] " Mike Frysinger
0 siblings, 2 replies; 7+ messages in thread
From: Mike Frysinger @ 2011-07-12 5:18 UTC (permalink / raw)
To: gdb-patches; +Cc: toolchain-devel
Lift the code that GDB is using to generate dependencies on the fly and
port it over to the sim. Now people shouldn't have to manually maintain
these in their Makefile's (for the most part). Generated header files
still need to be manually tracked.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
sim/bfin/:
2011-07-11 Mike Frysinger <vapier@gentoo.org>
* Makefile.in: Replace all dependency rules with a single rule
for interp.o.
* aclocal.m4, configure: Regenerate.
sim/arm/:
sim/avr/:
sim/cr16/:
sim/cris/:
sim/d10v/:
sim/erc32/:
sim/frv/:
sim/h8300/:
sim/igen/:
sim/iq2000/:
sim/lm32/:
sim/m32c/:
sim/m32r/:
sim/m68hc11/:
sim/mcore/:
sim/microblaze/:
sim/mips/:
sim/mn10300/:
sim/moxie/:
sim/ppc/:
sim/rx/:
sim/sh/:
sim/sh64/:
sim/v850/:
2011-07-11 Mike Frysinger <vapier@gentoo.org>
* aclocal.m4: New file.
* configure: Regenerate.
sim/common/:
2011-07-11 Mike Frysinger <vapier@gentoo.org>
* Make-common.in (VPATH): Add $(srccom).
(DEP): Delete.
(DEPMODE, DEPDIR, depcomp, COMPILE.pre, COMPILE.post, COMPILE,
POSTCOMPILE): New variables.
(run.o, sim-command.o, sim-core.o, sim-cpu.o, sim-endian.o,
sim-engine.o, sim-hw.o, sim-memopt.o, sim-module.o, sim-options.o,
sim-reason.o, sim-reg.o, sim-resume.o, sim-run.o, sim-signal.o,
sim-stop.o, sim-trace.o, sim-profile.o, sim-model.o, sim-utils.o,
sim-watch.o, sim-load.o, hw-alloc.o, hw-device.o, hw-events.o,
hw-instances.o, hw-handles.o, hw-ports.o, hw-properties.o, hw-tree.o,
dv-cfi.o, dv-core.o, dv-glue.o, dv-pal.o, dv-sockser.o, nrun.o,
cgen-run.o, cgen-scache.o, cgen-trace.o, cgen-fpu.o, cgen-accfp.o,
cgen-utils.o, cgen-par.o): Delete rules.
(sim-abort.o, sim-arange.o, sim-bits.o, sim-config.o, sim-events.o,
sim-fpu.o, sim-hload.o, sim-hrw.o, sim-info.o): Replace build recipe
with dependency rule on $(SIM_EXTRA_DEPS).
(callback.o, syscall.o, sim-io.o): Replace build recipe with
dependency rule on targ-vals.h.
(hw-base.o): Replace build recipe with dependency rule on hw-config.h.
(.c.o): Replace recipe with call to $(COMPILE) and $(POSTCOMPILE).
Include dependency files, when using GNU Make.
* aclocal.m4: Include ../../config/depstand.m4. Call
ZW_CREATE_DEPDIR and ZW_PROG_COMPILER_DEPENDENCIES.
(MAKE, GMAKE): New substs.
---
sim/bfin/Makefile.in | 43 +-------
sim/common/Make-common.in | 264 +++++++++++++--------------------------------
sim/common/acinclude.m4 | 15 +++
3 files changed, 91 insertions(+), 231 deletions(-)
diff --git a/sim/bfin/Makefile.in b/sim/bfin/Makefile.in
index 67e73c0..20e438f 100644
--- a/sim/bfin/Makefile.in
+++ b/sim/bfin/Makefile.in
@@ -65,45 +65,4 @@ $(srcdir)/linux-fixed-code.h: $(srcdir)/linux-fixed-code.s Makefile.in
rm -f linux-fixed-code.o
mv $@.tmp $@
-interp.o: interp.c targ-vals.h linux-targ-map.h linux-fixed-code.h devices.h $(INCLUDE)
-bfin-sim.o: bfin-sim.c $(INCLUDE)
-gui.o: gui.c $(INCLUDE)
-machs.o: machs.c $(INCLUDE)
-dv-bfin_cec.o: dv-bfin_cec.c devices.h $(INCLUDE)
-dv-bfin_cgu.o: dv-bfin_cgu.c devices.h $(INCLUDE)
-dv-bfin_ctimer.o: dv-bfin_ctimer.c devices.h $(INCLUDE)
-dv-bfin_dde.o: dv-bfin_dde.c devices.h $(INCLUDE)
-dv-bfin_dma.o: dv-bfin_dma.c devices.h $(INCLUDE)
-dv-bfin_dma_pmap.o: dv-bfin_dma_pmap.c devices.h $(INCLUDE)
-dv-bfin_ebiu_amc.o: dv-bfin_ebiu_amc.c devices.h $(INCLUDE)
-dv-bfin_ebiu_ddrc.o: dv-bfin_ebiu_ddrc.c devices.h $(INCLUDE)
-dv-bfin_ebiu_sdc.o: dv-bfin_ebiu_sdc.c devices.h $(INCLUDE)
-dv-bfin_efs.o: dv-bfin_efs.c devices.h $(INCLUDE)
-dv-bfin_emac.o: dv-bfin_emac.c devices.h $(INCLUDE)
-dv-bfin_eppi.o: dv-bfin_eppi.c devices.h $(INCLUDE)
-dv-bfin_evt.o: dv-bfin_evt.c devices.h $(INCLUDE)
-dv-bfin_gpio.o: dv-bfin_gpio.c devices.h $(INCLUDE)
-dv-bfin_gpio2.o: dv-bfin_gpio2.c devices.h $(INCLUDE)
-dv-bfin_gptimer.o: dv-bfin_gptimer.c devices.h $(INCLUDE)
-dv-bfin_jtag.o: dv-bfin_jtag.c devices.h $(INCLUDE)
-dv-bfin_mmu.o: dv-bfin_mmu.c devices.h $(INCLUDE)
-dv-bfin_nfc.o: dv-bfin_nfc.c devices.h $(INCLUDE)
-dv-bfin_otp.o: dv-bfin_otp.c devices.h $(INCLUDE)
-dv-bfin_pfmon.o: dv-bfin_pfmon.c devices.h $(INCLUDE)
-dv-bfin_pint.o: dv-bfin_pint.c devices.h $(INCLUDE)
-dv-bfin_pll.o: dv-bfin_pll.c devices.h $(INCLUDE)
-dv-bfin_ppi.o: dv-bfin_ppi.c devices.h $(INCLUDE)
-dv-bfin_rtc.o: dv-bfin_rtc.c devices.h $(INCLUDE)
-dv-bfin_sec.o: dv-bfin_sec.c devices.h $(INCLUDE)
-dv-bfin_sic.o: dv-bfin_sic.c devices.h $(INCLUDE)
-dv-bfin_smc.o: dv-bfin_smc.c devices.h $(INCLUDE)
-dv-bfin_spi.o: dv-bfin_spi.c devices.h $(INCLUDE)
-dv-bfin_spu.o: dv-bfin_spu.c devices.h $(INCLUDE)
-dv-bfin_trace.o: dv-bfin_trace.c devices.h $(INCLUDE)
-dv-bfin_twi.o: dv-bfin_twi.c devices.h $(INCLUDE)
-dv-bfin_uart.o: dv-bfin_uart.c devices.h $(INCLUDE)
-dv-bfin_uart2.o: dv-bfin_uart2.c devices.h $(INCLUDE)
-dv-bfin_uart4.o: dv-bfin_uart4.c devices.h $(INCLUDE)
-dv-bfin_wdog.o: dv-bfin_wdog.c devices.h $(INCLUDE)
-dv-bfin_wp.o: dv-bfin_wp.c devices.h $(INCLUDE)
-dv-eth_phy.o: devices.h $(INCLUDE)
+interp.o: targ-vals.h
diff --git a/sim/common/Make-common.in b/sim/common/Make-common.in
index 42e3192..b6d9573 100644
--- a/sim/common/Make-common.in
+++ b/sim/common/Make-common.in
@@ -35,7 +35,7 @@
## COMMON_PRE_CONFIG_FRAG
-VPATH = @srcdir@
+VPATH = @srcdir@:$(srccom)
srcdir = @srcdir@
srccom = $(srcdir)/../common
srcroot = $(srcdir)/../..
@@ -109,7 +109,17 @@ AR_FLAGS = rc
RANLIB = @RANLIB@
MAKEINFO = makeinfo
-DEP = $(srcroot)/mkdep
+# Dependency tracking information.
+DEPMODE = @CCDEPMODE@
+DEPDIR = @DEPDIR@
+depcomp = $(SHELL) $(srcdir)/../depcomp
+
+# Note that these are overridden by GNU make-specific code below if
+# GNU make is used. The overrides implement dependency tracking.
+COMPILE.pre = $(CC)
+COMPILE.post = -c -o $@
+COMPILE = $(COMPILE.pre) $(ALL_CFLAGS) $(COMPILE.post)
+POSTCOMPILE = @true
# Each simulator's Makefile.in defines one or more of these variables
# to override our settings as necessary. There is no need to define these
@@ -272,19 +282,13 @@ run$(EXEEXT): $(SIM_RUN_OBJS) libsim.a $(LIBDEPS)
$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o run$(EXEEXT) \
$(SIM_RUN_OBJS) libsim.a $(EXTRA_LIBS)
-run.o: $(srccom)/run.c config.h tconfig.h $(remote_sim_h) $(callback_h)
- $(CC) -c $(srccom)/run.c $(ALL_CFLAGS)
-
# FIXME: Ideally, callback.o and friends live in a library outside of
# both the gdb and simulator source trees (e.g. devo/remote. Not
# devo/libremote because this directory would contain more than just
# a library).
-callback.o: $(srccom)/callback.c config.h tconfig.h $(callback_h) targ-vals.h
- $(CC) -c $(srccom)/callback.c $(ALL_CFLAGS)
-
-syscall.o: $(srccom)/syscall.c config.h tconfig.h $(callback_h) targ-vals.h
- $(CC) -c $(srccom)/syscall.c $(ALL_CFLAGS)
+callback.o: targ-vals.h
+syscall.o: targ-vals.h
targ-map.o: targ-map.c targ-vals.h
@@ -409,127 +413,68 @@ hw_main_headers = \
$(hw-ports_h) \
$(hw-properties_h) \
-# FIXME: If this complicated way of building .o files from ../common is
-# necessary, the reason should be documented here.
+#
+# Dependency tracking. Most of this is conditional on GNU Make being
+# found by configure; if GNU Make is not found, we fall back to a
+# simpler scheme.
+#
+
+@GMAKE_TRUE@ifeq ($(DEPMODE),depmode=gcc3)
+# Note that we put the dependencies into a .Tpo file, then move them
+# into place if the compile succeeds. We need this because gcc does
+# not atomically write the dependency output file.
+@GMAKE_TRUE@override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \
+@GMAKE_TRUE@ -MF $(DEPDIR)/$(basename $(@F)).Tpo
+@GMAKE_TRUE@override POSTCOMPILE = @mv $(DEPDIR)/$(basename $(@F)).Tpo \
+@GMAKE_TRUE@ $(DEPDIR)/$(basename $(@F)).Po
+@GMAKE_TRUE@else
+@GMAKE_TRUE@override COMPILE.pre = source='$<' object='$@' libtool=no \
+@GMAKE_TRUE@ DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) $(CC)
+# depcomp handles atomicity for us, so we don't need a postcompile
+# step.
+@GMAKE_TRUE@override POSTCOMPILE =
+@GMAKE_TRUE@endif
BUILT_SRC_FROM_COMMON= \
sim-inline.c
-sim-abort.o: $(srccom)/sim-abort.c \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-abort.c $(ALL_CFLAGS)
-
-sim-arange.o: $(srccom)/sim-arange.c $(sim-arange_h) $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-arange.c $(ALL_CFLAGS)
-
-sim-bits.o: $(srccom)/sim-bits.c $(sim-bits_h) $(sim-n-bits_h) \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-bits.c $(ALL_CFLAGS)
-
-sim-command.o: $(srccom)/sim-command.c $(sim_main_headers)
- $(CC) -c $(srccom)/sim-command.c $(ALL_CFLAGS)
-
-sim-config.o: $(srccom)/sim-config.c $(sim-config_h) sim-main.h \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-config.c $(ALL_CFLAGS)
-
-sim-core.o: $(srccom)/sim-core.c $(sim_main_headers) \
- $(sim-core_h) $(sim-n-core_h)
- $(CC) -c $(srccom)/sim-core.c $(ALL_CFLAGS)
-
-sim-cpu.o: $(srccom)/sim-cpu.c $(sim_main_headers)
- $(CC) -c $(srccom)/sim-cpu.c $(ALL_CFLAGS)
-
-sim-endian.o: $(srccom)/sim-endian.c $(sim-endian_h) $(sim-n-endian_h)
- $(CC) -c $(srccom)/sim-endian.c $(ALL_CFLAGS)
-
-sim-engine.o: $(srccom)/sim-engine.c $(sim_main_headers) $(sim-engine_h)
- $(CC) -c $(srccom)/sim-engine.c $(ALL_CFLAGS)
-
-sim-events.o: $(srccom)/sim-events.c $(sim-events_h) sim-main.h \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-events.c $(ALL_CFLAGS)
-
-sim-fpu.o: $(srccom)/sim-fpu.c $(sim-fpu_h) \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-fpu.c $(ALL_CFLAGS)
-
-sim-hload.o: $(srccom)/sim-hload.c $(sim-assert_h) $(remote_sim_h) \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-hload.c $(ALL_CFLAGS)
-
-sim-hrw.o: $(srccom)/sim-hrw.c $(sim-assert_h) $(sim_core_h) $(remote_sim_h) \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-hrw.c $(ALL_CFLAGS)
-
-sim-hw.o: $(srccom)/sim-hw.c $(sim_main_headers)
- $(CC) -c $(srccom)/sim-hw.c $(ALL_CFLAGS)
-
-sim-info.o: $(srccom)/sim-info.c $(sim-assert_h) $(remote_sim_h) \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-info.c $(ALL_CFLAGS)
-
sim-inline.c: $(srccom)/sim-inline.c
rm -f $@ tmp-$@
echo "# 1 \"$(srccom)/$@\"" > tmp-$@
cat $(srccom)/$@ >> tmp-$@
$(SHELL) $(srcdir)/../../move-if-change tmp-$@ $@
-sim-io.o: $(srccom)/sim-io.c $(sim_main_headers) $(sim-io_h) $(remote_sim_h) \
- targ-vals.h
- $(CC) -c $(srccom)/sim-io.c $(ALL_CFLAGS)
-
-sim-memopt.o: $(srccom)/sim-memopt.c $(sim_main_headers) \
- $(sim-io_h)
- $(CC) -c $(srccom)/sim-memopt.c $(ALL_CFLAGS)
-
-sim-module.o: $(srccom)/sim-module.c $(sim_main_headers) \
- $(sim-io_h)
- $(CC) -c $(srccom)/sim-module.c $(ALL_CFLAGS)
-
-sim-options.o: $(srccom)/sim-options.c $(sim_main_headers) \
- $(sim-options_h) $(sim-io_h)
- $(CC) -c $(srccom)/sim-options.c $(ALL_CFLAGS)
-
-sim-reason.o: $(srccom)/sim-reason.c $(sim_main_headers) $(remote_sim_h)
- $(CC) -c $(srccom)/sim-reason.c $(ALL_CFLAGS)
-
-sim-reg.o: $(srccom)/sim-reg.c $(sim_main_headers) $(remote_sim_h)
- $(CC) -c $(srccom)/sim-reg.c $(ALL_CFLAGS)
-
-sim-resume.o: $(srccom)/sim-resume.c $(sim_main_headers) $(remote_sim_h)
- $(CC) -c $(srccom)/sim-resume.c $(ALL_CFLAGS)
-
-sim-run.o: $(srccom)/sim-run.c $(sim_main_headers)
- $(CC) -c $(srccom)/sim-run.c $(ALL_CFLAGS)
-
-sim-signal.o: $(srccom)/sim-signal.c $(sim_main_headers) $(sim-signal_h)
- $(CC) -c $(srccom)/sim-signal.c $(ALL_CFLAGS)
-
-sim-stop.o: $(srccom)/sim-stop.c $(sim_main_headers)
- $(CC) -c $(srccom)/sim-stop.c $(ALL_CFLAGS)
-
-sim-trace.o: $(srccom)/sim-trace.c $(sim_main_headers) \
- $(sim-options_h) $(sim-io_h)
- $(CC) -c $(srccom)/sim-trace.c $(ALL_CFLAGS)
-
-sim-profile.o: $(srccom)/sim-profile.c $(sim_main_headers) \
- $(sim-options_h) $(sim-io_h)
- $(CC) -c $(srccom)/sim-profile.c $(ALL_CFLAGS)
-
-sim-model.o: $(srccom)/sim-model.c $(sim_main_headers) \
- $(sim-io_h)
- $(CC) -c $(srccom)/sim-model.c $(ALL_CFLAGS)
-
-sim-utils.o: $(srccom)/sim-utils.c $(sim_main_headers)
- $(CC) -c $(srccom)/sim-utils.c $(ALL_CFLAGS)
-
-sim-watch.o: $(srccom)/sim-watch.c $(sim_main_headers)
- $(CC) -c $(srccom)/sim-watch.c $(ALL_CFLAGS)
-
-sim-load.o: $(srccom)/sim-load.c $(callback_h) $(sim-basics_h) $(remote_sim_h)
- $(CC) -c $(srccom)/sim-load.c $(ALL_CFLAGS)
-
+sim-abort.o \
+sim-arange.o \
+sim-bits.o \
+sim-command.o \
+sim-config.o \
+sim-core.o \
+sim-cpu.o \
+sim-engine.o \
+sim-events.o \
+sim-fpu.o \
+sim-hload.o \
+sim-hw.o \
+sim-hrw.o \
+sim-info.o \
+sim-io.o \
+sim-memopt.o \
+sim-module.o \
+sim-options.o \
+sim-reason.o \
+sim-reg.o \
+sim-resume.o \
+sim-run.o \
+sim-signal.o \
+sim-stop.o \
+sim-trace.o \
+sim-profile.o \
+sim-model.o \
+sim-utils.o \
+sim-watch.o \
+sim-load.o: $(SIM_EXTRA_DEPS)
+sim-io.o: targ-vals.h
# FIXME This is one very simple-minded way of generating the file hw-config.h
hw-config.h: Makefile.in $(srccom)/Make-common.in config.status Makefile
@@ -546,58 +491,21 @@ hw-config.h: Makefile.in $(srccom)/Make-common.in config.status Makefile
echo "};" >> tmp-hw.h
mv tmp-hw.h hw-config.h
-hw-alloc.o: $(srccom)/hw-alloc.c $(hw_main_headers)
- $(CC) -c $(srccom)/hw-alloc.c $(ALL_CFLAGS)
-
-hw-base.o: $(srccom)/hw-base.c $(hw_main_headers) hw-config.h
- $(CC) -c $(srccom)/hw-base.c $(ALL_CFLAGS)
-
-hw-device.o: $(srccom)/hw-device.c $(hw_main_headers)
- $(CC) -c $(srccom)/hw-device.c $(ALL_CFLAGS)
-
-hw-events.o: $(srccom)/hw-events.c $(hw_main_headers) $(sim_main_headers)
- $(CC) -c $(srccom)/hw-events.c $(ALL_CFLAGS)
+hw-base.o: hw-config.h
test-hw-events: $(srccom)/hw-events.c libsim.a
$(CC) $(ALL_CFLAGS) -DMAIN -o test-hw-events$(EXEEXT) \
$(srccom)/hw-events.c libsim.a $(EXTRA_LIBS)
-hw-instances.o: $(srccom)/hw-instances.c $(hw_main_headers)
- $(CC) -c $(srccom)/hw-instances.c $(ALL_CFLAGS)
-
-hw-handles.o: $(srccom)/hw-handles.c $(hw_main_headers)
- $(CC) -c $(srccom)/hw-handles.c $(ALL_CFLAGS)
-
-hw-ports.o: $(srccom)/hw-ports.c $(hw_main_headers)
- $(CC) -c $(srccom)/hw-ports.c $(ALL_CFLAGS)
-
-hw-properties.o: $(srccom)/hw-properties.c $(hw_main_headers)
- $(CC) -c $(srccom)/hw-properties.c $(ALL_CFLAGS)
-
-hw-tree.o: $(srccom)/hw-tree.c $(hw_main_headers) $(hw-tree_h)
- $(CC) -c $(srccom)/hw-tree.c $(ALL_CFLAGS)
-
# Devices.
-dv-cfi.o: $(srccom)/dv-cfi.c $(hw_main_headers) $(sim_main_headers)
- $(CC) -c $(srccom)/dv-cfi.c $(ALL_CFLAGS)
-
-dv-core.o: $(srccom)/dv-core.c $(hw_main_headers) $(sim_main_headers)
- $(CC) -c $(srccom)/dv-core.c $(ALL_CFLAGS)
-
-dv-glue.o: $(srccom)/dv-glue.c $(hw_main_headers) $(sim_main_headers)
- $(CC) -c $(srccom)/dv-glue.c $(ALL_CFLAGS)
-
-dv-pal.o: $(srccom)/dv-pal.c $(hw_main_headers) $(sim_main_headers)
- $(CC) -c $(srccom)/dv-pal.c $(ALL_CFLAGS)
-
-dv-sockser.o: $(srccom)/dv-sockser.h $(sim_main_headers)
- $(CC) -c $(srccom)/dv-sockser.c $(ALL_CFLAGS)
-
+dv-cfi.o \
+dv-core.o \
+dv-glue.o \
+dv-pal.o \
+dv-sockser.o: $(SIM_EXTRA_DEPS)
-nrun.o: $(srccom)/nrun.c config.h tconfig.h $(remote_sim_h) $(callback_h) \
- $(sim_main_headers)
- $(CC) -c $(srccom)/nrun.c $(ALL_CFLAGS)
+nrun.o: $(SIM_EXTRA_DEPS)
# CGEN support.
@@ -607,29 +515,6 @@ CGEN_MAIN_CPU_DEPS = \
$(srccom)/cgen-ops.h \
$(srccom)/cgen-mem.h
-cgen-run.o: $(srccom)/cgen-run.c $(sim_main_headers)
- $(CC) -c $(srccom)/cgen-run.c $(ALL_CFLAGS)
-
-cgen-scache.o: $(srccom)/cgen-scache.c $(sim_main_headers)
- $(CC) -c $(srccom)/cgen-scache.c $(ALL_CFLAGS)
-
-cgen-trace.o: $(srccom)/cgen-trace.c $(sim_main_headers)
- $(CC) -c $(srccom)/cgen-trace.c $(ALL_CFLAGS)
-
-cgen-fpu.o: $(srccom)/cgen-fpu.c $(sim_main_headers) $(sim-fpu_h)
- $(CC) -c $(srccom)/cgen-fpu.c $(ALL_CFLAGS)
-
-cgen-accfp.o: $(srccom)/cgen-accfp.c $(sim_main_headers) $(sim-fpu_h)
- $(CC) -c $(srccom)/cgen-accfp.c $(ALL_CFLAGS)
-
-cgen-utils.o: $(srccom)/cgen-utils.c $(sim_main_headers) \
- $(srccom)/cgen-mem.h $(srccom)/cgen-ops.h $(srccom)/cgen-engine.h
- $(CC) -c $(srccom)/cgen-utils.c $(ALL_CFLAGS)
-
-cgen-par.o: $(srccom)/cgen-par.c $(sim_main_headers) \
- $(srccom)/cgen-mem.h $(srccom)/cgen-par.h
- $(CC) -c $(srccom)/cgen-par.c $(ALL_CFLAGS)
-
# Support targets.
install: install-common $(SIM_EXTRA_INSTALL)
@@ -680,7 +565,8 @@ distclean mostlyclean maintainer-clean realclean: clean $(SIM_EXTRA_DISTCLEAN)
rm -f targ-vals.def
.c.o:
- $(CC) -c $(ALL_CFLAGS) $<
+ $(COMPILE) $<
+ $(POSTCOMPILE)
# Dummy target to force execution of dependent targets.
force:
diff --git a/sim/common/acinclude.m4 b/sim/common/acinclude.m4
index 11398f5..70feca4 100644
--- a/sim/common/acinclude.m4
+++ b/sim/common/acinclude.m4
@@ -21,6 +21,7 @@
# Include global overrides and fixes for Autoconf.
m4_include(../../config/override.m4)
sinclude([../../config/zlib.m4])
+sinclude([../../config/depstand.m4])
AC_DEFUN([SIM_AC_COMMON],
[
@@ -45,6 +46,20 @@ AR=${AR-ar}
AC_SUBST(AR)
AC_PROG_RANLIB
+# Dependency checking.
+ZW_CREATE_DEPDIR
+ZW_PROG_COMPILER_DEPENDENCIES([CC])
+
+# Check for the 'make' the user wants to use.
+AC_CHECK_PROGS(MAKE, make)
+MAKE_IS_GNU=
+case "`$MAKE --version 2>&1 | sed 1q`" in
+ *GNU*)
+ MAKE_IS_GNU=yes
+ ;;
+esac
+AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
+
dnl We don't use gettext, but bfd does. So we do the appropriate checks
dnl to see if there are intl libraries we should link against.
ALL_LINGUAS=
--
1.7.6
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v2] sim: generate build dependencies on the fly
2011-07-12 5:18 [PATCH] sim: generate build dependencies on the fly Mike Frysinger
@ 2011-07-13 8:26 ` Mike Frysinger
2011-09-29 2:14 ` Mike Frysinger
2011-12-03 18:24 ` [PATCH] " Mike Frysinger
1 sibling, 1 reply; 7+ messages in thread
From: Mike Frysinger @ 2011-07-13 8:26 UTC (permalink / raw)
To: gdb-patches; +Cc: toolchain-devel
Lift the code that GDB is using to generate dependencies on the fly and
port it over to the sim. Now people shouldn't have to manually maintain
these in their Makefile's now.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
sim/bfin/:
2011-07-11 Mike Frysinger <vapier@gentoo.org>
* Makefile.in: Delete all dependency rules.
* aclocal.m4, configure: Regenerate.
sim/arm/:
sim/avr/:
sim/cr16/:
sim/cris/:
sim/d10v/:
sim/erc32/:
sim/frv/:
sim/h8300/:
sim/igen/:
sim/iq2000/:
sim/lm32/:
sim/m32c/:
sim/m32r/:
sim/m68hc11/:
sim/mcore/:
sim/microblaze/:
sim/mips/:
sim/mn10300/:
sim/moxie/:
sim/ppc/:
sim/rx/:
sim/sh/:
sim/sh64/:
sim/v850/:
2011-07-11 Mike Frysinger <vapier@gentoo.org>
* aclocal.m4: New file.
* configure: Regenerate.
sim/common/:
2011-07-11 Mike Frysinger <vapier@gentoo.org>
* Make-common.in (VPATH): Add $(srccom).
(DEP): Delete.
(DEPMODE, DEPDIR, depcomp, COMPILE.pre, COMPILE.post, COMPILE,
POSTCOMPILE): New variables.
(.c.o): Replace recipe with call to $(COMPILE) and $(POSTCOMPILE).
Include dependency files, when using GNU Make. Delete all
dependency-only rules.
* aclocal.m4: Include ../../config/depstand.m4. Call
ZW_CREATE_DEPDIR and ZW_PROG_COMPILER_DEPENDENCIES.
(MAKE, GMAKE): New substs.
---
v2
- delete more rules and import more gmake code from gdb to cover them
- fix depcomp def
sim/bfin/Makefile.in | 43 --------
sim/common/Make-common.in | 254 ++++++++++-----------------------------------
sim/common/acinclude.m4 | 15 +++
3 files changed, 70 insertions(+), 242 deletions(-)
diff --git a/sim/bfin/Makefile.in b/sim/bfin/Makefile.in
index 67e73c0..7fae4b4 100644
--- a/sim/bfin/Makefile.in
+++ b/sim/bfin/Makefile.in
@@ -64,46 +64,3 @@ $(srcdir)/linux-fixed-code.h: $(srcdir)/linux-fixed-code.s Makefile.in
) > $@.tmp
rm -f linux-fixed-code.o
mv $@.tmp $@
-
-interp.o: interp.c targ-vals.h linux-targ-map.h linux-fixed-code.h devices.h $(INCLUDE)
-bfin-sim.o: bfin-sim.c $(INCLUDE)
-gui.o: gui.c $(INCLUDE)
-machs.o: machs.c $(INCLUDE)
-dv-bfin_cec.o: dv-bfin_cec.c devices.h $(INCLUDE)
-dv-bfin_cgu.o: dv-bfin_cgu.c devices.h $(INCLUDE)
-dv-bfin_ctimer.o: dv-bfin_ctimer.c devices.h $(INCLUDE)
-dv-bfin_dde.o: dv-bfin_dde.c devices.h $(INCLUDE)
-dv-bfin_dma.o: dv-bfin_dma.c devices.h $(INCLUDE)
-dv-bfin_dma_pmap.o: dv-bfin_dma_pmap.c devices.h $(INCLUDE)
-dv-bfin_ebiu_amc.o: dv-bfin_ebiu_amc.c devices.h $(INCLUDE)
-dv-bfin_ebiu_ddrc.o: dv-bfin_ebiu_ddrc.c devices.h $(INCLUDE)
-dv-bfin_ebiu_sdc.o: dv-bfin_ebiu_sdc.c devices.h $(INCLUDE)
-dv-bfin_efs.o: dv-bfin_efs.c devices.h $(INCLUDE)
-dv-bfin_emac.o: dv-bfin_emac.c devices.h $(INCLUDE)
-dv-bfin_eppi.o: dv-bfin_eppi.c devices.h $(INCLUDE)
-dv-bfin_evt.o: dv-bfin_evt.c devices.h $(INCLUDE)
-dv-bfin_gpio.o: dv-bfin_gpio.c devices.h $(INCLUDE)
-dv-bfin_gpio2.o: dv-bfin_gpio2.c devices.h $(INCLUDE)
-dv-bfin_gptimer.o: dv-bfin_gptimer.c devices.h $(INCLUDE)
-dv-bfin_jtag.o: dv-bfin_jtag.c devices.h $(INCLUDE)
-dv-bfin_mmu.o: dv-bfin_mmu.c devices.h $(INCLUDE)
-dv-bfin_nfc.o: dv-bfin_nfc.c devices.h $(INCLUDE)
-dv-bfin_otp.o: dv-bfin_otp.c devices.h $(INCLUDE)
-dv-bfin_pfmon.o: dv-bfin_pfmon.c devices.h $(INCLUDE)
-dv-bfin_pint.o: dv-bfin_pint.c devices.h $(INCLUDE)
-dv-bfin_pll.o: dv-bfin_pll.c devices.h $(INCLUDE)
-dv-bfin_ppi.o: dv-bfin_ppi.c devices.h $(INCLUDE)
-dv-bfin_rtc.o: dv-bfin_rtc.c devices.h $(INCLUDE)
-dv-bfin_sec.o: dv-bfin_sec.c devices.h $(INCLUDE)
-dv-bfin_sic.o: dv-bfin_sic.c devices.h $(INCLUDE)
-dv-bfin_smc.o: dv-bfin_smc.c devices.h $(INCLUDE)
-dv-bfin_spi.o: dv-bfin_spi.c devices.h $(INCLUDE)
-dv-bfin_spu.o: dv-bfin_spu.c devices.h $(INCLUDE)
-dv-bfin_trace.o: dv-bfin_trace.c devices.h $(INCLUDE)
-dv-bfin_twi.o: dv-bfin_twi.c devices.h $(INCLUDE)
-dv-bfin_uart.o: dv-bfin_uart.c devices.h $(INCLUDE)
-dv-bfin_uart2.o: dv-bfin_uart2.c devices.h $(INCLUDE)
-dv-bfin_uart4.o: dv-bfin_uart4.c devices.h $(INCLUDE)
-dv-bfin_wdog.o: dv-bfin_wdog.c devices.h $(INCLUDE)
-dv-bfin_wp.o: dv-bfin_wp.c devices.h $(INCLUDE)
-dv-eth_phy.o: devices.h $(INCLUDE)
diff --git a/sim/common/Make-common.in b/sim/common/Make-common.in
index 42e3192..c12d155 100644
--- a/sim/common/Make-common.in
+++ b/sim/common/Make-common.in
@@ -35,7 +35,7 @@
## COMMON_PRE_CONFIG_FRAG
-VPATH = @srcdir@
+VPATH = @srcdir@:$(srccom)
srcdir = @srcdir@
srccom = $(srcdir)/../common
srcroot = $(srcdir)/../..
@@ -109,7 +109,17 @@ AR_FLAGS = rc
RANLIB = @RANLIB@
MAKEINFO = makeinfo
-DEP = $(srcroot)/mkdep
+# Dependency tracking information.
+DEPMODE = @CCDEPMODE@
+DEPDIR = @DEPDIR@
+depcomp = $(SHELL) $(srcroot)/depcomp
+
+# Note that these are overridden by GNU make-specific code below if
+# GNU make is used. The overrides implement dependency tracking.
+COMPILE.pre = $(CC)
+COMPILE.post = -c -o $@
+COMPILE = $(COMPILE.pre) $(ALL_CFLAGS) $(COMPILE.post)
+POSTCOMPILE = @true
# Each simulator's Makefile.in defines one or more of these variables
# to override our settings as necessary. There is no need to define these
@@ -272,22 +282,11 @@ run$(EXEEXT): $(SIM_RUN_OBJS) libsim.a $(LIBDEPS)
$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o run$(EXEEXT) \
$(SIM_RUN_OBJS) libsim.a $(EXTRA_LIBS)
-run.o: $(srccom)/run.c config.h tconfig.h $(remote_sim_h) $(callback_h)
- $(CC) -c $(srccom)/run.c $(ALL_CFLAGS)
-
# FIXME: Ideally, callback.o and friends live in a library outside of
# both the gdb and simulator source trees (e.g. devo/remote. Not
# devo/libremote because this directory would contain more than just
# a library).
-callback.o: $(srccom)/callback.c config.h tconfig.h $(callback_h) targ-vals.h
- $(CC) -c $(srccom)/callback.c $(ALL_CFLAGS)
-
-syscall.o: $(srccom)/syscall.c config.h tconfig.h $(callback_h) targ-vals.h
- $(CC) -c $(srccom)/syscall.c $(ALL_CFLAGS)
-
-targ-map.o: targ-map.c targ-vals.h
-
gentmap: Makefile $(srccom)/gentmap.c targ-vals.def
$(CC_FOR_BUILD) $(srccom)/gentmap.c -o gentmap $(BUILD_CFLAGS) $(NL_TARGET)
@@ -305,7 +304,6 @@ version.c: Makefile ../../gdb/version.in
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)
#
@@ -409,128 +407,57 @@ hw_main_headers = \
$(hw-ports_h) \
$(hw-properties_h) \
-# FIXME: If this complicated way of building .o files from ../common is
-# necessary, the reason should be documented here.
+#
+# Dependency tracking. Most of this is conditional on GNU Make being
+# found by configure; if GNU Make is not found, we fall back to a
+# simpler scheme.
+#
+
+@GMAKE_TRUE@ifeq ($(DEPMODE),depmode=gcc3)
+# Note that we put the dependencies into a .Tpo file, then move them
+# into place if the compile succeeds. We need this because gcc does
+# not atomically write the dependency output file.
+@GMAKE_TRUE@override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \
+@GMAKE_TRUE@ -MF $(DEPDIR)/$(basename $(@F)).Tpo
+@GMAKE_TRUE@override POSTCOMPILE = @mv $(DEPDIR)/$(basename $(@F)).Tpo \
+@GMAKE_TRUE@ $(DEPDIR)/$(basename $(@F)).Po
+@GMAKE_TRUE@else
+@GMAKE_TRUE@override COMPILE.pre = source='$<' object='$@' libtool=no \
+@GMAKE_TRUE@ DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) $(CC)
+# depcomp handles atomicity for us, so we don't need a postcompile
+# step.
+@GMAKE_TRUE@override POSTCOMPILE =
+@GMAKE_TRUE@endif
+
+all_object_files = $(LIB_OBJS) $(SIM_RUN_OBJS)
+generated_files = \
+ $(SIM_EXTRA_DEPS) \
+ hw-config.h \
+ targ-map.c \
+ targ-vals.h \
+ version.c
+
+# Ensure that generated files are created early. Use order-only
+# dependencies if available. They require GNU make 3.80 or newer,
+# and the .VARIABLES variable was introduced at the same time.
+@GMAKE_TRUE@ifdef .VARIABLES
+@GMAKE_TRUE@$(all_object_files): | $(generated_files)
+@GMAKE_TRUE@else
+$(all_object_files) : $(generated_files)
+@GMAKE_TRUE@endif
+
+# Dependencies.
+@GMAKE_TRUE@-include $(patsubst %.o, $(DEPDIR)/%.Po, $(all_object_files))
BUILT_SRC_FROM_COMMON= \
sim-inline.c
-sim-abort.o: $(srccom)/sim-abort.c \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-abort.c $(ALL_CFLAGS)
-
-sim-arange.o: $(srccom)/sim-arange.c $(sim-arange_h) $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-arange.c $(ALL_CFLAGS)
-
-sim-bits.o: $(srccom)/sim-bits.c $(sim-bits_h) $(sim-n-bits_h) \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-bits.c $(ALL_CFLAGS)
-
-sim-command.o: $(srccom)/sim-command.c $(sim_main_headers)
- $(CC) -c $(srccom)/sim-command.c $(ALL_CFLAGS)
-
-sim-config.o: $(srccom)/sim-config.c $(sim-config_h) sim-main.h \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-config.c $(ALL_CFLAGS)
-
-sim-core.o: $(srccom)/sim-core.c $(sim_main_headers) \
- $(sim-core_h) $(sim-n-core_h)
- $(CC) -c $(srccom)/sim-core.c $(ALL_CFLAGS)
-
-sim-cpu.o: $(srccom)/sim-cpu.c $(sim_main_headers)
- $(CC) -c $(srccom)/sim-cpu.c $(ALL_CFLAGS)
-
-sim-endian.o: $(srccom)/sim-endian.c $(sim-endian_h) $(sim-n-endian_h)
- $(CC) -c $(srccom)/sim-endian.c $(ALL_CFLAGS)
-
-sim-engine.o: $(srccom)/sim-engine.c $(sim_main_headers) $(sim-engine_h)
- $(CC) -c $(srccom)/sim-engine.c $(ALL_CFLAGS)
-
-sim-events.o: $(srccom)/sim-events.c $(sim-events_h) sim-main.h \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-events.c $(ALL_CFLAGS)
-
-sim-fpu.o: $(srccom)/sim-fpu.c $(sim-fpu_h) \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-fpu.c $(ALL_CFLAGS)
-
-sim-hload.o: $(srccom)/sim-hload.c $(sim-assert_h) $(remote_sim_h) \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-hload.c $(ALL_CFLAGS)
-
-sim-hrw.o: $(srccom)/sim-hrw.c $(sim-assert_h) $(sim_core_h) $(remote_sim_h) \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-hrw.c $(ALL_CFLAGS)
-
-sim-hw.o: $(srccom)/sim-hw.c $(sim_main_headers)
- $(CC) -c $(srccom)/sim-hw.c $(ALL_CFLAGS)
-
-sim-info.o: $(srccom)/sim-info.c $(sim-assert_h) $(remote_sim_h) \
- $(SIM_EXTRA_DEPS)
- $(CC) -c $(srccom)/sim-info.c $(ALL_CFLAGS)
-
sim-inline.c: $(srccom)/sim-inline.c
rm -f $@ tmp-$@
echo "# 1 \"$(srccom)/$@\"" > tmp-$@
cat $(srccom)/$@ >> tmp-$@
$(SHELL) $(srcdir)/../../move-if-change tmp-$@ $@
-sim-io.o: $(srccom)/sim-io.c $(sim_main_headers) $(sim-io_h) $(remote_sim_h) \
- targ-vals.h
- $(CC) -c $(srccom)/sim-io.c $(ALL_CFLAGS)
-
-sim-memopt.o: $(srccom)/sim-memopt.c $(sim_main_headers) \
- $(sim-io_h)
- $(CC) -c $(srccom)/sim-memopt.c $(ALL_CFLAGS)
-
-sim-module.o: $(srccom)/sim-module.c $(sim_main_headers) \
- $(sim-io_h)
- $(CC) -c $(srccom)/sim-module.c $(ALL_CFLAGS)
-
-sim-options.o: $(srccom)/sim-options.c $(sim_main_headers) \
- $(sim-options_h) $(sim-io_h)
- $(CC) -c $(srccom)/sim-options.c $(ALL_CFLAGS)
-
-sim-reason.o: $(srccom)/sim-reason.c $(sim_main_headers) $(remote_sim_h)
- $(CC) -c $(srccom)/sim-reason.c $(ALL_CFLAGS)
-
-sim-reg.o: $(srccom)/sim-reg.c $(sim_main_headers) $(remote_sim_h)
- $(CC) -c $(srccom)/sim-reg.c $(ALL_CFLAGS)
-
-sim-resume.o: $(srccom)/sim-resume.c $(sim_main_headers) $(remote_sim_h)
- $(CC) -c $(srccom)/sim-resume.c $(ALL_CFLAGS)
-
-sim-run.o: $(srccom)/sim-run.c $(sim_main_headers)
- $(CC) -c $(srccom)/sim-run.c $(ALL_CFLAGS)
-
-sim-signal.o: $(srccom)/sim-signal.c $(sim_main_headers) $(sim-signal_h)
- $(CC) -c $(srccom)/sim-signal.c $(ALL_CFLAGS)
-
-sim-stop.o: $(srccom)/sim-stop.c $(sim_main_headers)
- $(CC) -c $(srccom)/sim-stop.c $(ALL_CFLAGS)
-
-sim-trace.o: $(srccom)/sim-trace.c $(sim_main_headers) \
- $(sim-options_h) $(sim-io_h)
- $(CC) -c $(srccom)/sim-trace.c $(ALL_CFLAGS)
-
-sim-profile.o: $(srccom)/sim-profile.c $(sim_main_headers) \
- $(sim-options_h) $(sim-io_h)
- $(CC) -c $(srccom)/sim-profile.c $(ALL_CFLAGS)
-
-sim-model.o: $(srccom)/sim-model.c $(sim_main_headers) \
- $(sim-io_h)
- $(CC) -c $(srccom)/sim-model.c $(ALL_CFLAGS)
-
-sim-utils.o: $(srccom)/sim-utils.c $(sim_main_headers)
- $(CC) -c $(srccom)/sim-utils.c $(ALL_CFLAGS)
-
-sim-watch.o: $(srccom)/sim-watch.c $(sim_main_headers)
- $(CC) -c $(srccom)/sim-watch.c $(ALL_CFLAGS)
-
-sim-load.o: $(srccom)/sim-load.c $(callback_h) $(sim-basics_h) $(remote_sim_h)
- $(CC) -c $(srccom)/sim-load.c $(ALL_CFLAGS)
-
-
# FIXME This is one very simple-minded way of generating the file hw-config.h
hw-config.h: Makefile.in $(srccom)/Make-common.in config.status Makefile
rm -f tmp-hw.h
@@ -546,59 +473,10 @@ hw-config.h: Makefile.in $(srccom)/Make-common.in config.status Makefile
echo "};" >> tmp-hw.h
mv tmp-hw.h hw-config.h
-hw-alloc.o: $(srccom)/hw-alloc.c $(hw_main_headers)
- $(CC) -c $(srccom)/hw-alloc.c $(ALL_CFLAGS)
-
-hw-base.o: $(srccom)/hw-base.c $(hw_main_headers) hw-config.h
- $(CC) -c $(srccom)/hw-base.c $(ALL_CFLAGS)
-
-hw-device.o: $(srccom)/hw-device.c $(hw_main_headers)
- $(CC) -c $(srccom)/hw-device.c $(ALL_CFLAGS)
-
-hw-events.o: $(srccom)/hw-events.c $(hw_main_headers) $(sim_main_headers)
- $(CC) -c $(srccom)/hw-events.c $(ALL_CFLAGS)
-
test-hw-events: $(srccom)/hw-events.c libsim.a
$(CC) $(ALL_CFLAGS) -DMAIN -o test-hw-events$(EXEEXT) \
$(srccom)/hw-events.c libsim.a $(EXTRA_LIBS)
-hw-instances.o: $(srccom)/hw-instances.c $(hw_main_headers)
- $(CC) -c $(srccom)/hw-instances.c $(ALL_CFLAGS)
-
-hw-handles.o: $(srccom)/hw-handles.c $(hw_main_headers)
- $(CC) -c $(srccom)/hw-handles.c $(ALL_CFLAGS)
-
-hw-ports.o: $(srccom)/hw-ports.c $(hw_main_headers)
- $(CC) -c $(srccom)/hw-ports.c $(ALL_CFLAGS)
-
-hw-properties.o: $(srccom)/hw-properties.c $(hw_main_headers)
- $(CC) -c $(srccom)/hw-properties.c $(ALL_CFLAGS)
-
-hw-tree.o: $(srccom)/hw-tree.c $(hw_main_headers) $(hw-tree_h)
- $(CC) -c $(srccom)/hw-tree.c $(ALL_CFLAGS)
-
-# Devices.
-
-dv-cfi.o: $(srccom)/dv-cfi.c $(hw_main_headers) $(sim_main_headers)
- $(CC) -c $(srccom)/dv-cfi.c $(ALL_CFLAGS)
-
-dv-core.o: $(srccom)/dv-core.c $(hw_main_headers) $(sim_main_headers)
- $(CC) -c $(srccom)/dv-core.c $(ALL_CFLAGS)
-
-dv-glue.o: $(srccom)/dv-glue.c $(hw_main_headers) $(sim_main_headers)
- $(CC) -c $(srccom)/dv-glue.c $(ALL_CFLAGS)
-
-dv-pal.o: $(srccom)/dv-pal.c $(hw_main_headers) $(sim_main_headers)
- $(CC) -c $(srccom)/dv-pal.c $(ALL_CFLAGS)
-
-dv-sockser.o: $(srccom)/dv-sockser.h $(sim_main_headers)
- $(CC) -c $(srccom)/dv-sockser.c $(ALL_CFLAGS)
-
-
-nrun.o: $(srccom)/nrun.c config.h tconfig.h $(remote_sim_h) $(callback_h) \
- $(sim_main_headers)
- $(CC) -c $(srccom)/nrun.c $(ALL_CFLAGS)
-
# CGEN support.
# For use in Makefile.in for cpu-specific files.
@@ -607,29 +485,6 @@ CGEN_MAIN_CPU_DEPS = \
$(srccom)/cgen-ops.h \
$(srccom)/cgen-mem.h
-cgen-run.o: $(srccom)/cgen-run.c $(sim_main_headers)
- $(CC) -c $(srccom)/cgen-run.c $(ALL_CFLAGS)
-
-cgen-scache.o: $(srccom)/cgen-scache.c $(sim_main_headers)
- $(CC) -c $(srccom)/cgen-scache.c $(ALL_CFLAGS)
-
-cgen-trace.o: $(srccom)/cgen-trace.c $(sim_main_headers)
- $(CC) -c $(srccom)/cgen-trace.c $(ALL_CFLAGS)
-
-cgen-fpu.o: $(srccom)/cgen-fpu.c $(sim_main_headers) $(sim-fpu_h)
- $(CC) -c $(srccom)/cgen-fpu.c $(ALL_CFLAGS)
-
-cgen-accfp.o: $(srccom)/cgen-accfp.c $(sim_main_headers) $(sim-fpu_h)
- $(CC) -c $(srccom)/cgen-accfp.c $(ALL_CFLAGS)
-
-cgen-utils.o: $(srccom)/cgen-utils.c $(sim_main_headers) \
- $(srccom)/cgen-mem.h $(srccom)/cgen-ops.h $(srccom)/cgen-engine.h
- $(CC) -c $(srccom)/cgen-utils.c $(ALL_CFLAGS)
-
-cgen-par.o: $(srccom)/cgen-par.c $(sim_main_headers) \
- $(srccom)/cgen-mem.h $(srccom)/cgen-par.h
- $(CC) -c $(srccom)/cgen-par.c $(ALL_CFLAGS)
-
# Support targets.
install: install-common $(SIM_EXTRA_INSTALL)
@@ -680,7 +535,8 @@ distclean mostlyclean maintainer-clean realclean: clean $(SIM_EXTRA_DISTCLEAN)
rm -f targ-vals.def
.c.o:
- $(CC) -c $(ALL_CFLAGS) $<
+ $(COMPILE) $<
+ $(POSTCOMPILE)
# Dummy target to force execution of dependent targets.
force:
diff --git a/sim/common/acinclude.m4 b/sim/common/acinclude.m4
index 11398f5..70feca4 100644
--- a/sim/common/acinclude.m4
+++ b/sim/common/acinclude.m4
@@ -21,6 +21,7 @@
# Include global overrides and fixes for Autoconf.
m4_include(../../config/override.m4)
sinclude([../../config/zlib.m4])
+sinclude([../../config/depstand.m4])
AC_DEFUN([SIM_AC_COMMON],
[
@@ -45,6 +46,20 @@ AR=${AR-ar}
AC_SUBST(AR)
AC_PROG_RANLIB
+# Dependency checking.
+ZW_CREATE_DEPDIR
+ZW_PROG_COMPILER_DEPENDENCIES([CC])
+
+# Check for the 'make' the user wants to use.
+AC_CHECK_PROGS(MAKE, make)
+MAKE_IS_GNU=
+case "`$MAKE --version 2>&1 | sed 1q`" in
+ *GNU*)
+ MAKE_IS_GNU=yes
+ ;;
+esac
+AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
+
dnl We don't use gettext, but bfd does. So we do the appropriate checks
dnl to see if there are intl libraries we should link against.
ALL_LINGUAS=
--
1.7.6
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] sim: generate build dependencies on the fly
2011-07-12 5:18 [PATCH] sim: generate build dependencies on the fly Mike Frysinger
2011-07-13 8:26 ` [PATCH v2] " Mike Frysinger
@ 2011-12-03 18:24 ` Mike Frysinger
1 sibling, 0 replies; 7+ messages in thread
From: Mike Frysinger @ 2011-12-03 18:24 UTC (permalink / raw)
To: gdb-patches; +Cc: toolchain-devel
[-- Attachment #1: Type: Text/Plain, Size: 394 bytes --]
On Monday 11 July 2011 22:02:32 Mike Frysinger wrote:
> Lift the code that GDB is using to generate dependencies on the fly and
> port it over to the sim. Now people shouldn't have to manually maintain
> these in their Makefile's (for the most part). Generated header files
> still need to be manually tracked.
i've committed this now (after also adding in sim/rl78 to my regen/tests)
-mike
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2011-12-03 18:24 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-12 5:18 [PATCH] sim: generate build dependencies on the fly Mike Frysinger
2011-07-13 8:26 ` [PATCH v2] " Mike Frysinger
2011-09-29 2:14 ` Mike Frysinger
2011-10-18 11:57 ` Mike Frysinger
2011-11-01 17:28 ` Mike Frysinger
2011-11-27 18:22 ` Mike Frysinger
2011-12-03 18:24 ` [PATCH] " Mike Frysinger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox