From: Mike Frysinger Date: Tue, 27 Dec 2022 04:20:46 +0000 (-0500) Subject: sim: build: add basic framework for compiling arch objects in top-level X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bc438b3e5931e7af87bf51b1365d9401cd69d519;p=binutils-gdb.git sim: build: add basic framework for compiling arch objects in top-level The code so far has been assuming that we only compile common/ objects. Now that we're ready to compile arch-specific objects, refactor some of the flags & checks a bit to support both. --- diff --git a/sim/Makefile.am b/sim/Makefile.am index e47244d7b8d..3c46925976f 100644 --- a/sim/Makefile.am +++ b/sim/Makefile.am @@ -41,15 +41,27 @@ BUILT_SOURCES = CLEANFILES = DISTCLEANFILES = MOSTLYCLEANFILES = core - -AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) +## We build some objects ourselves directly that Automake doesn't track, so +## make sure all objects in subdirs get cleaned up. +MOSTLYCLEANFILES += $(SIM_ENABLED_ARCHES:%=%/*.o) + +AM_CFLAGS = \ + $(WERROR_CFLAGS) \ + $(WARN_CFLAGS) \ + $(AM_CFLAGS_$(subst -,_,$(@D))) \ + $(AM_CFLAGS_$(subst -,_,$(@D)_$(@F))) AM_CPPFLAGS = \ $(INCGNU) \ + -I$(srcroot) \ -I$(srcroot)/include \ -I../bfd \ -I.. \ + -I$(@D) \ + -I$(srcdir)/$(@D) \ $(SIM_HW_CFLAGS) \ - $(SIM_INLINE) + $(SIM_INLINE) \ + $(AM_CPPFLAGS_$(subst -,_,$(@D))) \ + $(AM_CPPFLAGS_$(subst -,_,$(@D)_$(@F))) AM_CPPFLAGS_FOR_BUILD = \ -I$(srcroot)/include \ diff --git a/sim/Makefile.in b/sim/Makefile.in index 839e6e17e27..6f2042a3523 100644 --- a/sim/Makefile.in +++ b/sim/Makefile.in @@ -1789,7 +1789,8 @@ CLEANFILES = common/version.c common/version.c-stamp \ testsuite/common/bits32m31.c testsuite/common/bits64m0.c \ testsuite/common/bits64m63.c DISTCLEANFILES = $(am__append_100) -MOSTLYCLEANFILES = core $(common_HW_CONFIG_H_TARGETS) $(patsubst \ +MOSTLYCLEANFILES = core $(SIM_ENABLED_ARCHES:%=%/*.o) \ + $(common_HW_CONFIG_H_TARGETS) $(patsubst \ %,%/stamp-hw,$(SIM_ENABLED_ARCHES)) \ $(common_GEN_MODULES_C_TARGETS) $(patsubst \ %,%/stamp-modules,$(SIM_ENABLED_ARCHES)) $(am__append_7) \ @@ -1799,10 +1800,16 @@ MOSTLYCLEANFILES = core $(common_HW_CONFIG_H_TARGETS) $(patsubst \ $(am__append_71) $(am__append_77) $(am__append_83) \ $(am__append_99) $(am__append_106) $(am__append_115) \ $(am__append_130) $(am__append_135) -AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) -AM_CPPFLAGS = $(INCGNU) -I$(srcroot)/include -I../bfd -I.. \ - $(SIM_HW_CFLAGS) $(SIM_INLINE) -I$(srcdir)/common \ - -DSIM_COMMON_BUILD +AM_CFLAGS = \ + $(WERROR_CFLAGS) \ + $(WARN_CFLAGS) \ + $(AM_CFLAGS_$(subst -,_,$(@D))) \ + $(AM_CFLAGS_$(subst -,_,$(@D)_$(@F))) + +AM_CPPFLAGS = $(INCGNU) -I$(srcroot) -I$(srcroot)/include -I../bfd \ + -I.. -I$(@D) -I$(srcdir)/$(@D) $(SIM_HW_CFLAGS) $(SIM_INLINE) \ + $(AM_CPPFLAGS_$(subst -,_,$(@D))) $(AM_CPPFLAGS_$(subst \ + -,_,$(@D)_$(@F))) -I$(srcdir)/common -DSIM_TOPDIR_BUILD AM_CPPFLAGS_FOR_BUILD = -I$(srcroot)/include $(SIM_HW_CFLAGS) \ $(SIM_INLINE) -I$(srcdir)/common COMPILE_FOR_BUILD = $(CC_FOR_BUILD) $(AM_CPPFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) @@ -1818,6 +1825,7 @@ SIM_ALL_RECURSIVE_DEPS = common/libcommon.a \ SIM_INSTALL_DATA_LOCAL_DEPS = SIM_INSTALL_EXEC_LOCAL_DEPS = $(am__append_43) SIM_UNINSTALL_LOCAL_DEPS = $(am__append_44) +AM_CPPFLAGS_common = -DSIM_COMMON_BUILD common_libcommon_a_SOURCES = \ common/callback.c \ common/portability.c \ diff --git a/sim/common/defs.h b/sim/common/defs.h index bbaee4ebd0c..0f4062c2031 100644 --- a/sim/common/defs.h +++ b/sim/common/defs.h @@ -35,7 +35,7 @@ #undef PACKAGE_VERSION /* Include common sim's various configure tests. */ -#ifndef SIM_COMMON_BUILD +#ifndef SIM_TOPDIR_BUILD #include "../config.h" #else #include "config.h" diff --git a/sim/common/local.mk b/sim/common/local.mk index debb55da933..32b5db6a6ee 100644 --- a/sim/common/local.mk +++ b/sim/common/local.mk @@ -20,7 +20,8 @@ AM_CPPFLAGS += \ -I$(srcdir)/%D% \ - -DSIM_COMMON_BUILD + -DSIM_TOPDIR_BUILD +AM_CPPFLAGS_%C% = -DSIM_COMMON_BUILD AM_CPPFLAGS_FOR_BUILD += -I$(srcdir)/%D% ## This makes sure common parts are available before building the arch-subdirs