[PATCH RFC] build: respect top-level .config also for out-of-tree hypervisor builds

Jan Beulich posted 1 patch 2 weeks ago
Failed in applying to current master (apply log)
[PATCH RFC] build: respect top-level .config also for out-of-tree hypervisor builds
Posted by Jan Beulich 2 weeks ago
With in-tree builds Config.mk includes a .config file (if present) from
the top-level directory. Similar functionality is wanted with out-of-
tree builds. Yet the concept of "top-level directory" becomes fuzzy in
that case, because there is not really a requirement to have identical
top-level directory structure in the output tree; in fact there's no
need for anything top-level-ish there. Look for such a .config, but only
if the tree layout matches (read: if the directory we're building in is
named "xen").

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
RFC: The directory name based heuristic of course isn't nice. But I
     couldn't think of anything better. Suggestions?

RFC: There also being a .config in the top-level source dir would be a
     little problematic: It would be included _after_ the one in the
     object tree. Yet if such a scenario is to be expected/supported at
     all, it makes more sense the other way around.

--- a/xen/Makefile
+++ b/xen/Makefile
@@ -236,8 +236,17 @@ endif
 
 include scripts/Kbuild.include
 
-# Don't break if the build process wasn't called from the top level
-# we need XEN_TARGET_ARCH to generate the proper config
+# Don't break if the build process wasn't called from the top level.  We need
+# XEN_TARGET_ARCH to generate the proper config.  If building outside of the
+# source tree also check whether we need to include a "top-level" .config:
+# Config.mk, using $(XEN_ROOT)/.config, would look only in the source tree.
+ifeq ($(building_out_of_srctree),1)
+# Try to avoid including a random unrelated .config: Assume our parent dir
+# is a "top-level" one only when the objtree is .../xen.
+ifeq ($(patsubst %/xen,,$(abs_objtree)),)
+-include ../.config
+endif
+endif
 include $(XEN_ROOT)/Config.mk
 
 # Set ARCH/SUBARCH appropriately.
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -17,6 +17,13 @@ __build:
 
 -include $(objtree)/include/config/auto.conf
 
+# See commentary around the similar contruct in Makefile.
+ifneq ($(abs_objtree),$(abs_srctree))
+ifeq ($(patsubst %/xen,,$(abs_objtree)),)
+../.config: ;
+-include ../.config
+endif
+endif
 include $(XEN_ROOT)/Config.mk
 include $(srctree)/scripts/Kbuild.include