cherry-picked mozilla NSS upstream changes (to rev 50769413, which is on par with 3.21):
bug1009429, bug1216505, bug1208405, bug1216501, bug1216993, bug1216318, bug1218254, bug1219165, bug1211568, bug1220016
2020-01-07 15:06:51 +01:00
|
|
|
#
|
|
|
|
# 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 flags for unix-like operating systems.
|
|
|
|
|
|
|
|
ifndef CC_NAME
|
|
|
|
CC_NAME := $(shell $(CC) -? 2>&1 >/dev/null | sed -e 's/:.*//;1q')
|
|
|
|
export CC_NAME
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifndef WARNING_CFLAGS
|
|
|
|
# This tests to see if enabling the warning is possible before
|
|
|
|
# setting an option to disable it.
|
|
|
|
disable_warning = $(shell $(CC) -x c -E -Werror -W$(1) /dev/null >/dev/null 2>&1 && echo -Wno-$(1))
|
|
|
|
|
|
|
|
WARNING_CFLAGS = -Wall
|
|
|
|
ifeq ($(CC_NAME),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
|
|
|
|
OS_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
|
|
|
|
ifeq ($(CC_NAME),clang)
|
|
|
|
# Clang reports its version as an older gcc, but it's OK
|
|
|
|
NSS_ENABLE_WERROR = 1
|
|
|
|
else
|
|
|
|
CC_VERSION := $(subst ., ,$(shell $(CC) -dumpversion))
|
|
|
|
ifneq (,$(filter 4.8 4.9,$(word 1,$(CC_VERSION)).$(word 2,$(CC_VERSION))))
|
|
|
|
NSS_ENABLE_WERROR = 1
|
|
|
|
endif
|
|
|
|
ifeq (,$(filter 0 1 2 3 4,$(word 1,$(CC_VERSION))))
|
|
|
|
NSS_ENABLE_WERROR = 1
|
|
|
|
endif
|
|
|
|
ifndef NSS_ENABLE_WERROR
|
|
|
|
$(warning Unable to find gcc 4.8 or greater, disabling -Werror)
|
|
|
|
NSS_ENABLE_WERROR = 0
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif #ndef NSS_ENABLE_WERROR
|
|
|
|
|
|
|
|
ifeq ($(NSS_ENABLE_WERROR),1)
|
|
|
|
WARNING_CFLAGS += -Werror
|
cherry-picked mozilla NSS upstream changes (to rev 632864c9, which is on par with 3.21.4):
bug1221620, bug1244324, bug1241034, bug1206283, bug1241037, bug1245528, bug1293334, bug1306103, bug1345089, bug1344380
2020-01-07 15:30:39 +01:00
|
|
|
# For gcc 6 and newer we need -Wno-error=misleading-indentation
|
|
|
|
# to prevent compiler errors caused by mixed whitespace.
|
|
|
|
CC_VERSION := $(subst ., ,$(shell $(CC) -dumpversion))
|
|
|
|
ifeq (,$(filter 0 1 2 3 4 5,$(word 1,$(CC_VERSION))))
|
|
|
|
WARNING_CFLAGS += -Wno-error=misleading-indentation
|
|
|
|
endif
|
cherry-picked mozilla NSS upstream changes (to rev 50769413, which is on par with 3.21):
bug1009429, bug1216505, bug1208405, bug1216501, bug1216993, bug1216318, bug1218254, bug1219165, bug1211568, bug1220016
2020-01-07 15:06:51 +01:00
|
|
|
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
|
|
|
|
export WARNING_CFLAGS
|
|
|
|
endif # ndef WARNING_CFLAGS
|