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: