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
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}
_______________________________________________
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to