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.
This commit is contained in:
Mike Frysinger 2022-12-26 23:20:46 -05:00
parent 54e26255ca
commit bc438b3e59
4 changed files with 30 additions and 9 deletions

View File

@ -41,15 +41,27 @@ BUILT_SOURCES =
CLEANFILES =
DISTCLEANFILES =
MOSTLYCLEANFILES = core
## 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 = \
$(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 \

View File

@ -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 \

View File

@ -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"

View File

@ -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