# # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/.
# This sets WARNING_CFLAGS for gcc-like compilers.
ifndef CC_IS_CLANG
CC_IS_CLANG := $(and $(findstring clang, $(shell $(CC) --version 2>&1)), 1) # Export CC_IS_CLANG to save a shell invocation when recursing. export CC_IS_CLANG endif
ifdef CC_IS_CLANG # Clang claims GCC 4.2.1 compatibility, see GCC_VERSION
CC_IS_GCC = 1 # Export CC_IS_GCC to save a shell invocation when recursing. export CC_IS_GCC endif
ifndef CC_IS_GCC
CC_IS_GCC := $(shell $(CC) -x c -E -Wall -Werror /dev/null >/dev/null 2>&1 && echo 1) # Export CC_IS_GCC to save a shell invocation when recursing. export CC_IS_GCC endif
ifndef CC_NAME ifeq (1,$(CC_IS_GCC))
CC_NAME := $(shell $(CC) -? 2>&1 >/dev/null | sed -e 's/:.*//;1q') else
CC_NAME := $(notdir $(CC)) endif # Export CC_NAME to save a shell invocation when recursing. export CC_NAME endif
ifndef GCC_VERSION ifeq (1,$(CC_IS_GCC))
GCC_VERSION := $(subst ., ,$(shell $(CC) -dumpversion || echo x.x.x)) # Export GCC_VERSION to save a shell invocation when recursing. export GCC_VERSION endif endif
ifndef WARNING_CFLAGS ifneq (1,$(CC_IS_GCC))
WARNING_CFLAGS = $(NULL) else # This tests to see if enabling the warning is possible before # setting an option to disable it.
set_warning = $(shell $(CC) -x c -E -Werror -W$(1) /dev/null >/dev/null 2>&1 && echo -W$(2)$(1))
enable_warning = $(call set_warning,$(1),)
disable_warning = $(call set_warning,$(1),no-)
WARNING_CFLAGS = -Wall $(call enable_warning,shadow)
ifdef CC_IS_CLANG # -Qunused-arguments : clang objects to arguments that it doesn't understand # and fixing this would require rearchitecture
WARNING_CFLAGS += -Qunused-arguments # -Wno-parentheses-equality : because clang warns about macro expansions
WARNING_CFLAGS += $(call disable_warning,parentheses-equality)
ifdef BUILD_OPT # clang is unable to handle glib's expansion of strcmp and similar for optimized # builds, so ignore the resulting errors. # See https://llvm.org/bugs/show_bug.cgi?id=20144
WARNING_CFLAGS += $(call disable_warning,array-bounds)
WARNING_CFLAGS += $(call disable_warning,unevaluated-expression) endif endif# if clang
ifndef NSS_ENABLE_WERROR ifeq ($(OS_TARGET),Android) # Android lollipop generates the following warning: # error: call to 'sprintf' declared with attribute warning: # sprintf is often misused; please use snprintf [-Werror] # So, just suppress -Werror entirely on Android
NSS_ENABLE_WERROR = 0
$(warning OS_TARGET is Android, disabling -Werror) else
ifdef CC_IS_CLANG # Clang reports its version as an older gcc, but it's OK
NSS_ENABLE_WERROR = 1 else ifneq (,$(filter 4.8 4.9,$(word 1,$(GCC_VERSION)).$(word 2,$(GCC_VERSION))))
NSS_ENABLE_WERROR = 1 endif ifeq (,$(filter 0 1 2 3 4,$(word 1,$(GCC_VERSION))))
NSS_ENABLE_WERROR = 1 endif endif
ifndef NSS_ENABLE_WERROR
$(warning Unable to find gcc 4.8 or greater, disabling -Werror)
NSS_ENABLE_WERROR = 0 endif endif endif#ndef NSS_ENABLE_WERROR
ifeq ($(NSS_ENABLE_WERROR),1)
WARNING_CFLAGS += -Werror else # Old versions of gcc (< 4.8) don't support #pragma diagnostic in functions. # Use this to disable use of that #pragma and the warnings it suppresses.
WARNING_CFLAGS += -DNSS_NO_GCC48 endif endif export WARNING_CFLAGS endif# ndef WARNING_CFLAGS
Messung V0.5
¤ Dauer der Verarbeitung: 0.19 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.