From 0d43d20a7d5940c33029f8662ba03b81ec646ead Mon Sep 17 00:00:00 2001 From: Luboš Luňák Date: Thu, 3 Oct 2019 13:43:23 +0200 Subject: filter arguments to MSVC to avoid the annoying D9025 warning GCC/Clang do not bother with warning about overriding e.g. -O2 with -O0, AFAICT it's quite a common practice, and I really don't see any good reason for the warning, and even less so for not even being able to disable it. Without this, enabling SSE2/AVX2 would warn about overriding the default -arch:SSE (that's hardcoded by configure to be part of the compiler command). Change-Id: I9f9109b77de90085486bc2a98f1b453a41755e60 --- solenv/gbuild/platform/com_GCC_class.mk | 9 ++++++--- solenv/gbuild/platform/com_GCC_defs.mk | 2 +- solenv/gbuild/platform/com_MSC_class.mk | 17 +++++++++++++---- solenv/gbuild/platform/com_MSC_defs.mk | 2 +- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/solenv/gbuild/platform/com_GCC_class.mk b/solenv/gbuild/platform/com_GCC_class.mk index 18170c8eae2d..fd3703b875b5 100644 --- a/solenv/gbuild/platform/com_GCC_class.mk +++ b/solenv/gbuild/platform/com_GCC_class.mk @@ -65,7 +65,8 @@ $(call gb_Helper_abbreviate_dirs,\ $(if $(WARNINGS_NOT_ERRORS),$(if $(ENABLE_WERROR),$(if $(PLUGIN_WARNINGS_AS_ERRORS),$(gb_COMPILER_PLUGINS_WARNINGS_AS_ERRORS))),$(gb_CFLAGS_WERROR)) \ $(if $(5),$(gb_COMPILER_PLUGINS)) \ $(if $(COMPILER_TEST),-fsyntax-only -ferror-limit=0 -Xclang -verify) \ - $(if $(WARNINGS_DISABLED),$(call gb_Helper_disable_warnings,$(2)),$(2)) \ + $(2) \ + $(if $(WARNINGS_DISABLED),$(gb_CXXFLAGS_DISABLE_WARNINGS)) \ $(if $(EXTERNAL_CODE),$(gb_CXXFLAGS_Wundef),$(gb_DEFS_INTERNAL)) \ -c $(3) \ -o $(1) \ @@ -98,7 +99,8 @@ $(call gb_Helper_abbreviate_dirs,\ CCACHE_DISABLE=1 $(gb_COMPILER_SETUP) \ $(gb_CXX) \ -x c++-header \ - $(if $(WARNINGS_DISABLED),$(call gb_Helper_disable_warnings,$(4) $(5)),$(4) $(5)) \ + $(4) $(5) \ + $(if $(WARNINGS_DISABLED),$(gb_CXXFLAGS_DISABLE_WARNINGS)) \ $(gb_COMPILERDEPFLAGS) \ $(if $(VISIBILITY),,$(gb_VISIBILITY_FLAGS)) \ $(if $(EXTERNAL_CODE),$(gb_CXXFLAGS_Wundef),$(gb_DEFS_INTERNAL)) \ @@ -123,7 +125,8 @@ $(call gb_Helper_abbreviate_dirs,\ CCACHE_DISABLE=1 $(gb_COMPILER_SETUP) \ $(gb_CXX) \ -x c++-header \ - $(if $(WARNINGS_DISABLED),$(call gb_Helper_disable_warnings,$(4) $(5)),$(4) $(5)) \ + $(4) $(5) \ + $(if $(WARNINGS_DISABLED),$(gb_CXXFLAGS_DISABLE_WARNINGS)) \ $(gb_COMPILERDEPFLAGS) \ $(if $(VISIBILITY),,$(gb_VISIBILITY_FLAGS)) \ $(if $(EXTERNAL_CODE),$(gb_CXXFLAGS_Wundef),$(gb_DEFS_INTERNAL)) \ diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk index 4a4688dd3a1f..8db137e97265 100644 --- a/solenv/gbuild/platform/com_GCC_defs.mk +++ b/solenv/gbuild/platform/com_GCC_defs.mk @@ -82,7 +82,7 @@ gb_CXXFLAGS_COMMON := \ -fno-common \ -pipe \ -gb_Helper_disable_warnings = $(1) -w +gb_CXXFLAGS_DISABLE_WARNINGS = -w ifeq ($(HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED),TRUE) gb_CXXFLAGS_COMMON += -Wno-maybe-uninitialized diff --git a/solenv/gbuild/platform/com_MSC_class.mk b/solenv/gbuild/platform/com_MSC_class.mk index 66f252838024..71a175903505 100644 --- a/solenv/gbuild/platform/com_MSC_class.mk +++ b/solenv/gbuild/platform/com_MSC_class.mk @@ -43,15 +43,23 @@ define gb_CObject__compiler $(MSVC_CXX) -I$(SRCDIR)/solenv/clang-cl,$(gb_CXX))))) endef +# Avoid annoying warning D9025 about overriding command-line arguments. +gb_Helper_remove_overriden_flags = \ + $(filter-out -W4 -w -arch:SSE -arch:AVX2 -Od -O2,$(1)) \ + $(lastword $(filter -W4 -w,$(1))) \ + $(lastword $(filter -Od -O2,$(1))) \ + $(lastword $(filter -arch:SSE -arch:AVX2,$(1))) + # $(call gb_CObject__command_pattern,object,flags,source,dep-file,compiler-plugins,symbols) define gb_CObject__command_pattern $(call gb_Helper_abbreviate_dirs,\ mkdir -p $(dir $(1)) $(dir $(4)) && \ unset INCLUDE && \ - $(call gb_CObject__compiler,$(2),$(3)) \ + $(filter-out -arch:SSE,$(call gb_CObject__compiler,$(2),$(3))) \ $(DEFS) \ $(gb_LTOFLAGS) \ - $(if $(WARNINGS_DISABLED),$(call gb_Helper_disable_warnings,$(2)),$(2)) \ + $(call gb_Helper_remove_overriden_flags,$(filter -arch:SSE,$(call gb_CObject__compiler,$(2),$(3))) \ + $(2) $(if $(WARNINGS_DISABLED),$(gb_CXXFLAGS_DISABLE_WARNINGS))) \ $(if $(EXTERNAL_CODE), \ $(if $(filter -clr,$(2)),,$(if $(COM_IS_CLANG),-Wno-undef)), \ $(gb_DEFS_INTERNAL)) \ @@ -86,8 +94,9 @@ $(call gb_Output_announce,$(2),$(true),PCH,1) $(call gb_Helper_abbreviate_dirs,\ mkdir -p $(dir $(1)) $(dir $(call gb_PrecompiledHeader_get_dep_target,$(2),$(7))) && \ unset INCLUDE && \ - $(call gb_CObject__compiler,$(4) $(5),$(3)) \ - $(if $(WARNINGS_DISABLED),$(call gb_Helper_disable_warnings,$(4) $(5)),$(4) $(5)) \ + $(filter-out -arch:SSE,$(call gb_CObject__compiler,$(4) $(5),$(3))) \ + $(call gb_Helper_remove_overriden_flags,$(filter -arch:SSE,$(call gb_CObject__compiler,$(4) $(5),$(3))) \ + $(4) $(5) $(if $(WARNINGS_DISABLED),$(gb_CXXFLAGS_DISABLE_WARNINGS))) \ -Fd$(PDBFILE) \ $(if $(EXTERNAL_CODE),$(if $(COM_IS_CLANG),-Wno-undef),$(gb_DEFS_INTERNAL)) \ $(gb_LTOFLAGS) \ diff --git a/solenv/gbuild/platform/com_MSC_defs.mk b/solenv/gbuild/platform/com_MSC_defs.mk index 0c0ba3807003..590af0439ccc 100644 --- a/solenv/gbuild/platform/com_MSC_defs.mk +++ b/solenv/gbuild/platform/com_MSC_defs.mk @@ -156,7 +156,7 @@ gb_CFLAGS := \ -wd4800 \ -wd4267 \ -gb_Helper_disable_warnings = $(filter-out -W4,$(1)) -w +gb_CXXFLAGS_DISABLE_WARNINGS = -w ifneq ($(COM_IS_CLANG),TRUE) -- cgit v1.2.3