let rule_compile_cxx_multi and build_prog take the usetree switch. define the arch specific dependencies in the top level macro and explicitly define the dependency order.

This commit is contained in:
Kalamatee 2022-05-06 20:14:13 +01:00 committed by deadwood
parent 462c852ed9
commit 77819aed6c
1 changed files with 52 additions and 43 deletions

View File

@ -745,7 +745,7 @@ $(%(mmake)_MC_DTARGETS) : $(%(mmake)_MC_TGTWILDCARD).d : $(%(mmake)_MC_SRCWILDCA
# are in that dir and not in subdirectories.
# - compiler (default target): compiler to use, target, kernel or host
%define rule_compile_cxx_multi mmake=TMP basenames=/A cppflags=$(CPPFLAGS) cxxflags=$(CXXFLAGS) dxxflags= \
targetdir= compiler=target srcdir= incextra="$(TOP)/$(CURDIR)"
targetdir= compiler=target srcdir= incextra="$(TOP)/$(CURDIR)" usetree=no
%(mmake)_CXXABSBASENAMES := $(foreach %(mmake)_CXXBASE,%(basenames),$(if $(filter /%,$(%(mmake)_CXXBASE)),$(%(mmake)_CXXBASE),$(abspath $(SRCDIR)/$(CURDIR)/$(%(mmake)_CXXBASE))))
@ -767,9 +767,15 @@ ifeq (%(targetdir),)
%(mmake)_CXXDTARGETS := $(notdir $(%(mmake)_CXXBASENAMES:=.d))
%(mmake)_MCXX_WILDCARD := %
else
ifeq (%(usetree),no)
%(mmake)_CXXTARGETS := $(addprefix %(targetdir)/,$(notdir $(%(mmake)_CXXBASENAMES:=.o)))
%(mmake)_CXXDTARGETS := $(addprefix %(targetdir)/,$(notdir $(%(mmake)_CXXBASENAMES:=.d)))
%(mmake)_MCXX_WILDCARD := %(targetdir)/%
else
%(mmake)_CXXTARGETS := $(addprefix %(targetdir)/,$(%(mmake)_CXXBASENAMES:=.o))
%(mmake)_CXXDTARGETS := $(addprefix %(targetdir)/,$(%(mmake)_CXXBASENAMES:=.d))
%(mmake)_MCXX_WILDCARD := %(targetdir)/%
endif
# Be sure that all source files are generated
$(%(mmake)_CXXTARGETS) $(%(mmake)_CXXDTARGETS) : | $(%(mmake)_MCXX_FILES)
@ -1581,12 +1587,16 @@ BDID := $(BDTARGETID)
asmfiles= objs= objdir="$(GENDIR)/$(CURDIR)" targetdir="$(AROSDIR)/$(CURDIR)" \
cppflags="$(CPPFLAGS)" cflags= dflags= cxxflags= dxxflags= ldflags= \
aflags="$(AFLAGS)" uselibs= usehostlibs= usestartup=yes detach=no nix=no \
usetree=no \
compiler=target linker= \
coverageinstr="$(TARGET_COVERAGEINSTR)" funcinstr="$(TARGET_FUNCINSTR)" lto="$(TARGET_LTO)" \
usesdks=
.PHONY : %(mmake)
%gen_archspecificrules mainmmake=%(mmake)
%gen_archspecificrules mainmmake=%(mmake) target=-quick
%(mmake)_PROGNAME := %(progname)
%(mmake)_OBJDIR := %(objdir)
%(mmake)_TARGETDIR := %(targetdir)
@ -1610,14 +1620,23 @@ else
endif
%(mmake)_ARCHOBJS := $(wildcard $(%(mmake)_OBJDIR)/arch/*.o)
%(mmake)_ARCHFILES := $(basename $(notdir $(%(mmake)_ARCHOBJS)))
ifeq (%(usetree),no)
%(mmake)_ARCHFILES := $(basename $(notdir $(%(mmake)_ARCHOBJS)))
else
%(mmake)_ARCHFILES := $(basename $(patsubst $(%(mmake)_OBJDIR)/%,%,$(%(mmake)_ARCHOBJS)))
endif
%(mmake)_C_NARCHFILES := $(filter-out $(%(mmake)_ARCHFILES),$(%(mmake)_FILES))
%(mmake)_CXX_NARCHFILES := $(filter-out $(%(mmake)_ARCHFILES),$(%(mmake)_CXXFILES))
%(mmake)_OBJC_NARCHFILES := $(filter-out $(%(mmake)_ARCHFILES),$(%(mmake)_OBJCFILES))
TMP_FILES := $(%(mmake)_C_NARCHFILES) $(%(mmake)_CXX_NARCHFILES) $(%(mmake)_ASMFILES) $(%(mmake)_OBJC_NARCHFILES)
%(mmake)_OBJS := $(strip $(addsuffix .o,$(addprefix $(%(mmake)_OBJDIR)/,$(notdir $(TMP_FILES)))) %(objs))
%(mmake)_DEPS := $(strip $(addsuffix .d,$(addprefix $(%(mmake)_OBJDIR)/,$(notdir $(TMP_FILES)))))
ifeq (%(usetree),no)
%(mmake)_OBJS ?= $(strip $(addsuffix .o,$(addprefix $(%(mmake)_OBJDIR)/,$(notdir $(TMP_FILES)))) %(objs))
%(mmake)_DEPS := $(strip $(addsuffix .d,$(addprefix $(%(mmake)_OBJDIR)/,$(notdir $(TMP_FILES)))))
else
%(mmake)_OBJS ?= $(strip $(addsuffix .o,$(addprefix $(%(mmake)_OBJDIR)/,$(TMP_FILES))) %(objs))
%(mmake)_DEPS := $(strip $(addsuffix .d,$(addprefix $(%(mmake)_OBJDIR)/,$(TMP_FILES))))
endif
%(mmake)_CPPFLAGS := %(cppflags)
ifneq (%(usesdks),)
@ -1747,7 +1766,7 @@ ifneq ($(filter $(TARGET),%(mmake) %(mmake)-quick %(mmake)-gz-quick),)
%rule_compile_cxx_multi mmake=%(mmake) \
basenames="$(%(mmake)_CXX_NARCHFILES)" targetdir="$(%(mmake)_OBJDIR)" \
cppflags="$(%(mmake)_CPPFLAGS)" cxxflags="$(%(mmake)_CXXFLAGS)" dxxflags="$(%(mmake)_DXXFLAGS)" \
compiler="%(compiler)"
compiler="%(compiler)" usetree=%(usetree)
%rule_compile_objc_multi mmake=%(mmake) \
basenames="$(%(mmake)_OBJC_NARCHFILES)" targetdir="$(%(mmake)_OBJDIR)" \
cppflags="$(%(mmake)_CPPFLAGS)" cflags="$(%(mmake)_CFLAGS)" dflags="$(%(mmake)_DFLAGS)" \
@ -1755,7 +1774,7 @@ ifneq ($(filter $(TARGET),%(mmake) %(mmake)-quick %(mmake)-gz-quick),)
%rule_compile_multi mmake=%(mmake) \
basenames="$(%(mmake)_C_NARCHFILES)" targetdir="$(%(mmake)_OBJDIR)" \
cppflags="$(%(mmake)_CPPFLAGS)" cflags="$(%(mmake)_CFLAGS)" dflags="$(%(mmake)_DFLAGS)" \
compiler="%(compiler)"
compiler="%(compiler)" usetree=%(usetree)
%rule_assemble_multi mmake=%(mmake) \
cmd="$(%(mmake)_ASSEMBLER)" basenames="$(%(mmake)_ASMFILES)" targetdir="$(%(mmake)_OBJDIR)" \
cppflags="$(%(mmake)_CPPFLAGS)" aflags="$(%(mmake)_AFLAGS)"
@ -1797,6 +1816,9 @@ endif
.PHONY : %(mmake)
%gen_archspecificrules mainmmake=%(mmake)
%gen_archspecificrules mainmmake=%(mmake) target=-quick
%(mmake)_OBJDIR := %(objdir)
%(mmake)_TARGETDIR := %(targetdir)
%(mmake)_LIBS := %(uselibs)
@ -2170,6 +2192,12 @@ $(%(mmake)_KOBJ) : $(%(mmake)_OBJS) $(%(mmake)_ENDOBJS)
#%(build_library)%(build_abi) %(mmake)-kobj : %(mmake)-includes core-linklibs
#%(build_library)%(build_abi) %(mmake)-kobj-quick : %(mmake)-includes-quick
%gen_archspecificrules mainmmake=%(mmake)
%gen_archspecificrules mainmmake=%(mmake) target=-linklib
%gen_archspecificrules mainmmake=%(mmake) target=-kobj
%gen_archspecificrules mainmmake=%(mmake) target=-kobj-quick
%gen_archspecificrules mainmmake=%(mmake) target=-quick
# All MetaMake targets defined by this macro
%(mmake)%(flavour)_ALLTARGETS := %(mmake) %(mmake)-quick %(mmake)-clean
@ -2867,7 +2895,7 @@ ifneq ($(filter $(TARGET),%(mmake) %(mmake)-quick),)
%rule_compile_cxx_multi mmake=%(mmake) \
basenames="$(%(mmake)_CXX_FILES)" targetdir="$(%(mmake)_OBJDIR)" \
cppflags="$(%(mmake)_CPPFLAGS)" cxxflags="$(%(mmake)_CXXFLAGS)" dxxflags="$(%(mmake)_DXXFLAGS)" \
compiler="%(compiler)" srcdir="%(srcdir)"
compiler="%(compiler)" srcdir="%(srcdir)" usetree="%(usetree)"
%rule_compile_objc_multi mmake=%(mmake) \
basenames="$(%(mmake)_OBJC_FILES)" targetdir="$(%(mmake)_OBJDIR)" \
cppflags="$(%(mmake)_CPPFLAGS)" cflags="$(%(mmake)_CFLAGS)" dflags="$(%(mmake)_DFLAGS)" \
@ -3065,6 +3093,23 @@ BD_OBJ := $(addprefix %(dir)/, $(addsuffix .info,%(icon)))
%rule_archalias mainmmake=%(mainmmake) arch=%(arch)-kobj-quick alias=%(family)-kobj-quick
%end
#------------------------------------------------------------------------------
%define gen_archspecificrules mainmmake=/A target= subtarget=
#MM- %(mainmmake)%(target)%(subtarget) : \
#MM %(mainmmake)-$(CPU)%(subtarget)
#MM- %(mainmmake)-$(ARCH)-$(CPU)%(subtarget) : \
#MM %(mainmmake)-$(ARCH)-$(CPU)-$(AROS_TARGET_VARIANT)%(subtarget)
#MM- %(mainmmake)-$(ARCH)-$(AROS_TARGET_VARIANT)%(subtarget) : \
#MM %(mainmmake)-$(ARCH)-$(CPU)%(subtarget)
#MM- %(mainmmake)-$(ARCH)%(subtarget) : \
#MM %(mainmmake)-$(ARCH)-$(AROS_TARGET_VARIANT)%(subtarget)
#MM- %(mainmmake)-$(FAMILY)%(subtarget) : \
#MM %(mainmmake)-$(ARCH)%(subtarget)
#MM- %(mainmmake)-$(CPU)%(subtarget) : \
#MM %(mainmmake)-$(FAMILY)%(subtarget)
%end
#------------------------------------------------------------------------------
# Compile files for an arch-specific replacement of code for a module
# - files: the basenames of the C files to compile.
@ -3096,42 +3141,6 @@ endif
%buildid targets="%(mainmmake)-%(arch)"
#MM- %(mainmmake) : \
#MM %(mainmmake)-$(ARCH)-$(CPU)-$(AROS_TARGET_VARIANT) \
#MM %(mainmmake)-$(ARCH)-$(CPU) \
#MM %(mainmmake)-$(ARCH)-$(AROS_TARGET_VARIANT) \
#MM %(mainmmake)-$(ARCH) \
#MM %(mainmmake)-$(FAMILY) \
#MM %(mainmmake)-$(CPU)
#MM- %(mainmmake)-linklib : \
#MM %(mainmmake)-$(ARCH)-$(CPU)-$(AROS_TARGET_VARIANT) \
#MM %(mainmmake)-$(ARCH)-$(CPU) \
#MM %(mainmmake)-$(ARCH)-$(AROS_TARGET_VARIANT) \
#MM %(mainmmake)-$(ARCH) \
#MM %(mainmmake)-$(FAMILY) \
#MM %(mainmmake)-$(CPU)
#MM- %(mainmmake)-kobj : \
#MM %(mainmmake)-$(ARCH)-$(CPU)-$(AROS_TARGET_VARIANT) \
#MM %(mainmmake)-$(ARCH)-$(CPU) \
#MM %(mainmmake)-$(ARCH)-$(AROS_TARGET_VARIANT) \
#MM %(mainmmake)-$(ARCH) \
#MM %(mainmmake)-$(FAMILY) \
#MM %(mainmmake)-$(CPU)
#MM- %(mainmmake)-kobj-quick : \
#MM %(mainmmake)-$(ARCH)-$(CPU)-$(AROS_TARGET_VARIANT)-quick \
#MM %(mainmmake)-$(ARCH)-$(CPU)-quick \
#MM %(mainmmake)-$(ARCH)-$(AROS_TARGET_VARIANT)-quick \
#MM %(mainmmake)-$(ARCH)-quick \
#MM %(mainmmake)-$(FAMILY)-quick \
#MM %(mainmmake)-$(CPU)-quick
#MM- %(mainmmake)-quick : \
#MM %(mainmmake)-$(ARCH)-$(CPU)-$(AROS_TARGET_VARIANT)-quick \
#MM %(mainmmake)-$(ARCH)-$(CPU)-quick \
#MM %(mainmmake)-$(ARCH)-$(AROS_TARGET_VARIANT)-quick \
#MM %(mainmmake)-$(ARCH)-quick \
#MM %(mainmmake)-$(FAMILY)-quick \
#MM %(mainmmake)-$(CPU)-quick
#MM %(mainmmake)-%(arch) : %(mainmmake)-%(arch)-includes
#MM- %(mainmmake)-%(arch)-includes : %(mainmmake)-includes