[38/83] sim: build: add basic framework for compiling arch objects in top-level

Message ID 20230103075605.13606-39-vapier@gentoo.org
State Committed
Headers
Series sim: merge subdir makefiles into top-level |

Commit Message

Mike Frysinger Jan. 3, 2023, 7:55 a.m. UTC
  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.
---
 sim/Makefile.am     | 18 +++++++++++++++---
 sim/Makefile.in     | 18 +++++++++++++-----
 sim/common/defs.h   |  2 +-
 sim/common/local.mk |  3 ++-
 4 files changed, 31 insertions(+), 10 deletions(-)
  

Patch

diff --git a/sim/Makefile.am b/sim/Makefile.am
index e47244d7b8dd..3c46925976f3 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/common/defs.h b/sim/common/defs.h
index bbaee4ebd0ce..0f4062c2031d 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 debb55da933b..32b5db6a6eea 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