From owner-freebsd-ports@FreeBSD.ORG Thu May 10 21:18:00 2012 Return-Path: Delivered-To: freebsd-ports@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5BC48106564A; Thu, 10 May 2012 21:18:00 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 4548B8FC12; Thu, 10 May 2012 21:17:58 +0000 (UTC) Received: from porto.starpoint.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id AAA09795; Fri, 11 May 2012 00:17:57 +0300 (EEST) (envelope-from avg@FreeBSD.org) Received: from localhost ([127.0.0.1]) by porto.starpoint.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1SSakH-0001Nd-76; Fri, 11 May 2012 00:17:57 +0300 Message-ID: <4FAC3084.80101@FreeBSD.org> Date: Fri, 11 May 2012 00:17:56 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:12.0) Gecko/20120503 Thunderbird/12.0.1 MIME-Version: 1.0 To: freebsd-ports@FreeBSD.org References: <4F578AA7.4060008@FreeBSD.org> <4F990D9A.3090100@FreeBSD.org> <4FA643FA.3050206@FreeBSD.org> <4FAB6E01.50108@FreeBSD.org> In-Reply-To: <4FAB6E01.50108@FreeBSD.org> X-Enigmail-Version: 1.5pre Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: Gerald Pfeifer Subject: Re: WITH_GCC X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 May 2012 21:18:00 -0000 on 10/05/2012 10:28 Andriy Gapon said the following: > Here's an updated version of the patch. > It should allow for initial bootstrapping of GCC itself. Next version of the patch... Hopefully it should handle the bootstrapping better by accounting for lang/gcc* ports dependencies and avoiding creating any circular dependencies. For simplicity the GCC ports and their dependencies are forced to be built with the base GCC, although this does not have to be required. --- /usr/ports/Mk/bsd.gcc.mk.orig 2012-05-06 11:12:55.628670003 +0300 +++ /usr/ports/Mk/bsd.gcc.mk 2012-05-10 18:49:27.218670582 +0300 @@ -98,6 +98,30 @@ CONFIGURE_ENV+= F77="${F77}" FC="${FC}" MAKE_ENV+= F77="${F77}" FC="${FC}" FFLAGS="${FFLAGS}" .endif +.if defined(WITH_GCC) && ${PORTNAME} != gcc + +# See if we can use a later version or exclusively the one specified. +_WITH_GCC:= ${WITH_GCC:S/+//} + +# Check if WITH_GCC points to a valid version. +.for v in ${GCCVERSIONS} +. for j in ${GCCVERSION_${v}} +. if ${_WITH_GCC}==${j} +_WITH_GCCVERSION_OKAY= true; +. endif +. endfor +.endfor + +.if !defined(_WITH_GCCVERSION_OKAY) +IGNORE= Unknown version of GCC specified (WITH_GCC=${WITH_GCC}) +.endif + +.if !defined(USE_GCC) +USE_GCC:= ${WITH_GCC} +.undef _WITH_GCC +.endif + +.endif # WITH_GCC .if defined(USE_GCC) @@ -143,6 +167,11 @@ IGNORE= Couldn't find your current GCCV # get the first available version. # .if defined(_GCC_ORLATER) +. if defined(_WITH_GCC) +. if ${_USE_GCC} < ${_WITH_GCC} +_USE_GCC:= ${_WITH_GCC} +. endif +. endif . for v in ${GCCVERSIONS} . if ${_USE_GCC} == ${_GCCVERSION_${v}_V} _GCC_MIN1:= true @@ -178,24 +207,39 @@ _USE_GCC:= ${GCC_DEFAULT_VERSION} . if ${_USE_GCC} == ${_GCCVERSION_${v}_V} . if ${OSVERSION} < ${_GCCVERSION_${v}_L} || ${OSVERSION} > ${_GCCVERSION_${v}_R} V:= ${_GCCVERSION_${v}_V:S/.//} -_GCC_BUILD_DEPENDS:= gcc${V} _GCC_PORT_DEPENDS:= gcc${V} +. if ${V} == ${GCC_DEFAULT_V} +_GCC_BUILD_DEPENDS:= gcc +. else +_GCC_BUILD_DEPENDS:= gcc${V} +. endif +_GCC_OWN_DEPENDS!= (cd ${PORTSDIR}/lang/${_GCC_BUILD_DEPENDS} && ${MAKE} -V _UNIFIED_DEPENDS) +. for _CURDIR in ${.CURDIR} # only loop variable are expanded in variable modifiers +. if ${_GCC_OWN_DEPENDS:M*\:${_CURDIR}} != "" +.undef _GCC_BUILD_DEPENDS +.undef _GCC_PORT_DEPENDS +. else CC:= gcc${V} CXX:= g++${V} CPP:= cpp${V} -. if ${_USE_GCC} != 3.4 +. if ${_USE_GCC} != 3.4 CFLAGS+= -Wl,-rpath=${LOCALBASE}/lib/${_GCC_BUILD_DEPENDS} +CFLAGS+= ${CFLAGS.${CC}} +CXXFLAGS+= ${CXXFLAGS.${CC}} LDFLAGS+= -Wl,-rpath=${LOCALBASE}/lib/${_GCC_BUILD_DEPENDS} -. if defined (USE_FORTRAN) -. if ${USE_FORTRAN} == yes +. if defined (USE_FORTRAN) +. if ${USE_FORTRAN} == yes FFLAGS+= -Wl,-rpath=${LOCALBASE}/lib/${_GCC_BUILD_DEPENDS} -. endif +. endif +. endif . endif . endif +. endfor . endif . endif .endfor .undef V +.undef _GCC_OWN_DEPENDS .if defined(_GCC_BUILD_DEPENDS) BUILD_DEPENDS+= ${_GCC_PORT_DEPENDS}:${PORTSDIR}/lang/${_GCC_BUILD_DEPENDS} -- Andriy Gapon