Hi. 2018-08-01 22:58 GMT+09:00 David Howells <dhowells@xxxxxxxxxx>: > Hi, > > I'm currently having to mark various userspace programs I've added to the > samples/ directory as BROKEN in samples/Kconfig because the root Makefile > mucks up the dependencies between building samples and headers_install. > > The main culprit seems to be: > > commit dd92478a15fa3bfd746ee08b4ef59401c1537804 > Author: Nicolas Pitre <nicolas.pitre@xxxxxxxxxx> > Date: Sun Feb 28 22:00:00 2016 -0500 > kbuild: build sample modules along with the rest of the kernel > > which make the samples build in parallel with the build, thereby voiding the > explicit dependency: > > Documentation/ samples/: headers_install > > and thereby breaking: > > commit ddea05fa148b4d8e66498e522a616d87f9cf81e3 > Author: Arnd Bergmann <arnd@xxxxxxxx> > Date: Mon Jul 4 16:39:35 2016 +0200 > kbuild: make samples depend on headers_install > > The obvious fix is to revert commit dd92478a15fa3bfd746ee08b4ef59401c1537804 > (see attached patch). > > David > --- > commit 5c186b58db93e2644012e2fcb4c6ca2e74c6754b > Author: David Howells <dhowells@xxxxxxxxxx> > Date: Wed Aug 1 14:48:22 2018 +0100 > > Revert "kbuild: build sample modules along with the rest of the kernel" > > This reverts commit dd92478a15fa3bfd746ee08b4ef59401c1537804. > > The problem with this commit is that some of the samples require the header > installation to occur first, but building them in parallel with the rest of > the build breaks that requirement. > > Signed-off-by: David Howells <dhowells@xxxxxxxxxx> > > diff --git a/Makefile b/Makefile > index ca2af1ab91eb..30fc0a37ad41 100644 > --- a/Makefile > +++ b/Makefile > @@ -1009,16 +1009,14 @@ vmlinux: scripts/link-vmlinux.sh autoksyms_recursive $(vmlinux-deps) FORCE > ifdef CONFIG_HEADERS_CHECK > $(Q)$(MAKE) -f $(srctree)/Makefile headers_check > endif > +ifdef CONFIG_SAMPLES > + $(Q)$(MAKE) $(build)=samples > +endif > ifdef CONFIG_GDB_SCRIPTS > $(Q)ln -fsn $(abspath $(srctree)/scripts/gdb/vmlinux-gdb.py) > endif > +$(call if_changed,link-vmlinux) > > -# Build samples along the rest of the kernel > -ifdef CONFIG_SAMPLES > -vmlinux-dirs += samples > -endif > - > # The actual objects are generated when descending, > # make sure no implicit rule kicks in > $(sort $(vmlinux-deps)): $(vmlinux-dirs) ; > -- I dot not understand why this would fix your problem. Does the combination of CONFIG_SAMPLES=y and CONFIG_HEADERS_CHECK=n still fail to build? If you need to install headers before building samples, this should work: diff --git a/Makefile b/Makefile index b47af5a..555ee84 100644 --- a/Makefile +++ b/Makefile @@ -1023,6 +1023,7 @@ endif # Build samples along the rest of the kernel ifdef CONFIG_SAMPLES vmlinux-dirs += samples +samples: headers_install endif # The actual objects are generated when descending, Please note Arnd's patch only works for single targets. 'samples/' and 'samples' are different targets. -- Best Regards Masahiro Yamada -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html