linking c/c++ code against fortran libraries
Mark Moll
mmoll at macports.org
Sat May 31 09:44:52 PDT 2008
On May 31, 2008, at 8:21 AM, Takeshi Enomoto wrote:
> Hi,
>
>> However, to properly link against libfoo.a I also need to
>> include "-lgfortran".
>
> With a fortran compiler, necessary libraries will be linked.
Yes, but I can't specify in a Portfile two compilers (one for
compiling c/c++ code, and one for linking the object files). Below is
how I currently attempt to get around this problem in the arpack
variant of the slepc port. Arpack is a port for a Fortran library,
slepc is a port for a C++ library. I am open to suggestions for
improvement.
variant arpack description {compile with ARPACK support} {
pre-fetch {
if {![file exists ${prefix}/lib/libparpack.a]} {
return -code error "Please install the mpi variant of
arpack first."
}
}
# This is a rather fragile way to figure out where the fortran
library can be
# found that is needed to link against libparpack.a:
if {[file exists ${prefix}/lib/gcc43]} {
set fortrandir ${prefix}/lib/gcc43
} else {
if {[file exists ${prefix}/lib/gcc42]} {
set fortrandir ${prefix}/lib/gcc42
} else {
if {[file exists ${prefix}/lib/g95]} {
set fortrandir ${prefix}/lib/gcc95
} else {
return -code error "Please install a fortran compiler
by installing one of the following ports: gcc42, gcc43, or g95."
}
}
}
depends_lib-append port:arpack
configure.args-append --with-arpack-dir=${fortrandir} \
--with-arpack-flags=-lparpack,-larpack,-lgfortran,-
lmpi_f77
}
--
Mark
--
Mark
More information about the macports-dev
mailing list