Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Jan 2015 16:02:31 -0800 (PST)
From:      Don Lewis <truckman@FreeBSD.org>
To:        kamikaze@bsdforen.de
Cc:        ports@FreeBSD.org, elizabeth@interlinked.me
Subject:   Re: testing the value of ${CXX} in ports Makefile
Message-ID:  <201501310002.t0V02VjT017462@gw.catspoiler.org>
In-Reply-To: <54CB9416.5020802@bsdforen.de>

next in thread | previous in thread | raw e-mail | index | archive | help
On 30 Jan, Dominic Fandrey wrote:
> On 30/01/2015 07:28, Don Lewis wrote:
>> On 29 Jan, Elizabeth Myers wrote:
>>> On 01/29/15 21:43, Don Lewis wrote:
>>>> I need to test the value of ${CXX} in the Makefile for a port and am
>>>> getting unexpected results.  Here is a simplified version of the
>>>> Makefile:
>>>>
>>>> ...
>>>> USE_GCC=	4.9+
>>>>
>>>> .include <bsd.port.pre.mk>
>>>>
>>>> post-patch:
>>>> 	echo CXX=${CXX}
>>>> .if ${CXX} == g++49
>>>> 	echo detected g++49
>>>> .else
>>>> 	echo did not detect g++49
>>>> .endif
>>>>
>>>> .include <bsd.port.post.mk>
>>>>
>>>> ...
>> 
>>> Why do you need to detect it? Shouldn't USE_GCC ensure it's there? In
>>> any case, browsing through the ports tree, you could try .if
>>> !empty(CXX:M*g++49*)
>> 
>> With USE_GCC=yes, CXX will currently get set to g++48, but at some point
>> the default version will get upgraded to 4.9.  Unfortunately, that
>> breaks the port build unless I apply an extra patch to the source.  I
>> could set USE_GCC=4.8, but once the default version of gcc gets updated,
>> anyone who uses the port will need both gcc 4.8 for this port and 4.9
>> for the majority of parts that just use USE_GCC=yes to get the default.
> 
> Just check against: ${GCC_DEFAULT:M4.9}

${GCC_DEFAULT} isn't even set at that point.

# cat Makefile 
PORTNAME=	junk
PORTVERSION=	0.0.0
CATEGORIES=	devel
DISTFILES=

MAINTAINER=	truckman@FreeBSD.org
COMMENT=	junk

USE_GCC=	4.9+

.include <bsd.port.pre.mk>

post-patch:
	@echo CXX=${CXX}
	@echo GCC_DEFAULT=${GCC_DEFAULT}
.if defined(${GCC_DEFAULT})
	@echo GCC_DEFAULT is set.
.else
	@echo GCC_DEFAULT is not set.
.endif

.include <bsd.port.post.mk>

# make patch
===>  Patching for junk-0.0.0
CXX=g++49
GCC_DEFAULT=4.8
GCC_DEFAULT is not set.

For the purposes of variable expansion for .if statements, those
variables are not set until after .include <bsd.port.post.mk>, and we're
not allow to put anything in the Makefile after that.




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