Skip to content
  1. Jul 25, 2018
    • Masahiro Yamada's avatar
      kconfig: allow all config targets to write auto.conf if missing · 00c864f8
      Masahiro Yamada authored
      
      
      Currently, only syncconfig creates or updates include/config/auto.conf
      and some other files.  Other config targets create or update only the
      .config file.
      
      When you configure and build the kernel from a pristine source tree,
      any config target is followed by syncconfig in the build stage since
      include/config/auto.conf is missing.
      
      We are moving compiler tests from Makefile to Kconfig.  It means that
      parsing Kconfig files will be more costly since Kconfig invokes the
      compiler commands internally.  Thus, we want to avoid invoking Kconfig
      twice (one for *config to create the .config, and one for syncconfig
      to synchronize the auto.conf).  If auto.conf does not exist, we can
      generate all configuration files in the first configuration stage,
      which will save the syncconfig in the build stage.
      
      Please note this should be done only when auto.conf is missing.  If
      *config blindly did this, time stamp files under include/config/ would
      be unnecessarily touched, triggering unneeded rebuild of objects.
      
      I assume a scenario like this:
      
       1. You have a source tree that has already been built
          with CONFIG_FOO disabled
      
       2. Run "make menuconfig" to enable CONFIG_FOO
      
       3. CONFIG_FOO turns out to be unnecessary.
          Run "make menuconfig" again to disable CONFIG_FOO
      
       4. Run "make"
      
      In this case, include/config/foo.h should not be touched since there
      is no change in CONFIG_FOO.  The sync process should be delayed until
      the user really attempts to build the kernel.
      
      This commit has another motivation; I want to suppress the 'No such
      file or directory' warning from the 'include' directive.
      
      The top-level Makefile includes auto.conf with '-include' directive,
      like this:
      
        ifeq ($(dot-config),1)
        -include include/config/auto.conf
        endif
      
      This looks strange because auto.conf is mandatory when dot-config is 1.
      I guess only the reason of using '-include' is to suppress the warning
      'include/config/auto.conf: No such file or directory' when building
      from a clean tree.  However, this has a side-effect; Make considers
      the files included by '-include' are optional.  Hence, Make continues
      to build even if it fails to generate include/config/auto.conf.  I will
      change this in the next commit, but the warning message is annoying.
      (At least, kbuild test robot reports it as a regression.)
      
      With this commit, Kconfig will generate all configuration files together
      with the .config and I guess it is a solution good enough to suppress
      the warning.
      
      Note:
      GNU Make 4.2 or later does not display the warning from the 'include'
      directive if include files are successfully generated.  See GNU Make
      commit 87a5f98d248f ("[SV 102] Don't show unnecessary include file
      errors.")  However, older GNU Make versions are still widely used.
      
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      00c864f8
    • Masahiro Yamada's avatar
      kconfig: make syncconfig update .config regardless of sym_change_count · 16952b77
      Masahiro Yamada authored
      
      
      syncconfig updates the .config only when sym_change_count > 0, i.e.
      any change in config symbols has been detected.
      
      Not only symbols but also comments are contained in the .config file.
      If only comments are updated, they are not fed back to the .config,
      then the stale comments are left-over.  Of course, this is just a
      matter of comments, but why not fix it.
      
      I see some scenarios where this happens.
      
      Scenario A:
      
       1. You have a source tree that has already been configured.
      
       2. Linus increments the version number in the top-level Makefile
          (i.e. he commits a new release)
      
       3. You pull it, and run 'make'
      
       4. syncconfig is invoked because the environment variable,
          KERNELVERSION is updated, but the .config is not updated since
          no config symbol is changed.
      
       5. The .config file contains a kernel version in the top line:
      
          # Automatically generated file; DO NOT EDIT.
          # Linux/arm64 4.18.0-rc2 Kernel Configuration
      
          ... which points to a previous version.
      
      Scenario B:
      
       1. You have a source tree that has already been configured.
      
       2. You upgrade the compiler, but it still has the same version number.
          This may happen if you regularly build the latest compiler from
          the source code.
      
       3. You run 'make'
      
       4. syncconfig is invoked because the environment variable,
          CC_VERSION_TEXT is updated, but the .config is not updated since
          no config symbol is changed.
      
       5. The .config file contains the version string of the compiler:
      
          #
          # Compiler: aarch64-linux-gcc (GCC) 9.0.0 20180628 (experimental)
          #
      
          ... which carries the information of the old compiler.
      
      If KCONFIG_NOSILENTUPDATE is set, syncconfig is not allowed to update
      the .config file.  Otherwise, it is fine to update it regardless of
      sym_change_count.
      
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      16952b77
    • Masahiro Yamada's avatar
      kconfig: create directories needed for syncconfig by itself · 79123b13
      Masahiro Yamada authored
      
      
      'make syncconfig' creates some files such as include/config/auto.conf,
      include/generate/autoconf.h, etc. but the necessary directory creation
      relies on scripts/kconfig/Makefile.
      
      To make Kconfig self-contained, create directories as needed in
      conf_write_autoconf().
      
      This change allows scripts/kconfig/Makefile cleanups; syncconfig can
      be merged into simple-targets.
      
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      79123b13
    • Masahiro Yamada's avatar
      kconfig: remove unneeded directory generation from local*config · adc18acf
      Masahiro Yamada authored
      Commit 17263baf ("kconfig: Create include/generated for
      localmodconfig") added the 'mkdir' line because local{yes,mod}config
      ran streamline_config.pl followed by silentoldconfig at that time.
      
      Since commit 81d2bc22
      
       ("kconfig: invoke oldconfig instead of
      silentoldconfig from local*config"), no sub-directory is required.
      
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      adc18acf
    • Masahiro Yamada's avatar
      kconfig: split out useful helpers in confdata.c · 0608182a
      Masahiro Yamada authored
      
      
      Split out helpers:
       is_present() - check if the given path exists
       is_dir() - check if the given path exists and it is a directory
       make_parent_dir() - create the parent directories of the given path
      
      These helpers will be reused in later commits.
      
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      0608182a
    • Masahiro Yamada's avatar
      kconfig: rename file_write_dep and move it to confdata.c · a2ff4040
      Masahiro Yamada authored
      
      
      file_write_dep() is called only from conf_write_autoconf().
      Move it from util.c to confdata.c to make it static.
      Also, rename it to conf_write_dep() since it should belong to
      the group of conf_write* functions.
      
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      a2ff4040
    • Randy Dunlap's avatar
      kconfig: fix typos in description of "choice" in kconfig-language.txt · 08b220b3
      Randy Dunlap authored
      
      
      Fix a couple of punctuation "typos" in the description of the
      "choice" keyword.
      
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      08b220b3
    • Masahiro Yamada's avatar
      kconfig: handle format string before calling conf_message_callback() · 5accd7f3
      Masahiro Yamada authored
      
      
      As you see in mconf.c and nconf.c, conf_message_callback() hooks are
      likely to end up with the boilerplate of vsnprintf().  Process the
      string format before calling conf_message_callback() so that it
      receives a simple string.
      
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: default avatarDirk Gouders <dirk@gouders.net>
      5accd7f3
  2. Jul 18, 2018
  3. Jul 16, 2018
  4. Jul 15, 2018
  5. Jul 14, 2018