Merge tag 'kbuild-fixes-v5.3-3' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 10 Aug 2019 03:31:04 +0000 (20:31 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 10 Aug 2019 03:31:04 +0000 (20:31 -0700)
Pull Kbuild fixes from Masahiro Yamada:

 - revive single target %.ko

 - do not create built-in.a where it is unneeded

 - do not create modules.order where it is unneeded

 - show a warning if subdir-y/m is used to visit a module Makefile

* tag 'kbuild-fixes-v5.3-3' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
  kbuild: show hint if subdir-y/m is used to visit module Makefile
  kbuild: generate modules.order only in directories visited by obj-y/m
  kbuild: fix false-positive need-builtin calculation
  kbuild: revive single target %.ko

1  2 
Makefile

diff --combined Makefile
+++ b/Makefile
@@@ -419,7 -419,6 +419,7 @@@ NM         = $(CROSS_COMPILE)n
  STRIP         = $(CROSS_COMPILE)strip
  OBJCOPY               = $(CROSS_COMPILE)objcopy
  OBJDUMP               = $(CROSS_COMPILE)objdump
 +OBJSIZE               = $(CROSS_COMPILE)size
  PAHOLE                = pahole
  LEX           = flex
  YACC          = bison
@@@ -476,9 -475,9 +476,9 @@@ GCC_PLUGINS_CFLAGS :
  CLANG_FLAGS :=
  
  export ARCH SRCARCH CONFIG_SHELL HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE AS LD CC
 -export CPP AR NM STRIP OBJCOPY OBJDUMP PAHOLE KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS
 -export MAKE LEX YACC AWK INSTALLKERNEL PERL PYTHON PYTHON2 PYTHON3 UTS_MACHINE
 -export HOSTCXX KBUILD_HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
 +export CPP AR NM STRIP OBJCOPY OBJDUMP OBJSIZE PAHOLE LEX YACC AWK INSTALLKERNEL
 +export PERL PYTHON PYTHON2 PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
 +export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS LDFLAGS_MODULE
  
  export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS KBUILD_LDFLAGS
  export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE
@@@ -1003,6 -1002,8 +1003,8 @@@ endi
  
  PHONY += prepare0
  
+ export MODORDER := $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)modules.order
  ifeq ($(KBUILD_EXTMOD),)
  core-y                += kernel/ certs/ mm/ fs/ ipc/ security/ crypto/ block/
  
@@@ -1772,13 -1773,22 +1774,22 @@@ build-dir = $(patsubst %/,%,$(dir $(bui
        $(Q)$(MAKE) $(build)=$(build-dir) $(build-target)
  %.symtypes: prepare FORCE
        $(Q)$(MAKE) $(build)=$(build-dir) $(build-target)
+ ifeq ($(KBUILD_EXTMOD),)
+ # For the single build of an in-tree module, use a temporary file to avoid
+ # the situation of modules_install installing an invalid modules.order.
+ %.ko: MODORDER := .modules.tmp
+ endif
+ %.ko: prepare FORCE
+       $(Q)$(MAKE) $(build)=$(build-dir) $(build-target:.ko=.mod)
+       $(Q)echo $(build-target) > $(MODORDER)
+       $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
  
  # Modules
  PHONY += /
  /: ./
  
  %/: prepare FORCE
-       $(Q)$(MAKE) KBUILD_MODULES=1 $(build)=$(build-dir)
+       $(Q)$(MAKE) KBUILD_MODULES=1 $(build)=$(build-dir) need-modorder=1
  
  # FIXME Should go into a make.lib or something
  # ===========================================================================