diff --git a/coreconf/FreeBSD.mk b/coreconf/FreeBSD.mk --- coreconf/FreeBSD.mk +++ coreconf/FreeBSD.mk @@ -21,7 +21,7 @@ ifeq ($(CPU_ARCH),amd64) CPU_ARCH = x86_64 endif -OS_CFLAGS = $(DSO_CFLAGS) -ansi -Wall -Wno-switch -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK +OS_CFLAGS = $(DSO_CFLAGS) -Wall -Wno-switch -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK DSO_CFLAGS = -fPIC DSO_LDOPTS = -shared -Wl,-soname -Wl,$(notdir $@) diff --git a/coreconf/NetBSD.mk b/coreconf/NetBSD.mk --- coreconf/NetBSD.mk +++ coreconf/NetBSD.mk @@ -26,7 +26,7 @@ else DLL_SUFFIX = so.1.0 endif -OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) -ansi -Wall -Wno-switch -pipe -DNETBSD -Dunix -DHAVE_STRERROR -DHAVE_BSD_FLOCK +OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) -Wall -Wno-switch -pipe -DNETBSD -Dunix -DHAVE_STRERROR -DHAVE_BSD_FLOCK OS_LIBS = -lcompat diff --git a/coreconf/OpenBSD.mk b/coreconf/OpenBSD.mk --- coreconf/OpenBSD.mk +++ coreconf/OpenBSD.mk @@ -26,7 +26,7 @@ endif DLL_SUFFIX = so.1.0 -OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) -ansi -Wall -Wno-switch -pipe -DOPENBSD +OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) -Wall -Wno-switch -pipe -DOPENBSD OS_LIBS = diff --git a/coreconf/Werror.mk b/coreconf/Werror.mk --- coreconf/Werror.mk +++ coreconf/Werror.mk @@ -5,6 +5,15 @@ # This sets WARNING_CFLAGS for gcc-like compilers. +ifndef CC_IS_CLANG + CC_IS_CLANG := $(and $(findstring clang, $(shell $(CC) --version 2>&1)), 1) + # Clang claims GCC 4.2.1 compatibility, see GCC_VERSION + CC_IS_GCC = 1 + # Export CC_IS_CLANG and CC_IS_GCC to save a shell invocation when recursing. + export CC_IS_CLANG + 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. @@ -38,7 +44,7 @@ ifndef WARNING_CFLAGS 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) + 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 @@ -62,10 +68,10 @@ ifndef WARNING_CFLAGS NSS_ENABLE_WERROR = 0 $(warning OS_TARGET is Android, disabling -Werror) else - ifeq ($(CC_NAME),clang) + ifdef CC_IS_CLANG # Clang reports its version as an older gcc, but it's OK NSS_ENABLE_WERROR = 1 - else ifeq ($(CC_NAME),gcc) + else ifdef CC_IS_GCC ifneq (,$(filter 4.8 4.9,$(word 1,$(GCC_VERSION)).$(word 2,$(GCC_VERSION)))) NSS_ENABLE_WERROR = 1 endif diff --git a/lib/freebl/Makefile b/lib/freebl/Makefile --- lib/freebl/Makefile +++ lib/freebl/Makefile @@ -484,7 +484,7 @@ endif # poly1305-donna-x64-sse2-incremental-source.c requires __int128 support # in GCC 4.6.0. -ifeq ($(CC_NAME),clang) +ifdef CC_IS_CLANG HAVE_INT128_SUPPORT = 1 else ifeq (1,$(CC_IS_GCC)) ifneq (,$(filter 4.6 4.7 4.8 4.9,$(word 1,$(GCC_VERSION)).$(word 2,$(GCC_VERSION)))) @@ -697,8 +697,8 @@ ifdef INTEL_GCM # symbolic names to registers, for example, # .set Htbl, %rdi # So we can't use Clang's integrated assembler with intel-gcm.s. -ifneq (,$(findstring clang,$(shell $(AS) --version))) -$(OBJDIR)/$(PROG_PREFIX)intel-gcm$(OBJ_SUFFIX): ASFLAGS += -no-integrated-as +ifdef CC_IS_CLANG +$(OBJDIR)/$(PROG_PREFIX)intel-gcm$(OBJ_SUFFIX): CFLAGS += -no-integrated-as endif endif