Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Jan 2008 05:19:17 +0200
From:      "Ivan \"Rambius\" Ivanov" <rambiusparkisanius@gmail.com>
To:        "Giorgos Keramidas" <keramida@ceid.upatras.gr>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Slightly OT: Invoking a shell command from a Makeile
Message-ID:  <89ce7f740801271919n107c20a8v2341687285728fb1@mail.gmail.com>
In-Reply-To: <20080128005944.GA3072@kobe.laptop>
References:  <89ce7f740801271448x27371cf7lfe5255256fb498ec@mail.gmail.com> <20080128005944.GA3072@kobe.laptop>

next in thread | previous in thread | raw e-mail | index | archive | help
Hello Georgious,

On Jan 28, 2008 2:59 AM, Giorgos Keramidas <keramida@ceid.upatras.gr> wrote:
> On 2008-01-28 00:48, Ivan Rambius Ivanov <rambiusparkisanius@gmail.com> wrote:
> > Hello,
> >
> > I am developing a FreeBSD port and I would like to invoke a shell
> > command from it and assign its output to a variable. The command in
> > question is
> >
> > # make -f /usr/ports/lang/fpc/Makefile -V PORTVERSION
> >
> > and I have verified that it works on the command line.
> >
> > I try to use it in my port's Makefile in the following way:
> >
> > FPCVERSION=             `make -f /usr/ports/lang/fpc/Makefile -V PORTVERSION`
> >
> > but it fails with the following error
> >
> > Syntax error: EOF in backquote substitution
>
> Try the BSD-specific syntax which uses bang-equal assignment to grab the
> output of a shell command and assign it to a make variable:
>
>         FPCVERSION!= shell cmd here
>
> i.e. something like:
>
>         FPCVERSION!= make -f ${PORTSDIR}/lang/fpc/Makefile -V PORTVERSION
Yes, I found this out after some searching in google.

> I'm curious though.  Why do you have to find the value of the
> {PORTVERSION} from a Ports makefile?
>
> Perhaps there is already a `standard' feature of the Ports which can do
> something similar.  Have you asked around in freebsd-ports?
The port I am developing builds and installs a software called nbc
[1], [2]. It is written in Pascal and uses the freepascal compiler [3]
coming from lang/fpc port and some other pascal libraries called units
coming from devel/fpc-fcl-base. These units are installed into
/usr/local/lib/fpc/<portversion_of_fpc>, where portversion of_fpc is
the version of the freepascal compiler as defined in PORTVERSION
variable in fpc's Makefile. Currently it is 2.2.0. I do not want to
hardcode that number in nbc port's Makefile - I want to extract it on
the fly from fpc port's Makefile, this is why I am doing this trick.

Regards
Rambius

[1] http://bricxcc.sourceforge.net/nbc/
[2] http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/116274
[3] http://www.freepascal.org/

-- 
Tangra Mega Rock: http://www.radiotangra.com



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