Star64_linux/scripts/kconfig
Masahiro Yamada 104daea149 kconfig: reference environment variables directly and remove 'option env='
To get access to environment variables, Kconfig needs to define a
symbol using "option env=" syntax.  It is tedious to add a symbol entry
for each environment variable given that we need to define much more
such as 'CC', 'AS', 'srctree' etc. to evaluate the compiler capability
in Kconfig.

Adding '$' for symbol references is grammatically inconsistent.
Looking at the code, the symbols prefixed with 'S' are expanded by:
 - conf_expand_value()
   This is used to expand 'arch/$ARCH/defconfig' and 'defconfig_list'
 - sym_expand_string_value()
   This is used to expand strings in 'source' and 'mainmenu'

All of them are fixed values independent of user configuration.  So,
they can be changed into the direct expansion instead of symbols.

This change makes the code much cleaner.  The bounce symbols 'SRCARCH',
'ARCH', 'SUBARCH', 'KERNELVERSION' are gone.

sym_init() hard-coding 'UNAME_RELEASE' is also gone.  'UNAME_RELEASE'
should be replaced with an environment variable.

ARCH_DEFCONFIG is a normal symbol, so it should be simply referenced
without '$' prefix.

The new syntax is addicted by Make.  The variable reference needs
parentheses, like $(FOO), but you can omit them for single-letter
variables, like $F.  Yet, in Makefiles, people tend to use the
parenthetical form for consistency / clarification.

At this moment, only the environment variable is supported, but I will
extend the concept of 'variable' later on.

The variables are expanded in the lexer so we can simplify the token
handling on the parser side.

For example, the following code works.

[Example code]

  config MY_TOOLCHAIN_LIST
          string
          default "My tools: CC=$(CC), AS=$(AS), CPP=$(CPP)"

[Result]

  $ make -s alldefconfig && tail -n 1 .config
  CONFIG_MY_TOOLCHAIN_LIST="My tools: CC=gcc, AS=as, CPP=gcc -E"

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
2018-05-29 03:28:58 +09:00
..
lxdialog kconfig: drop localization support 2018-05-28 18:25:21 +09:00
tests kconfig: remove duplicated file name and lineno of recursive inclusion 2018-03-26 02:04:06 +09:00
.gitignore kconfig: drop localization support 2018-05-28 18:25:21 +09:00
conf.c kconfig: drop localization support 2018-05-28 18:25:21 +09:00
confdata.c kconfig: reference environment variables directly and remove 'option env=' 2018-05-29 03:28:58 +09:00
expr.c kconfig: make unmet dependency warnings readable 2018-03-26 02:04:06 +09:00
expr.h kconfig: make unmet dependency warnings readable 2018-03-26 02:04:06 +09:00
gconf-cfg.sh kconfig: refactor GTK+ package checks for building gconf 2018-05-28 18:25:21 +09:00
gconf.c kconfig: drop localization support 2018-05-28 18:25:21 +09:00
gconf.glade scripts/kconfig/gconf.glade Update broken web addresses. 2010-09-17 16:54:42 +02:00
images.c
kconf_id.c kconfig: reference environment variables directly and remove 'option env=' 2018-05-29 03:28:58 +09:00
list.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
lkc.h kconfig: reference environment variables directly and remove 'option env=' 2018-05-29 03:28:58 +09:00
lkc_proto.h kconfig: reference environment variables directly and remove 'option env=' 2018-05-29 03:28:58 +09:00
Makefile kconfig: drop localization support 2018-05-28 18:25:21 +09:00
mconf-cfg.sh kconfig: refactor ncurses package checks for building mconf and nconf 2018-05-28 18:25:21 +09:00
mconf.c kconfig: drop localization support 2018-05-28 18:25:21 +09:00
menu.c kconfig: reference environment variables directly and remove 'option env=' 2018-05-29 03:28:58 +09:00
merge_config.sh kconfig/merge_config.sh: Accept a single file 2015-10-14 16:19:37 +02:00
nconf-cfg.sh kconfig: refactor ncurses package checks for building mconf and nconf 2018-05-28 18:25:21 +09:00
nconf.c kconfig: drop localization support 2018-05-28 18:25:21 +09:00
nconf.gui.c kconfig: add xrealloc() helper 2018-02-10 11:26:04 +09:00
nconf.h kconfig: drop localization support 2018-05-28 18:25:21 +09:00
preprocess.c kconfig: reference environment variables directly and remove 'option env=' 2018-05-29 03:28:58 +09:00
qconf-cfg.sh kconfig: refactor Qt package checks for building qconf 2018-05-28 18:25:21 +09:00
qconf.cc kconfig: drop localization support 2018-05-28 18:25:21 +09:00
qconf.h Port xconfig to Qt5 - Source format. 2015-10-14 14:59:03 +02:00
streamline_config.pl scripts: Switch to more portable Perl shebang 2017-05-14 11:20:44 +09:00
symbol.c kconfig: reference environment variables directly and remove 'option env=' 2018-05-29 03:28:58 +09:00
util.c kconfig: reference environment variables directly and remove 'option env=' 2018-05-29 03:28:58 +09:00
zconf.l kconfig: reference environment variables directly and remove 'option env=' 2018-05-29 03:28:58 +09:00
zconf.y kconfig: reference environment variables directly and remove 'option env=' 2018-05-29 03:28:58 +09:00