From owner-freebsd-ports@FreeBSD.ORG Fri Jan 30 06:34:04 2015 Return-Path: Delivered-To: ports@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D86F3CBF; Fri, 30 Jan 2015 06:34:04 +0000 (UTC) Received: from udns.ultimatedns.net (ultimatedns.net [209.180.214.225]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 51987995; Fri, 30 Jan 2015 06:34:02 +0000 (UTC) Received: from ultimatedns.net (localhost [127.0.0.1]) by udns.ultimatedns.net (8.14.9/8.14.9) with ESMTP id t0U6XsC4006648; Thu, 29 Jan 2015 22:33:54 -0800 (PST) (envelope-from bsd-lists@bsdforge.com) To: ports@FreeBSD.org, Don Lewis In-Reply-To: <201501300345.t0U3jHwb008745@gw.catspoiler.org> References: <201501300345.t0U3jHwb008745@gw.catspoiler.org> From: "Chris H" Subject: Re: testing the value of ${CXX} in ports Makefile Date: Thu, 29 Jan 2015 22:33:54 -0800 Content-Type: text/plain; charset=UTF-8; format=fixed MIME-Version: 1.0 Message-id: Content-Transfer-Encoding: 8bit X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jan 2015 06:34:04 -0000 On Thu, 29 Jan 2015 19:43:38 -0800 (PST) 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: > > PORTNAME= junk > PORTVERSION= 0.0.0 > CATEGORIES= devel > DISTFILES= > > MAINTAINER= truckman@FreeBSD.org > COMMENT= junk > > USE_GCC= 4.9+ > > .include > > post-patch: > echo CXX=${CXX} > .if ${CXX} == g++49 > echo detected g++49 > .else > echo did not detect g++49 > .endif > > .include > > > If I run "make patch", this is what I get: > > # make patch > ===> junk-0.0.0 depends on file: /usr/local/sbin/pkg - found > ===> Fetching all distfiles required by junk-0.0.0 for building > ===> Extracting for junk-0.0.0 > ===> Patching for junk-0.0.0 > echo CXX=g++49 > CXX=g++49 > echo did not detect g++49 > did not detect g++49 > > > If I run "make -dA patch" and look at the debug output, I observe > bsd.gcc.mk getting processed after the .if is evaluated. When the .if > is processed, the value of ${CXX} is still c++. It sort of looks like > bsd.gcc.mk isn't getting included until bsd.port.post.mk and we are > relying on lazy expansion to get the correct value of ${CXX} for the > actions. > > It sort of looks like I'll have to do something like: > > post-patch: > [ ${CXX} = g++49 ] && echo detected g++49 > > but that just seems goofy. I'm not attempting to come off as any sot of expert. But it seems like you're going the long way around. Couldn't you just as easily REQUIRE, or perhaps even better; simply reverse the logic; if ${CXX} != g++49 @VOMIT endif It'd be shorter, and still assures the results you require, no? Just a thought. --Chris > > > > _______________________________________________ > freebsd-ports@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-ports > To unsubscribe, send any mail to "freebsd-ports-unsubscribe@freebsd.org"