• Masahiro Yamada's avatar
    um: fix parallel building with O= option · 13d3d01e
    Masahiro Yamada authored
    Randy Dunlap reports UML occasionally fails to build with -j<N> and
    O=<builddir> options.
    
      make[1]: Entering directory '/home/rdunlap/mmotm-2018-0802-1529/UM64'
        UPD     include/generated/uapi/linux/version.h
        WRAP    arch/x86/include/generated/asm/dma-contiguous.h
        WRAP    arch/x86/include/generated/asm/export.h
        WRAP    arch/x86/include/generated/asm/early_ioremap.h
        WRAP    arch/x86/include/generated/asm/mcs_spinlock.h
        WRAP    arch/x86/include/generated/asm/mm-arch-hooks.h
        WRAP    arch/x86/include/generated/uapi/asm/bpf_perf_event.h
        WRAP    arch/x86/include/generated/uapi/asm/poll.h
        GEN     ./Makefile
      make[2]: *** No rule to make target 'archheaders'.  Stop.
      arch/um/Makefile:119: recipe for target 'archheaders' failed
      make[1]: *** [archheaders] Error 2
      make[1]: *** Waiting for unfinished jobs....
        UPD     include/config/kernel.release
      make[1]: *** wait: No child processes.  Stop.
      Makefile:146: recipe for target 'sub-make' failed
      make: *** [sub-make] Error 2
    
    The cause of the problem is the use of '$(MAKE) KBUILD_SRC=',
    which recurses to the top Makefile via the $(objtree)/Makefile
    generated by scripts/mkmakefile.
    
    When you run "make -j<N> O=<builddir> ARCH=um", Make can execute
    'archheaders' and 'outputmakefile' targets simultaneously because
    there is no dependency between them.
    
    If it happens,
    
      $(Q)$(MAKE) KBUILD_SRC= ARCH=$(HEADER_ARCH) archheaders
    
    ... tries to run $(objtree)/Makefile that is being updated.
    
    The correct way for the recursion is
    
      $(Q)$(MAKE) -f $(srctree)/Makefile ARCH=$(HEADER_ARCH) archheaders
    
    ..., which does not rely on the generated Makefile.
    Reported-by: default avatarRandy Dunlap <rdunlap@infradead.org>
    Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
    Tested-by: default avatarRandy Dunlap <rdunlap@infradead.org>
    Acked-by: default avatarRichard Weinberger <richard@nod.at>
    13d3d01e
Makefile 5.57 KB