fortran compiler issues in port

Harald Servat redcrash at gmail.com
Sun Oct 28 10:46:43 PDT 2007


2007/10/27, Stephen Montgomery-Smith <stephen at math.missouri.edu>:
>
> Harald Servat wrote:
> > Hello,
> >
> >   I'm a maintainer of a port which needs a fortran compiler. Due to the
> > inclusion of GCC 4.2 as the default compiler for FreeBSD 7.0 I'm facing
> a
> > problem with the port. My FreeBSD 6.2 box can compile fine my port using
> > f77, however the build farms do not compile successfully the port
> because
> > they use gfortran42 (which comes with GCC 4.2) and this compiler needs
> an
> > special flag to compile the port.
> >
> >   I was thinking to place an "if" statement checking if ${F77} is f77 or
> > gfortran42 and act in consequence like the code below:
> >
> > .if "${F77}" = "f77"
> > specific setting for F77
> > .elif "${F77}" = "gfortran42"
> > specific setting for gfortran42
> > .endif
> >
> >   However, there's an issue here, what will happen when gfortran43 is
> > installed? It won't work. Is there a clear way to check for "gfortran*"
> > instead of an specific version?
> >   As all gfortran compilers have the same specific needs for my port, I
> > think this should be a better and clearer way to solve the compiling
> problem
> > of my port.
>
> One possibility is to put "USE_FORTRAN" in your makefile.  Then if you
> are using FreeBSD 6.2, I think it will first install the gcc42 port, and
> then use that.
>
> But to specifically answer your question, maybe something like
>
> .elif "${F77:C/[[:digit:]]*//} = "gfortran"
>
> would work.  I admit I haven't tested it, but if it doesn't work
> something similar will.  You need to read "man make" (quite an easy
> document to read) and "man re_format" (quite a lot to take in, and not
> so easy to read).
>
>
Aha!, thank you very much for your answers. I'll take a look into the Mk and
the man files you pointed.

-- 
_________________________________________________________________
Empty your memory,
with a free()...
like a pointer!

If you cast a pointer to an integer,
it becomes an integer,
if you cast a pointer to a struct,
it becomes a struct.

The pointer can crash...,
and can overflow.

Be a pointer my friend...


More information about the freebsd-ports mailing list