ifdef CONFIG_GCC_PLUGINS
  __PLUGINCC := $(call cc-ifversion, -ge, 0408, $(HOSTCXX), $(HOSTCC))
  PLUGINCC := $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-plugin.sh "$(__PLUGINCC)" "$(HOSTCXX)" "$(CC)")

  SANCOV_PLUGIN := -fplugin=$(objtree)/scripts/gcc-plugins/sancov_plugin.so

  gcc-plugin-$(CONFIG_GCC_PLUGIN_CYC_COMPLEXITY)	+= cyc_complexity_plugin.so

  ifdef CONFIG_GCC_PLUGIN_SANCOV
    ifeq ($(CFLAGS_KCOV),)
      # It is needed because of the gcc-plugin.sh and gcc version checks.
      gcc-plugin-$(CONFIG_GCC_PLUGIN_SANCOV)           += sancov_plugin.so

      ifneq ($(PLUGINCC),)
        CFLAGS_KCOV := $(SANCOV_PLUGIN)
      else
        $(warning warning: cannot use CONFIG_KCOV: -fsanitize-coverage=trace-pc is not supported by compiler)
      endif
    endif
  endif

  GCC_PLUGINS_CFLAGS := $(addprefix -fplugin=$(objtree)/scripts/gcc-plugins/, $(gcc-plugin-y))

  export PLUGINCC GCC_PLUGINS_CFLAGS GCC_PLUGIN SANCOV_PLUGIN

  ifeq ($(PLUGINCC),)
    ifneq ($(GCC_PLUGINS_CFLAGS),)
      ifeq ($(call cc-ifversion, -ge, 0405, y), y)
        PLUGINCC := $(shell $(CONFIG_SHELL) -x $(srctree)/scripts/gcc-plugin.sh "$(__PLUGINCC)" "$(HOSTCXX)" "$(CC)")
        $(warning warning: your gcc installation does not support plugins, perhaps the necessary headers are missing?)
      else
        $(warning warning: your gcc version does not support plugins, you should upgrade it to gcc 4.5 at least)
      endif
    endif
  else
    # SANCOV_PLUGIN can be only in CFLAGS_KCOV because avoid duplication.
    GCC_PLUGINS_CFLAGS := $(filter-out $(SANCOV_PLUGIN), $(GCC_PLUGINS_CFLAGS))
  endif

  KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
  GCC_PLUGIN := $(gcc-plugin-y)

endif
