Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Aug 2007 20:52:20 GMT
From:      Coleman Kane <cokane@FreeBSD.org>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/115694: devel/gccxml won't compile on 7.0 due to new restrictions on casting lvalues
Message-ID:  <200708212052.l7LKqKbf077006@www.freebsd.org>
Resent-Message-ID: <200708212100.l7LL03RG020016@freefall.freebsd.org>

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

>Number:         115694
>Category:       ports
>Synopsis:       devel/gccxml won't compile on 7.0 due to new restrictions on casting lvalues
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Aug 21 21:00:03 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator:     Coleman Kane
>Release:        7.0-CURRENT
>Organization:
>Environment:
FreeBSD erwin 7.0-CURRENT FreeBSD 7.0-CURRENT #0: Tue Aug 21 15:50:58 EDT 2007 root@erwin:/usr/obj/usr/src/sys/ERWIN  amd64
>Description:
When FreeBSD 7.0 was moved to GCC 4.2.0, the port devel/gccxml was broken. This was due to a compiler restriction that no longer allows the following constructs:

*((int*)not_int_array_ptr)++;

The new compiler rules do not allow for casted types to be lvalues. Rather, you must cast the rvalue to the type of the lvalue to get it to compile.

In addition, as added severity, the WITH_PYSTE option to devel/boost depends upon devel/gccxml.
>How-To-Repeat:
cd /usr/ports/devel/gccxml && make


>Fix:
Attached patch that forces the compiler to be GCC 3.4 where OSVERSION >= 700000, rather than BROKENing it on that arch.

Patch attached with submission follows:

--- Makefile.orig	2007-08-21 16:50:27.000000000 -0400
+++ Makefile	2007-08-21 16:42:09.000000000 -0400
@@ -31,6 +31,7 @@
 	${REINPLACE_CMD} -e "s,x86_64,amd64," \
 		${WRKSRC}/../gccxml-0.6.0/GCC/gcc/config.gcc
 	cd ${WRKSRC} && \
+	${SETENV} ${CONFIGURE_ENV} \
 	${LOCALBASE}/bin/cmake ../${DISTNAME} -DCMAKE_INSTALL_PREFIX:PATH=${PREFIX} \
 	  -DGCCXML_MAN_DIR:PATH="/man"
 
@@ -39,7 +40,16 @@
 .if ${ARCH} == "alpha"
 BROKEN=		Build fails on alpha
 .elif ${OSVERSION} >= 700000
-BROKEN=		Does not compile
+# GCC-XML has some constructs that GCC 4.2 does not like. Namely,
+# the use of casted-pointer-dereferences as an lvalue to post-increment
+# operations.
+USE_GCC= 3.4
+CONFIGURE_ENV+=	CC=${LOCALBASE}/bin/gcc34 \
+		CPP="${CC} -E" \
+		CXX=${LOCALBASE}/bin/g++34
+MAKE_ENV+=	CC=${LOCALBASE}/bin/gcc34 \
+		CPP="${CC} -E" \
+		CXX=${LOCALBASE}/bin/g++34
 .endif
 
 .include <bsd.port.post.mk>


>Release-Note:
>Audit-Trail:
>Unformatted:



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