[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH 4/4] build: Print including of sub-Makefiles (verbose only)
Hi Simon, looks good, thanks. -- Felipe Reviewed-by: Felipe Huici <felipe.huici@xxxxxxxxx> On Thu, Feb 13, 2020 at 12:42 AM Simon Kuenzer <simon.kuenzer@xxxxxxxxx> wrote: > > When verbose mode is enabled (make V=1), each include command is > printed. This may be helpful for debugging and studying the include > orders of sub-makefiles (e.g., Makefile.uk). > > Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx> > --- > Makefile | 40 ++++++++++++++++++++++-------------- > support/build/Makefile.rules | 19 +++++++++++++++-- > 2 files changed, 42 insertions(+), 17 deletions(-) > > diff --git a/Makefile b/Makefile > index f0b6048c..17708bef 100644 > --- a/Makefile > +++ b/Makefile > @@ -193,6 +193,7 @@ KCONFIG_PLAT_IN := $(KCONFIG_DIR)/plat.uk > SCRIPTS_DIR := $(CONFIG_UK_BASE)/support/scripts > > # # Set and export the version string > +$(call verbose_info,Including $(CONFIG_UK_BASE)/version.mk...) > include $(CONFIG_UK_BASE)/version.mk > > # Compute the full local version string so packages can use it as-is > @@ -286,6 +287,7 @@ IMAGE_LDFLAGS-y := > # Pull in the user's configuration file > ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),) > ifneq ("$(wildcard $(UK_CONFIG))","") > +$(call verbose_info,Including $(UK_CONFIG)...) > -include $(UK_CONFIG) > UK_HAVE_DOT_CONFIG := y > endif > @@ -367,14 +369,16 @@ export HOSTCC_NOCCACHE HOSTCXX_NOCCACHE > > ################################################################################ > # Makefile helpers > > ################################################################################ > +$(call verbose_info,Including > $(CONFIG_UK_BASE)/support/build/Makefile.rules...) > +include $(CONFIG_UK_BASE)/support/build/Makefile.rules > + > # We need to include this file early (before any rule is defined) > # but after we have tried to load a .config and after having our tools > defined > -$(foreach M,$(strip $(wildcard $(addsuffix Makefile.rules,\ > - $(CONFIG_UK_BASE)/support/build/ $(CONFIG_UK_BASE)/lib/*/\ > - $(CONFIG_UK_BASE)/plat/*/ $(addsuffix /,$(ELIB_DIR)) $(APP_DIR)/)\ > - )),\ > - $(info Include $(M));\ > - $(eval include $(M))) > +$(foreach _M,$(wildcard $(addsuffix Makefile.rules,\ > + $(CONFIG_UK_BASE)/lib/*/ $(CONFIG_UK_BASE)/plat/*/ \ > + $(addsuffix /,$(ELIB_DIR)) $(APP_DIR)/)), \ > + $(eval $(call verbose_include,$(_M))) \ > +) > > > ################################################################################ > # Clean targets that do not have any dependency on a configuration > @@ -395,7 +399,7 @@ distclean: properclean > # Unikraft Architecture > > ################################################################################ > # Set target archicture as set in config > -include $(CONFIG_UK_BASE)/arch/Arch.uk > +$(eval $(call verbose_include,$(CONFIG_UK_BASE)/arch/Arch.uk)) > ifeq ($(CONFIG_UK_ARCH),) > # Set target archicture as set in environment > ifneq ($(ARCH),) > @@ -490,7 +494,7 @@ ifneq ("$(origin CROSS_COMPILE)","undefined") > CONFIG_CROSS_COMPILE := $(CROSS_COMPILE:"%"=%) > endif > > -include $(CONFIG_UK_BASE)/arch/$(UK_FAMILY)/Compiler.uk > +$(eval $(call > verbose_include,$(CONFIG_UK_BASE)/arch/$(UK_FAMILY)/Compiler.uk)) > > # Make variables (CC, etc...) > LD := $(CONFIG_CROSS_COMPILE)gcc > @@ -552,21 +556,24 @@ ifneq ($(CONFIG_UK_BASE),$(CONFIG_UK_APP)) > $(eval $(call _import_lib,$(CONFIG_UK_APP))); > endif > > -include $(CONFIG_UK_BASE)/lib/Makefile.uk # libraries > +# internal libraries > +$(eval $(call verbose_include,$(CONFIG_UK_BASE)/lib/Makefile.uk)) > > # external libraries > $(foreach E,$(ELIB_DIR), \ > $(eval $(call _import_lib,$(E))); \ > ) > -$(eval $(call _import_lib,$(CONFIG_UK_BASE)/arch/$(UK_FAMILY))) # > architecture libraries > -include $(CONFIG_UK_BASE)/plat/Makefile.uk # platform libraries > +# architecture library > +$(eval $(call _import_lib,$(CONFIG_UK_BASE)/arch/$(UK_FAMILY))) > +# internal platform libraries > +$(eval $(call verbose_include,$(CONFIG_UK_BASE)/plat/Makefile.uk)) > # external platform libraries > # NOTE: We include them after internal platform libs so that also base > variables > # provided with /plat/Makefile.uk are populated > $(foreach E,$(EPLAT_DIR), \ > $(eval $(call _import_lib,$(E))); \ > ) > -include $(CONFIG_UK_BASE)/Makefile.uk # Unikraft base > +$(eval $(call verbose_include,$(CONFIG_UK_BASE)/Makefile.uk)) # Unikraft base > > ifeq ($(call qstrip,$(UK_PLATS) $(UK_PLATS-y)),) > $(warning You did not choose any target platform.) > @@ -583,10 +590,13 @@ endif > endif > > # Generate build rules > -include $(CONFIG_UK_BASE)/support/build/Makefile.build > +$(eval $(call > verbose_include,$(CONFIG_UK_BASE)/support/build/Makefile.build)) > > +# Include source dependencies > ifneq ($(call qstrip,$(UK_DEPS) $(UK_DEPS-y)),) > --include $(UK_DEPS) $(UK_DEPS-y) # include header dependencies > +$(foreach _D,$(UK_DEPS) $(UK_DEPS-y),\ > + $(eval $(call verbose_include_try,$(_D))) \ > +) > endif > > # include Makefile for platform linking (`Linker.uk`) > @@ -627,7 +637,7 @@ all: images gdb_helpers > # Cleanup rules > > ################################################################################ > # Generate cleaning rules > -include $(CONFIG_UK_BASE)/support/build/Makefile.clean > +$(eval $(call > verbose_include,$(CONFIG_UK_BASE)/support/build/Makefile.clean)) > > clean-libs: $(addprefix clean-,\ > $(foreach P,$(UK_PLATS) $(UK_PLATS-y),\ > diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules > index e817ddcb..a13180a8 100644 > --- a/support/build/Makefile.rules > +++ b/support/build/Makefile.rules > @@ -127,17 +127,32 @@ endef > # > > ############################################################################### > > +# Include a sub-makefile > +# verbose_include $path > +define verbose_include = > +$(call verbose_info,Including $(1)...) > +include $(1) > +endef > + > +# Try to include a sub-makefile > +# (does not fail if it does not exist) > +# verbose_include_try $path > +define verbose_include_try = > +$(call verbose_info,Trying to include $(1)...) > +-include $(1) > +endef > + > # Import a library > # For internally use only (Unikraft main makefile and internal libs > Makefike.uk) > # _import_library $path > define _import_lib = > _IMPORT_BASE := $(1) > -include $(1)/Makefile.uk > +$(call verbose_include,$(1)/Makefile.uk) > undefine _IMPORT_BASE > endef > # _import_linker $plat_name > define _import_linker = > - include $(UK_PLAT_$(call uc,$(1))_LINKER) > +$(call verbose_include,$(UK_PLAT_$(call uc,$(1))_LINKER)) > endef > > # Register a platform to the build system > -- > 2.20.1 > > > _______________________________________________ > Minios-devel mailing list > Minios-devel@xxxxxxxxxxxxxxxxxxxx > https://lists.xenproject.org/mailman/listinfo/minios-devel _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |