From owner-svn-ports-head@FreeBSD.ORG Wed Oct 9 00:46:22 2013 Return-Path: Delivered-To: svn-ports-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 746A4D92; Wed, 9 Oct 2013 00:46:22 +0000 (UTC) (envelope-from bdrewery@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 61AD92E0F; Wed, 9 Oct 2013 00:46:22 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r990kMo0081507; Wed, 9 Oct 2013 00:46:22 GMT (envelope-from bdrewery@svn.freebsd.org) Received: (from bdrewery@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r990kMFh081506; Wed, 9 Oct 2013 00:46:22 GMT (envelope-from bdrewery@svn.freebsd.org) Message-Id: <201310090046.r990kMFh081506@svn.freebsd.org> From: Bryan Drewery Date: Wed, 9 Oct 2013 00:46:22 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r329852 - head/Mk/Uses X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Oct 2013 00:46:22 -0000 Author: bdrewery Date: Wed Oct 9 00:46:21 2013 New Revision: 329852 URL: http://svnweb.freebsd.org/changeset/ports/329852 Log: Revert r329829 to restore compiler.mk Added: head/Mk/Uses/compiler.mk - copied unchanged from r329828, head/Mk/Uses/compiler.mk Copied: head/Mk/Uses/compiler.mk (from r329828, head/Mk/Uses/compiler.mk) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/Mk/Uses/compiler.mk Wed Oct 9 00:46:21 2013 (r329852, copy of r329828, head/Mk/Uses/compiler.mk) @@ -0,0 +1,116 @@ +# $FreeBSD$ +# +# Allows to feature determine the compiler used +# +# MAINTAINER: portmgr@FreeBSD.org +# +# Feature: compiler +# Usage: USES=compiler or USES=compiler:ARGS +# Valid ARGS: env (default, implicit) c++11-lib c++11-lang c11 features +# +# c++11-lang: The port need a compiler understanding C++11 +# c++11-lib: The port need a compiler understanding C++11 and with a C++11 ready standard library +# c11: The port need a compiler understanding c11 +# features: The port will determine the features supported by the default compiler +# +# Variable to test after +# +# COMPILER_TYPE: can be gcc or clang +# COMPILER_VERSION: 2 first digit of the version: 33 for clang 3.3.*, 46 for gcc 4.6.* +# +# COMPILER_FEATURES: the list of features supported by the compiler include the standard C++ library. + +.if !defined(_INCLUDE_USES_COMPILER_MK) +_INCLUDE_USES_COMPILER_MK= yes + +.if !defined(compiler_ARGS) +compiler_ARGS= env +.endif + +VALID_ARGS= c++11-lib c++11-lang c11 features env + +.if ${compiler_ARGS} == c++11-lib +_COMPILER_ARGS+= features c++11-lib +.elif ${compiler_ARGS} == c++11-lang +_COMPILER_ARGS+= features c++11-lang +.elif ${compiler_ARGS} == c11 +_COMPILER_ARGS+= features c11 +.elif ${compiler_ARGS} == features +_COMPILER_ARGS+= features +.elif ${compiler_ARGS} == env +_COMPILER_ARGS+= env +.else +IGNORE= Invalid argument "${compiler_ARGS}", valid arguments are: ${VALID_ARGS} +_COMPILER_ARGS= # +.endif + +.if ${_COMPILER_ARGS:Mc++11*} || ${_COMPILER_ARGS:Mc11} +_COMPILER_ARGS+= features +.endif + +_CCVERSION!= ${CC} --version +COMPILER_VERSION= ${_CCVERSION:M[0-9].[0-9]*:C/([0-9]).([0-9]).*/\1\2/g} +.if ${_CCVERSION:Mclang} +COMPILER_TYPE= clang +.elif ${_CCVERSION:Mgcc*} || ${_CCVERSION:M\(GCC\)} +COMPILER_TYPE= gcc +.endif + +.if ${_COMPILER_ARGS:Mfeatures} +_CXXINTERNAL!= ${CXX} -\#\#\# /dev/null 2>&1 +.if ${_CXXINTERNAL:M\"-lc++\"} +COMPILER_FEATURES= libc++ +.else +COMPILER_FEATURES= libstdc++ +.endif + +CSTD= c89 c99 c11 gnu89 gnu99 gnu11 +CXXSTD= c++98 c++11 gnu++98 gnu++11 + +.for std in ${CSTD} ${CXXSTD} +_LANG=c +.if ${CXXSTD:M${std}} +_LANG=c++ +.endif +OUTPUT_${std}!= echo | ${CC} -std=${std} -c -x ${_LANG} /dev/null -o /dev/null 2>&1; echo +.if !${OUTPUT_${std}:M*error*} +COMPILER_FEATURES+= ${std} +.endif +.endfor +.endif + +.if ${_COMPILER_ARGS:Mc++11-lib} +.if !${COMPILER_FEATURES:Mc++11-lang} +USE_GCC= yes +.elif ${COMPILER_TYPE} == clang && ${COMPILER_FEATURES:Mc++11-lib} +USE_GCC= yes +.endif +.endif + +.if ${_COMPILER_ARGS:Mc++11-lang} +.if !${COMPILER_FEATURES:Mc++11} +.if defined(FAVORITE_COMPILER) && ${FAVORITE_COMPILER} == gcc +USE_GCC= yes +.elif (${COMPILER_TYPE} == clang && ${COMPILER_VERSION} < 33) || ${COMPILER_TYPE} == gcc +BUILD_DEPENDS+= ${LOCALBASE}/bin/clang33:${PORTSDIR}/lang/clang33 +CPP= ${LOCALBASE}/bin/clang-cpp33 +CC= ${LOCALBASE}/bin/clang33 +CXX= ${LOCALBASE}/bin/clang++33 +.endif +.endif +.endif + +.if ${_COMPILER_ARGS:Mc11} +.if !${COMPILER_FEATURES:Mc11} +.if defined(FAVORITE_COMPILER) && ${FAVORITE_COMPILER} == gcc +USE_GCC= yes +.elif (${COMPILER_TYPE} == clang && ${COMPILER_VERSION} < 33) || ${COMPILER_TYPE} == gcc +BUILD_DEPENDS+= ${LOCALBASE}/bin/clang33:${PORTSDIR}/lang/clang33 +CPP= ${LOCALBASE}/bin/clang-cpp33 +CC= ${LOCALBASE}/bin/clang33 +CXX= ${LOCALBASE}/bin/clang++33 +.endif +.endif +.endif + +.endif