1. 17 7月, 2019 3 次提交
  2. 10 7月, 2019 4 次提交
    • G
      kbuild: Inform user to pass ARCH= for make mrproper · 3a475b21
      Geert Uytterhoeven 提交于
      When cross-compiling an out-of-tree build with an unclean source tree
      directory, the build fails with:
      
        /path/to/kernel/source/tree is not clean, please run 'make mrproper'
        in the '/path/to/kernel/source/tree' directory.
      
      However, doing so does not fix the problem, as "make mrproper" now
      requires passing the target architecture to the make command, else it
      won't remove $(srctree)/arch/$(SRCARCH)/include/generated.
      "git ls-files -o" doesn't give a clue, as it doesn't list (empty)
      directories, only files.
      
      Improve usability by including the ARCH= option in the error output.
      
      Fixes: a788b2ed ("kbuild: check arch/$(SRCARCH)/include/generated before out-of-tree build")
      Signed-off-by: NGeert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      3a475b21
    • M
      kbuild: add a flag to force absolute path for srctree · 95fd3f87
      Masahiro Yamada 提交于
      In old days, Kbuild always used an absolute path for $(srctree).
      
      Since commit 890676c6 ("kbuild: Use relative path when building in
      the source tree"), $(srctree) is '.' when O= was not passed from the
      command line.
      
      Yet, using absolute paths is useful in some cases even without O=, for
      instance, to create a cscope file with absolute path tags.
      
      'O=.' was known to work as a workaround to force Kbuild to use absolute
      paths even when you are building in the source tree.
      
      Since commit 25b146c5 ("kbuild: allow Kbuild to start from any
      directory"), Kbuild is too clever to be tricked. Even if you pass 'O=.'
      Kbuild notices you are building in the source tree, then use '.' for
      $(srctree).
      
      So, 'make O=. cscope' is no help to create absolute path tags.
      
      We cannot force one or the other according to commit e93bc1a0
      ("Revert "kbuild: specify absolute paths for cscope""). Both of
      relative path and absolute path have pros and cons.
      
      This commit adds a new flag KBUILD_ABS_SRCTREE to allow users to
      choose the absolute path for $(srctree).
      
      'make KBUILD_ABS_SRCTREE=1 cscope' will work as a replacement of
      'make O=. cscope'.
      Reported-by: NPawan Gupta <pawan.kumar.gupta@linux.intel.com>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      95fd3f87
    • M
      kbuild: replace KBUILD_SRCTREE with boolean building_out_of_srctree · 051f278e
      Masahiro Yamada 提交于
      Commit 25b146c5 ("kbuild: allow Kbuild to start from any directory")
      deprecated KBUILD_SRCTREE.
      
      It is only used in tools/testing/selftest/ to distinguish out-of-tree
      build. Replace it with a new boolean flag, building_out_of_srctree.
      
      I also replaced the conditional ($(srctree),.) because the next commit
      will allow an absolute path to be used for $(srctree) even when building
      in the source tree.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      051f278e
    • M
      kbuild: remove src and obj from the top Makefile · 75dd4747
      Masahiro Yamada 提交于
      Replace $(src) and $(obj) with $(srctree) and $(objtree), respectively.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      75dd4747
  3. 09 7月, 2019 2 次提交
    • M
      kbuild: compile-test kernel headers to ensure they are self-contained · 43c78d88
      Masahiro Yamada 提交于
      The headers in include/ are globally used in the kernel source tree
      to provide common APIs. They are included from external modules, too.
      
      It will be useful to make as many headers self-contained as possible
      so that we do not have to rely on a specific include order.
      
      There are more than 4000 headers in include/. In my rough analysis,
      70% of them are already self-contained. With efforts, most of them
      can be self-contained.
      
      For now, we must exclude more than 1000 headers just because they
      cannot be compiled as standalone units. I added them to header-test-.
      The blacklist was mostly generated by a script, so the reason of the
      breakage should be checked later.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Tested-by: NJani Nikula <jani.nikula@intel.com>
      Reviewed-by: NJoel Fernandes (Google) <joel@joelfernandes.org>
      43c78d88
    • M
      kbuild: do not create wrappers for header-test-y · c93a0368
      Masahiro Yamada 提交于
      header-test-y does not work with headers in sub-directories.
      
      For example, you may want to write a Makefile, like this:
      
      include/linux/Kbuild:
      
        header-test-y += mtd/nand.h
      
      This entry will create a wrapper include/linux/mtd/nand.hdrtest.c
      with the following content:
      
        #include "mtd/nand.h"
      
      To make this work, we need to add $(srctree)/include/linux to the
      header search path. It would be tedious to add ccflags-y.
      
      Instead, we could change the *.hdrtest.c rule to wrap:
      
        #include "nand.h"
      
      This works for in-tree build since #include "..." searches in the
      relative path from the header with this directive. For O=... build,
      we need to add $(srctree)/include/linux/mtd to the header search path,
      which will be even more tedious.
      
      After all, I thought it would be handier to compile headers directly
      without creating wrappers.
      
      I added a new build rule to compile %.h into %.h.s
      
      The target is %.h.s instead of %.h.o because it is slightly faster.
      Also, as for GCC, an empty assembly is smaller than an empty object.
      
      I wrote the build rule:
      
        $(CC) $(c_flags) -S -o $@ -x c /dev/null -include $<
      
      instead of:
      
        $(CC) $(c_flags) -S -o $@ -x c $<
      
      Both work fine with GCC, but the latter is bad for Clang.
      
      This comes down to the difference in the -Wunused-function policy.
      GCC does not warn about unused 'static inline' functions at all.
      Clang does not warn about the ones in included headers, but does
      about the ones in the source. So, we should handle headers as
      headers, not as source files.
      
      In fact, this has been hidden since commit abb2ea7d ("compiler,
      clang: suppress warning for unused static inline functions"), but we
      should not rely on that.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Acked-by: NJani Nikula <jani.nikula@intel.com>
      Tested-by: NJani Nikula <jani.nikula@intel.com>
      c93a0368
  4. 08 7月, 2019 3 次提交
    • M
      kbuild: compile-test exported headers to ensure they are self-contained · d6fc9fcb
      Masahiro Yamada 提交于
      Multiple people have suggested compile-testing UAPI headers to ensure
      they can be really included from user-space. "make headers_check" is
      obviously not enough to catch bugs, and we often leak unresolved
      references to user-space.
      
      Use the new header-test-y syntax to implement it. Please note exported
      headers are compile-tested with a completely different set of compiler
      flags. The header search path is set to $(objtree)/usr/include since
      exported headers should not include unexported ones.
      
      We use -std=gnu89 for the kernel space since the kernel code highly
      depends on GNU extensions. On the other hand, UAPI headers should be
      written in more standardized C, so they are compiled with -std=c90.
      This will emit errors if C++ style comments, the keyword 'inline', etc.
      are used. Please use C style comments (/* ... */), '__inline__', etc.
      in UAPI headers.
      
      There is additional compiler requirement to enable this test because
      many of UAPI headers include <stdlib.h>, <sys/ioctl.h>, <sys/time.h>,
      etc. directly or indirectly. You cannot use kernel.org pre-built
      toolchains [1] since they lack <stdlib.h>.
      
      I reused CONFIG_CC_CAN_LINK to check the system header availability.
      The intention is slightly different, but a compiler that can link
      userspace programs provide system headers.
      
      For now, a lot of headers need to be excluded because they cannot
      be compiled standalone, but this is a good start point.
      
      [1] https://mirrors.edge.kernel.org/pub/tools/crosstool/index.htmlSigned-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NSam Ravnborg <sam@ravnborg.org>
      d6fc9fcb
    • L
      Linux 5.2 · 0ecfebd2
      Linus Torvalds 提交于
      0ecfebd2
    • M
      kbuild: add more hints about SUBDIRS replacement · 4e8fc3f5
      Masahiro Yamada 提交于
      Commit 0126be38 ("kbuild: announce removal of SUBDIRS if used")
      added a hint about the 'SUBDIRS' replacement, but it was not clear
      enough.
      
      Multiple people sent me similar questions, patches. For instance,
      
        https://lkml.org/lkml/2019/1/17/456
      
      I did not mean to use M= for building a subdirectory in the kernel tree.
      
      From commit 669efc76 ("net: hns3: fix compile error"), people
      already (ab)use M=... to do that because it seems to work to some extent.
      
      Documentation/kbuild/kbuild.txt says M= and KBUILD_EXTMOD are used for
      building external modules.
      
      In fact, Kbuild supports the single target '%/' for this purpose, but
      this may not be noticed much.
      
      Kindly add more hints.
      
      Makefile:213: ================= WARNING ================
      Makefile:214: 'SUBDIRS' will be removed after Linux 5.3
      Makefile:215:
      Makefile:216: If you are building an individual subdirectory
      Makefile:217: in the kernel tree, you can do like this:
      Makefile:218: $ make path/to/dir/you/want/to/build/
      Makefile:219: (Do not forget the trailing slash)
      Makefile:220:
      Makefile:221: If you are building an external module,
      Makefile:222: Please use 'M=' or 'KBUILD_EXTMOD' instead
      Makefile:223: ==========================================
      Suggested-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Acked-by: NSam Ravnborg <sam@ravnborg.org>
      4e8fc3f5
  5. 04 7月, 2019 1 次提交
  6. 01 7月, 2019 2 次提交
  7. 30 6月, 2019 1 次提交
  8. 24 6月, 2019 1 次提交
  9. 23 6月, 2019 1 次提交
  10. 17 6月, 2019 1 次提交
  11. 15 6月, 2019 10 次提交
    • J
      kbuild: add support for ensuring headers are self-contained · e846f0dc
      Jani Nikula 提交于
      Sometimes it's useful to be able to explicitly ensure certain headers
      remain self-contained, i.e. that they are compilable as standalone
      units, by including and/or forward declaring everything they depend on.
      
      Add special target header-test-y where individual Makefiles can add
      headers to be tested if CONFIG_HEADER_TEST is enabled. This will
      generate a dummy C file per header that gets built as part of extra-y.
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Reviewed-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      e846f0dc
    • M
      kbuild: move hdr-inst shorthand to top Makefile · a5bae54c
      Masahiro Yamada 提交于
      Now that hdr-inst is used only in the top Makefile, move it there
      from scripts/Kbuild.include.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      a5bae54c
    • M
      kbuild: re-implement Makefile.headersinst without recursion · d5470d14
      Masahiro Yamada 提交于
      Since commit fcc8487d ("uapi: export all headers under uapi
      directories"), the headers in uapi directories are all exported by
      default although exceptional cases are still allowed by the syntax
      'no-export-headers'.
      
      The traditional directory descending has been kept (in a somewhat
      hacky way), but it is actually unneeded.
      
      Get rid of it to simplify the code.
      
      Also, handle files one by one instead of the previous per-directory
      processing. This will emit much more log, but I like it.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      d5470d14
    • M
      kbuild: add 'headers' target to build up uapi headers in usr/include · 59b2bd05
      Masahiro Yamada 提交于
      In Linux build system, build targets and installation targets are
      separated.
      
      Examples are:
      
       - 'make vmlinux' -> 'make install'
       - 'make modules' -> 'make modules_install'
       - 'make dtbs'    -> 'make dtbs_install'
       - 'make vdso'    -> 'make vdso_install'
      
      The intention is to run the build targets under the normal privilege,
      then the installation targets under the root privilege since we need
      the write permission to the system directories.
      
      We have 'make headers_install' but the corresponding 'make headers'
      stage does not exist. The purpose of headers_install is to provide
      the kernel interface to C library. So, nobody would try to install
      headers to /usr/include directly.
      
      If 'sudo make INSTALL_HDR_PATH=/usr/include headers_install' were run,
      some build artifacts in the kernel tree would be owned by root because
      some of uapi headers are generated by 'uapi-asm-generic', 'archheaders'
      targets.
      
      Anyway, I believe it makes sense to split the header installation into
      two stages.
      
       [1] 'make headers'
          Process headers in uapi directories by scripts/headers_install.sh
          and copy them to usr/include
      
       [2] 'make headers_install'
          Copy '*.h' verbatim from usr/include to $(INSTALL_HDR_PATH)/include
      
      For the backward compatibility, 'headers_install' depends on 'headers'.
      
      Some samples expect uapi headers in usr/include. So, the 'headers'
      target is useful to build up them in the fixed location usr/include
      irrespective of INSTALL_HDR_PATH.
      
      Another benefit is to stop polluting the final destination with the
      time-stamp files '.install' and '.check'. Maybe you can see them in
      your toolchains.
      
      Lastly, my main motivation is to prepare for compile-testing uapi
      headers. To build something, we have to save an object and .*.cmd
      somewhere. The usr/include/ will be the work directory for that.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      59b2bd05
    • M
      kbuild: build all prerequisites of headers_install simultaneously · bdd7714b
      Masahiro Yamada 提交于
      Currently, scripts/unifdef is compiled after scripts_basic,
      uapi-asm-generic, archheaders, and archscripts.
      
      The proper dependency is just scripts_basic. There is no problem
      to compile scripts/unifdef and other headers at the same time.
      
      Split scripts_unifdef out in order to allow more parallel building.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      bdd7714b
    • M
      kbuild: remove build_unifdef target in scripts/Makefile · 2b8481be
      Masahiro Yamada 提交于
      Since commit 2aedcd09 ("kbuild: suppress annoying "... is up to date."
      message"), if_changed and friends nicely suppress "is up to date" messages.
      
      We do not need per-Makefile tricks.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      2b8481be
    • M
      kbuild: add CONFIG_HEADERS_INSTALL and loosen the dependency of samples · e949f4c2
      Masahiro Yamada 提交于
      Commit 5318321d ("samples: disable CONFIG_SAMPLES for UML") used
      a big hammer to fix the build errors under the samples/ directory.
      Only some samples actually include uapi headers from usr/include.
      
      Introduce CONFIG_HEADERS_INSTALL since 'depends on HEADERS_INSTALL' is
      clearer than 'depends on !UML'. If this option is enabled, uapi headers
      are installed before starting directory descending.
      
      I added 'depends on HEADERS_INSTALL' to per-sample CONFIG options.
      This allows UML to compile some samples.
      
      $ make ARCH=um allmodconfig samples/
        [ snip ]
        CC [M]  samples/configfs/configfs_sample.o
        CC [M]  samples/kfifo/bytestream-example.o
        CC [M]  samples/kfifo/dma-example.o
        CC [M]  samples/kfifo/inttype-example.o
        CC [M]  samples/kfifo/record-example.o
        CC [M]  samples/kobject/kobject-example.o
        CC [M]  samples/kobject/kset-example.o
        CC [M]  samples/trace_events/trace-events-sample.o
        CC [M]  samples/trace_printk/trace-printk.o
        AR      samples/vfio-mdev/built-in.a
        AR      samples/built-in.a
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      e949f4c2
    • M
      kbuild: make gdb_script depend on prepare0 instead of prepare · 7a739ce5
      Masahiro Yamada 提交于
      'gdb_script' needs headers generated by ./Kbuild, which is visited
      by 'prepare0'. None of 'gdb_script' depends on 'prepare'.
      
      Loosen the dependency.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      7a739ce5
    • M
      kbuild: remove stale dependency between Documentation/ and headers_install · 3a51f908
      Masahiro Yamada 提交于
      Commit 8e2faea8 ("Make Documenation depend on headers_install")
      dates back to 2014, which is before Sphinx was introduced for the
      kernel documentation.
      
      Since none of DOC_TARGET requires headers_install, it is strange to
      run it only for the single target "Documentation/".
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      3a51f908
    • M
      kbuild: remove headers_{install,check}_all · f3c8d4c7
      Masahiro Yamada 提交于
      headers_install_all does not make much sense any more because different
      architectures export different set of uapi/linux/ headers. As you see
      in include/uapi/linux/Kbuild, the installation of a.out.h, kvm.h, and
      kvm_para.h is arch-dependent. So, headers_install_all repeats the
      installation/removal of them.
      
      If somebody really thinks it is useful to do headers_install for all
      architectures, it would be possible by small shell-scripting, but
      the top Makefile does not have to provide entry targets just for that
      purpose.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Acked-by: NSam Ravnborg <sam@ravnborg.org>
      f3c8d4c7
  12. 09 6月, 2019 1 次提交
  13. 05 6月, 2019 1 次提交
  14. 03 6月, 2019 1 次提交
  15. 27 5月, 2019 1 次提交
  16. 20 5月, 2019 1 次提交
  17. 18 5月, 2019 6 次提交
    • M
      kbuild: check uniqueness of module names · 3a48a919
      Masahiro Yamada 提交于
      In the recent build test of linux-next, Stephen saw a build error
      caused by a broken .tmp_versions/*.mod file:
      
        https://lkml.org/lkml/2019/5/13/991
      
      drivers/net/phy/asix.ko and drivers/net/usb/asix.ko have the same
      basename, and there is a race in generating .tmp_versions/asix.mod
      
      Kbuild has not checked this before, and it suddenly shows up with
      obscure error messages when this kind of race occurs.
      
      Non-unique module names cause various sort of problems, but it is
      not trivial to catch them by eyes.
      
      Hence, this script.
      
      It checks not only real modules, but also built-in modules (i.e.
      controlled by tristate CONFIG option, but currently compiled with =y).
      Non-unique names for built-in modules also cause problems because
      /sys/modules/ would fall over.
      
      For the latest kernel, I tested "make allmodconfig all" (or more
      quickly "make allyesconfig modules"), and it detected the following:
      
      warning: same basename if the following are built as modules:
        drivers/regulator/88pm800.ko
        drivers/mfd/88pm800.ko
      warning: same basename if the following are built as modules:
        drivers/gpu/drm/bridge/adv7511/adv7511.ko
        drivers/media/i2c/adv7511.ko
      warning: same basename if the following are built as modules:
        drivers/net/phy/asix.ko
        drivers/net/usb/asix.ko
      warning: same basename if the following are built as modules:
        fs/coda/coda.ko
        drivers/media/platform/coda/coda.ko
      warning: same basename if the following are built as modules:
        drivers/net/phy/realtek.ko
        drivers/net/dsa/realtek.ko
      Reported-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NKees Cook <keescook@chromium.org>
      Reviewed-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Reviewed-by: NLucas De Marchi <lucas.demarchi@intel.com>
      3a48a919
    • M
      kbuild: add LICENSES to KBUILD_ALLDIRS · 233c741d
      Masahiro Yamada 提交于
      For *-pkg targets, the LICENSES directory should be included in the
      source tarball.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      233c741d
    • M
      kbuild: terminate Kconfig when $(CC) or $(LD) is missing · 902a6898
      Masahiro Yamada 提交于
      If the compiler specified by $(CC) is not present, the Kconfig stage
      sprinkles 'not found' messages, then succeeds.
      
        $ make CROSS_COMPILE=foo defconfig
        /bin/sh: 1: foogcc: not found
        /bin/sh: 1: foogcc: not found
        *** Default configuration is based on 'x86_64_defconfig'
        ./scripts/gcc-version.sh: 17: ./scripts/gcc-version.sh: foogcc: not found
        ./scripts/gcc-version.sh: 18: ./scripts/gcc-version.sh: foogcc: not found
        ./scripts/gcc-version.sh: 19: ./scripts/gcc-version.sh: foogcc: not found
        ./scripts/gcc-version.sh: 17: ./scripts/gcc-version.sh: foogcc: not found
        ./scripts/gcc-version.sh: 18: ./scripts/gcc-version.sh: foogcc: not found
        ./scripts/gcc-version.sh: 19: ./scripts/gcc-version.sh: foogcc: not found
        ./scripts/clang-version.sh: 11: ./scripts/clang-version.sh: foogcc: not found
        ./scripts/gcc-plugin.sh: 11: ./scripts/gcc-plugin.sh: foogcc: not found
        init/Kconfig:16:warning: 'GCC_VERSION': number is invalid
        #
        # configuration written to .config
        #
      
      Terminate parsing files immediately if $(CC) or $(LD) is not found.
      "make *config" will fail more nicely.
      
        $ make CROSS_COMPILE=foo defconfig
        *** Default configuration is based on 'x86_64_defconfig'
        scripts/Kconfig.include:34: compiler 'foogcc' not found
        make[1]: *** [scripts/kconfig/Makefile;82: defconfig] Error 1
        make: *** [Makefile;557: defconfig] Error 2
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      902a6898
    • M
      kbuild: turn auto.conf.cmd into a mandatory include file · d2f8ae0e
      Masahiro Yamada 提交于
      syncconfig is responsible for keeping auto.conf up-to-date, so if it
      fails for any reason, the build must be terminated immediately.
      
      However, since commit 9390dff6 ("kbuild: invoke syncconfig if
      include/config/auto.conf.cmd is missing"), Kbuild continues running
      even after syncconfig fails.
      
      You can confirm this by intentionally making syncconfig error out:
      
        diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
        index 08ba146..307b9de 100644
        --- a/scripts/kconfig/confdata.c
        +++ b/scripts/kconfig/confdata.c
        @@ -1023,6 +1023,9 @@ int conf_write_autoconf(int overwrite)
                FILE *out, *tristate, *out_h;
                int i;
      
        +       if (overwrite)
        +               return 1;
        +
                if (!overwrite && is_present(autoconf_name))
                        return 0;
      
      Then, syncconfig fails, but Make would not stop:
      
        $ make -s mrproper allyesconfig defconfig
        $ make
        scripts/kconfig/conf  --syncconfig Kconfig
      
        *** Error during sync of the configuration.
      
        make[2]: *** [scripts/kconfig/Makefile;69: syncconfig] Error 1
        make[1]: *** [Makefile;557: syncconfig] Error 2
        make: *** [include/config/auto.conf.cmd] Deleting file 'include/config/tristate.conf'
        make: Failed to remake makefile 'include/config/auto.conf'.
          SYSTBL  arch/x86/include/generated/asm/syscalls_32.h
          SYSHDR  arch/x86/include/generated/asm/unistd_32_ia32.h
          SYSHDR  arch/x86/include/generated/asm/unistd_64_x32.h
          SYSTBL  arch/x86/include/generated/asm/syscalls_64.h
        [ continue running ... ]
      
      The reason is in the behavior of a pattern rule with multi-targets.
      
        %/auto.conf %/auto.conf.cmd %/tristate.conf: $(KCONFIG_CONFIG)
                $(Q)$(MAKE) -f $(srctree)/Makefile syncconfig
      
      GNU Make knows this rule is responsible for making all the three files
      simultaneously. As far as examined, auto.conf.cmd is the target in
      question when this rule is invoked. It is probably because auto.conf.cmd
      is included below the inclusion of auto.conf.
      
      The inclusion of auto.conf is mandatory, while that of auto.conf.cmd
      is optional. GNU Make does not care about the failure in the process
      of updating optional include files.
      
      I filed this issue (https://savannah.gnu.org/bugs/?56301) in case this
      behavior could be improved somehow in future releases of GNU Make.
      Anyway, it is quite easy to fix our Makefile.
      
      Given that auto.conf is already a mandatory include file, there is no
      reason to stick auto.conf.cmd optional. Make it mandatory as well.
      
      Cc: linux-stable <stable@vger.kernel.org> # 5.0+
      Fixes: 9390dff6 ("kbuild: invoke syncconfig if include/config/auto.conf.cmd is missing")
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      d2f8ae0e
    • M
      kbuild: add all Clang-specific flags unconditionally · a1494304
      Masahiro Yamada 提交于
      We do not support old Clang versions. Upgrade your clang version
      if any of these flags is unsupported.
      
      Let's add all flags inside ifdef CONFIG_CC_IS_CLANG unconditionally.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NSedat Dilek <sedat.dilek@gmail.com>
      Reviewed-by: NNathan Chancellor <natechancellor@gmail.com>
      Tested-by: NNick Desaulniers <ndesaulniers@google.com>
      a1494304
    • N
      7eb8e5f0