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>
		
			
				
	
	
		
			30 lines
		
	
	
		
			885 B
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			30 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
 |