[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH v3 10/23] build: Import the kconfig host rules from Linux
Hi Sharan, This patch looks ok. -- Felipe Reviewed-by: Felipe Huici <felipe.huici@xxxxxxxxx> On 19.09.19, 11:17, "Minios-devel on behalf of Sharan Santhanam" <minios-devel-bounces@xxxxxxxxxxxxxxxxxxxx on behalf of Sharan.Santhanam@xxxxxxxxx> wrote: Add rules build the config tool. These rule are imported from the linux kernel. File: scripts/Makefile.host Tag: v5.2 Signed-off-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx> --- support/kconfig.new/Makefile.br | 116 ++++++++++++++--- .../kconfig.new/patches/07-import-host-tools-rules | 142 +++++++++++++++++++++ 2 files changed, 243 insertions(+), 15 deletions(-) create mode 100644 support/kconfig.new/patches/07-import-host-tools-rules diff --git a/support/kconfig.new/Makefile.br b/support/kconfig.new/Makefile.br index afe94ee..8e64a9b 100644 --- a/support/kconfig.new/Makefile.br +++ b/support/kconfig.new/Makefile.br @@ -10,29 +10,41 @@ include Makefile.rules include Makefile #HOSTCFLAGS+=-Dinline="" -include foo.h -include $(obj)/.depend -$(obj)/.depend: $(wildcard *.h *.c) - $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : __hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) -host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m))) +host-cshlib := $(sort $(hostlibs-y) $(hostlibs-m)) +host-cxxshlib := $(sort $(hostcxxlibs-y) $(hostcxxlibs-m)) + +# C code +# Executables compiled from a single .c file +host-csingle:= $(foreach m,$(__hostprogs), \ + $(if $($(m)-objs)$($(m)-cxxobjs),,$(m))) host-cmulti := $(foreach m,$(__hostprogs),\ - $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) -host-cxxmulti := $(foreach m,$(__hostprogs),\ - $(if $($(m)-cxxobjs),$(m),$(if $($(m)-objs),))) -host-cobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-objs)))) -host-cxxobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-cxxobjs)))) + $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) +# Object (.o) files compiled from .c files +host-cobjs := $(sort $(foreach m,$(__hostprogs),$($(m)-objs))) + +# C++ code +# C++ executables compiled from at least one .cc file +# and zero or more .c files + host-cxxmulti := $(foreach m,$(__hostprogs),$(if $($(m)-cxxobjs),$(m))) +# C++ Object (.o) files compiled from .cc files +host-cxxobjs := $(sort $(foreach m,$(host-cxxmulti),$($(m)-cxxobjs))) +#Object (.o) files used by the shared libaries +host-cshobjs := $(sort $(foreach m,$(host-cshlib),$($(m:.so=-objs)))) +host-cxxshobjs := $(sort $(foreach m,$(host-cxxshlib),$($(m:.so=-objs)))) + + +host-csingle := $(addprefix $(obj)/,$(host-csingle)) +host-cmulti := $(addprefix $(obj)/,$(host-cmulti)) +host-cxxmulti := $(addprefix $(obj)/,$(host-cxxmulti)) +host-cobjs := $(addprefix $(obj)/,$(host-cobjs)) +host-cxxobjs := $(addprefix $(obj)/,$(host-cxxobjs)) fixdep-objs := $(obj)/fixdep.o HOST_EXTRACFLAGS += -I$(obj) -DCONFIG_=\"\" -$(host-csingle): %: %.c - $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@ - -$(host-cmulti): %: $(host-cobjs) $(host-cshlib) - $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ -$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) - $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ $(obj)/fixdep: $(fixdep-objs) $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) $< -o $@ @@ -40,6 +52,80 @@ $(obj)/fixdep: $(fixdep-objs) $(fixdep-objs): $(src)/fixdep.c $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ +##### +# Compile programs on the host + +# Create executable from a single .c file +# host-csingle -> Executable +quiet_cmd_host-csingle = HOSTCC $@ + cmd_host-csingle = $(HOSTCC) $(hostc_flags) $(HOSTLDFLAGS) -o $@ $< \ + $(HOSTLDLIBS) $(HOSTLDLIBS_$(@F)) +$(host-csingle): $(obj)/%: $(src)/%.c $(obj)/fixdep FORCE + $(call if_changed_dep,host-csingle) + +# Link an executable based on list of .o files, all plain c +# host-cmulti -> executable +quiet_cmd_host-cmulti = HOSTLD $@ + cmd_host-cmulti = $(HOSTCC) $(hostc_flags) -o $@ \ + $(addprefix $(obj)/,$($(@F)-objs)) \ + $(HOST_LDFLAGS) $(HOSTLDLIBS_$(@F)) +$(host-cmulti): $(obj)/fixdep FORCE + $(call if_changed,host-cmulti) +$(call multi_depend,$(host-cmulti), , -objs) + + +# Create .o file from a single .c file +# host-cobjs -> .o +quiet_cmd_host-cobjs = HOSTCC $@ + cmd_host-cobjs = $(HOSTCC) $(hostc_flags) $(HOSTCFLAGS_$(@F))\ + -c -o $@ $< +$(filter-out %.tab.o, $(filter-out %.lex.o,$(host-cobjs))): $(obj)/%.o:\ + $(src)/%.c $(obj)/fixdep FORCE + $(call if_changed_dep,host-cobjs) + +$(filter %.lex.o,$(host-cobjs)): $(obj)/%.lex.o: $(obj)/%.lex.c $(obj)/fixdep FORCE + $(call if_changed_dep,host-cobjs) + +$(filter %.tab.o,$(host-cobjs)): $(obj)/%.tab.o: $(obj)/%.tab.c $(obj)/fixdep FORCE + $(call if_changed_dep,host-cobjs) + +# Link an executable based on list of .o files, a mixture of .c and .cc +# host-cxxmulti -> executable +quiet_cmd_host-cxxmulti = HOSTLD $@ + cmd_host-cxxmulti = $(HOSTCXX) $(HOSTLDFLAGS) -o $@\ + $(foreach o,objs cxxobjs,\ + $(addprefix $(obj)/,$($(@F)-$(o)))) \ + $(HOSTLDLIBS) $(HOSTLDLIBS_$(@F)) +$(host-cxxmulti): FORCE + $(call if_changed,host-cxxmulti) +$(call multi_depend,$(host-cxxmulti), , -objs -cxxobjs) + + +# Create .o file from a single .cc (C++) file +quiet_cmd_host-cxxobjs = HOSTCXX $@ + cmd_host-cxxobjs = $(HOSTCXX) $(hostcxx_flags) $(HOSTCXXFLAGS_$(@F)) \ + -c -o $@ $< +$(host-cxxobjs): $(obj)/%.o: $(src)/%.cc FORCE + $(call if_changed_dep,host-cxxobjs) + +# Compile .c file, create position independent .o file +# host-cshobjs -> .o +quiet_cmd_host-cshobjs = HOSTCC -fPIC $@ + cmd_host-cshobjs = $(HOSTCC) $(hostc_flags) -fPIC -c -o $@ $< +$(host-cshobjs): $(obj)/%.o: $(src)/%.c FORCE + $(call if_changed_dep,host-cshobjs) + +# Compile .c file, create position independent .o file +# Note that plugin capable gcc versions can be either C or C++ based +# therefore plugin source files have to be compilable in both C and C++ mode. +# This is why a C++ compiler is invoked on a .c file. +# host-cxxshobjs -> .o +quiet_cmd_host-cxxshobjs = HOSTCXX -fPIC $@ + cmd_host-cxxshobjs = $(HOSTCXX) $(hostcxx_flags) -fPIC -c -o $@ $< +$(host-cxxshobjs): $(obj)/%.o: $(src)/%.c $(obj)/fixdep FORCE + @echo test--$@ + $(call if_changed_dep,host-cxxshobjs) + clean: $(Q)rm -f $(addprefix $(obj)/,$(clean-files)) distclean: clean diff --git a/support/kconfig.new/patches/07-import-host-tools-rules b/support/kconfig.new/patches/07-import-host-tools-rules new file mode 100644 index 0000000..d24dc97 --- /dev/null +++ b/support/kconfig.new/patches/07-import-host-tools-rules @@ -0,0 +1,142 @@ +diff --git a/support/kconfig.new/Makefile.br b/support/kconfig.new/Makefile.br +index afe94ee..8e64a9b 100644 +--- a/support/kconfig.new/Makefile.br ++++ b/support/kconfig.new/Makefile.br +@@ -10,29 +10,41 @@ include Makefile.rules + include Makefile + #HOSTCFLAGS+=-Dinline="" -include foo.h + -include $(obj)/.depend +-$(obj)/.depend: $(wildcard *.h *.c) +- $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : + + __hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) +-host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m))) ++host-cshlib := $(sort $(hostlibs-y) $(hostlibs-m)) ++host-cxxshlib := $(sort $(hostcxxlibs-y) $(hostcxxlibs-m)) ++ ++# C code ++# Executables compiled from a single .c file ++host-csingle:= $(foreach m,$(__hostprogs), \ ++ $(if $($(m)-objs)$($(m)-cxxobjs),,$(m))) + host-cmulti := $(foreach m,$(__hostprogs),\ +- $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) +-host-cxxmulti := $(foreach m,$(__hostprogs),\ +- $(if $($(m)-cxxobjs),$(m),$(if $($(m)-objs),))) +-host-cobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-objs)))) +-host-cxxobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-cxxobjs)))) ++ $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) ++# Object (.o) files compiled from .c files ++host-cobjs := $(sort $(foreach m,$(__hostprogs),$($(m)-objs))) ++ ++# C++ code ++# C++ executables compiled from at least one .cc file ++# and zero or more .c files ++ host-cxxmulti := $(foreach m,$(__hostprogs),$(if $($(m)-cxxobjs),$(m))) ++# C++ Object (.o) files compiled from .cc files ++host-cxxobjs := $(sort $(foreach m,$(host-cxxmulti),$($(m)-cxxobjs))) ++#Object (.o) files used by the shared libaries ++host-cshobjs := $(sort $(foreach m,$(host-cshlib),$($(m:.so=-objs)))) ++host-cxxshobjs := $(sort $(foreach m,$(host-cxxshlib),$($(m:.so=-objs)))) ++ ++ ++host-csingle := $(addprefix $(obj)/,$(host-csingle)) ++host-cmulti := $(addprefix $(obj)/,$(host-cmulti)) ++host-cxxmulti := $(addprefix $(obj)/,$(host-cxxmulti)) ++host-cobjs := $(addprefix $(obj)/,$(host-cobjs)) ++host-cxxobjs := $(addprefix $(obj)/,$(host-cxxobjs)) + fixdep-objs := $(obj)/fixdep.o + + HOST_EXTRACFLAGS += -I$(obj) -DCONFIG_=\"\" + +-$(host-csingle): %: %.c +- $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@ +- +-$(host-cmulti): %: $(host-cobjs) $(host-cshlib) +- $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ + +-$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) +- $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ + + $(obj)/fixdep: $(fixdep-objs) + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) $< -o $@ +@@ -40,6 +52,80 @@ $(obj)/fixdep: $(fixdep-objs) + $(fixdep-objs): $(src)/fixdep.c + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ + ++##### ++# Compile programs on the host ++ ++# Create executable from a single .c file ++# host-csingle -> Executable ++quiet_cmd_host-csingle = HOSTCC $@ ++ cmd_host-csingle = $(HOSTCC) $(hostc_flags) $(HOSTLDFLAGS) -o $@ $< \ ++ $(HOSTLDLIBS) $(HOSTLDLIBS_$(@F)) ++$(host-csingle): $(obj)/%: $(src)/%.c $(obj)/fixdep FORCE ++ $(call if_changed_dep,host-csingle) ++ ++# Link an executable based on list of .o files, all plain c ++# host-cmulti -> executable ++quiet_cmd_host-cmulti = HOSTLD $@ ++ cmd_host-cmulti = $(HOSTCC) $(hostc_flags) -o $@ \ ++ $(addprefix $(obj)/,$($(@F)-objs)) \ ++ $(HOST_LDFLAGS) $(HOSTLDLIBS_$(@F)) ++$(host-cmulti): $(obj)/fixdep FORCE ++ $(call if_changed,host-cmulti) ++$(call multi_depend,$(host-cmulti), , -objs) ++ ++ ++# Create .o file from a single .c file ++# host-cobjs -> .o ++quiet_cmd_host-cobjs = HOSTCC $@ ++ cmd_host-cobjs = $(HOSTCC) $(hostc_flags) $(HOSTCFLAGS_$(@F))\ ++ -c -o $@ $< ++$(filter-out %.tab.o, $(filter-out %.lex.o,$(host-cobjs))): $(obj)/%.o:\ ++ $(src)/%.c $(obj)/fixdep FORCE ++ $(call if_changed_dep,host-cobjs) ++ ++$(filter %.lex.o,$(host-cobjs)): $(obj)/%.lex.o: $(obj)/%.lex.c $(obj)/fixdep FORCE ++ $(call if_changed_dep,host-cobjs) ++ ++$(filter %.tab.o,$(host-cobjs)): $(obj)/%.tab.o: $(obj)/%.tab.c $(obj)/fixdep FORCE ++ $(call if_changed_dep,host-cobjs) ++ ++# Link an executable based on list of .o files, a mixture of .c and .cc ++# host-cxxmulti -> executable ++quiet_cmd_host-cxxmulti = HOSTLD $@ ++ cmd_host-cxxmulti = $(HOSTCXX) $(HOSTLDFLAGS) -o $@\ ++ $(foreach o,objs cxxobjs,\ ++ $(addprefix $(obj)/,$($(@F)-$(o)))) \ ++ $(HOSTLDLIBS) $(HOSTLDLIBS_$(@F)) ++$(host-cxxmulti): FORCE ++ $(call if_changed,host-cxxmulti) ++$(call multi_depend,$(host-cxxmulti), , -objs -cxxobjs) ++ ++ ++# Create .o file from a single .cc (C++) file ++quiet_cmd_host-cxxobjs = HOSTCXX $@ ++ cmd_host-cxxobjs = $(HOSTCXX) $(hostcxx_flags) $(HOSTCXXFLAGS_$(@F)) \ ++ -c -o $@ $< ++$(host-cxxobjs): $(obj)/%.o: $(src)/%.cc FORCE ++ $(call if_changed_dep,host-cxxobjs) ++ ++# Compile .c file, create position independent .o file ++# host-cshobjs -> .o ++quiet_cmd_host-cshobjs = HOSTCC -fPIC $@ ++ cmd_host-cshobjs = $(HOSTCC) $(hostc_flags) -fPIC -c -o $@ $< ++$(host-cshobjs): $(obj)/%.o: $(src)/%.c FORCE ++ $(call if_changed_dep,host-cshobjs) ++ ++# Compile .c file, create position independent .o file ++# Note that plugin capable gcc versions can be either C or C++ based ++# therefore plugin source files have to be compilable in both C and C++ mode. ++# This is why a C++ compiler is invoked on a .c file. ++# host-cxxshobjs -> .o ++quiet_cmd_host-cxxshobjs = HOSTCXX -fPIC $@ ++ cmd_host-cxxshobjs = $(HOSTCXX) $(hostcxx_flags) -fPIC -c -o $@ $< ++$(host-cxxshobjs): $(obj)/%.o: $(src)/%.c $(obj)/fixdep FORCE ++ @echo test--$@ ++ $(call if_changed_dep,host-cxxshobjs) ++ + clean: + $(Q)rm -f $(addprefix $(obj)/,$(clean-files)) + distclean: clean -- 2.7.4 _______________________________________________ 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 |