[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [XEN PATCH v8 38/47] WIP, no-VPATH: rework Makefile.host
From: Anthony PERARD <anthony.perard@xxxxxxxxx> Allow to build 'defconfig' target without VPATH in out-of-tree build Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx> --- xen/scripts/Makefile.host | 34 +++++++++++++++++++++++++--------- xen/tools/kconfig/Makefile | 12 +++++++++--- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/xen/scripts/Makefile.host b/xen/scripts/Makefile.host index d6c358095ee8..d083c6dbca76 100644 --- a/xen/scripts/Makefile.host +++ b/xen/scripts/Makefile.host @@ -8,7 +8,7 @@ target-stem = $(basename $(patsubst $(obj)/%,%,$@)) quiet_cmd_flex = LEX $@ cmd_flex = $(LEX) -o$@ -L $< -$(obj)/%.lex.c: $(src)/%.l FORCE +$(obj)/%.lex.c: $(srctree)/$(src)/%.l FORCE $(call if_changed,flex) # YACC @@ -16,7 +16,7 @@ $(obj)/%.lex.c: $(src)/%.l FORCE quiet_cmd_bison = YACC $(basename $@).[ch] cmd_bison = $(YACC) -o $(basename $@).c --defines=$(basename $@).h -t -l $< -$(obj)/%.tab.c $(obj)/%.tab.h: $(src)/%.y FORCE +$(obj)/%.tab.c $(obj)/%.tab.h: $(srctree)/$(src)/%.y FORCE $(call if_changed,bison) # ========================================================================== @@ -56,6 +56,11 @@ host-cmulti := $(foreach m,$(__hostprogs),\ # Object (.o) files compiled from .c files host-cobjs := $(sort $(foreach m,$(__hostprogs),$($(m)-objs))) +# from generated .c files +host-cobjs-generated := $(sort $(foreach m,$(__hostprogs),$($(m)-objs-generated))) +ifndef building_out_of_srctree +host-cobjs += $(host-cobjs-generated) +endif # C++ code # C++ executables compiled from at least one .cc file @@ -72,6 +77,9 @@ host-cxxshobjs := $(sort $(foreach m,$(host-cxxshlib),$($(m:.so=-objs)))) host-csingle := $(addprefix $(obj)/,$(host-csingle)) host-cmulti := $(addprefix $(obj)/,$(host-cmulti)) host-cobjs := $(addprefix $(obj)/,$(host-cobjs)) +ifdef building_out_of_srctree +host-cobjs-generated := $(addprefix $(obj)/,$(host-cobjs-generated)) +endif host-cxxmulti := $(addprefix $(obj)/,$(host-cxxmulti)) host-cxxobjs := $(addprefix $(obj)/,$(host-cxxobjs)) host-cshlib := $(addprefix $(obj)/,$(host-cshlib)) @@ -104,25 +112,30 @@ hostcxx_flags = -Wp,-MD,$(depfile) $(_hostcxx_flags) quiet_cmd_host-csingle = HOSTCC $@ cmd_host-csingle = $(HOSTCC) $(hostc_flags) $(HOSTLDFLAGS) -o $@ $< \ $(HOSTLDLIBS) $(HOSTLDLIBS_$(target-stem)) -$(host-csingle): $(obj)/%: $(src)/%.c FORCE +$(host-csingle): $(obj)/%: $(srctree)/$(src)/%.c 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) $(HOSTLDFLAGS) -o $@ \ - $(addprefix $(obj)/, $($(target-stem)-objs)) \ + $(foreach o,objs objs-generated, \ + $(addprefix $(obj)/, $($(target-stem)-$(o)))) \ $(HOSTLDLIBS) $(HOSTLDLIBS_$(target-stem)) $(host-cmulti): FORCE $(call if_changed,host-cmulti) -$(call multi-depend, $(host-cmulti), , -objs) +$(call multi-depend, $(host-cmulti), , -objs -objs-generated) # Create .o file from a single .c file # host-cobjs -> .o quiet_cmd_host-cobjs = HOSTCC $@ cmd_host-cobjs = $(HOSTCC) $(hostc_flags) -c -o $@ $< -$(host-cobjs): $(obj)/%.o: $(src)/%.c FORCE +$(host-cobjs): $(obj)/%.o: $(srctree)/$(src)/%.c FORCE $(call if_changed_dep,host-cobjs) +ifdef building_out_of_srctree +$(host-cobjs-generated): $(obj)/%.o: $(obj)/%.c FORCE + $(call if_changed_dep,host-cobjs) +endif # Link an executable based on list of .o files, a mixture of .c and .cc # host-cxxmulti -> executable @@ -138,14 +151,14 @@ $(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) -c -o $@ $< -$(host-cxxobjs): $(obj)/%.o: $(src)/%.cc FORCE +$(host-cxxobjs): $(obj)/%.o: $(srctree)/$(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 +$(host-cshobjs): $(obj)/%.o: $(srctree)/$(src)/%.c FORCE $(call if_changed_dep,host-cshobjs) # Compile .c file, create position independent .o file @@ -155,7 +168,7 @@ $(host-cshobjs): $(obj)/%.o: $(src)/%.c FORCE # host-cxxshobjs -> .o quiet_cmd_host-cxxshobjs = HOSTCXX -fPIC $@ cmd_host-cxxshobjs = $(HOSTCXX) $(hostcxx_flags) -fPIC -c -o $@ $< -$(host-cxxshobjs): $(obj)/%.o: $(src)/%.c FORCE +$(host-cxxshobjs): $(obj)/%.o: $(srctree)/$(src)/%.c FORCE $(call if_changed_dep,host-cxxshobjs) # Link a shared library, based on position independent .o files @@ -180,3 +193,6 @@ $(call multi-depend, $(host-cxxshlib), .so, -objs) targets += $(host-csingle) $(host-cmulti) $(host-cobjs)\ $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs) $(host-cxxshlib) $(host-cxxshobjs) +ifdef building_out_of_srctree +targets += $(host-cobjs-generated) +endif diff --git a/xen/tools/kconfig/Makefile b/xen/tools/kconfig/Makefile index b7b9a419ad59..c2ecf4b36652 100644 --- a/xen/tools/kconfig/Makefile +++ b/xen/tools/kconfig/Makefile @@ -146,8 +146,9 @@ help: # =========================================================================== # object files used by all kconfig flavours -common-objs := confdata.o expr.o lexer.lex.o parser.tab.o preprocess.o \ +common-objs := confdata.o expr.o preprocess.o \ symbol.o +common-objs-generated := lexer.lex.o parser.tab.o $(obj)/lexer.lex.o: $(obj)/parser.tab.h HOSTCFLAGS_lexer.lex.o := -I $(srctree)/$(src) @@ -156,10 +157,12 @@ HOSTCFLAGS_parser.tab.o := -I $(srctree)/$(src) # conf: Used for defconfig, oldconfig and related targets hostprogs-y += conf conf-objs := conf.o $(common-objs) +conf-objs-generated := $(common-objs-generated) # nconf: Used for the nconfig target based on ncurses hostprogs-y += nconf nconf-objs := nconf.o nconf.gui.o $(common-objs) +nconf-objs-generated := $(common-objs-generated) HOSTLDLIBS_nconf = $(shell . $(obj)/nconf-cfg && echo $$libs) HOSTCFLAGS_nconf.o = $(shell . $(obj)/nconf-cfg && echo $$cflags) @@ -172,6 +175,7 @@ hostprogs-y += mconf lxdialog := $(addprefix lxdialog/, \ checklist.o inputbox.o menubox.o textbox.o util.o yesno.o) mconf-objs := mconf.o $(lxdialog) $(common-objs) +mconf-objs-generated := $(common-objs-generated) HOSTLDLIBS_mconf = $(shell . $(obj)/mconf-cfg && echo $$libs) $(foreach f, mconf.o $(lxdialog), \ @@ -183,6 +187,7 @@ $(addprefix $(obj)/, mconf.o $(lxdialog)): $(obj)/mconf-cfg hostprogs-y += qconf qconf-cxxobjs := qconf.o qconf-objs := images.o $(common-objs) +qconf-objs-generated := $(common-objs-generated) HOSTLDLIBS_qconf = $(shell . $(obj)/qconf-cfg && echo $$libs) HOSTCXXFLAGS_qconf.o = $(shell . $(obj)/qconf-cfg && echo $$cflags) @@ -192,12 +197,13 @@ $(obj)/qconf.o: $(obj)/qconf-cfg $(obj)/qconf.moc quiet_cmd_moc = MOC $@ cmd_moc = $(shell . $(obj)/qconf-cfg && echo $$moc) -i $< -o $@ -$(obj)/%.moc: $(src)/%.h $(obj)/qconf-cfg +$(obj)/%.moc: $(srctree)/$(src)/%.h $(obj)/qconf-cfg $(call cmd,moc) # gconf: Used for the gconfig target based on GTK+ hostprogs-y += gconf gconf-objs := gconf.o images.o $(common-objs) +gconf-objs-generated := $(common-objs-generated) HOSTLDLIBS_gconf = $(shell . $(obj)/gconf-cfg && echo $$libs) HOSTCFLAGS_gconf.o = $(shell . $(obj)/gconf-cfg && echo $$cflags) @@ -207,7 +213,7 @@ $(obj)/gconf.o: $(obj)/gconf-cfg # check if necessary packages are available, and configure build flags filechk_conf_cfg = $(CONFIG_SHELL) $< -$(obj)/%conf-cfg: $(src)/%conf-cfg.sh FORCE +$(obj)/%conf-cfg: $(srctree)/$(src)/%conf-cfg.sh FORCE $(call filechk,conf_cfg) clean-files += *conf-cfg -- Anthony PERARD
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |