svn commit: r279794 - stable/9/share/mk

Dimitry Andric dim at FreeBSD.org
Sun Mar 8 22:39:20 UTC 2015


Author: dim
Date: Sun Mar  8 22:39:19 2015
New Revision: 279794
URL: https://svnweb.freebsd.org/changeset/base/279794

Log:
  MFC r247527 (by brooks):
    Provide slightly more helpful feedback when we can't figure out what
    compiler the user is using.
  
    PR:		misc/173914
  
  MFC r265829 (by imp):
    Support, to the extent we generate proper command lines, compiling
    with clang 3.3. Useful for test building -current on a -stable system
    in individual directories. Potentially useful if we ever want to
    support, say, gcc 4.8 or 4.9's new warnings when building with an
    external toolchain (but such support not yet committed). Document
    the bsd.compiler.mk interface.
  
  MFC r266587 (by imp):
    Allow CC to not actually exist. During the ports INDEX run, all the
    Makefiles are evaluated without building things. In a normal build,
    the prerequisites would be built, and CC would be an actual thing. In
    an INDEX build, though, they don't exists. Redirect stderr to get rid
    of annoying messages, and assume that the compiler version is 0 if the
    actual compiler can't tell us. Do this in preference to guessing based
    on numbers because gcc410 might be 4.10, or 4.1.0 and without
    carefully crafted special knowledge we differentiate between them
    easily (also ming-gcc has no clues at all). Elsewhere, don't trust
    the compiler version if it is 0.
  
  MFC r273405 (by bapt):
    When using an external toolchain note that gcc 4.8+ supports C++11
  
    Submitted by:	imp
  
  MFC r275557 (by ngie):
    Fix typos in comments and wrap to <80 columns
  
  MFC r275588 (by ngie):
    ${CC} --version doesn't need to be queried if both COMPILER_TYPE and
    COMPILER_VERSION are known
  
  MFC r275589 (by ngie):
    The previous commit should have been a logical or not a logical "and"
  
    Pointyhat to: me

Modified:
  stable/9/share/mk/bsd.compiler.mk
  stable/9/share/mk/bsd.sys.mk   (contents, props changed)
Directory Properties:
  stable/9/   (props changed)
  stable/9/share/   (props changed)
  stable/9/share/mk/   (props changed)

Modified: stable/9/share/mk/bsd.compiler.mk
==============================================================================
--- stable/9/share/mk/bsd.compiler.mk	Sun Mar  8 22:39:01 2015	(r279793)
+++ stable/9/share/mk/bsd.compiler.mk	Sun Mar  8 22:39:19 2015	(r279794)
@@ -1,26 +1,52 @@
 # $FreeBSD$
 
+# Setup variables for the compiler
+#
+# COMPILER_TYPE is the major type of compiler. Currently gcc and clang support
+# automatic detection. Other compiler types can be shoe-horned in, but require
+# explicit setting of the compiler type. The compiler type can also be set
+# explicitly if, say, you install gcc as clang...
+#
+# COMPILER_VERSION is a numeric constant equal to:
+#     major * 10000 + minor * 100 + tiny
+# It too can be overriden on the command line. When testing it, be sure to
+# make sure that you are limiting the test to a specific compiler. Testing
+# against 30300 for gcc likely isn't  what you wanted (since versions of gcc
+# prior to 4.2 likely have no prayer of working).
+#
+# COMPILER_FEATURES will contain one or more of the following, based on
+# compiler support for that feature:
+#
+# - c++11 : supports full (or nearly full) C++11 programming environment.
+#
+# This file may be included multiple times, but only has effect the first time.
+#
+
+.if !defined(COMPILER_TYPE) || !defined(COMPILER_VERSION)
+_v!=	${CC} --version 2>/dev/null || echo 0.0.0
 .if !defined(COMPILER_TYPE)
-. if ${CC:T:Mgcc*}
+. if ${CC:T:M*gcc*}
 COMPILER_TYPE:=	gcc  
-. elif ${CC:T:Mclang}
+. elif ${CC:T:M*clang*}
 COMPILER_TYPE:=	clang
-. else
-_COMPILER_VERSION!=	${CC} --version
-.  if ${_COMPILER_VERSION:Mgcc}
+. elif ${_v:Mgcc}
 COMPILER_TYPE:=	gcc
-.  elif ${_COMPILER_VERSION:M\(GCC\)}
+. elif ${_v:M\(GCC\)}
 COMPILER_TYPE:=	gcc
-.  elif ${_COMPILER_VERSION:Mclang}
+. elif ${_v:Mclang}
 COMPILER_TYPE:=	clang
-.  else
-.error Unable to determine compiler type for ${CC}
-.  endif
-.  undef _COMPILER_VERSION
+. else
+.error Unable to determine compiler type for ${CC}.  Consider setting COMPILER_TYPE.
 . endif
 .endif
+.if !defined(COMPILER_VERSION)
+COMPILER_VERSION!=echo ${_v:M[1-9].[0-9]*} | awk -F. '{print $$1 * 10000 + $$2 * 100 + $$3;}'
+.endif
+.undef _v
+.endif
 
-.if ${COMPILER_TYPE} == "clang"
+.if ${COMPILER_TYPE} == "clang" || \
+	(${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} >= 40800)
 COMPILER_FEATURES=	c++11
 .else
 COMPILER_FEATURES=

Modified: stable/9/share/mk/bsd.sys.mk
==============================================================================
--- stable/9/share/mk/bsd.sys.mk	Sun Mar  8 22:39:01 2015	(r279793)
+++ stable/9/share/mk/bsd.sys.mk	Sun Mar  8 22:39:19 2015	(r279794)
@@ -65,7 +65,10 @@ CWARNFLAGS+=	-Wno-pointer-sign
 # is set to low values, these have to be disabled explicitly.
 .if ${COMPILER_TYPE} == "clang" && !defined(EARLY_BUILD)
 .if ${WARNS} <= 6
-CWARNFLAGS+=	-Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable
+CWARNFLAGS+=	-Wno-empty-body -Wno-string-plus-int
+.if ${COMPILER_VERSION} > 30300
+CWARNFLAGS+=	-Wno-unused-const-variable
+.endif
 .endif # WARNS <= 6
 .if ${WARNS} <= 3
 CWARNFLAGS+=	-Wno-tautological-compare -Wno-unused-value\


More information about the svn-src-stable-9 mailing list