summaryrefslogtreecommitdiff
path: root/solenv
diff options
context:
space:
mode:
Diffstat (limited to 'solenv')
-rw-r--r--solenv/gbuild/platform/com_MSC_class.mk8
-rw-r--r--solenv/gbuild/platform/com_MSC_defs.mk24
2 files changed, 28 insertions, 4 deletions
diff --git a/solenv/gbuild/platform/com_MSC_class.mk b/solenv/gbuild/platform/com_MSC_class.mk
index 79107f926760..660ba83d73ef 100644
--- a/solenv/gbuild/platform/com_MSC_class.mk
+++ b/solenv/gbuild/platform/com_MSC_class.mk
@@ -49,16 +49,18 @@ $(call gb_Helper_abbreviate_dirs,\
$(if $(EXTERNAL_CODE), \
$(if $(filter -clr,$(2)),,$(if $(COM_IS_CLANG),-Wno-undef)), \
$(gb_DEFS_INTERNAL)) \
- $(if $(WARNINGS_NOT_ERRORS),,$(gb_CFLAGS_WERROR)) \
+ $(if $(WARNINGS_NOT_ERRORS),$(if $(ENABLE_WERROR),$(if $(PLUGIN_WARNINGS_AS_ERRORS),$(gb_COMPILER_PLUGINS_WARNINGS_AS_ERRORS))),$(gb_CFLAGS_WERROR)) \
+ $(if $(filter -clr,$(2)),,$(if $(5),$(gb_COMPILER_PLUGINS))) \
+ $(if $(COMPILER_TEST),-fsyntax-only -ferror-limit=0 -Xclang -verify) \
-Fd$(PDBFILE) \
$(PCHFLAGS) \
- $(gb_COMPILERDEPFLAGS) \
+ $(if $(COMPILER_TEST),,$(gb_COMPILERDEPFLAGS)) \
-I$(dir $(3)) \
$(INCLUDE) \
$(if $(filter YES,$(CXXOBJECT_X64)), -U_X86_ -D_AMD64_,) \
-c $(3) \
-Fo$(1)) $(if $(filter $(true),$(gb_SYMBOL)),/link /DEBUG:FASTLINK) \
- $(call gb_create_deps,$(4),$(1),$(3))
+ $(if $(COMPILER_TEST),,$(call gb_create_deps,$(4),$(1),$(3)))
endef
# PrecompiledHeader class
diff --git a/solenv/gbuild/platform/com_MSC_defs.mk b/solenv/gbuild/platform/com_MSC_defs.mk
index 9aa1435a5a94..dd3e31952ed8 100644
--- a/solenv/gbuild/platform/com_MSC_defs.mk
+++ b/solenv/gbuild/platform/com_MSC_defs.mk
@@ -224,7 +224,7 @@ gb_PCHWARNINGS = \
gb_STDLIBS := \
advapi32.lib \
-gb_CFLAGS_WERROR := $(if $(ENABLE_WERROR),-WX)
+gb_CFLAGS_WERROR = $(if $(ENABLE_WERROR),-WX)
# there does not seem to be a way to force C++03 with MSVC
gb_CXX03FLAGS :=
@@ -301,6 +301,28 @@ gb_CXXFLAGS += \
endif
+ifeq ($(COM_IS_CLANG),TRUE)
+gb_COMPILER_TEST_FLAGS := -Xclang -plugin-arg-loplugin -Xclang --unit-test-mode
+ifeq ($(COMPILER_PLUGIN_TOOL),)
+gb_COMPILER_PLUGINS := -Xclang -load -Xclang $(BUILDDIR)/compilerplugins/obj/plugin.dll -Xclang -add-plugin -Xclang loplugin
+ifneq ($(COMPILER_PLUGIN_WARNINGS_ONLY),)
+gb_COMPILER_PLUGINS += -Xclang -plugin-arg-loplugin -Xclang \
+ --warnings-only='$(COMPILER_PLUGIN_WARNINGS_ONLY)'
+endif
+else
+gb_COMPILER_PLUGINS := -Xclang -load -Xclang $(BUILDDIR)/compilerplugins/obj/plugin.dll -Xclang -plugin -Xclang loplugin $(foreach plugin,$(COMPILER_PLUGIN_TOOL), -Xclang -plugin-arg-loplugin -Xclang $(plugin))
+ifneq ($(UPDATE_FILES),)
+gb_COMPILER_PLUGINS += -Xclang -plugin-arg-loplugin -Xclang --scope=$(UPDATE_FILES)
+endif
+endif
+gb_COMPILER_PLUGINS_WARNINGS_AS_ERRORS := \
+ -Xclang -plugin-arg-loplugin -Xclang --warnings-as-errors
+else
+gb_COMPILER_TEST_FLAGS :=
+gb_COMPILER_PLUGINS :=
+gb_COMPILER_PLUGINS_WARNINGS_AS_ERRORS :=
+endif
+
# Helper class
ifeq ($(GNUMAKE_WIN_NATIVE),TRUE)