fortran compiler issues in port

Stephen Montgomery-Smith stephen at
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