[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [netcdfgroup] nc-config and @NC_FLIBS@



Hi Thomas,

> > shell$ nc-config --flibs
> > -L/some/path/lib @NC_FLIBS@
>
> Oh, I see ... there is nf-config now. I have to adapt my Makefile, then,
> for another case. Now it would be rather smart if nc-config would call
> nf-config transparently for fortran stuff, eh? Even better: What
> exactly is the reason not to provide files for pkg-config instead? Now
> we have two config scripts for NetCDF, I guess three with the C++
> interface. It gets messy and I wonder what for.
>
> But, well, putting a hint about nf-config in some docs would also be
> nice... it may be obvious, but I was not looking for it; just trying
> to get NetCDF re-installed quickly to get working Fortran module again
> (because of non-existent binary compatibility even between versions of
> the same compiler).

The functionality is there, but as you've pointed out, it's not properly
documented and it looks like there were bugs using pkg-config for
netcdf-fortran.  The pkg-config files for the netCDF 4.2 C and
Fortran packages get installed when you invoke "make install", e.g. for
version 4.2 of netcdf and netcdf-fortran:

  /usr/local/lib/pkgconfig:
  -rw-r--r--  1 root root  315 Mar 27 12:45 netcdf-fortran.pc
  -rw-r--r--  1 root root  305 Mar 26 12:37 netcdf.pc

The C library pkg-config seems to work OK:

  $ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
  $ pkg-config --cflags --libs netcdf
  -I/usr/local/include  -L/usr/local/lib -lnetcdf

I've just tidied-up the C pkg-config file and redone the Fortran file,
by modifying the top-level files netcdf.pc.in and netcdf-fortran.pc.in
in the snapshot releases for each package.  I've also documented the use
of pkg-config for the Fortran version 4.2 library with a couple of
examples in the man4/netcdf-f77.texi and man4/netcdf-f90.texi files. 

Basically it's used like this:

  $ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
  $ f90 myprogram.f90 -o myprogram `pkg-config --cflags --libs netcdf-fortran`

where here `--cflags' means *compiler* flags and `libs' requests that
the appropriate libraries be linked in, so it's different from the
nf-config options of "fflags" and "flibs", but consistent with the
pkg-config conventions.

If you want to try these, you can get just the netcdf.pc.in and
netcdf-fortran.pc.in files from our svn tree:

  http://svn.unidata.ucar.edu/repos/netcdf/trunk/netcdf.pc.in
  http://svn.unidata.ucar.edu/repos/netcdf-fortran/trunk/netcdf-fortran.pc.in

Then put them in the top-level directories of the C and Fortran
releases, configure, make check, and make install.  The generated
pkg-config files get installed in the ${prefix}/lib/pkgconfig directory.

Thanks for pointing out the problems.  Please let me know if you have
other improvements to suggest.  I wasn't able to figure out what was
meant by

> ... nc-config would call nf-config transparently for fortran stuff

but I think pkg-config is a more scalable solution.

--Russ