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>