NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.

netCDF for Linux / shared libraries

Dear netCDf-users,

there was another question concerning netCDF and Linux - and since
I'm using netCDF's on various platforms including Linux I thought
someone might be interested in the following...

First, I had no difficulties at all to compile netCDF 2.4 beta 6
on Linux (Slackware 3.0 with ELF), and the binaries pass all tests
provided with the distribution.

Then, to include Fortran support, it is sufficient to add a symbolic link

           linux.m4 -> f2c.m4

in the `src/fortran' subdirectory before starting the compiling. A script
named `f77' should be available that drives f2c (there is one in the
standard Slackware). As far as I remember the `f2c.m4' file was provided
by myself a year ago or so, and it still works without problems. I actually
worked with an older version (2.3.2) for a long time on both Linux and
Solaris (with f2c instead of a real Fortran compiler), and I never
experienced any problems with the fortran interface.

A note concerning g77: Currently, g77 does not support the byte type, so
I have not yet written an m4-file for this compiler; however, since it
uses the same naming conventions as f2c, they probably will not differ
too much. I might look into this as soon as g77 supports byte and
integer*2...

Finally, Linux now uses the ELF library format (which is available with
Slackware 3.0), providing a simple way to build and use shared libraries.
This reduces the disk space needed by binaries; especially large sets of
programs like GMT will benefit from their availability. I therefore build
a set of ELF shared libraries and patched the Makefiles (or better the
`Makefile.in' and `master.mk.in' files in the distribution of netCDF 2.4b6)
in order to build shared and static libraries. I'll append the diffs at the
end of this mail.

To apply these: 

  - Untar the netCDF 2.4 beta 6 source code tree from the tar-file;

  - apply the patches _without_ cd'ing into the netCDF tree with

         patch < file_with_diffs   ;

  - cd to netcdf-2.4-beta6/src/fortran and add the necessary link
    for the fortran interface with the command

         ln -s f2c.m4 linux.m4   ;

  - run `configure' in the netcdf-2.4-beta6/src subdirectory;

  - run `make' and `make test' and `make install'.

Some (now really final) remarks:

c++: I don't know too much about c++, so I just can state that all tests
     during `make test' are passed succesfully;

IEEE: For some reason, configure does not detect the correct options to
     enable IEEE arithmetic under Linux. It can be enabled using the
     `-lieee' option at linktime (i.e., by linking with the `libieee.a'
     library). This (and the compilation with 486 optimizations) can be
     enforced by calling configure with

          CCFLAGS='-m486 -lieee' configure

     which will, however, give rise to a warning message during the
     compilation of each individual source code file (which can be ignored).

For those who do not like to compile their own version I have prepared
a tar file containing the libraries (static and shared), the ncdump and
ncgen progs, include files and documentation (man pages and info files)
which can easily be installed with Slackware's `installpkg'. They have been
build with `-m486', and they support IEEE arithmatic. Currently, they can
be obtained via anonymous ftp from

          strat06.met.fu-berlin.de    (160.45.75.6)
               ^
               |
               a `zero'

in the pub/netcdf directory. Along with the binary distribution you'll
find the appended diffs, a copy of this mail and another package with
a few contributed programs (nccat, gennet, ncrename, and ncks) which are
linked against the shared libraries.

I do not know how much interest there is in Linux binaries, but I could
continue to provide binary versions of the current netCDF release in static
and shared versions. If enough people think this would be useful, I would
be really thankful if someone could provide an anonymous ftp server;
strat06 is just my (slow) working PC at the university, and it is switched
off sometimes...

I would be happy to receive comments and tips for the patches to make them
more stable and useful.

 Regards from Berlin,


    Chris Marquardt            (marq@xxxxxxxxxxxxxxxxxxxxxxxx)






And here are the diff's...



-------- snip, snip ---------------------------------------------------------

diff -r -C3 netcdf-2.4-beta6.orig/src/Makefile.in 
netcdf-2.4-beta6/src/Makefile.in
*** netcdf-2.4-beta6.orig/src/Makefile.in       Mon Nov 13 21:46:03 1995
--- netcdf-2.4-beta6/src/Makefile.in    Wed Jan 31 22:10:48 1996
***************
*** 18,28 ****
      ncdump/all  ncdump/test  ncdump/install  ncdump/clean  ncdump/distclean \
      ncgen/all   ncgen/test   ncgen/install   ncgen/clean   ncgen/distclean \
      nctest/all  nctest/test                  nctest/clean  nctest/distclean \
!     libsrc/all  libsrc/test  libsrc/install  libsrc/clean  libsrc/distclean \
      xdr/all     xdr/test     xdr/install     xdr/clean     xdr/distclean \
      c++/all   c++/test     c++/install     c++/clean     c++/distclean
  
! all:          port/all xdr/all libsrc/all @FORTRAN_TARGET_ALL@ ncdump/all \
                ncgen/all nctest/all \
                @CXX_TARGET_ALL@ doc/all
  test:         xdr/test libsrc/test nctest/test @FORTRAN_TARGET_TEST@ \
--- 18,28 ----
      ncdump/all  ncdump/test  ncdump/install  ncdump/clean  ncdump/distclean \
      ncgen/all   ncgen/test   ncgen/install   ncgen/clean   ncgen/distclean \
      nctest/all  nctest/test                  nctest/clean  nctest/distclean \
!     libsrc/all  libsrc/library_so libsrc/test  libsrc/install  libsrc/clean  
libsrc/distclean \
      xdr/all     xdr/test     xdr/install     xdr/clean     xdr/distclean \
      c++/all   c++/test     c++/install     c++/clean     c++/distclean
  
! all:          port/all xdr/all libsrc/all @FORTRAN_TARGET_ALL@ 
libsrc/library_so ncdump/all \
                ncgen/all nctest/all \
                @CXX_TARGET_ALL@ doc/all
  test:         xdr/test libsrc/test nctest/test @FORTRAN_TARGET_TEST@ \
diff -r -C3 netcdf-2.4-beta6.orig/src/c++/Makefile.in 
netcdf-2.4-beta6/src/c++/Makefile.in
*** netcdf-2.4-beta6.orig/src/c++/Makefile.in   Thu Jan  4 04:08:38 1996
--- netcdf-2.4-beta6/src/c++/Makefile.in        Wed Jan 31 22:14:07 1996
***************
*** 29,42 ****
  PROG_OBJS     = nctst.o
  GARBAGE               = $(PROG) $(PROG_OBJS) $(LIBOBJS) test.out example.nc 
  
! all:          library $(PROG)
  
  test: expected $(PROG)
        ./$(PROG) > test.out
        @cmp expected test.out && \
            echo "*** C++ test successful ***" ;
  
! install:      installed_library installed_headers
  
  clean:                default_clean
        -rm -f $(PROG_OBJS) $(PROG) $(LIBOBJS) example.nc test.out
--- 29,48 ----
  PROG_OBJS     = nctst.o
  GARBAGE               = $(PROG) $(PROG_OBJS) $(LIBOBJS) test.out example.nc 
  
! #
! # Uncomment the following line if you have buildt shared libraries under Linux
! # and want to test ncdump without havin installed them.
! #
! export LD_LIBRARY_PATH := .:../libsrc:$(LD_LIBRARY_PATH)
! 
! all:          library library_so $(PROG)
  
  test: expected $(PROG)
        ./$(PROG) > test.out
        @cmp expected test.out && \
            echo "*** C++ test successful ***" ;
  
! install:      installed_library installed_headers library library_so
  
  clean:                default_clean
        -rm -f $(PROG_OBJS) $(PROG) $(LIBOBJS) example.nc test.out
diff -r -C3 netcdf-2.4-beta6.orig/src/fortran/Makefile.in 
netcdf-2.4-beta6/src/fortran/Makefile.in
*** netcdf-2.4-beta6.orig/src/fortran/Makefile.in       Fri Oct 13 21:58:26 1995
--- netcdf-2.4-beta6/src/fortran/Makefile.in    Wed Jan 31 18:05:34 1996
***************
*** 29,41 ****
  LIBOBJS               = jackets.o
  LIBNAME               = netcdf
  REMOTE_LIBRARY        = ../libsrc/lib$(LIBNAME).a
  OBJS          = $(PROGRAM).o
  LD_XDR                = @LD_XDR@
! LD_NETCDF     = -L../libsrc -lnetcdf
! LIBS          = $(LD_NETCDF) $(LD_XDR)
  prefix                = ../../..
  
! all:          netcdf.inc remote_library
  
  test:         $(PROGRAM) FORCE
        ./$(PROGRAM)
--- 29,48 ----
  LIBOBJS               = jackets.o
  LIBNAME               = netcdf
  REMOTE_LIBRARY        = ../libsrc/lib$(LIBNAME).a
+ REMOTE_LIB_SO = ../libsrc/lib$(LIBNAME).shared.archive
  OBJS          = $(PROGRAM).o
  LD_XDR                = @LD_XDR@
! LD_NETCDF     = ../libsrc/lib$(LIBNAME).a
! LIBS          = -L../libsrc -l$(LIBNAME) $(LD_XDR)
  prefix                = ../../..
  
! #
! # Uncomment the following line if you have buildt shared libraries under Linux
! # and want to test ncdump without havin installed them.
! #
! export LD_LIBRARY_PATH := .:../libsrc:$(LD_LIBRARY_PATH)
! 
! all:          netcdf.inc remote_library remote_lib_so
  
  test:         $(PROGRAM) FORCE
        ./$(PROGRAM)
diff -r -C3 netcdf-2.4-beta6.orig/src/ncdump/Makefile.in 
netcdf-2.4-beta6/src/ncdump/Makefile.in
*** netcdf-2.4-beta6.orig/src/ncdump/Makefile.in        Sat Jan  6 15:47:32 1996
--- netcdf-2.4-beta6/src/ncdump/Makefile.in     Wed Jan 31 17:08:24 1996
***************
*** 18,27 ****
  OBJS          =  ncdump.o vardata.o dumplib.o
  PROGRAM_SRCS  = ncdump.c vardata.c dumplib.c
  LD_XDR                = @LD_XDR@
! LIBS          = $(LD_NETCDF) $(LD_XDR)
  prefix                = ../../..
  GARBAGE               = $(PROGRAM) test0.nc test1.nc test1.cdl test2.cdl
  
  all:          $(PROGRAM)
  
  $(PROGRAM):   $(LD_NETCDF)
--- 18,33 ----
  OBJS          =  ncdump.o vardata.o dumplib.o
  PROGRAM_SRCS  = ncdump.c vardata.c dumplib.c
  LD_XDR                = @LD_XDR@
! LIBS          = -L../libsrc -l$(LIBNAME) $(LD_XDR)
  prefix                = ../../..
  GARBAGE               = $(PROGRAM) test0.nc test1.nc test1.cdl test2.cdl
  
+ #
+ # Uncomment the following line if you have buildt shared libraries under Linux
+ # and want to test ncdump without havin installed them.
+ #
+ export LD_LIBRARY_PATH := .:../libsrc:$(LD_LIBRARY_PATH)
+ 
  all:          $(PROGRAM)
  
  $(PROGRAM):   $(LD_NETCDF)
***************
*** 38,44 ****
  
  $(PROGRAM)_oc : $(PROGRAM_SRCS)
        #setopt primary_language C
!       #load -C $(CPPFLAGS) $(PROGRAM_SRCS)
        #load -C $(LIBS)
        #setopt program_name $(PROGRAM)
  
--- 44,50 ----
  
  $(PROGRAM)_oc : $(PROGRAM_SRCS)
        #setopt primary_language C
!       oad -C $(CPPFLAGS) $(PROGRAM_SRCS)
        #load -C $(LIBS)
        #setopt program_name $(PROGRAM)
  
diff -r -C3 netcdf-2.4-beta6.orig/src/ncgen/Makefile.in 
netcdf-2.4-beta6/src/ncgen/Makefile.in
*** netcdf-2.4-beta6.orig/src/ncgen/Makefile.in Mon Nov 13 21:47:27 1995
--- netcdf-2.4-beta6/src/ncgen/Makefile.in      Wed Jan 31 17:13:08 1996
***************
*** 30,39 ****
  OBJS          = main.o load.o ncgentab.o escapes.o \
                  getfill.o init.o close.o genlib.o
  LD_XDR                = @LD_XDR@
! LIBS          = $(LD_NETCDF) $(LD_XDR)
  LEX           = @LEX@
  YACC          = @YACC@
  prefix                = ../../..
  
  all:          $(PROGRAM)
  
--- 30,45 ----
  OBJS          = main.o load.o ncgentab.o escapes.o \
                  getfill.o init.o close.o genlib.o
  LD_XDR                = @LD_XDR@
! LIBS          = -L../libsrc -l$(LIBNAME) $(LD_XDR)
  LEX           = @LEX@
  YACC          = @YACC@
  prefix                = ../../..
+ 
+ #
+ # Uncomment the following line if you have buildt shared libraries under Linux
+ # and want to test ncdump without havin installed them.
+ #
+ export LD_LIBRARY_PATH := .:../libsrc:$(LD_LIBRARY_PATH)
  
  all:          $(PROGRAM)
  
diff -r -C3 netcdf-2.4-beta6.orig/src/nctest/Makefile.in 
netcdf-2.4-beta6/src/nctest/Makefile.in
*** netcdf-2.4-beta6.orig/src/nctest/Makefile.in        Fri Oct 13 22:01:40 1995
--- netcdf-2.4-beta6/src/nctest/Makefile.in     Wed Jan 31 17:14:31 1996
***************
*** 22,29 ****
                  vputget.o vputgetg.o driver.o cdftests.o dimtests.o  rec.o \
                  atttests.o misctest.o add.o error.o emalloc.o val.o slabs.o
  LD_XDR                = @LD_XDR@
! LIBS          = $(LD_NETCDF) $(LD_XDR)
  GARBAGE               = $(PROGRAM) lint.out *.cdf *.log test.nc test2.nc
  
  all:          program
  
--- 22,35 ----
                  vputget.o vputgetg.o driver.o cdftests.o dimtests.o  rec.o \
                  atttests.o misctest.o add.o error.o emalloc.o val.o slabs.o
  LD_XDR                = @LD_XDR@
! LIBS          = -L../libsrc -l$(LIBNAME) $(LD_XDR)
  GARBAGE               = $(PROGRAM) lint.out *.cdf *.log test.nc test2.nc
+ 
+ #
+ # Uncomment the following line if you have buildt shared libraries under Linux
+ # and want to test ncdump without havin installed them.
+ #
+ export LD_LIBRARY_PATH := .:../libsrc:$(LD_LIBRARY_PATH)
  
  all:          program
  
diff -r -C3 netcdf-2.4-beta6.orig/src/port/master.mk.in 
netcdf-2.4-beta6/src/port/master.mk.in
*** netcdf-2.4-beta6.orig/src/port/master.mk.in Fri Oct 13 20:13:08 1995
--- netcdf-2.4-beta6/src/port/master.mk.in      Wed Jan 31 22:26:16 1996
***************
*** 29,34 ****
--- 29,36 ----
  TBL           = @TBL@
  WHICH         = @WHICH@
  
+ MAJOR_NO      = 2
+ MINOR_NO      = 4
  
  ############################################################################
  # Recursive Macros (command-line changes to others aren't supported):
***************
*** 167,173 ****
  # The following rule is forced because the library can be created by a
  # makefile in another directory prior to the execution of the following rule.
  #
! $(LIB_A):             $(LIBOBJS) FORCE
        $(AR) rcuv $@ $(LIBOBJS)
        $(RANLIB) $@
  
--- 169,175 ----
  # The following rule is forced because the library can be created by a
  # makefile in another directory prior to the execution of the following rule.
  #
! $(LIB_A):     $(LIBOBJS) FORCE
        $(AR) rcuv $@ $(LIBOBJS)
        $(RANLIB) $@
  
***************
*** 209,256 ****
        mkdir -p $@
        chmod u+rwx,g+rws,o=rx $@
  
! LIB_SO                = lib$(LIBRARY).so.$(MAJOR_NO).$(MINOR_NO)
! LIB_SA                = lib$(LIBRARY).sa.$(MAJOR_NO).$(MINOR_NO)
  
! #library:             FORCE
! #     @so_objs=`echo $(LIBOBJS) | sed 's/\.o/.so/g'`; \
! #     if [ -z "$$so_objs" ]; then \
! #         :; \
! #     else \
! #         $(MAKE) $(MFLAGS) $(LOCAL_MACROS) $(LIB_SO) \
! #             SO_OBJS="$$so_objs"; \
! #     fi
! #     @if [ -z "$(SA_OBJS)" ]; then \
! #         :; \
! #     else \
! #         $(MAKE) $(MFLAGS) $(LOCAL_MACROS) $(LIB_SA); \
! #     fi
  
  $(LIB_SO):    $(SO_OBJS)
!       ld -assert pure-text $(SO_OBJS) -o $@
  $(LIB_SA):    $(SA_OBJS) FORCE
        $(AR) rcuv $@ $(SA_OBJS)
  
  .fc.so:
!       $(FORTC) -O $(OS) $< > $*.c \
!           || (rm -f $*.c; exit 1)
!       $(CC) -c -o $$$$.o -pic $(CFLAGS) $(CPPFLAGS) $*.c \
!           || (rm -f $$$$.o; exit 1)
!       mv $$$$.o $@
  .c.so:
!       $(CC) -c -o $$$$.o -pic $(CFLAGS) $(CPPFLAGS) $< \
!           || (rm -f $$$$.o; exit 1)
!       mv $$$$.o $@
! 
! #installed_library:   $(LIBDIR)/$(LIB_SO)
! #     @if [ -z "$(SA_OBJS)" ]; then \
! #         :; \
! #     else \
! #         $(MAKE) $(MFLAGS) $(LOCAL_MACROS) $(LIBDIR)/$(LIB_SA); \
! #     fi
  
  $(LIBDIR)/$(LIB_SO):  $(LIBDIR) $(LIB_SO)
        cp $(LIB_SO) $(LIBDIR)/$(LIB_SO)
  $(LIBDIR)/$(LIB_SA):  $(LIBDIR) $(LIB_SA)
        cp $(LIB_SA) $(LIBDIR)/$(LIB_SA)
  
--- 211,358 ----
        mkdir -p $@
        chmod u+rwx,g+rws,o=rx $@
  
