kbuild: introduce subdir-ccflags-y
Following patch introduce support for setting options to gcc that has effect for current directory and all subdirectories. The typical use case are an architecture or a subsystem that decide to cover all files with -Werror. Today alpha, mips and sparc uses -Werror in almost all their Makefile- with subdir-ccflag-y it is now simpler to do so as only the top-level directories needs to be covered. Likewise if we decide to cover a full subsystem such as net/ with -Werror this is done by adding a single line to net/Makefile. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Родитель
f14875a3e0
Коммит
720097d895
|
@ -316,6 +316,16 @@ more details, with real examples.
|
||||||
#arch/m68k/fpsp040/Makefile
|
#arch/m68k/fpsp040/Makefile
|
||||||
ldflags-y := -x
|
ldflags-y := -x
|
||||||
|
|
||||||
|
subdir-ccflags-y, subdir-asflags-y
|
||||||
|
The two flags listed above are similar to ccflags-y and as-falgs-y.
|
||||||
|
The difference is that the subdir- variants has effect for the kbuild
|
||||||
|
file where tey are present and all subdirectories.
|
||||||
|
Options specified using subdir-* are added to the commandline before
|
||||||
|
the options specified using the non-subdir variants.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
subdir-ccflags-y := -Werror
|
||||||
|
|
||||||
CFLAGS_$@, AFLAGS_$@
|
CFLAGS_$@, AFLAGS_$@
|
||||||
|
|
||||||
CFLAGS_$@ and AFLAGS_$@ only apply to commands in current
|
CFLAGS_$@ and AFLAGS_$@ only apply to commands in current
|
||||||
|
|
|
@ -27,6 +27,9 @@ ccflags-y :=
|
||||||
cppflags-y :=
|
cppflags-y :=
|
||||||
ldflags-y :=
|
ldflags-y :=
|
||||||
|
|
||||||
|
subdir-asflags-y :=
|
||||||
|
subdir-ccflags-y :=
|
||||||
|
|
||||||
# Read auto.conf if it exists, otherwise ignore
|
# Read auto.conf if it exists, otherwise ignore
|
||||||
-include include/config/auto.conf
|
-include include/config/auto.conf
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,11 @@ ccflags-y += $(EXTRA_CFLAGS)
|
||||||
cppflags-y += $(EXTRA_CPPFLAGS)
|
cppflags-y += $(EXTRA_CPPFLAGS)
|
||||||
ldflags-y += $(EXTRA_LDFLAGS)
|
ldflags-y += $(EXTRA_LDFLAGS)
|
||||||
|
|
||||||
|
#
|
||||||
|
# flags that take effect in sub directories
|
||||||
|
export KBUILD_SUBDIR_ASFLAGS := $(KBUILD_SUBDIR_ASFLAGS) $(subdir-asflags-y)
|
||||||
|
export KBUILD_SUBDIR_CCFLAGS := $(KBUILD_SUBDIR_CCFLAGS) $(subdir-ccflags-y)
|
||||||
|
|
||||||
# Figure out what we need to build from the various variables
|
# Figure out what we need to build from the various variables
|
||||||
# ===========================================================================
|
# ===========================================================================
|
||||||
|
|
||||||
|
@ -104,10 +109,10 @@ else
|
||||||
debug_flags =
|
debug_flags =
|
||||||
endif
|
endif
|
||||||
|
|
||||||
orig_c_flags = $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) \
|
orig_c_flags = $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(KBUILD_SUBDIR_CCFLAGS) \
|
||||||
$(ccflags-y) $(CFLAGS_$(basetarget).o)
|
$(ccflags-y) $(CFLAGS_$(basetarget).o)
|
||||||
_c_flags = $(filter-out $(CFLAGS_REMOVE_$(basetarget).o), $(orig_c_flags))
|
_c_flags = $(filter-out $(CFLAGS_REMOVE_$(basetarget).o), $(orig_c_flags))
|
||||||
_a_flags = $(KBUILD_CPPFLAGS) $(KBUILD_AFLAGS) \
|
_a_flags = $(KBUILD_CPPFLAGS) $(KBUILD_AFLAGS) $(KBUILD_SUBDIR_ASFLAGS) \
|
||||||
$(asflags-y) $(AFLAGS_$(basetarget).o)
|
$(asflags-y) $(AFLAGS_$(basetarget).o)
|
||||||
_cpp_flags = $(KBUILD_CPPFLAGS) $(cppflags-y) $(CPPFLAGS_$(@F))
|
_cpp_flags = $(KBUILD_CPPFLAGS) $(cppflags-y) $(CPPFLAGS_$(@F))
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче