linux/scripts/kconfig
Masahiro Yamada 54b8ae66ae kbuild: change *FLAGS_<basetarget>.o to take the path relative to $(obj)
Kbuild provides per-file compiler flag addition/removal:

  CFLAGS_<basetarget>.o
  CFLAGS_REMOVE_<basetarget>.o
  AFLAGS_<basetarget>.o
  AFLAGS_REMOVE_<basetarget>.o
  CPPFLAGS_<basetarget>.lds
  HOSTCFLAGS_<basetarget>.o
  HOSTCXXFLAGS_<basetarget>.o

The <basetarget> is the filename of the target with its directory and
suffix stripped.

This syntax comes into a trouble when two files with the same basename
appear in one Makefile, for example:

  obj-y += foo.o
  obj-y += dir/foo.o
  CFLAGS_foo.o := <some-flags>

Here, the <some-flags> applies to both foo.o and dir/foo.o

The real world problem is:

  scripts/kconfig/util.c
  scripts/kconfig/lxdialog/util.c

Both files are compiled into scripts/kconfig/mconf, but only the
latter should be given with the ncurses flags.

It is more sensible to use the relative path to the Makefile, like this:

  obj-y += foo.o
  CFLAGS_foo.o := <some-flags>
  obj-y += dir/foo.o
  CFLAGS_dir/foo.o := <other-flags>

At first, I attempted to replace $(basetarget) with $*. The $* variable
is replaced with the stem ('%') part in a pattern rule. This works with
most of cases, but does not for explicit rules.

For example, arch/ia64/lib/Makefile reuses rule_as_o_S in its own
explicit rules, so $* will be empty, resulting in ignoring the per-file
AFLAGS.

I introduced a new variable, target-stem, which can be used also from
explicit rules.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Marc Zyngier <maz@kernel.org>
2019-09-04 23:12:50 +09:00
..
lxdialog kconfig: remove trailing whitespaces 2019-05-09 22:37:17 +09:00
tests docs: kbuild: convert docs to ReST and rename to *.rst 2019-06-14 14:21:21 -06:00
.gitignore kconfig: rename generated .*conf-cfg to *conf-cfg 2019-01-06 10:47:09 +09:00
conf.c kconfig: Fix spelling of sym_is_changable 2019-07-06 21:58:23 +09:00
confdata.c kconfig: Clear "written" flag to avoid data loss 2019-08-04 12:44:15 +09:00
expr.c kconfig: split some C files out of zconf.y 2018-12-28 22:22:38 +09:00
expr.h kconfig: fix missing choice values in auto.conf 2019-07-17 22:37:51 +09:00
gconf-cfg.sh kconfig: do not require pkg-config on make {menu,n}config 2018-09-03 02:13:48 +09:00
gconf.c kconfig: remove trailing whitespaces 2019-05-09 22:37:17 +09:00
gconf.glade scripts/kconfig/gconf.glade Update broken web addresses. 2010-09-17 16:54:42 +02:00
images.c kconfig: split images.c out of qconf.cc/gconf.c to fix gconf warnings 2018-12-28 22:22:39 +09:00
images.h kconfig: split images.c out of qconf.cc/gconf.c to fix gconf warnings 2018-12-28 22:22:39 +09:00
lexer.l kconfig: use snprintf for formatting pathnames 2019-05-14 23:23:25 +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_proto.h kconfig: Fix spelling of sym_is_changable 2019-07-06 21:58:23 +09:00
lkc.h kconfig: require the argument of --defconfig 2019-06-09 15:08:18 +09:00
Makefile kbuild: change *FLAGS_<basetarget>.o to take the path relative to $(obj) 2019-09-04 23:12:50 +09:00
mconf-cfg.sh kconfig: do not require pkg-config on make {menu,n}config 2018-09-03 02:13:48 +09:00
mconf.c kconfig: Fix spelling of sym_is_changable 2019-07-06 21:58:23 +09:00
menu.c kconfig: convert to SPDX License Identifier 2018-12-28 22:22:28 +09:00
merge_config.sh merge_config.sh: Check error codes from make 2019-08-22 01:14:11 +09:00
nconf-cfg.sh kconfig: Make nconf-cfg.sh executable 2019-04-09 22:44:57 +09:00
nconf.c kconfig: Fix spelling of sym_is_changable 2019-07-06 21:58:23 +09:00
nconf.gui.c kconfig/[mn]conf: handle backspace (^H) key 2019-03-29 22:48:01 +09:00
nconf.h kconfig: convert to SPDX License Identifier 2018-12-28 22:22:28 +09:00
parser.y kconfig: rename zconf.y to parser.y 2019-02-13 23:25:58 +09:00
preprocess.c kconfig: add static qualifier to expand_string() 2019-06-09 15:08:18 +09:00
qconf-cfg.sh kconfig: do not require pkg-config on make {menu,n}config 2018-09-03 02:13:48 +09:00
qconf.cc kconfig: Fix spelling of sym_is_changable 2019-07-06 21:58:23 +09:00
qconf.h kconfig: fix 'Save As' menu of xconfig 2019-03-12 02:50:24 +09:00
streamline_config.pl kconfig: convert to SPDX License Identifier 2018-12-28 22:22:28 +09:00
symbol.c Kconfig updates for v5.3 2019-07-12 16:06:27 -07:00
util.c kconfig: convert to SPDX License Identifier 2018-12-28 22:22:28 +09:00