! #
! # Shared libraries (tested for Linux only)
! #
! 
! LIB_SO      = lib$(LIBRARY).so.$(MAJOR_NO).$(MINOR_NO)
! LIB_SO_NAME = lib$(LIBRARY).so.$(MAJOR_NO)
! LIB_SO_ARCH = lib$(LIBRARY).shared.archive
! LIB_SA      = lib$(LIBRARY).sa.$(MAJOR_NO).$(MINOR_NO)
! 
! library:              FORCE
!       @so_objs=`echo $(LIBOBJS) | sed 's/\.o/.so/g'`; \
!       if [ -z "$$so_objs" ]; then \
!           :; \
!       else \
!           case `uname -s` in \
!                Linux) \
!                     $(MAKE) $(MFLAGS) $(LOCAL_MACROS) $(LIB_SO_ARCH) \
!                       SO_OBJS="$$so_objs";; \
!                *) \
!                     $(MAKE) $(MFLAGS) $(LOCAL_MACROS) $(LIB_SO) \
!                       SO_OBJS="$$so_objs";; \
!           esac ; \
!       fi
!       @if [ -z "$(SA_OBJS)" ]; then \
!           :; \
!       else \
!           $(MAKE) $(MFLAGS) $(LOCAL_MACROS) $(LIB_SA); \
!       fi
! 
! 
! # A problem under Linux: to make a lib<something>.so with gcc's -shared option
! # _all_ sharable objects must be available. Therefore, all objects compiled 
with
! # -fPIC are collected in LIB_SO_ARCH first (via the remote_lib_so_arch target
! # in case of remote libraries), and then the shared library is buildt. This is
! # done in a temporary subdirectory in order not to destroy the relocatables in
! # the current subdirectory.
! 
! library_so:   $(LIB_SO_ARCH) FORCE
!       case `uname -s` in \
!          Linux)  mkdir -p ./tmp ; \
!                  cd ./tmp ; \
!                  ar -x ../$(LIB_SO_ARCH) ; \
!                  gcc -shared -Wl,-soname,$(LIB_SO_NAME) *.so -o ../$(LIB_SO) 
; \
!                  rm -f *.so ; \
!                  cd .. ; \
!                  rmdir ./tmp ; \
!                  rm -f $(LIB_SO_NAME) ; \
!                  ln -s $(LIB_SO) $(LIB_SO_NAME) ; \
!                  ;; \
!          *) ;; \
!       esac
!          
! $(LIB_SO_ARCH):       $(SO_OBJS) FORCE
!       @case `uname -s` in \
!          Linux)  $(AR) rcuv $@ $(SO_OBJS) ; \
!                  $(RANLIB) $@ ;; \
!          *)      ;; \
!       esac
! 
! remote_lib_so:                FORCE
!       @so_objs=`echo $(LIBOBJS) | sed 's/\.o/.so/g'`; \
!       if [ -z "$$so_objs" ]; then \
!           :; \
!       else \
!           case `uname -s` in \
!                Linux) \
!                     $(MAKE) $(MFLAGS) $(LOCAL_MACROS) remote_lib_so_arch \
!                       SO_OBJS="$$so_objs";; \
!                *)   ;; \
!           esac ; \
!       fi
  
! remote_lib_so_arch:   $(SO_OBJS) FORCE
!       $(AR) rcuv $(REMOTE_LIB_SO) $(SO_OBJS)
!       $(RANLIB) $(REMOTE_LIB_SO)
! 
! 
! # Shared libraries for other platforms
  
  $(LIB_SO):    $(SO_OBJS)
!       @case `uname -s` in \
!          Linux)  ;; \
!          *)      ld -assert pure-text $(SO_OBJS) -o $@ ;; \
!       esac
! 
  $(LIB_SA):    $(SA_OBJS) FORCE
        $(AR) rcuv $@ $(SA_OBJS)
  
+ 
+ # Compiling sharable (relocatable) objects
+ 
  .fc.so:
!       case `uname -s` in \
!          Linux) \
!               $(FORTC) -O $(OS) $< > $*.c \
!                    || (rm -f $*.c; exit 1); \
!               $(CC) -c -o $@ -fPIC $(CFLAGS) $(CPPFLAGS) $*.c ;; \
!          *) \
!               $(FORTC) -O $(OS) $< > $*.c \
!                    || (rm -f $*.c; exit 1); \
!               $(CC) -c -o $$$$.o -pic $(CFLAGS) $(CPPFLAGS) $*.c \
!                    || (rm -f $$$$.o; exit 1) ; \
!               mv $$$$.o $@ ;; \
!       esac
  .c.so:
!       case `uname -s` in \
!          Linux) \
!               $(CC) -c -o $@ -fPIC $(CFLAGS) $(CPPFLAGS) $< ;; \
!          *) \
!               $(CC) -c -o $$$$.o -pic $(CFLAGS) $(CPPFLAGS) $< \
!                    || (rm -f $$$$.o; exit 1) ; \
!               mv $$$$.o $@ ;; \
!       esac
! 
! .cc.so:
!       case `uname -s` in \
!          Linux) \
!               $(CXX) -c -o $@ -fPIC $(CXXFLAGS) $(CXXCPPFLAGS) $< ;; \
!          *) \
!               $(CXX) -c -o $@ -pic $(CXXFLAGS) $(CXXCPPFLAGS) $< ;; \
!       esac
  
