homebrew-core/Formula/netcdf.rb
nibbles 2bits 61b85a5e3b netcdf: fix for ifort and missing f90 symbols
Netcdf when built with `--enable-fortran` using the Intel Fortran
compiler, ifort, does accept the `--force-load` option, causing a
build error where libnetcdff.dylib is missing all the f90 symbols.
The solution is in a FAQ on their website:
  Set lt_cv_ld_force_load=no

http://www.unidata.ucar.edu/software/netcdf/docs/known_problems.html#intel-fortran-macosx

Fixes Homebrew/homebrew#13050.
Closes Homebrew/homebrew#13174.

Signed-off-by: Charlie Sharpsteen <source@sharpsteen.net>
2012-07-03 05:50:42 -08:00

76 lines
2 KiB
Ruby

require 'formula'
def fortran?
ARGV.include? '--enable-fortran'
end
def no_cxx?
ARGV.include? '--disable-cxx'
end
class NetcdfCXX < Formula
homepage 'http://www.unidata.ucar.edu/software/netcdf'
url 'http://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-cxx4-4.2.tar.gz'
md5 'd019853802092cf686254aaba165fc81'
end
class NetcdfFortran < Formula
homepage 'http://www.unidata.ucar.edu/software/netcdf'
url 'http://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-fortran-4.2.tar.gz'
md5 'cc3bf530223e8f4aff93793b9f197bf3'
end
class Netcdf < Formula
homepage 'http://www.unidata.ucar.edu/software/netcdf'
url 'http://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-4.2.tar.gz'
md5 'b920a6c3a30e9cd46fe96d9fb65ef17e'
depends_on 'hdf5'
def options
[
['--enable-fortran', 'Compile Fortran bindings'],
['--disable-cxx', "Don't compile C++ bindings"]
]
end
def install
if fortran?
ENV.fortran
# fix for ifort not accepting the --force-load argument, causing
# the library libnetcdff.dylib to be missing all the f90 symbols.
# http://www.unidata.ucar.edu/software/netcdf/docs/known_problems.html#intel-fortran-macosx
# https://github.com/mxcl/homebrew/issues/13050
ENV['lt_cv_ld_force_load'] = 'no' if ENV['FC'] == 'ifort'
end
common_args = %W[
--disable-dependency-tracking
--prefix=#{prefix}
--enable-static
--enable-shared
]
args = common_args.clone
args.concat %w[--enable-netcdf4 --disable-doxygen]
system './configure', *args
system 'make install'
# Add newly created installation to paths so that binding libraries can
# find the core libs.
ENV.prepend 'PATH', bin, ':'
ENV.prepend 'CPPFLAGS', "-I#{include}"
ENV.prepend 'LDFLAGS', "-L#{lib}"
NetcdfCXX.new.brew do
system './configure', *common_args
system 'make install'
end unless no_cxx?
NetcdfFortran.new.brew do
system './configure', *common_args
system 'make install'
end if fortran?
end
end