[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH 4/4] build: Print including of sub-Makefiles (verbose only)
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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |