On Tue, Jul 7, 2020 at 2:22 AM Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote: > > CFLAGS_REMOVE_<file>.o filters out flags when compiling a particular > object, but there is no convenient way to do that for every object in > a directory. > > Add ccflags-remove-y and asflags-remove-y to make it easily. > > Use ccflags-remove-y to clean up some Makefiles. > > The add/remove order works as follows: > > [1] KBUILD_CFLAGS specifies compiler flags used globally > > [2] ccflags-y adds compiler flags for all objects in the > current Makefile > > [3] ccflags-remove-y removes compiler flags for all objects in the > current Makefile (New feature) > > [4] CFLAGS_<file> adds compiler flags per file. > > [5] CFLAGS_REMOVE_<file> removes compiler flags per file. > > Having [3] before [4] allows us to remove flags from most (but not all) > objects in the current Makefile. > > For example, kernel/trace/Makefile removes $(CC_FLAGS_FTRACE) > from all objects in the directory, then adds it back to > trace_selftest_dynamic.o and CFLAGS_trace_kprobe_selftest.o > > Please note ccflags-remove-y has no effect to the sub-directories. > In contrast, the previous notation got rid of compiler flags also from > all the sub-directories. > > arch/arm/boot/compressed/ > arch/powerpc/xmon/ > arch/sh/ > kernel/trace/ > > ... have no sub-directories. > > lib/ > > ... has several sub-directories. > > To keep the behavior, I added ccflags-remove-y to all Makefiles > in subdirectories of lib/, except: > > lib/vdso/Makefile - Kbuild does not descend into this Makefile > lib/raid/test/Makefile - This is not used for the kernel build > > I think commit 2464a609ded0 ("ftrace: do not trace library functions") > excluded too much. In later commit, I will try to remove ccflags-remove-y > from sub-directory Makefiles. > > Suggested-by: Sami Tolvanen <samitolvanen@xxxxxxxxxx> > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> > Acked-by: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx> > Acked-by: Michael Ellerman <mpe@xxxxxxxxxxxxxx> (powerpc) Acked-by: Brendan Higgins <brendanhiggins@xxxxxxxxxx> (KUnit)