mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
caefd8c9a9
This adds support for building more complex gcc plugins that live in a subdirectory instead of just in a single source file. Reported-by: PaX Team <pageexec@freemail.hu> Signed-off-by: Emese Revfy <re.emese@gmail.com> [kees: clarified commit message] Signed-off-by: Kees Cook <keescook@chromium.org>
29 lines
885 B
Makefile
29 lines
885 B
Makefile
GCC_PLUGINS_DIR := $(shell $(CC) -print-file-name=plugin)
|
|
|
|
ifeq ($(PLUGINCC),$(HOSTCC))
|
|
HOSTLIBS := hostlibs
|
|
HOST_EXTRACFLAGS += -I$(GCC_PLUGINS_DIR)/include -I$(src) -std=gnu99 -ggdb
|
|
export HOST_EXTRACFLAGS
|
|
else
|
|
HOSTLIBS := hostcxxlibs
|
|
HOST_EXTRACXXFLAGS += -I$(GCC_PLUGINS_DIR)/include -I$(src) -std=gnu++98 -fno-rtti
|
|
HOST_EXTRACXXFLAGS += -fno-exceptions -fasynchronous-unwind-tables -ggdb
|
|
HOST_EXTRACXXFLAGS += -Wno-narrowing -Wno-unused-variable
|
|
export HOST_EXTRACXXFLAGS
|
|
endif
|
|
|
|
ifneq ($(CFLAGS_KCOV), $(SANCOV_PLUGIN))
|
|
GCC_PLUGIN := $(filter-out $(SANCOV_PLUGIN), $(GCC_PLUGIN))
|
|
endif
|
|
|
|
export HOSTLIBS
|
|
|
|
$(HOSTLIBS)-y := $(foreach p,$(GCC_PLUGIN),$(if $(findstring /,$(p)),,$(p)))
|
|
always := $($(HOSTLIBS)-y)
|
|
|
|
$(foreach p,$($(HOSTLIBS)-y:%.so=%),$(eval $(p)-objs := $(p).o))
|
|
|
|
subdir-y := $(GCC_PLUGIN_SUBDIR)
|
|
subdir- += $(GCC_PLUGIN_SUBDIR)
|
|
|
|
clean-files += *.so
|