Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 Jan 2012 21:22:27 -0500
From:      Wesley Shields <wxs@FreeBSD.org>
To:        gerald@FreeBSD.org
Cc:        ports@FreeBSD.org
Subject:   USE_GCC and CC=clang
Message-ID:  <20120109022227.GA95792@atarininja.org>

next in thread | raw e-mail | index | archive | help

--0F1p//8PRICkK4MW
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

I'm trying to fix a port which absolutely will not build with clang,
since clang does not support the gcc extension used by this port. I set
USE_GCC=4.2+, which is the lowest version of GCC which will work, but it
doesn't properly override CC=clang.

wxs@ack spamdyke % env CC=clang make test-gcc | grep -E "^(CC|USE_GCC)"
USE_GCC=4.2+
CC=clang - CXX=c++ - CPP=cpp - CFLAGS="-O2 -pipe -fno-strict-aliasing"
wxs@ack spamdyke % 

I understand this is probably an acceptable behavior, since if the user
sets CC=clang they are explicitly asking to build with clang. However,
in the case of a port known to not work with clang, and more importantly
not able to be fixed, I was hoping there was a knob I could set that
would forcible override any compiler related environment variables which
may be set. I didn't find one, so I came up with this quick (and poorly
tested) patch to do so.

The patch allows ports to set GCC_REQUIRED=yes which will forcible
override the environment variables. Maybe it makes sense to spit out a
warning message saying "I know you asked me to use clang, but this port
is known to be broken with clang, and will never be fixed so I'm
altering your choice."

Here's the output with the patch applied:

wxs@ack spamdyke % env CC=clang make test-gcc | grep -E "^(CC|USE_GCC)"
USE_GCC=4.2+
CC=gcc42 - CXX=g++42 - CPP=cpp42 - CFLAGS="-O2 -pipe
-Wl,-rpath=/usr/local/lib/gcc42 -fno-strict-aliasing"
wxs@ack spamdyke % 

-- WXS

--0F1p//8PRICkK4MW
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="bsd.gcc.mk.diff"

Index: bsd.gcc.mk
===================================================================
RCS file: /ncvs/ports/Mk/bsd.gcc.mk,v
retrieving revision 1.62
diff -u -r1.62 bsd.gcc.mk
--- bsd.gcc.mk	12 Nov 2011 22:03:55 -0000	1.62
+++ bsd.gcc.mk	9 Jan 2012 01:58:55 -0000
@@ -181,7 +181,7 @@
 # dependencies, CC, CXX, CPP, and flags.
 .for v in ${GCCVERSIONS}
 . if ${_USE_GCC} == ${_GCCVERSION_${v}_V}
-.  if ${OSVERSION} < ${_GCCVERSION_${v}_L} || ${OSVERSION} > ${_GCCVERSION_${v}_R}
+.  if ${OSVERSION} < ${_GCCVERSION_${v}_L} || ${OSVERSION} > ${_GCCVERSION_${v}_R} || defined(GCC_REQUIRED)
 V:=			${_GCCVERSION_${v}_V:S/.//}
 _GCC_BUILD_DEPENDS:=	gcc${V}
 _GCC_PORT_DEPENDS:=	gcc${V}

--0F1p//8PRICkK4MW--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120109022227.GA95792>