+ installed_library:    $(LIBDIR)/$(LIB_SO) $(LIBDIR)/$(LIB_A)
+       @if [ -z "$(SA_OBJS)" ]; then \
+           :; \
+       else \
+           $(MAKE) $(MFLAGS) $(LOCAL_MACROS) $(LIBDIR)/$(LIB_SA); \
+       fi
+ 
+ $(LIBDIR)/$(LIB_A):   $(LIBDIR) $(LIB_A)
+       cp $(LIB_A) $(LIBDIR)/$(LIB_A)
+       $(RANLIB) $(LIBDIR)/$(LIB_A)
  $(LIBDIR)/$(LIB_SO):  $(LIBDIR) $(LIB_SO)
        cp $(LIB_SO) $(LIBDIR)/$(LIB_SO)
+       case `uname -s` in \
+          Linux) \
+               ( cd $(LIBDIR) ; rm -f $(LIB_SO_NAME) lib$(LIBRARY).so ; \
+                 ln -s $(LIB_SO) $(LIB_SO_NAME) ; ln -s $(LIB_SO_NAME) 
lib$(LIBRARY).so ) ;; \
+          *)   ;; \
+       esac
+               
+               
  $(LIBDIR)/$(LIB_SA):  $(LIBDIR) $(LIB_SA)
        cp $(LIB_SA) $(LIBDIR)/$(LIB_SA)
  
***************
*** 397,402 ****
--- 499,505 ----
                AIX);; \
                HP-UX);; \
                IRIX*);; \
+               Linux);; \
                ULTRIX);; \
                UNICOS|sn*);; \
                *)  $(MAKE) $(MFLAGS) $(MANDIR)/whatis;; \
***************
*** 436,441 ****
--- 539,547 ----
  $(MANDIR)/whatis:     FORCE
        catman -w -M $(MANDIR)
  
+ $(MANDIR)/makewhatis: FORCE
+       makewhatis -w $(MANDIR)
+ 
  
  ############################################################################
  # TeX-Info Pages:
***************
*** 506,519 ****
  realclean:            default_realclean
  default_clean:                FORCE
        rm -f $(GARBAGE) $(PROGRAM) a.out core *.o *.i *.a *.so.* *.sa.* \
!           *.so *.u *.pure *.pure_hardlink *.pure_linkinfo conftest* \
            *.nc test.out \
            *.aux *.toc *.dvi \
            config.cache *.Z *.log tags MANIFEST *~
  default_distclean:    default_realclean
  default_realclean:    FORCE
        rm -f $(GARBAGE) $(PROGRAM) a.out core *.o *.i *.a *.so.* *.sa.* \
!           *.so *.u *.pure *.pure_hardlink *.pure_linkinfo conftest* \
            *.nc test.out \
            *.aux *.toc *.dvi \
            config.cache *.Z *.log tags TAGS MANIFEST *~ \
--- 612,625 ----
  realclean:            default_realclean
  default_clean:                FORCE
        rm -f $(GARBAGE) $(PROGRAM) a.out core *.o *.i *.a *.so.* *.sa.* \
!           *.so *.shared.* *.u *.pure *.pure_hardlink *.pure_linkinfo 
conftest* \
            *.nc test.out \
            *.aux *.toc *.dvi \
            config.cache *.Z *.log tags MANIFEST *~
  default_distclean:    default_realclean
  default_realclean:    FORCE
        rm -f $(GARBAGE) $(PROGRAM) a.out core *.o *.i *.a *.so.* *.sa.* \
!           *.so *.shared.* *.u *.pure *.pure_hardlink *.pure_linkinfo 
conftest* \
            *.nc test.out \
            *.aux *.toc *.dvi \
            config.cache *.Z *.log tags TAGS MANIFEST *~ \


  • 1996 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: