• Masahiro Yamada's avatar
    um: fix parallel building with O= option · b070664d
    Masahiro Yamada authored
    [ Upstream commit 13d3d01e ]
    
    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>
    Signed-off-by: default avatarSasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    b070664d
Name
Last commit
Last update
..
configs Loading commit data...
drivers Loading commit data...
include Loading commit data...
kernel Loading commit data...
os-Linux Loading commit data...
scripts Loading commit data...
.gitignore Loading commit data...
Kconfig.char Loading commit data...
Kconfig.common Loading commit data...
Kconfig.debug Loading commit data...
Kconfig.net Loading commit data...
Kconfig.rest Loading commit data...
Kconfig.um Loading commit data...
Makefile Loading commit data...
Makefile-os-Linux Loading commit data...
Makefile-skas Loading commit data...