fortran compiler issues in port
Stephen Montgomery-Smith
stephen at math.missouri.edu
Sat Oct 27 10:16:06 PDT 2007
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).
More information about the freebsd-ports
mailing list