netcdf/000775 001750 001750 00000000000 12717334101 013066 5ustar00abarthabarth000000 000000 netcdf/src/000775 001750 001750 00000000000 12717334101 013655 5ustar00abarthabarth000000 000000 netcdf/src/netcdf_constants.awk000664 001750 001750 00000004354 12717333737 017744 0ustar00abarthabarth000000 000000 # Copyright (C) 2013 Alexander Barth # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; If not, see . # Generate the list of NetCDF constants based on the header file netcdf.h BEGIN { print "// generated by netcdf_constants.awk"; } /\#define[ \t]+NC_[0-9a-zA-Z_]*[ \t]+/ { constant=$2; ov = constant; # NC_INDEPENDENT and NC_COLLECTIVE are no longer defined # in netcdf 4.3.1 if ($0 ~ /.*internally.*/ || \ constant == "NC_TURN_OFF_LOGGING" || \ constant == "NC_INDEPENDENT" || \ constant == "NC_COLLECTIVE" \ ) { next; } if (constant ~ /NC_.*_BYTE/) { ov = "octave_int8(" constant ")"; } else if (constant ~ /NC_.*_UBYTE/) { ov = "octave_uint8(" constant ")"; } else if (constant ~ /NC_.*_SHORT/) { ov = "octave_int16(" constant ")"; } else if (constant ~ /NC_.*_USHORT/) { ov = "octave_uint16(" constant ")"; } else if (constant ~ /NC_.*_INT/) { ov = "octave_int32(" constant ")"; } else if (constant ~ /NC_.*_UINT/) { ov = "octave_uint32(" constant ")"; } else if (constant ~ /NC_.*_INT64/) { ov = "octave_int64(" constant ")"; } else if (constant ~ /NC_.*_UINT64/) { ov = "octave_uint64(" constant ")"; } else if (constant ~ /NC_.*_CHAR/) { ov = "(char)" constant; } else if (constant ~ /NC_.*_STRING/) { ov = "std::string(" constant ")"; } else if (constant ~ /NC_.*_FLOAT/) { ov = "(float)" constant; } else if (constant ~ /NC_.*_STRING/) { ov = "(double)" constant; } printf " netcdf_constants[\"%s\"] = octave_value(%s);\n",constant,ov; } netcdf/src/PKG_ADD.sh000664 001750 001750 00000002725 12717333737 015326 0ustar00abarthabarth000000 000000 #!/bin/sh # Copyright (C) 2013 Alexander Barth # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; If not, see . netcdf_functions=$(awk -F'[(,]' '/DEFUN_DLD/ { print $2 } ' __netcdf__.cc) outfile=../PKG_ADD outfile_del=../PKG_DEL importfile=../inst/import_netcdf.m rm -f $outfile $outfile_del $importfile echo '% File automatically generated by PKG_ADD.sh' > $importfile echo '% File automatically generated by PKG_ADD.sh' > $outfile for i in $netcdf_functions; do echo ${i#netcdf_} cat >> $outfile <> $importfile < $outfile_del for i in $netcdf_functions; do echo ${i#netcdf_} cat >> $outfile_del </dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= PACKAGE_URL= ac_unique_file="configure.base" ac_subst_vars='LTLIBOBJS LIBOBJS NC_CONFIG STRIP COPY_FLAGS RANLIB LN_S SHLEXT canonical_host_type OCTAVE_VERSION OCTAVE altopath altmpath altpath xpath opath mpath subver ver OCTAVE_CONFIG MKOCTFILE OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC TOPDIR VERSION PACKAGE target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_path with_mpath with_opath with_xpath with_altpath with_altmpath with_altopath ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-path install path prefix --with-mpath override path for m-files --with-opath override path for oct-files --with-xpath override path for executables --with-altpath alternative functions install path prefix --with-altmpath override path for alternative m-files --with-altopath override path for alternative oct-files Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu PACKAGE=octave-forge MAJOR_VERSION=0 MINOR_VERSION=1 PATCH_LEVEL=0 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL TOPDIR=`pwd` ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Extract the first word of "mkoctfile", so it can be a program name with args. set dummy mkoctfile; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MKOCTFILE+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MKOCTFILE"; then ac_cv_prog_MKOCTFILE="$MKOCTFILE" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MKOCTFILE="mkoctfile" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MKOCTFILE=$ac_cv_prog_MKOCTFILE if test -n "$MKOCTFILE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKOCTFILE" >&5 $as_echo "$MKOCTFILE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$MKOCTFILE" && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no mkoctfile found on path" >&5 $as_echo "$as_me: WARNING: no mkoctfile found on path" >&2;} # Extract the first word of "octave-config", so it can be a program name with args. set dummy octave-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OCTAVE_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OCTAVE_CONFIG"; then ac_cv_prog_OCTAVE_CONFIG="$OCTAVE_CONFIG" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OCTAVE_CONFIG="octave-config" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OCTAVE_CONFIG=$ac_cv_prog_OCTAVE_CONFIG if test -n "$OCTAVE_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCTAVE_CONFIG" >&5 $as_echo "$OCTAVE_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$OCTAVE_CONFIG" && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no octave-config found on path" >&5 $as_echo "$as_me: WARNING: no octave-config found on path" >&2;} # Check whether --with-path was given. if test "${with_path+set}" = set; then : withval=$with_path; path=$withval fi # Check whether --with-mpath was given. if test "${with_mpath+set}" = set; then : withval=$with_mpath; mpath=$withval fi # Check whether --with-opath was given. if test "${with_opath+set}" = set; then : withval=$with_opath; opath=$withval fi # Check whether --with-xpath was given. if test "${with_xpath+set}" = set; then : withval=$with_xpath; xpath=$withval fi # Check whether --with-altpath was given. if test "${with_altpath+set}" = set; then : withval=$with_altpath; altpath=$withval fi # Check whether --with-altmpath was given. if test "${with_altmpath+set}" = set; then : withval=$with_altmpath; altmpath=$withval fi # Check whether --with-altopath was given. if test "${with_altopath+set}" = set; then : withval=$with_altopath; altopath=$withval fi if test -n "$path" ; then test -z "$mpath" && mpath=$path test -z "$opath" && opath=$path/oct test -z "$xpath" && xpath=$path/bin test -z "$altpath" && altpath=$path-alternatives fi if test -n "$altpath" ; then test -z "$altmpath" && altmpath=$altpath test -z "$altopath" && altopath=$altpath/oct fi #if test -z "$mpath" || test -z "$opath" || test -z "$xpath" || test -z "$altmpath" || test -z "$altopath" || test -z "$ver" ; then if test -z "$mpath" || test -z "$opath" || test -z "$xpath" || test -z "$ver" ; then cat > conftest.cc < #include #include #define INFOV "\nINFOV=" OCTAVE_VERSION "\n" #define INFOH "\nINFOH=" OCTAVE_CANONICAL_HOST_TYPE "\n" #ifdef OCTAVE_LOCALVERFCNFILEDIR # define INFOM "\nINFOM=" OCTAVE_LOCALVERFCNFILEDIR "\n" #else # define INFOM "\nINFOM=" OCTAVE_LOCALFCNFILEPATH "\n" #endif #ifdef OCTAVE_LOCALVEROCTFILEDIR # define INFOO "\nINFOO=" OCTAVE_LOCALVEROCTFILEDIR "\n" #else # define INFOO "\nINFOO=" OCTAVE_LOCALOCTFILEPATH "\n" #endif #ifdef OCTAVE_LOCALVERARCHLIBDIR # define INFOX "\nINFOX=" OCTAVE_LOCALVERARCHLIBDIR "\n" #else # define INFOX "\nINFOX=" OCTAVE_LOCALARCHLIBDIR "\n" #endif const char *infom = INFOM; const char *infoo = INFOO; const char *infox = INFOX; const char *infoh = INFOH; const char *infov = INFOV; EOF $MKOCTFILE conftest.cc || as_fn_error $? "Could not run $MKOCTFILE" "$LINENO" 5 eval `strings conftest.o | grep "^INFO.=" | sed -e "s,//.*$,,"` rm -rf conftest* ver=`echo $INFOV | sed -e "s/\.//" -e "s/\..*$//"` subver=`echo $INFOV | sed -e "s/^[^.]*[.][^.]*[.]//"` alt_mbase=`echo $INFOM | sed -e "s,\/[^\/]*$,,"` alt_obase=`echo $INFOO | sed -e "s,/site.*$,/site,"` test -z "$mpath" && mpath=$INFOM/octave-forge test -z "$opath" && opath=$INFOO/octave-forge test -z "$xpath" && xpath=$INFOX test -z "$altmpath" && altmpath=$alt_mbase/octave-forge-alternatives/m test -z "$altopath" && altopath=$alt_obase/octave-forge-alternatives/oct/$INFOH fi NETCDF_LIBS="$LDFLAGS" NETCDF_CFLAGS="$CPPFLAGS" # dnl C compiler and flags # AC_MSG_RESULT([retrieving compile and link flags from $MKOCTFILE]) # CC=`$MKOCTFILE -p CC` # CFLAGS=`$MKOCTFILE -p CFLAGS` # CPPFLAGS=`$MKOCTFILE -p CPPFLAGS` # CPPFLAGS="not used" # CPICFLAG=`$MKOCTFILE -p CPICFLAG` # LDFLAGS=`$MKOCTFILE -p LDFLAGS` # LIBS=`$MKOCTFILE -p LIBS` # AC_SUBST(CC) # AC_SUBST(CFLAGS) # AC_SUBST(CPPFLAGS) # AC_SUBST(CPICFLAG) # dnl Fortran compiler and flags # F77=`$MKOCTFILE -p F77` # FFLAGS=`$MKOCTFILE -p FFLAGS` # FPICFLAG=`$MKOCTFILE -p FPICFLAG` # AC_SUBST(F77) # AC_SUBST(FFLAGS) # AC_SUBST(FPICFLAG) # dnl C++ compiler and flags # CXX=`$MKOCTFILE -p CXX` # CXXFLAGS=`$MKOCTFILE -p CXXFLAGS` # CXXPICFLAG=`$MKOCTFILE -p CXXPICFLAG` # AC_SUBST(CXX) # AC_SUBST(CXXFLAGS) # AC_SUBST(CXXPICFLAG) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for F77_FUNC" >&5 $as_echo_n "checking for F77_FUNC... " >&6; } cat > conftest.cc << EOF #include int F77_FUNC (hello, HELLO) (const int &n); EOF ac_try="$MKOCTFILE -c conftest.cc" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } MKOCTFILE="$MKOCTFILE -DF77_FUNC=F77_FCN" fi # Extract the first word of "octave", so it can be a program name with args. set dummy octave; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OCTAVE+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OCTAVE"; then ac_cv_prog_OCTAVE="$OCTAVE" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OCTAVE="octave" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OCTAVE=$ac_cv_prog_OCTAVE if test -n "$OCTAVE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCTAVE" >&5 $as_echo "$OCTAVE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for VERSION in octave-config" >&5 $as_echo_n "checking for VERSION in octave-config... " >&6; } OCTAVE_VERSION=`$OCTAVE_CONFIG -p VERSION` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCTAVE_VERSION" >&5 $as_echo "$OCTAVE_VERSION" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CANONICAL_HOST_TYPE in octave-config" >&5 $as_echo_n "checking for CANONICAL_HOST_TYPE in octave-config... " >&6; } canonical_host_type=`$OCTAVE_CONFIG -p CANONICAL_HOST_TYPE` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $canonical_host_type" >&5 $as_echo "$canonical_host_type" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SHLEXT in octave-config" >&5 $as_echo_n "checking for SHLEXT in octave-config... " >&6; } SHLEXT=`$OCTAVE_CONFIG -p SHLEXT` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHLEXT" >&5 $as_echo "$SHLEXT" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi COPY_FLAGS="-Rfp" case "$canonical_host_type" in *-*-linux*) COPY_FLAGS="-fdp" ;; esac STRIP=${STRIP-strip} # Extract the first word of "$STRIP", so it can be a program name with args. set dummy $STRIP; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="$STRIP" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_STRIP" && ac_cv_prog_STRIP=":" fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi case "$canonical_host_type" in powerpc-apple-darwin*|*-sgi-*) STRIP=: ;; *-cygwin-*|*-mingw-*) MKOCTFILE="$MKOCTFILE -s" ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nc-config", so it can be a program name with args. set dummy ${ac_tool_prefix}nc-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NC_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NC_CONFIG"; then ac_cv_prog_NC_CONFIG="$NC_CONFIG" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NC_CONFIG="${ac_tool_prefix}nc-config" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NC_CONFIG=$ac_cv_prog_NC_CONFIG if test -n "$NC_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NC_CONFIG" >&5 $as_echo "$NC_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NC_CONFIG"; then ac_ct_NC_CONFIG=$NC_CONFIG # Extract the first word of "nc-config", so it can be a program name with args. set dummy nc-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NC_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NC_CONFIG"; then ac_cv_prog_ac_ct_NC_CONFIG="$ac_ct_NC_CONFIG" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NC_CONFIG="nc-config" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NC_CONFIG=$ac_cv_prog_ac_ct_NC_CONFIG if test -n "$ac_ct_NC_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NC_CONFIG" >&5 $as_echo "$ac_ct_NC_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NC_CONFIG" = x; then NC_CONFIG="nc-config" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NC_CONFIG=$ac_ct_NC_CONFIG fi else NC_CONFIG="$ac_cv_prog_NC_CONFIG" fi if test -z "$NC_CONFIG"; then as_fn_error 1 "nc-config not found" "$LINENO" 5; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for netcdf4 support" >&5 $as_echo_n "checking for netcdf4 support... " >&6; } NETCDF_V4=`$NC_CONFIG --has-nc4` if test x$NETCDF_V4 != yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "netcdf4 support missing. Did you disable netcdf4 features?" "$LINENO" 5 fi CONFIGURE_OUTPUTS="Makeconf" STATUS_MSG=" octave commands will install into the following directories: m-files: $mpath oct-files: $opath binaries: $xpath alternatives: m-files: $altmpath oct-files: $altopath shell commands will install into the following directories: binaries: $bindir man pages: $mandir libraries: $libdir headers: $includedir octave-forge is configured with octave: $OCTAVE (version $OCTAVE_VERSION) mkoctfile: $MKOCTFILE for Octave $subver octave-config: $OCTAVE_CONFIG for Octave $subver netCDF compiler flags: $NETCDF_CFLAGS netCDF libraries: $NETCDF_LIBS" ac_config_files="$ac_config_files $CONFIGURE_OUTPUTS" test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "$CONFIGURE_OUTPUTS") CONFIG_FILES="$CONFIG_FILES $CONFIGURE_OUTPUTS" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi echo " " echo " \"\$prefix\" is $prefix" echo " \"\$exec_prefix\" is $exec_prefix" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STATUS_MSG " >&5 $as_echo "$STATUS_MSG " >&6; } netcdf/src/__netcdf__.cc000664 001750 001750 00000165061 12717333737 016252 0ustar00abarthabarth000000 000000 // Copyright (C) 2013 Alexander Barth // // This program is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free Software // Foundation; either version 2 of the License, or (at your option) any later // version. // // This program is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more // details. // // You should have received a copy of the GNU General Public License along with // this program; if not, see . #include #include #include #include #include #include #include #include #include // Octave constructor to hold an array of ints #define NETCDF_INT_ARRAY int32NDArray std::map netcdf_constants; void init() { #include "netcdf_constants.h" } void check_err(int status) { if (status != NC_NOERR) error("%s",nc_strerror(status)); } // convert name to upper-case and add "NC_" prefix if it is missing std::string normalize_ncname(std::string name) { std::string prefix = "NC_"; std::string ncname = name; // to upper case std::transform(ncname.begin(), ncname.end(),ncname.begin(), ::toupper); // add prefix if it is missing if (ncname.substr(0, prefix.size()) != prefix) { ncname = prefix + ncname; } return ncname; } octave_value netcdf_get_constant(octave_value ov) { if (netcdf_constants.empty()) { init(); } if (ov.is_scalar_type()) { return ov.scalar_value(); } std::string name = ov.string_value(); name = normalize_ncname(name); std::map::const_iterator cst = netcdf_constants.find(name); if (cst != netcdf_constants.end ()) { return cst->second; } else { error("unknown netcdf constant: %s",name.c_str()); return octave_value(); } } size_t to_size_t(octave_value ov) { size_t sz; sz = static_cast(ov.uint64_scalar_value()); return sz; } void to_size_t_vector(octave_value ov, int len, size_t *vec) { uint64NDArray tmp = ov.uint64_array_value(); for (int i=0; i(tmp(len-i-1)); } } void to_ptrdiff_t_vector(octave_value ov, int len, ptrdiff_t *vec) { int64NDArray tmp = ov.int64_array_value(); for (int i=0; i(tmp(len-i-1)); } } void start_count_stride(int ncid, int varid, octave_value_list args,int len, int ndims, size_t* start,size_t* count,ptrdiff_t* stride) { OCTAVE_LOCAL_BUFFER (int, dimids, ndims); check_err(nc_inq_vardimid (ncid, varid, dimids)); // default values for start, count and stride // i.e. all variable is loaded for (int i=0; i 2) { if (args(2).numel() != ndims) { error("number of elements of argument %s should match the number " "of dimension of the netCDF variable", "start"); } to_size_t_vector(args(2),ndims,start); // if start is specified, the default for count is 1 (how odd!) for (int i=0; i 3) { if (args(3).numel() != ndims) { error("number of elements of argument %s should match the number " "of dimension of the netCDF variable", "count"); } to_size_t_vector(args(3),ndims,count); } // stride argument if (len > 4) { if (args(4).numel() != ndims) { error("number of elements of argument %s should match the number " "of dimension of the netCDF variable", "stride"); } to_ptrdiff_t_vector(args(4),ndims,stride); } } DEFUN_DLD(netcdf_getConstant, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{value} =} netcdf_getConstant(@var{name}) \n\ Returns the value of a NetCDF constant called @var{name}.\n\ @seealso{netcdf_getConstantNames}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value(); } return netcdf_get_constant(args(0)); } DEFUN_DLD(netcdf_getConstantNames, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{value} =} netcdf_getConstantNames() \n\ Returns a list of all constant names.\n\ @end deftypefn\n\ @seealso{netcdf_getConstant}\n") { if (args.length() != 0) { print_usage (); return octave_value(); } if (netcdf_constants.empty()) { init(); } Cell c = Cell (dim_vector(1,netcdf_constants.size())); int i = 0; for (std::map::const_iterator p = netcdf_constants.begin (); p != netcdf_constants.end (); p++) { c(i++) = octave_value(p->first); } return octave_value(c); } DEFUN_DLD(netcdf_inqLibVers, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{vers} =} netcdf_inqLibVers() \n\ Returns the version of the NetCDF library.\n\ @end deftypefn\n\ @seealso{netcdf_open}\n") { if (args.length() != 0) { print_usage (); return octave_value (); } return octave_value(std::string(nc_inq_libvers())); } DEFUN_DLD(netcdf_setDefaultFormat, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{old_format} =} netcdf_setDefaultFormat(@var{format}) \n\ Sets the default format of the NetCDF library and returns the previous default format (as a numeric value). @var{format} can be \n\ \"format_classic\", \"format_64bit\", \"format_netcdf4\" or \"format_netcdf4_classic\". \n\ @end deftypefn\n\ @seealso{netcdf_open}\n") { if (args.length() != 1) { print_usage (); return octave_value (); } int format = netcdf_get_constant(args(0)).int_value(); int old_format; if (error_state) { print_usage (); return octave_value(); } check_err(nc_set_default_format(format, &old_format)); return octave_value(old_format); } // int nc_set_chunk_cache(size_t size, size_t nelems, float preemption); DEFUN_DLD(netcdf_setChunkCache, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_setChunkCache(@var{size}, @var{nelems}, @var{preemption}) \n\ Sets the default chunk cache settins in the HDF5 library. The settings applies to all files which are subsequently opened or created.\n\ @end deftypefn\n\ @seealso{netcdf_getChunkCache}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } size_t size = to_size_t(args(0)); size_t nelems = to_size_t(args(1)); float preemption = args(2).scalar_value(); if (error_state) { print_usage (); return octave_value(); } check_err(nc_set_chunk_cache(size, nelems, preemption)); return octave_value(); } // int nc_get_chunk_cache(size_t *sizep, size_t *nelemsp, float *preemptionp); DEFUN_DLD(netcdf_getChunkCache, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{size}, @var{nelems}, @var{preemption}] =} netcdf_getChunkCache() \n\ Gets the default chunk cache settins in the HDF5 library. \n\ @end deftypefn\n\ @seealso{netcdf_setChunkCache}\n") { if (args.length() != 0) { print_usage (); return octave_value (); } size_t size; size_t nelems; float preemption; if (error_state) { print_usage (); return octave_value(); } check_err(nc_get_chunk_cache(&size, &nelems, &preemption)); octave_value_list retval; retval(0) = octave_value(size); retval(1) = octave_value(nelems); retval(2) = octave_value(preemption); return retval; } DEFUN_DLD(netcdf_create, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{ncid} =} netcdf_create(@var{filename},@var{mode}) \n\ Creates the file named @var{filename} in the mode @var{mode} which can have the \n\ following values: \n\ \"clobber\" (overwrite existing files), \n\ \"noclobber\" (prevent to overwrite existing files) \n\ \"64bit_offset\" (use the 64bit-offset format), \n\ \"netcdf4\" (use the NetCDF4, i.e. HDF5 format) or \n\ \"share\" (concurrent reading of the dataset). \n\ @var{mode} can also be the numeric value return by netcdf_getConstant. In the later-case it can be combined with a bitwise-or. \n\ @end deftypefn\n\ Example: \n\ @example \n\ mode = bitor(netcdf.getConstant(\"classic_model\"), ...\n\ netcdf.getConstant(\"netcdf4\")); \n\ ncid = netcdf.create(\"test.nc\",mode); \n\ @end example \n\ @seealso{netcdf_close}\n") { if (args.length() != 2) { print_usage (); return octave_value (); } std::string filename = args(0).string_value(); int mode = netcdf_get_constant(args(1)).int_value(); int ncid; if (error_state) { print_usage (); return octave_value(); } check_err(nc_create(filename.c_str(), mode, &ncid)); return octave_value(ncid); } DEFUN_DLD(netcdf_open, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{ncid} =} netcdf_open(@var{filename},@var{mode}) \n\ Opens the file named @var{filename} in the mode @var{mode}.\n\ @end deftypefn\n\ @seealso{netcdf_close}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } std::string filename = args(0).string_value(); int mode = netcdf_get_constant(args(1)).int_value(); int ncid; if (error_state) { print_usage (); return octave_value(); } check_err(nc_open(filename.c_str(), mode, &ncid)); return octave_value(ncid); } DEFUN_DLD(netcdf_abort, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_abort(@var{ncid}) \n\ Aborts all changes since the last time the dataset entered in define mode.\n\ @end deftypefn\n\ @seealso{netcdf_reDef}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); if (error_state) { print_usage (); return octave_value(); } check_err(nc_abort(ncid)); return octave_value(); } DEFUN_DLD(netcdf_sync, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_sync(@var{ncid}) \n\ Writes all changes to the disk and leaves the file open.\n\ @end deftypefn\n\ @seealso{netcdf_close}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); if (error_state) { print_usage (); return octave_value(); } check_err(nc_sync(ncid)); return octave_value(); } DEFUN_DLD(netcdf_setFill, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{old_mode} =} netcdf_setFill(@var{ncid},@var{fillmode}) \n\ Change the fill mode (@var{fillmode}) of the data set @var{ncid}. The previous value of the fill mode is returned. @var{fillmode} can be either \"fill\" or \"nofill\".\n\ @end deftypefn\n\ @seealso{netcdf_open}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int fillmode = netcdf_get_constant(args(1)).int_value(); int old_mode; if (error_state) { print_usage (); return octave_value(); } check_err (nc_set_fill (ncid, fillmode, &old_mode)); return octave_value(old_mode); } //int nc_inq (int ncid, int *ndimsp, int *nvarsp, int *ngattsp, // int *unlimdimidp); DEFUN_DLD(netcdf_inq, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{ndims},@var{nvars},@var{ngatts},@var{unlimdimid}] =} netcdf_inq(@var{ncid}) \n\ Return the number of dimension (@var{ndims}), the number of variables (@var{nvars}), the number of global attributes (@var{ngatts}) and the id of the unlimited dimension (@var{unlimdimid}). \n\ If no unlimited dimension is declared -1 is returned. For NetCDF4 files, one should use \n\ the function netcdf_inqUnlimDims as multiple unlimite dimension exists. \n\ @end deftypefn\n\ @seealso{netcdf_inqUnlimDims}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int ndims, nvars, ngatts, unlimdimid; octave_value_list retval; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq(ncid,&ndims,&nvars,&ngatts,&unlimdimid)); retval(0) = octave_value(ndims); retval(1) = octave_value(nvars); retval(2) = octave_value(ngatts); retval(3) = octave_value(unlimdimid); return retval; } // int nc_inq_unlimdims(int ncid, int *nunlimdimsp, int *unlimdimidsp); DEFUN_DLD(netcdf_inqUnlimDims, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{unlimdimids} =} netcdf_inqUnlimDims(@var{ncid}) \n\ Return the id of all unlimited dimensions of the NetCDF file @var{ncid}.\n\ @end deftypefn\n\ @seealso{netcdf_inq}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int nunlimdims; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_unlimdims(ncid, &nunlimdims, NULL)); OCTAVE_LOCAL_BUFFER(int,tmp,nunlimdims); NETCDF_INT_ARRAY unlimdimids = NETCDF_INT_ARRAY(dim_vector(1,nunlimdims)); check_err(nc_inq_unlimdims(ncid, &nunlimdims, tmp)); for (int i=0; i < nunlimdims; i++) { unlimdimids(i) = tmp[i]; } return octave_value(unlimdimids); } // int nc_inq_format (int ncid, int *formatp); DEFUN_DLD(netcdf_inqFormat, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{format} =} netcdf_inqFormat(@var{ncid}) \n\ Return the NetCDF format of the dataset @var{ncid}.\n\ Format might be one of the following \n\ \"FORMAT_CLASSIC\", \"FORMAT_64BIT\", \"FORMAT_NETCDF4\" or \"FORMAT_NETCDF4_CLASSIC\" \n\ @end deftypefn\n\ @seealso{netcdf_inq}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int format; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_format(ncid, &format)); if (format == NC_FORMAT_CLASSIC) { return octave_value("FORMAT_CLASSIC"); } if (format == NC_FORMAT_64BIT) { return octave_value("FORMAT_64BIT"); } if (format == NC_FORMAT_NETCDF4) { return octave_value("FORMAT_NETCDF4"); } return octave_value("FORMAT_NETCDF4_CLASSIC"); } // int nc_def_dim (int ncid, const char *name, size_t len, int *dimidp); DEFUN_DLD(netcdf_defDim, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{dimid} =} netcdf_defDim(@var{ncid},@var{name},@var{len}) \n\ Define the dimension with the name @var{name} and the length @var{len} in the dataset @var{ncid}. The id of the dimension is returned.\n\ @end deftypefn\n\ @seealso{netcdf_defVar}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string name = args(1).string_value(); size_t len = to_size_t(args(2)); int dimid; if (error_state) { print_usage (); return octave_value(); } check_err(nc_def_dim (ncid, name.c_str(), len, &dimid)); return octave_value(dimid); } // int nc_rename_dim(int ncid, int dimid, const char* name); DEFUN_DLD(netcdf_renameDim, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_renameDim(@var{ncid},@var{dimid},@var{name}) \n\ Renames the dimension with the id @var{dimid} in the data set @var{ncid}. @var{name} is the new name of the dimension.\n\ @end deftypefn\n\ @seealso{netcdf_defDim}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int dimid = args(1).scalar_value(); std::string name = args(2).string_value(); if (error_state) { print_usage (); return octave_value(); } check_err(nc_rename_dim (ncid, dimid, name.c_str())); return octave_value(); } // int nc_def_var (int ncid, const char *name, nc_type xtype, // int ndims, const int dimids[], int *varidp); DEFUN_DLD(netcdf_defVar, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{varid} = } netcdf_defVar(@var{ncid},@var{name},@var{xtype},@var{dimids}) \n\ Defines a variable with the name @var{name} in the dataset @var{ncid}. @var{xtype} can be \"byte\", \"ubyte\", \"short\", \"ushort\", \"int\", \"uint\", \"int64\", \"uint64\", \"float\", \"double\", \"char\" or the corresponding number as returned by netcdf_getConstant. The parameter @var{dimids} define the ids of the dimension. For scalar this parameter is the empty array ([]). The variable id is returned. \n\ @end deftypefn\n\ @seealso{netcdf_open,netcdf_defDim}\n") { if (args.length() != 4) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string name = args(1).string_value (); int xtype = netcdf_get_constant(args(2)).int_value();; if (error_state) { print_usage (); return octave_value(); } Array tmp; if (!args(3).is_empty()) { tmp = args(3).vector_value (); } OCTAVE_LOCAL_BUFFER (int, dimids, tmp.numel()); for (int i = 0; i < tmp.numel(); i++) { dimids[i] = tmp(tmp.numel()-i-1); } int varid; check_err(nc_def_var (ncid, name.c_str(), xtype, tmp.numel(), dimids, &varid)); return octave_value(varid); } // int nc_rename_var(int ncid, int varid, const char* name); DEFUN_DLD(netcdf_renameVar, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_renameVar(@var{ncid},@var{varid},@var{name}) \n\ Renames the variable with the id @var{varid} in the data set @var{ncid}. @var{name} is the new name of the variable.\n\ @end deftypefn\n\ @seealso{netcdf_defVar}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string name = args(2).string_value(); if (error_state) { print_usage (); return octave_value(); } check_err(nc_rename_var (ncid, varid, name.c_str())); return octave_value(); } // int nc_def_var_fill(int ncid, int varid, int no_fill, void *fill_value); DEFUN_DLD(netcdf_defVarFill, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_defVarFill(@var{ncid},@var{varid},@var{no_fill},@var{fillvalue}) \n\ Define the fill-value settings of the NetCDF variable @var{varid}.\n\ If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true.\n\ @end deftypefn\n\ @seealso{netcdf_inqVarFill}\n") { if (args.length() != 4) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int no_fill = args(2).scalar_value(); // boolean octave_value fill_value = args(3); nc_type xtype; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_vartype (ncid, varid, &xtype)); switch (xtype) { #define OV_NETCDF_DEF_VAR_FILL(netcdf_type,c_type,method) \ case netcdf_type: \ { \ check_err(nc_def_var_fill(ncid, varid, no_fill, fill_value.method().fortran_vec())); \ break; \ } OV_NETCDF_DEF_VAR_FILL(NC_BYTE, signed char, int8_array_value) OV_NETCDF_DEF_VAR_FILL(NC_UBYTE, unsigned char, uint8_array_value) OV_NETCDF_DEF_VAR_FILL(NC_SHORT, short, int16_array_value) OV_NETCDF_DEF_VAR_FILL(NC_USHORT, unsigned short, uint16_array_value) OV_NETCDF_DEF_VAR_FILL(NC_INT, int, int32_array_value) OV_NETCDF_DEF_VAR_FILL(NC_UINT, unsigned int, uint32_array_value) OV_NETCDF_DEF_VAR_FILL(NC_INT64, long long, int64_array_value) OV_NETCDF_DEF_VAR_FILL(NC_UINT64, unsigned long long, uint64_array_value) OV_NETCDF_DEF_VAR_FILL(NC_FLOAT, float, float_array_value) OV_NETCDF_DEF_VAR_FILL(NC_DOUBLE,double,array_value) OV_NETCDF_DEF_VAR_FILL(NC_CHAR, char, char_array_value) } return octave_value(); } // int nc_def_var_fill(int ncid, int varid, int no_fill, void *fill_value); DEFUN_DLD(netcdf_inqVarFill, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{no_fill},@var{fillvalue}] = } netcdf_inqVarFill(@var{ncid},@var{varid}) \n\ Determines the fill-value settings of the NetCDF variable @var{varid}.\n\ If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true.\n\ @end deftypefn\n\ @seealso{netcdf_defVarFill}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int no_fill; nc_type xtype; octave_value_list retval; octave_value data; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_vartype (ncid, varid, &xtype)); if (error_state) { return octave_value(); } switch (xtype) { #define OV_NETCDF_INQ_VAR_FILL(netcdf_type,c_type) \ case netcdf_type: \ { \ Array< c_type > fill_value = Array< c_type >(dim_vector(1,1)); \ check_err(nc_inq_var_fill(ncid, varid, &no_fill, \ fill_value.fortran_vec())); \ data = octave_value(fill_value); \ break; \ } OV_NETCDF_INQ_VAR_FILL(NC_BYTE,octave_int8) OV_NETCDF_INQ_VAR_FILL(NC_UBYTE,octave_uint8) OV_NETCDF_INQ_VAR_FILL(NC_SHORT,octave_int16) OV_NETCDF_INQ_VAR_FILL(NC_USHORT,octave_uint16) OV_NETCDF_INQ_VAR_FILL(NC_INT,octave_int32) OV_NETCDF_INQ_VAR_FILL(NC_UINT,octave_uint32) OV_NETCDF_INQ_VAR_FILL(NC_INT64,octave_int64) OV_NETCDF_INQ_VAR_FILL(NC_UINT64,octave_uint64) OV_NETCDF_INQ_VAR_FILL(NC_FLOAT,float) OV_NETCDF_INQ_VAR_FILL(NC_DOUBLE,double) OV_NETCDF_INQ_VAR_FILL(NC_CHAR,char) } //cout << "xtype3 " << xtype << " " << NC_DOUBLE << std::endl; retval(0) = octave_value(no_fill); retval(1) = data; return retval; } //nc_def_var_deflate(int ncid, int varid, int shuffle, int deflate, // int deflate_level); DEFUN_DLD(netcdf_defVarDeflate, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_defVarDeflate (@var{ncid},@var{varid},@var{shuffle},@var{deflate},@var{deflate_level}) \n\ Define the compression settings NetCDF variable @var{varid}.\n\ If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression).\n\ @end deftypefn\n\ @seealso{netcdf_inqVarDeflate}\n") { if (args.length() != 5) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int shuffle = args(2).scalar_value(); // boolean int deflate = args(3).scalar_value(); // boolean int deflate_level = args(4).scalar_value(); if (error_state) { print_usage (); return octave_value(); } check_err(nc_def_var_deflate (ncid, varid, shuffle, deflate, deflate_level)); return octave_value(); } //nc_inq_var_deflate(int ncid, int varid, int *shufflep, // int *deflatep, int *deflate_levelp); DEFUN_DLD(netcdf_inqVarDeflate, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{shuffle},@var{deflate},@var{deflate_level}] = } netcdf_inqVarDeflate (@var{ncid},@var{varid}) \n\ Determines the compression settings NetCDF variable @var{varid}.\n\ If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression).\n\ @end deftypefn\n\ @seealso{netcdf_defVarDeflate}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int shuffle, deflate, deflate_level; octave_value_list retval; if (! error_state) { int format; check_err(nc_inq_format(ncid, &format)); // nc_inq_var_deflate returns garbage for classic or 64bit files if (format == NC_FORMAT_CLASSIC || format == NC_FORMAT_64BIT) { shuffle = 0; deflate = 0; deflate_level = 0; } else { check_err(nc_inq_var_deflate(ncid, varid, &shuffle,&deflate,&deflate_level)); } retval(0) = octave_value(shuffle); retval(1) = octave_value(deflate); retval(2) = octave_value(deflate_level); } return retval; } //int nc_def_var_chunking(int ncid, int varid, int storage, size_t *chunksizesp); //chunksizes can be ommited if storage is \"CONTIGUOUS\" DEFUN_DLD(netcdf_defVarChunking, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_defVarChunking (@var{ncid},@var{varid},@var{storage},@var{chunkSizes}) \n\ Define the chunking settings of NetCDF variable @var{varid}.\n\ If @var{storage} is the string \"chunked\", the variable is stored by chunk of the size @var{chunkSizes}.\n\ If @var{storage} is the string \"contiguous\", the variable is stored in a contiguous way.\n\ @end deftypefn\n\ @seealso{netcdf_inqVarChunking}\n") { if (args.length() != 3 && args.length() != 4) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string storagestr = args(2).string_value(); int storage; if (! error_state) { std::transform(storagestr.begin(), storagestr.end(),storagestr.begin(), ::toupper); if (storagestr == "CHUNKED") { storage = NC_CHUNKED; } else if (storagestr == "CONTIGUOUS") { storage = NC_CONTIGUOUS; } else { error("unknown storage %s",storagestr.c_str()); return octave_value(); } if (args.length() == 4) { OCTAVE_LOCAL_BUFFER (size_t, chunksizes, args(3).numel()); to_size_t_vector(args(3), args(3).numel(),chunksizes); check_err(nc_def_var_chunking(ncid, varid, storage, chunksizes)); } else { check_err(nc_def_var_chunking(ncid, varid, storage, NULL)); } } return octave_value(); } //int nc_inq_var_chunking(int ncid, int varid, int *storagep, size_t *chunksizesp); DEFUN_DLD(netcdf_inqVarChunking, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{storage},@var{chunkSizes}] = } netcdf_inqVarChunking (@var{ncid},@var{varid}) \n\ Determines the chunking settings of NetCDF variable @var{varid}.\n\ If @var{storage} is the string \"chunked\", the variable is stored by chunk of the size @var{chunkSizes}.\n\ If @var{storage} is the string \"contiguous\", the variable is stored in a contiguous way.\n\ @end deftypefn\n\ @seealso{netcdf_defVarChunking}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int storage; int ndims; octave_value_list retval; check_err(nc_inq_varndims (ncid, varid, &ndims)); OCTAVE_LOCAL_BUFFER (size_t, chunksizes, ndims); if (! error_state) { check_err(nc_inq_var_chunking(ncid, varid, &storage, chunksizes)); if (storage == NC_CHUNKED) { retval(0) = octave_value("chunked"); // should use uint32NDArray on 32-bit? uint64NDArray chunkSizes = uint64NDArray(dim_vector(1,ndims)); for (int i = 0; i < ndims; i++) { chunkSizes(ndims-i-1) = chunksizes[i]; } retval(1) = octave_value(chunkSizes); } else { retval(0) = octave_value("contiguous"); retval(1) = octave_value(Array()); } } return retval; } // nc_def_var_fletcher32(int ncid, int varid, int checksum); DEFUN_DLD(netcdf_defVarFletcher32, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_defVarFletcher32(@var{ncid},@var{varid},@var{checksum}) \n\ Defines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If @var{checksum} is the string \"FLETCHER32\", then fletcher32 checksums will be turned on for this variable. If @var{checksum} is \"NOCHECKSUM\", then checksums will be disabled. \n\ @end deftypefn\n\ @seealso{netcdf_defVar,netcdf_inqVarFletcher32}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int checksum = netcdf_get_constant(args(2)).int_value(); if (error_state) { print_usage (); return octave_value(); } check_err(nc_def_var_fletcher32(ncid, varid, checksum)); return octave_value(); } DEFUN_DLD(netcdf_inqVarFletcher32, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{checksum} =} netcdf_inqVarFletcher32(@var{ncid},@var{varid}) \n\ Determines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If fletcher32 checksums is turned on for this variable, then @var{checksum} is the string \"FLETCHER32\". Otherwise it is the string \"NOCHECKSUM\". \n\ @end deftypefn\n\ @seealso{netcdf_defVar,netcdf_inqVarFletcher32}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int checksum; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_var_fletcher32(ncid, varid, &checksum)); if (checksum == NC_FLETCHER32) { return octave_value("FLETCHER32"); } else { return octave_value("NOCHECKSUM"); } } DEFUN_DLD(netcdf_endDef, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_endDef (@var{ncid}) \n\ Leaves define-mode of NetCDF file @var{ncid}.\n\ @end deftypefn\n\ @seealso{netcdf_reDef}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); if (error_state) { print_usage (); return octave_value(); } check_err(nc_enddef (ncid)); return octave_value(); } DEFUN_DLD(netcdf_reDef, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_reDef (@var{ncid}) \n\ Enter define-mode of NetCDF file @var{ncid}.\n\ @end deftypefn\n\ @seealso{netcdf_endDef}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); if (error_state) { print_usage (); return octave_value(); } check_err(nc_redef (ncid)); return octave_value(); } // http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-c/nc_005fput_005fvar_005f-type.html#nc_005fput_005fvar_005f-type DEFUN_DLD(netcdf_putVar, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{data}) \n\ @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{data}) \n\ @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{data}) \n\ @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride},@var{data}) \n\ Put data in a NetCDF variable.\n\ The data @var{data} is stored in the variable @var{varid} of the NetCDF file @var{ncid}. \n\ @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), \n\ @var{count} is the number of elements of to be written along each dimension (default all elements)\n\ and @var{stride} is the sampling interval.\n\ @end deftypefn\n\ @seealso{netcdf_endDef}\n") { if (args.length() < 3 || args.length() > 6) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value (); octave_value data = args(args.length()-1); if (error_state) { print_usage (); return octave_value(); } int ndims; check_err(nc_inq_varndims (ncid, varid, &ndims)); OCTAVE_LOCAL_BUFFER (size_t, start, ndims); OCTAVE_LOCAL_BUFFER (size_t, count, ndims); OCTAVE_LOCAL_BUFFER (ptrdiff_t, stride, ndims); nc_type xtype; check_err(nc_inq_vartype (ncid, varid, &xtype)); //int sliced_numel = tmp.numel(); if (error_state) { return octave_value(); } start_count_stride(ncid, varid, args, args.length()-1, ndims, start, count, stride); // check if count matched size(data) switch (xtype) { #define OV_NETCDF_PUT_VAR(netcdf_type,c_type,method) \ case netcdf_type: \ { \ check_err(nc_put_vars (ncid, varid, start, count, stride, (c_type*)data.method().fortran_vec())); \ break; \ } OV_NETCDF_PUT_VAR(NC_BYTE, signed char, int8_array_value) OV_NETCDF_PUT_VAR(NC_UBYTE, unsigned char, uint8_array_value) OV_NETCDF_PUT_VAR(NC_SHORT, short, int16_array_value) OV_NETCDF_PUT_VAR(NC_USHORT, unsigned short, uint16_array_value) OV_NETCDF_PUT_VAR(NC_INT, int, int32_array_value) OV_NETCDF_PUT_VAR(NC_UINT, unsigned int, uint32_array_value) OV_NETCDF_PUT_VAR(NC_INT64, long long, int64_array_value) OV_NETCDF_PUT_VAR(NC_UINT64, unsigned long long, uint64_array_value) OV_NETCDF_PUT_VAR(NC_FLOAT, float, float_array_value) OV_NETCDF_PUT_VAR(NC_DOUBLE,double,array_value) OV_NETCDF_PUT_VAR(NC_CHAR, char, char_array_value) default: { error("unknown type %d" ,xtype); } } return octave_value(); } DEFUN_DLD(netcdf_getVar, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid}) \n\ @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start}) \n\ @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start},@var{count}) \n\ @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride}) \n\ Get the data from a NetCDF variable.\n\ The data @var{data} is loaded from the variable @var{varid} of the NetCDF file @var{ncid}. \n\ @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), \n\ @var{count} is the number of elements of to be written along each dimension (default all elements)\n\ and @var{stride} is the sampling interval.\n\ @end deftypefn\n\ @seealso{netcdf_putVar}\n") { if (args.length() < 2 || args.length() > 5) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value (); std::list ranges; int ndims; octave_value data; nc_type xtype; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_vartype (ncid, varid, &xtype)); if (error_state) { return octave_value(); } check_err(nc_inq_varndims (ncid, varid, &ndims)); //std::cout << "ndims " << ndims << std::endl; if (error_state) { return octave_value(); } OCTAVE_LOCAL_BUFFER (size_t, start, ndims); OCTAVE_LOCAL_BUFFER (size_t, count, ndims); OCTAVE_LOCAL_BUFFER (ptrdiff_t, stride, ndims); int sz = 1; dim_vector sliced_dim_vector; if (ndims < 2) { sliced_dim_vector.resize(2); sliced_dim_vector(0) = 1; sliced_dim_vector(1) = 1; } else { sliced_dim_vector.resize(ndims); } start_count_stride(ncid, varid, args, args.length(), ndims, start, count, stride); // std::cout << "count " << count[0] << std::endl; // std::cout << "start " << start[0] << std::endl; // std::cout << "stide " << stride[0] << std::endl; if (error_state) { print_usage (); return octave_value(); } // total size sz for (int i=0; i arr = Array < float >(sliced_dim_vector); // float* time; // time = (float*)malloc(10 * sizeof(float)); // check_err(nc_get_vars(ncid, varid, start, count, stride, time)); // data = octave_value(arr); // return data; switch (xtype) { #define OV_NETCDF_GET_VAR_CASE(netcdf_type,c_type) \ case netcdf_type: \ { \ Array < c_type > arr = Array < c_type >(sliced_dim_vector); \ /* necessary for netcdf 4.1.3 */ \ if (sz > 0) { \ check_err(nc_get_vars(ncid, varid, start, count, stride, arr.fortran_vec())); \ } \ data = octave_value(arr); \ break; \ } OV_NETCDF_GET_VAR_CASE(NC_BYTE,octave_int8) OV_NETCDF_GET_VAR_CASE(NC_UBYTE,octave_uint8) OV_NETCDF_GET_VAR_CASE(NC_SHORT,octave_int16) OV_NETCDF_GET_VAR_CASE(NC_USHORT,octave_uint16) OV_NETCDF_GET_VAR_CASE(NC_INT,octave_int32) OV_NETCDF_GET_VAR_CASE(NC_UINT,octave_uint32) OV_NETCDF_GET_VAR_CASE(NC_INT64,octave_int64) OV_NETCDF_GET_VAR_CASE(NC_UINT64,octave_uint64) OV_NETCDF_GET_VAR_CASE(NC_FLOAT,float) OV_NETCDF_GET_VAR_CASE(NC_DOUBLE,double) OV_NETCDF_GET_VAR_CASE(NC_CHAR, char) default: { error("unknown type %d" ,xtype); } } return data; } DEFUN_DLD(netcdf_close, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_close(@var{ncid}) \n\ Close the NetCDF file with the id @var{ncid}.\n\ @end deftypefn\n\ @seealso{netcdf_open}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); if (error_state) { print_usage (); return octave_value(); } check_err(nc_close(ncid)); return octave_value (); } // int nc_inq_attname(int ncid, int varid, int attnum, char *name); DEFUN_DLD(netcdf_inqAttName, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{name} =} netcdf_inqAttName (@var{ncid},@var{varid},@var{attnum}) \n\ Get the name of a NetCDF attribute.\n\ This function returns the name of the attribute with the id @var{attnum} of the variable \n\ @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be \n\ netcdf_getConstant(\"global\").\n\ @seealso{netcdf_inqAttName}\n\ @end deftypefn") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int attnum = args(2).scalar_value(); char name[NC_MAX_NAME+1]; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_attname(ncid, varid, attnum, name)); return octave_value(std::string(name)); } DEFUN_DLD(netcdf_inqAttID, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{attnum} =} netcdf_inqAttID(@var{ncid},@var{varid},@var{attname}) \n\ Return the attribute id @var{attnum} of the attribute named @var{attname} of the variable @var{varid} in the dataset @var{ncid}. \n\ For global attributes @var{varid} can be \n\ netcdf_getConstant(\"global\").\n\ @seealso{netcdf_inqAttName}\n\ @end deftypefn") { if (args.length() != 3) { print_usage (); return octave_value (); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string attname = args(2).string_value(); int attnum; if (error_state) { print_usage (); return octave_value (); } check_err (nc_inq_attid (ncid, varid, attname.c_str(), &attnum)); return octave_value(attnum); } //int nc_inq_att (int ncid, int varid, const char *name, // nc_type *xtypep, size_t *lenp); DEFUN_DLD(netcdf_inqAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{xtype},@var{len}] = } netcdf_inqAtt(@var{ncid},@var{varid},@var{name}) \n\ Get attribute type and length.\n\ @seealso{netcdf_inqAttName}\n\ @end deftypefn") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string name = args(2).string_value(); int xtype; size_t len; octave_value_list retval; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_att(ncid, varid, name.c_str(), &xtype, &len)); retval(0) = octave_value(xtype); retval(1) = octave_value(len); return retval; } DEFUN_DLD(netcdf_getAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{data} =} netcdf_getAtt (@var{ncid},@var{varid},@var{name}) \n\ Get the value of a NetCDF attribute.\n\ This function returns the value of the attribute called @var{name} of the variable \n\ @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be \n\ netcdf_getConstant(\"global\").\n\ @seealso{netcdf_putAtt}\n\ @end deftypefn") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string attname = args(2).string_value(); nc_type xtype; size_t len; octave_value data; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_att(ncid, varid, attname.c_str(), &xtype, &len)); if (error_state) { return octave_value(); } #define OV_NETCDF_GET_ATT_CASE(netcdf_type,c_type) \ if (xtype == netcdf_type) \ { \ Array< c_type > arr = Array< c_type >(dim_vector(1,len)); \ check_err(nc_get_att(ncid, varid, attname.c_str(), arr.fortran_vec())); \ data = octave_value(arr); \ } OV_NETCDF_GET_ATT_CASE(NC_BYTE,octave_int8) OV_NETCDF_GET_ATT_CASE(NC_UBYTE,octave_uint8) OV_NETCDF_GET_ATT_CASE(NC_SHORT,octave_int16) OV_NETCDF_GET_ATT_CASE(NC_USHORT,octave_uint16) OV_NETCDF_GET_ATT_CASE(NC_INT,octave_int32) OV_NETCDF_GET_ATT_CASE(NC_UINT,octave_uint32) OV_NETCDF_GET_ATT_CASE(NC_INT64,octave_int64) OV_NETCDF_GET_ATT_CASE(NC_UINT64,octave_uint64) OV_NETCDF_GET_ATT_CASE(NC_FLOAT,float) OV_NETCDF_GET_ATT_CASE(NC_DOUBLE,double) OV_NETCDF_GET_ATT_CASE(NC_CHAR, char) return data; } DEFUN_DLD(netcdf_putAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_putAtt (@var{ncid},@var{varid},@var{name},@var{data}) \n\ Defines a NetCDF attribute.\n\ This function defines the attribute called @var{name} of the variable \n\ @var{varid} in the NetCDF file @var{ncid}. The value of the attribute will be @var{data}. \n\ For global attributes @var{varid} can be \n\ netcdf_getConstant(\"global\").\n\ @seealso{netcdf_getAtt}\n\ @end deftypefn") { if (args.length() != 4) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string attname = args(2).string_value(); octave_value data = args(3); nc_type xtype; if (error_state) { print_usage (); return octave_value(); } // get matching netcdf type if (data.is_string()) xtype = NC_CHAR; else if (data.is_int8_type()) xtype = NC_BYTE; else if (data.is_uint8_type()) xtype = NC_UBYTE; else if (data.is_int16_type()) xtype = NC_SHORT; else if (data.is_uint16_type()) xtype = NC_USHORT; else if (data.is_int32_type()) xtype = NC_INT; else if (data.is_uint32_type()) xtype = NC_UINT; else if (data.is_int64_type()) xtype = NC_INT64; else if (data.is_uint64_type()) xtype = NC_UINT64; else if (data.is_single_type()) xtype = NC_FLOAT; else xtype = NC_DOUBLE; //cout << "xtype " << xtype << endl; size_t len = data.numel(); switch (xtype) { #define OV_NETCDF_PUT_ATT(netcdf_type,c_type,method) \ case netcdf_type: \ { \ check_err(nc_put_att (ncid, varid, attname.c_str(), xtype, len, data.method().fortran_vec())); \ break; \ } OV_NETCDF_PUT_ATT(NC_BYTE, signed char, int8_array_value) OV_NETCDF_PUT_ATT(NC_UBYTE, unsigned char, uint8_array_value) OV_NETCDF_PUT_ATT(NC_SHORT, short, int16_array_value) OV_NETCDF_PUT_ATT(NC_USHORT, unsigned short, uint16_array_value) OV_NETCDF_PUT_ATT(NC_INT, int, int32_array_value) OV_NETCDF_PUT_ATT(NC_UINT, unsigned int, uint32_array_value) OV_NETCDF_PUT_ATT(NC_INT64, long long, int64_array_value) OV_NETCDF_PUT_ATT(NC_UINT64, unsigned long long, uint64_array_value) OV_NETCDF_PUT_ATT(NC_FLOAT, float, float_array_value) OV_NETCDF_PUT_ATT(NC_DOUBLE,double,array_value) OV_NETCDF_PUT_ATT(NC_CHAR, char, char_array_value) } /* check_err(nc_put_att (int ncid, int varid, const char *name, nc_type xtype, size_t len, const void *op));*/ return octave_value(); } DEFUN_DLD(netcdf_copyAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_copyAtt (@var{ncid},@var{varid},@var{name},@var{ncid_out},@var{varid_out}) \n\ Copies the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid} \n\ to the variable @var{varid_out} in the data set @var{ncid_out}. \n\ To copy a global attribute use netcdf_getConstant(\"global\") for @var{varid} or @var{varid_out}.\n\ @seealso{netcdf_getAtt,netcdf_getConstant}\n\ @end deftypefn") { if (args.length() != 5) { print_usage (); return octave_value (); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string name = args(2).string_value(); int ncid_out = args(3).scalar_value(); int varid_out = args(4).scalar_value(); if (error_state) { print_usage (); return octave_value (); } check_err (nc_copy_att (ncid, varid, name.c_str(), ncid_out, varid_out)); return octave_value (); } DEFUN_DLD(netcdf_renameAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_renameAtt(@var{ncid},@var{varid},@var{old_name},@var{new_name}) \n\ Renames the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid}. @var{new_name} is the new name of the attribute.\n\ To rename a global attribute use netcdf_getConstant(\"global\") for @var{varid}.\n\ @seealso{netcdf_copyAtt,netcdf_getConstant}\n\ @end deftypefn") { if (args.length() != 4) { print_usage (); return octave_value (); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string old_name = args(2).string_value(); std::string new_name = args(3).string_value(); if (error_state) { print_usage (); return octave_value (); } check_err(nc_rename_att (ncid, varid, old_name.c_str(), new_name.c_str())); return octave_value (); } DEFUN_DLD(netcdf_delAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_delAtt(@var{ncid},@var{varid},@var{name}) \n\ Deletes the attribute named @var{name} of the variable @var{varid} in the data set @var{ncid}. \n\ To delete a global attribute use netcdf_getConstant(\"global\") for @var{varid}.\n\ @seealso{netcdf_defAtt,netcdf_getConstant}\n\ @end deftypefn") { if (args.length() != 3) { print_usage (); return octave_value (); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string name = args(2).string_value(); if (error_state) { print_usage (); return octave_value (); } check_err(nc_del_att (ncid, varid, name.c_str())); return octave_value (); } DEFUN_DLD(netcdf_inqVarID, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{varid} = } netcdf_inqVarID (@var{ncid},@var{name}) \n\ Return the id of a variable based on its name.\n\ @seealso{netcdf_defVar,netcdf_inqVarIDs}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string varname = args(1).string_value(); int varid; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_varid(ncid,varname.c_str(), &varid)); return octave_value(varid); } DEFUN_DLD(netcdf_inqVarIDs, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{varids} = } netcdf_inqVarID (@var{ncid}) \n\ Return all variable ids.\n\ This functions returns all variable ids in a NetCDF file or NetCDF group.\n\ @seealso{netcdf_inqVarID}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value (); } int ncid = args(0).scalar_value(); int nvars; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_varids(ncid, &nvars, NULL)); if (error_state) { return octave_value(); } OCTAVE_LOCAL_BUFFER(int,tmp,nvars); NETCDF_INT_ARRAY varids = NETCDF_INT_ARRAY(dim_vector(1,nvars)); check_err(nc_inq_varids(ncid, &nvars, tmp)); for (int i=0; i < nvars; i++) { varids(i) = tmp[i]; } return octave_value(varids); } DEFUN_DLD(netcdf_inqVar, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{name},@var{nctype},@var{dimids},@var{nattr}] = } netcdf_inqVarID (@var{ncid},@var{varid}) \n\ Inquires information about a NetCDF variable.\n\ This functions returns the @var{name}, the NetCDF type @var{nctype}, an array of dimension ids \n\ @var{dimids} and the number of attributes @var{nattr} of the NetCDF variable. @var{nctype} in an \n\ integer corresponding NetCDF constants.\n\ @seealso{netcdf_inqVarID,netcdf_getConstant}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); char name[NC_MAX_NAME+1]; int ndims, natts; nc_type xtype; octave_value_list retval; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_varndims(ncid, varid, &ndims)); OCTAVE_LOCAL_BUFFER (int, dimids, ndims); if (error_state) { return octave_value(); } check_err(nc_inq_var(ncid, varid, name, &xtype, &ndims, dimids, &natts)); retval(0) = octave_value(std::string(name)); retval(1) = octave_value(xtype); // copy output arguments Array dimids_ = Array(dim_vector(1,ndims)); for (int i = 0; i < ndims; i++) { dimids_(i) = dimids[ndims-i-1]; } retval(2) = octave_value(dimids_); retval(3) = octave_value(natts); return retval; } DEFUN_DLD(netcdf_inqDim, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{name},@var{length}] =} netcdf_inqDim(@var{ncid},@var{dimid}) \n\ Returns the name and length of a NetCDF dimension.\n\ @seealso{netcdf_inqDimID}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int dimid = args(1).scalar_value(); octave_value_list retval; if (! error_state) { char name[NC_MAX_NAME+1]; size_t length; check_err(nc_inq_dim(ncid, dimid, name, &length)); retval(0) = octave_value(std::string(name)); retval(1) = octave_value(length); } return retval; } DEFUN_DLD(netcdf_inqDimID, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{dimid} =} netcdf_inqDimID(@var{ncid},@var{dimname}) \n\ Return the id of a NetCDF dimension.\n\ @seealso{netcdf_inqDim}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string dimname = args(1).string_value(); int id; octave_value_list retval; if (! error_state) { check_err(nc_inq_dimid(ncid, dimname.c_str(), &id)); retval(0) = octave_value(id); } return retval; } // int nc_inq_dimids(int ncid, int *ndims, int *dimids, int include_parents); DEFUN_DLD(netcdf_inqDimIDs, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{dimids} =} netcdf_inqDimID(@var{ncid}) \n\ @deftypefnx {Loadable Function} {@var{dimids} =} netcdf_inqDimID(@var{ncid},@var{include_parents}) \n\ Return the dimension ids defined in a NetCDF file.\n\ If @var{include_parents} is 1, the dimension ids of the parent group are also returned.\n\ Per default this is not the case (@var{include_parents} is 0).\n\ @seealso{netcdf_inqDim}\n\ @end deftypefn") { if (args.length() != 1 && args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int include_parents = 0; if (args.length() == 2) { include_parents = args(0).scalar_value(); } if (error_state) { print_usage (); return octave_value(); } int ndims; check_err(nc_inq_ndims(ncid, &ndims)); OCTAVE_LOCAL_BUFFER(int,tmp,ndims); NETCDF_INT_ARRAY dimids = NETCDF_INT_ARRAY(dim_vector(1,ndims)); check_err(nc_inq_dimids(ncid, &ndims, tmp, include_parents)); for (int i=0; i < ndims; i++) { dimids(i) = tmp[i]; } return octave_value(dimids); } // groups //int nc_def_grp(int parent_ncid, const char *name, int *new_ncid); DEFUN_DLD(netcdf_defGrp, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{new_ncid} =} netcdf_defGrp(@var{ncid},@var{name}) \n\ Define a group in a NetCDF file.\n\ @seealso{netcdf_inqGrps}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int parent_ncid = args(0).scalar_value(); std::string name = args(1).string_value(); int new_ncid; if (error_state) { print_usage (); return octave_value(); } check_err(nc_def_grp(parent_ncid, name.c_str(), &new_ncid)); return octave_value(new_ncid); } // int nc_inq_grps(int ncid, int *numgrps, int *ncids); DEFUN_DLD(netcdf_inqGrps, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{ncids} =} netcdf_inqGrps(@var{ncid}) \n\ Return all groups ids in a NetCDF file.\n\ @seealso{netcdf_inqGrps}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int numgrps; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_grps(ncid, &numgrps, NULL)); if (error_state) { return octave_value(); } OCTAVE_LOCAL_BUFFER(int,tmp,numgrps); NETCDF_INT_ARRAY ncids = NETCDF_INT_ARRAY(dim_vector(1,numgrps)); check_err(nc_inq_grps(ncid, NULL, tmp)); for (int i=0; i < numgrps; i++) { ncids(i) = tmp[i]; } return octave_value(ncids); } //int nc_inq_grpname(int ncid, char *name); DEFUN_DLD(netcdf_inqGrpName, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{name} =} netcdf_inqGrpName(@var{ncid}) \n\ Return group name in a NetCDF file.\n\ @seealso{netcdf_inqGrps}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); char name[NC_MAX_NAME+1]; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_grpname(ncid, name)); if (error_state) { return octave_value(); } return octave_value(std::string(name)); } //int nc_inq_grpname_full(int ncid, size_t *lenp, char *full_name); DEFUN_DLD(netcdf_inqGrpNameFull, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{name} =} netcdf_inqGrpNameFull(@var{ncid}) \n\ Return full name of group in NetCDF file.\n\ @seealso{netcdf_inqGrpName}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); size_t len; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_grpname_len(ncid,&len)); if (error_state) { return octave_value(); } char* name = new char[len+1]; octave_value retval; check_err(nc_inq_grpname_full(ncid, &len, name)); if (error_state) { delete[] name; return octave_value(); } retval = octave_value(std::string(name)); delete[] name; return retval; } // int nc_inq_grp_parent(int ncid, int *parent_ncid); DEFUN_DLD(netcdf_inqGrpParent, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{parent_ncid} =} netcdf_inqGrpParent(@var{ncid}) \n\ Return id of the parent group\n\ @seealso{netcdf_inqGrpName}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int parent_ncid; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_grp_parent(ncid, &parent_ncid)); return octave_value(parent_ncid); } // int nc_inq_grp_full_ncid(int ncid, char *full_name, int *grp_ncid); DEFUN_DLD(netcdf_inqGrpFullNcid, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{grp_ncid} =} netcdf_inqGrpFullNcid(@var{ncid},@var{name}) \n\ Return the group id based on the full group name.\n\ @seealso{netcdf_inqGrpName}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string name = args(1).string_value(); int grp_ncid; if (error_state) { print_usage (); return octave_value(); } int format; check_err(nc_inq_format(ncid, &format)); if (error_state) { return octave_value(); } if (format == NC_FORMAT_CLASSIC || format == NC_FORMAT_64BIT) { if (name == "/") { return octave_value(ncid); } else { error("groups are not supported in this format"); return octave_value(); } } // nc_inq_grp_full_ncid makes a segmentation fault if // file is in non-HDF5 format check_err(nc_inq_grp_full_ncid(ncid, name.c_str(),&grp_ncid)); return octave_value(grp_ncid); } // int nc_inq_ncid(int ncid, const char *name, int *grp_ncid); DEFUN_DLD(netcdf_inqNcid, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{grp_ncid} =} netcdf_inqNcid(@var{ncid},@var{name}) \n\ Return group id based on its name\n\ @seealso{netcdf_inqGrpFullNcid}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string name = args(1).string_value(); int grp_ncid; if (error_state) { print_usage (); return octave_value(); } check_err(nc_inq_ncid(ncid, name.c_str(), &grp_ncid)); return octave_value(grp_ncid); } netcdf/src/netcdf_constants.h000664 001750 001750 00000024067 12717333737 017414 0ustar00abarthabarth000000 000000 // generated by netcdf_constants.awk netcdf_constants["NC_NAT"] = octave_value(NC_NAT); netcdf_constants["NC_BYTE"] = octave_value(NC_BYTE); netcdf_constants["NC_CHAR"] = octave_value(NC_CHAR); netcdf_constants["NC_SHORT"] = octave_value(NC_SHORT); netcdf_constants["NC_INT"] = octave_value(NC_INT); netcdf_constants["NC_LONG"] = octave_value(NC_LONG); netcdf_constants["NC_FLOAT"] = octave_value(NC_FLOAT); netcdf_constants["NC_DOUBLE"] = octave_value(NC_DOUBLE); netcdf_constants["NC_UBYTE"] = octave_value(NC_UBYTE); netcdf_constants["NC_USHORT"] = octave_value(NC_USHORT); netcdf_constants["NC_UINT"] = octave_value(NC_UINT); netcdf_constants["NC_INT64"] = octave_value(NC_INT64); netcdf_constants["NC_UINT64"] = octave_value(NC_UINT64); netcdf_constants["NC_STRING"] = octave_value(NC_STRING); netcdf_constants["NC_FILL_BYTE"] = octave_value(octave_int8(NC_FILL_BYTE)); netcdf_constants["NC_FILL_CHAR"] = octave_value((char)NC_FILL_CHAR); netcdf_constants["NC_FILL_SHORT"] = octave_value(octave_int16(NC_FILL_SHORT)); netcdf_constants["NC_FILL_INT"] = octave_value(octave_int32(NC_FILL_INT)); netcdf_constants["NC_FILL_FLOAT"] = octave_value((float)NC_FILL_FLOAT); netcdf_constants["NC_FILL_DOUBLE"] = octave_value(NC_FILL_DOUBLE); netcdf_constants["NC_FILL_UBYTE"] = octave_value(octave_uint8(NC_FILL_UBYTE)); netcdf_constants["NC_FILL_USHORT"] = octave_value(octave_uint16(NC_FILL_USHORT)); netcdf_constants["NC_FILL_UINT"] = octave_value(octave_uint32(NC_FILL_UINT)); netcdf_constants["NC_FILL_INT64"] = octave_value(octave_int32(NC_FILL_INT64)); netcdf_constants["NC_FILL_UINT64"] = octave_value(octave_uint32(NC_FILL_UINT64)); netcdf_constants["NC_FILL_STRING"] = octave_value(std::string(NC_FILL_STRING)); netcdf_constants["NC_MAX_BYTE"] = octave_value(octave_int8(NC_MAX_BYTE)); netcdf_constants["NC_MIN_BYTE"] = octave_value(octave_int8(NC_MIN_BYTE)); netcdf_constants["NC_MAX_CHAR"] = octave_value((char)NC_MAX_CHAR); netcdf_constants["NC_MAX_SHORT"] = octave_value(octave_int16(NC_MAX_SHORT)); netcdf_constants["NC_MIN_SHORT"] = octave_value(octave_int16(NC_MIN_SHORT)); netcdf_constants["NC_MAX_INT"] = octave_value(octave_int32(NC_MAX_INT)); netcdf_constants["NC_MIN_INT"] = octave_value(octave_int32(NC_MIN_INT)); netcdf_constants["NC_MAX_FLOAT"] = octave_value((float)NC_MAX_FLOAT); netcdf_constants["NC_MIN_FLOAT"] = octave_value((float)NC_MIN_FLOAT); netcdf_constants["NC_MAX_DOUBLE"] = octave_value(NC_MAX_DOUBLE); netcdf_constants["NC_MIN_DOUBLE"] = octave_value(NC_MIN_DOUBLE); netcdf_constants["NC_MAX_UBYTE"] = octave_value(octave_uint8(NC_MAX_UBYTE)); netcdf_constants["NC_MAX_USHORT"] = octave_value(octave_uint16(NC_MAX_USHORT)); netcdf_constants["NC_MAX_UINT"] = octave_value(octave_uint32(NC_MAX_UINT)); netcdf_constants["NC_MAX_INT64"] = octave_value(octave_int32(NC_MAX_INT64)); netcdf_constants["NC_MIN_INT64"] = octave_value(octave_int32(NC_MIN_INT64)); netcdf_constants["NC_MAX_UINT64"] = octave_value(octave_uint32(NC_MAX_UINT64)); netcdf_constants["NC_FILL"] = octave_value(NC_FILL); netcdf_constants["NC_NOFILL"] = octave_value(NC_NOFILL); netcdf_constants["NC_NOWRITE"] = octave_value(NC_NOWRITE); netcdf_constants["NC_WRITE"] = octave_value(NC_WRITE); netcdf_constants["NC_CLOBBER"] = octave_value(NC_CLOBBER); netcdf_constants["NC_NOCLOBBER"] = octave_value(NC_NOCLOBBER); netcdf_constants["NC_64BIT_OFFSET"] = octave_value(NC_64BIT_OFFSET); netcdf_constants["NC_NETCDF4"] = octave_value(NC_NETCDF4); netcdf_constants["NC_CLASSIC_MODEL"] = octave_value(NC_CLASSIC_MODEL); netcdf_constants["NC_SHARE"] = octave_value(NC_SHARE); netcdf_constants["NC_MPIIO"] = octave_value(NC_MPIIO); netcdf_constants["NC_MPIPOSIX"] = octave_value(NC_MPIPOSIX); netcdf_constants["NC_PNETCDF"] = octave_value(NC_PNETCDF); netcdf_constants["NC_LOCK"] = octave_value(NC_LOCK); netcdf_constants["NC_FORMAT_CLASSIC"] = octave_value(NC_FORMAT_CLASSIC); netcdf_constants["NC_FORMAT_64BIT"] = octave_value(NC_FORMAT_64BIT); netcdf_constants["NC_FORMAT_NETCDF4"] = octave_value(NC_FORMAT_NETCDF4); netcdf_constants["NC_FORMAT_NETCDF4_CLASSIC"] = octave_value(NC_FORMAT_NETCDF4_CLASSIC); netcdf_constants["NC_SIZEHINT_DEFAULT"] = octave_value(NC_SIZEHINT_DEFAULT); netcdf_constants["NC_ALIGN_CHUNK"] = octave_value(NC_ALIGN_CHUNK); netcdf_constants["NC_UNLIMITED"] = octave_value(NC_UNLIMITED); netcdf_constants["NC_GLOBAL"] = octave_value(NC_GLOBAL); netcdf_constants["NC_MAX_DIMS"] = octave_value(NC_MAX_DIMS); netcdf_constants["NC_MAX_ATTRS"] = octave_value(NC_MAX_ATTRS); netcdf_constants["NC_MAX_VARS"] = octave_value(NC_MAX_VARS); netcdf_constants["NC_MAX_NAME"] = octave_value(NC_MAX_NAME); netcdf_constants["NC_MAX_VAR_DIMS"] = octave_value(NC_MAX_VAR_DIMS); netcdf_constants["NC_ENDIAN_NATIVE"] = octave_value(NC_ENDIAN_NATIVE); netcdf_constants["NC_ENDIAN_LITTLE"] = octave_value(NC_ENDIAN_LITTLE); netcdf_constants["NC_ENDIAN_BIG"] = octave_value(NC_ENDIAN_BIG); netcdf_constants["NC_CHUNKED"] = octave_value(NC_CHUNKED); netcdf_constants["NC_CONTIGUOUS"] = octave_value(NC_CONTIGUOUS); netcdf_constants["NC_NOCHECKSUM"] = octave_value(NC_NOCHECKSUM); netcdf_constants["NC_FLETCHER32"] = octave_value(NC_FLETCHER32); netcdf_constants["NC_NOSHUFFLE"] = octave_value(NC_NOSHUFFLE); netcdf_constants["NC_SHUFFLE"] = octave_value(NC_SHUFFLE); netcdf_constants["NC_NOERR"] = octave_value(NC_NOERR); netcdf_constants["NC_EBADID"] = octave_value(NC_EBADID); netcdf_constants["NC_ENFILE"] = octave_value(NC_ENFILE); netcdf_constants["NC_EEXIST"] = octave_value(NC_EEXIST); netcdf_constants["NC_EINVAL"] = octave_value(NC_EINVAL); netcdf_constants["NC_EPERM"] = octave_value(NC_EPERM); netcdf_constants["NC_ENOTINDEFINE"] = octave_value(NC_ENOTINDEFINE); netcdf_constants["NC_EINDEFINE"] = octave_value(NC_EINDEFINE); netcdf_constants["NC_EINVALCOORDS"] = octave_value(NC_EINVALCOORDS); netcdf_constants["NC_EMAXDIMS"] = octave_value(NC_EMAXDIMS); netcdf_constants["NC_ENAMEINUSE"] = octave_value(NC_ENAMEINUSE); netcdf_constants["NC_ENOTATT"] = octave_value(NC_ENOTATT); netcdf_constants["NC_EMAXATTS"] = octave_value(NC_EMAXATTS); netcdf_constants["NC_EBADTYPE"] = octave_value(NC_EBADTYPE); netcdf_constants["NC_EBADDIM"] = octave_value(NC_EBADDIM); netcdf_constants["NC_EUNLIMPOS"] = octave_value(NC_EUNLIMPOS); netcdf_constants["NC_EMAXVARS"] = octave_value(NC_EMAXVARS); netcdf_constants["NC_ENOTVAR"] = octave_value(NC_ENOTVAR); netcdf_constants["NC_EGLOBAL"] = octave_value(NC_EGLOBAL); netcdf_constants["NC_ENOTNC"] = octave_value(NC_ENOTNC); netcdf_constants["NC_ESTS"] = octave_value(NC_ESTS); netcdf_constants["NC_EMAXNAME"] = octave_value(NC_EMAXNAME); netcdf_constants["NC_EUNLIMIT"] = octave_value(NC_EUNLIMIT); netcdf_constants["NC_ENORECVARS"] = octave_value(NC_ENORECVARS); netcdf_constants["NC_ECHAR"] = octave_value(NC_ECHAR); netcdf_constants["NC_EEDGE"] = octave_value(NC_EEDGE); netcdf_constants["NC_ESTRIDE"] = octave_value(NC_ESTRIDE); netcdf_constants["NC_EBADNAME"] = octave_value(NC_EBADNAME); netcdf_constants["NC_ERANGE"] = octave_value(NC_ERANGE); netcdf_constants["NC_ENOMEM"] = octave_value(NC_ENOMEM); netcdf_constants["NC_EVARSIZE"] = octave_value(NC_EVARSIZE); netcdf_constants["NC_EDIMSIZE"] = octave_value(NC_EDIMSIZE); netcdf_constants["NC_ETRUNC"] = octave_value(NC_ETRUNC); netcdf_constants["NC_EAXISTYPE"] = octave_value(NC_EAXISTYPE); netcdf_constants["NC_EDAP"] = octave_value(NC_EDAP); netcdf_constants["NC_ECURL"] = octave_value(NC_ECURL); netcdf_constants["NC_EIO"] = octave_value(NC_EIO); netcdf_constants["NC_ENODATA"] = octave_value(NC_ENODATA); netcdf_constants["NC_EDAPSVC"] = octave_value(NC_EDAPSVC); netcdf_constants["NC_EDAS"] = octave_value(NC_EDAS); netcdf_constants["NC_EDDS"] = octave_value(NC_EDDS); netcdf_constants["NC_EDATADDS"] = octave_value(NC_EDATADDS); netcdf_constants["NC_EDAPURL"] = octave_value(NC_EDAPURL); netcdf_constants["NC_EDAPCONSTRAINT"] = octave_value(NC_EDAPCONSTRAINT); netcdf_constants["NC_EHDFERR"] = octave_value(NC_EHDFERR); netcdf_constants["NC_ECANTREAD"] = octave_value(NC_ECANTREAD); netcdf_constants["NC_ECANTWRITE"] = octave_value(NC_ECANTWRITE); netcdf_constants["NC_ECANTCREATE"] = octave_value(NC_ECANTCREATE); netcdf_constants["NC_EFILEMETA"] = octave_value(NC_EFILEMETA); netcdf_constants["NC_EDIMMETA"] = octave_value(NC_EDIMMETA); netcdf_constants["NC_EATTMETA"] = octave_value(NC_EATTMETA); netcdf_constants["NC_EVARMETA"] = octave_value(NC_EVARMETA); netcdf_constants["NC_ENOCOMPOUND"] = octave_value(NC_ENOCOMPOUND); netcdf_constants["NC_EATTEXISTS"] = octave_value(NC_EATTEXISTS); netcdf_constants["NC_ENOTNC4"] = octave_value(NC_ENOTNC4); netcdf_constants["NC_ESTRICTNC3"] = octave_value(NC_ESTRICTNC3); netcdf_constants["NC_ENOTNC3"] = octave_value(NC_ENOTNC3); netcdf_constants["NC_ENOPAR"] = octave_value(NC_ENOPAR); netcdf_constants["NC_EPARINIT"] = octave_value(NC_EPARINIT); netcdf_constants["NC_EBADGRPID"] = octave_value(NC_EBADGRPID); netcdf_constants["NC_EBADTYPID"] = octave_value(NC_EBADTYPID); netcdf_constants["NC_ETYPDEFINED"] = octave_value(NC_ETYPDEFINED); netcdf_constants["NC_EBADFIELD"] = octave_value(NC_EBADFIELD); netcdf_constants["NC_EBADCLASS"] = octave_value(NC_EBADCLASS); netcdf_constants["NC_EMAPTYPE"] = octave_value(NC_EMAPTYPE); netcdf_constants["NC_ELATEFILL"] = octave_value(NC_ELATEFILL); netcdf_constants["NC_ELATEDEF"] = octave_value(NC_ELATEDEF); netcdf_constants["NC_EDIMSCALE"] = octave_value(NC_EDIMSCALE); netcdf_constants["NC_ENOGRP"] = octave_value(NC_ENOGRP); netcdf_constants["NC_ESTORAGE"] = octave_value(NC_ESTORAGE); netcdf_constants["NC_EBADCHUNK"] = octave_value(NC_EBADCHUNK); netcdf_constants["NC_ENOTBUILT"] = octave_value(NC_ENOTBUILT); netcdf_constants["NC_HAVE_NEW_CHUNKING_API"] = octave_value(NC_HAVE_NEW_CHUNKING_API); netcdf_constants["NC_ENTOOL"] = octave_value(NC_ENTOOL); netcdf_constants["NC_EXDR"] = octave_value(NC_EXDR); netcdf_constants["NC_SYSERR"] = octave_value(NC_SYSERR); netcdf_constants["NC_FATAL"] = octave_value(NC_FATAL); netcdf_constants["NC_VERBOSE"] = octave_value(NC_VERBOSE); netcdf/src/Makeconf.in000664 001750 001750 00000002773 12717333737 015757 0ustar00abarthabarth000000 000000 ## Makeconf is automatically generated from Makeconf.base and Makeconf.add ## in the various subdirectories. To regenerate, use ./autogen.sh to ## create a new ./Makeconf.in, then use ./configure to generate a new ## Makeconf. OCTAVE_FORGE = 1 SHELL = @SHELL@ canonical_host_type = @canonical_host_type@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ mandir = @mandir@ libdir = @libdir@ datadir = @datadir@ infodir = @infodir@ includedir = @includedir@ datarootdir = @datarootdir@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_DATA = @INSTALL_DATA@ INSTALLOCT=octinst.sh DESTDIR = RANLIB = @RANLIB@ STRIP = @STRIP@ LN_S = @LN_S@ AWK = @AWK@ # Most octave programs will be compiled with $(MKOCTFILE). Those which # cannot use mkoctfile directly can request the flags that mkoctfile # would use as follows: # FLAG = $(shell $(MKOCTFILE) -p FLAG) # # The following flags are for compiling programs that are independent # # of Octave. How confusing. # CC = @CC@ # CFLAGS = @CFLAGS@ # CPPFLAGS = @CPPFLAGS@ # CPICFLAG = @CPICFLAG@ # CXX = @CXX@ # CXXFLAGS = @CXXFLAGS@ # CXXPICFLAG = @CXXPICFLAG@ # F77 = @F77@ # FFLAGS = @FFLAGS@ # FPICFLAG = @FPICFLAG@ OCTAVE = @OCTAVE@ OCTAVE_VERSION = @OCTAVE_VERSION@ MKOCTFILE = @MKOCTFILE@ -DHAVE_OCTAVE_$(ver) -v SHLEXT = @SHLEXT@ NC_CONFIG = @NC_CONFIG@ OCTAVE_CONFIG = @OCTAVE_CONFIG@ %.o: %.c ; $(MKOCTFILE) -c $< %.o: %.f ; $(MKOCTFILE) -c $< %.o: %.cc ; $(MKOCTFILE) -c $< %.oct: %.cc ; $(MKOCTFILE) $< netcdf/src/configure.base000664 001750 001750 00000025135 12717333737 016516 0ustar00abarthabarth000000 000000 dnl The configure script is generated by autogen.sh from configure.base dnl and the various configure.add files in the source tree. Edit dnl configure.base and reprocess rather than modifying ./configure. dnl autoconf 2.13 certainly doesn't work! What is the minimum requirement? AC_PREREQ(2.2) AC_INIT(configure.base) PACKAGE=octave-forge MAJOR_VERSION=0 MINOR_VERSION=1 PATCH_LEVEL=0 dnl Kill caching --- this ought to be the default define([AC_CACHE_LOAD], )dnl define([AC_CACHE_SAVE], )dnl dnl uncomment to put support files in another directory dnl AC_CONFIG_AUX_DIR(admin) VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL AC_SUBST(PACKAGE) AC_SUBST(VERSION) dnl need to find admin files, so keep track of the top dir. TOPDIR=`pwd` AC_SUBST(TOPDIR) dnl if mkoctfile doesn't work, then we need the following: dnl AC_PROG_CXX dnl AC_PROG_F77 dnl Need C compiler regardless so define it in a way that dnl makes autoconf happy and we can override whatever we dnl need with mkoctfile -p. dnl XXX FIXME XXX should use mkoctfile to get CC and CFLAGS AC_PROG_CC dnl XXX FIXME XXX need tests for -p -c -s in mkoctfile. dnl ******************************************************************* dnl Sort out mkoctfile version number and install paths dnl XXX FIXME XXX latest octave has octave-config so we don't dnl need to discover things here. Doesn't have --exe-site-dir dnl but defines --oct-site-dir and --m-site-dir dnl Check for mkoctfile AC_CHECK_PROG(MKOCTFILE,mkoctfile,mkoctfile) test -z "$MKOCTFILE" && AC_MSG_WARN([no mkoctfile found on path]) AC_CHECK_PROG(OCTAVE_CONFIG,octave-config,octave-config) test -z "$OCTAVE_CONFIG" && AC_MSG_WARN([no octave-config found on path]) AC_SUBST(ver) AC_SUBST(subver) AC_SUBST(mpath) AC_SUBST(opath) AC_SUBST(xpath) AC_SUBST(altpath) AC_SUBST(altmpath) AC_SUBST(altopath) AC_ARG_WITH(path, [ --with-path install path prefix], [ path=$withval ]) AC_ARG_WITH(mpath, [ --with-mpath override path for m-files], [mpath=$withval]) AC_ARG_WITH(opath, [ --with-opath override path for oct-files], [opath=$withval]) AC_ARG_WITH(xpath, [ --with-xpath override path for executables], [xpath=$withval]) AC_ARG_WITH(altpath, [ --with-altpath alternative functions install path prefix], [ altpath=$withval ]) AC_ARG_WITH(altmpath, [ --with-altmpath override path for alternative m-files], [altmpath=$withval]) AC_ARG_WITH(altopath, [ --with-altopath override path for alternative oct-files], [altopath=$withval]) if test -n "$path" ; then test -z "$mpath" && mpath=$path test -z "$opath" && opath=$path/oct test -z "$xpath" && xpath=$path/bin test -z "$altpath" && altpath=$path-alternatives fi if test -n "$altpath" ; then test -z "$altmpath" && altmpath=$altpath test -z "$altopath" && altopath=$altpath/oct fi dnl Don't query if path/ver are given in the configure environment #if test -z "$mpath" || test -z "$opath" || test -z "$xpath" || test -z "$altmpath" || test -z "$altopath" || test -z "$ver" ; then if test -z "$mpath" || test -z "$opath" || test -z "$xpath" || test -z "$ver" ; then dnl Construct program to get mkoctfile version and local install paths cat > conftest.cc < #include #include #define INFOV "\nINFOV=" OCTAVE_VERSION "\n" #define INFOH "\nINFOH=" OCTAVE_CANONICAL_HOST_TYPE "\n" #ifdef OCTAVE_LOCALVERFCNFILEDIR # define INFOM "\nINFOM=" OCTAVE_LOCALVERFCNFILEDIR "\n" #else # define INFOM "\nINFOM=" OCTAVE_LOCALFCNFILEPATH "\n" #endif #ifdef OCTAVE_LOCALVEROCTFILEDIR # define INFOO "\nINFOO=" OCTAVE_LOCALVEROCTFILEDIR "\n" #else # define INFOO "\nINFOO=" OCTAVE_LOCALOCTFILEPATH "\n" #endif #ifdef OCTAVE_LOCALVERARCHLIBDIR # define INFOX "\nINFOX=" OCTAVE_LOCALVERARCHLIBDIR "\n" #else # define INFOX "\nINFOX=" OCTAVE_LOCALARCHLIBDIR "\n" #endif const char *infom = INFOM; const char *infoo = INFOO; const char *infox = INFOX; const char *infoh = INFOH; const char *infov = INFOV; EOF dnl Compile program perhaps with a special version of mkoctfile $MKOCTFILE conftest.cc || AC_MSG_ERROR(Could not run $MKOCTFILE) dnl Strip the config info from the compiled file eval `strings conftest.o | grep "^INFO.=" | sed -e "s,//.*$,,"` rm -rf conftest* dnl set the appropriate variables if they are not already set ver=`echo $INFOV | sed -e "s/\.//" -e "s/\..*$//"` subver=`echo $INFOV | sed -e "[s/^[^.]*[.][^.]*[.]//]"` alt_mbase=`echo $INFOM | sed -e "[s,\/[^\/]*$,,]"` alt_obase=`echo $INFOO | sed -e "[s,/site.*$,/site,]"` test -z "$mpath" && mpath=$INFOM/octave-forge test -z "$opath" && opath=$INFOO/octave-forge test -z "$xpath" && xpath=$INFOX test -z "$altmpath" && altmpath=$alt_mbase/octave-forge-alternatives/m test -z "$altopath" && altopath=$alt_obase/octave-forge-alternatives/oct/$INFOH fi dnl ******************************************************************* dnl Get LDFLAGS and CPPFLAGS set by user dnl These flags will be added to the mkoctfile command line NETCDF_LIBS="$LDFLAGS" NETCDF_CFLAGS="$CPPFLAGS" dnl XXX FIXME XXX Should we allow the user to override these? dnl Do we even need them? The individual makefiles can call mkoctfile -p dnl themselves, so the only reason to keep them is for configure, and dnl for those things which are not built using mkoctfile (e.g., aurecord) dnl but it is not clear we should be using octave compile flags for those. dnl netcdf does not need CFLAGS, CPPFLAGS,... from mkoctfile dnl -> comment corresponding lines # dnl C compiler and flags # AC_MSG_RESULT([retrieving compile and link flags from $MKOCTFILE]) # CC=`$MKOCTFILE -p CC` # CFLAGS=`$MKOCTFILE -p CFLAGS` # CPPFLAGS=`$MKOCTFILE -p CPPFLAGS` # CPPFLAGS="not used" # CPICFLAG=`$MKOCTFILE -p CPICFLAG` # LDFLAGS=`$MKOCTFILE -p LDFLAGS` # LIBS=`$MKOCTFILE -p LIBS` # AC_SUBST(CC) # AC_SUBST(CFLAGS) # AC_SUBST(CPPFLAGS) # AC_SUBST(CPICFLAG) # dnl Fortran compiler and flags # F77=`$MKOCTFILE -p F77` # FFLAGS=`$MKOCTFILE -p FFLAGS` # FPICFLAG=`$MKOCTFILE -p FPICFLAG` # AC_SUBST(F77) # AC_SUBST(FFLAGS) # AC_SUBST(FPICFLAG) # dnl C++ compiler and flags # CXX=`$MKOCTFILE -p CXX` # CXXFLAGS=`$MKOCTFILE -p CXXFLAGS` # CXXPICFLAG=`$MKOCTFILE -p CXXPICFLAG` # AC_SUBST(CXX) # AC_SUBST(CXXFLAGS) # AC_SUBST(CXXPICFLAG) dnl ******************************************************************* dnl Check for features of your version of mkoctfile. dnl All checks should be designed so that the default dnl action if the tests are not performed is to do whatever dnl is appropriate for the most recent version of Octave. dnl Define the following macro: dnl OF_CHECK_LIB(lib,fn,true,false,helpers) dnl This is just like AC_CHECK_LIB, but it doesn't update LIBS AC_DEFUN(OF_CHECK_LIB, [save_LIBS="$LIBS" AC_CHECK_LIB($1,$2,$3,$4,$5) LIBS="$save_LIBS" ]) dnl Define the following macro: dnl TRY_MKOCTFILE(msg,program,action_if_true,action_if_false) dnl AC_DEFUN(TRY_MKOCTFILE, [AC_MSG_CHECKING($1) cat > conftest.cc << EOF #include $2 EOF ac_try="$MKOCTFILE -c conftest.cc" if AC_TRY_EVAL(ac_try) ; then AC_MSG_RESULT(yes) $3 else AC_MSG_RESULT(no) $4 fi ]) dnl dnl Check if F77_FUNC works with MKOCTFILE dnl TRY_MKOCTFILE([for F77_FUNC], [int F77_FUNC (hello, HELLO) (const int &n);],, [MKOCTFILE="$MKOCTFILE -DF77_FUNC=F77_FCN"]) dnl ********************************************************** dnl Evaluate an expression in octave dnl dnl OCTAVE_EVAL(expr,var) -> var=expr dnl AC_DEFUN(OCTAVE_EVAL, [AC_MSG_CHECKING([for $1 in Octave]) $2=`echo "disp($1)" | $OCTAVE -qf` AC_MSG_RESULT($$2) AC_SUBST($2) ]) AC_DEFUN(OCTAVE_CONFIG_EVAL, [AC_MSG_CHECKING([for $1 in octave-config]) $2=`$OCTAVE_CONFIG -p $1` AC_MSG_RESULT($$2) AC_SUBST($2) ]) dnl Check status of an octave variable dnl dnl OCTAVE_CHECK_EXIST(variable,action_if_true,action_if_false) dnl AC_DEFUN(OCTAVE_CHECK_EXIST, [AC_MSG_CHECKING([for $1 in Octave]) if test `echo 'disp(exist("$1"))' | $OCTAVE -qf`X != 0X ; then AC_MSG_RESULT(yes) $2 else AC_MSG_RESULT(no) $3 fi ]) dnl should check that $(OCTAVE) --version matches $(MKOCTFILE) --version AC_CHECK_PROG(OCTAVE,octave,octave) OCTAVE_CONFIG_EVAL(VERSION,OCTAVE_VERSION) dnl grab canonical host type so we can write system specific install stuff OCTAVE_CONFIG_EVAL(CANONICAL_HOST_TYPE,canonical_host_type) dnl grab SHLEXT from octave config OCTAVE_CONFIG_EVAL(SHLEXT,SHLEXT) AC_PROG_LN_S AC_PROG_RANLIB dnl Use $(COPY_FLAGS) to set options for cp when installing .oct files. COPY_FLAGS="-Rfp" case "$canonical_host_type" in *-*-linux*) COPY_FLAGS="-fdp" ;; esac AC_SUBST(COPY_FLAGS) dnl Use $(STRIP) in the makefile to strip executables. If not found, dnl STRIP expands to ':', which in the makefile does nothing. dnl Don't need this for .oct files since mkoctfile handles them directly STRIP=${STRIP-strip} AC_CHECK_PROG(STRIP,$STRIP,$STRIP,:) dnl Strip on windows, don't strip on Mac OS/X or IRIX dnl For the rest, you can force strip using MKOCTFILE="mkoctfile -s" dnl or avoid strip using STRIP=: before ./configure case "$canonical_host_type" in powerpc-apple-darwin*|*-sgi-*) STRIP=: ;; *-cygwin-*|*-mingw-*) MKOCTFILE="$MKOCTFILE -s" ;; esac dnl checking for nc-config dnl AC_CHECK_PROG(NC_CONFIG, nc-config, nc-config) AC_CHECK_TOOL(NC_CONFIG, nc-config, nc-config) if test -z "$NC_CONFIG"; then AC_MSG_ERROR([nc-config not found], 1); fi dnl The following will be either "yes" or "no" AC_MSG_CHECKING(for netcdf4 support) NETCDF_V4=`$NC_CONFIG --has-nc4` if test x$NETCDF_V4 != yes; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) AC_MSG_ERROR(netcdf4 support missing. Did you disable netcdf4 features?) fi dnl other way to check this dnl NETCDF_LIBS="$NETCDF_LIBS `$NC_CONFIG --libs`" dnl NETCDF_CFLAGS="$NETCDF_CFLAGS `$NC_CONFIG --cflags`" dnl CFLAGS="$NETCDF_CFLAGS $CFLAGS" dnl CXXFLAGS="$NETCDF_CFLAGS $CXXFLAGS" dnl LDFLAGS="$NETCDF_LIBS $LDFLAGS" dnl AC_CHECK_LIB([netcdf], [nc_set_chunk_cache], , [AC_MSG_ERROR(nc_set_chunk_cache was not found in the netCDF library. Did you disable netcdf4 features?)]) CONFIGURE_OUTPUTS="Makeconf" STATUS_MSG=" octave commands will install into the following directories: m-files: $mpath oct-files: $opath binaries: $xpath alternatives: m-files: $altmpath oct-files: $altopath shell commands will install into the following directories: binaries: $bindir man pages: $mandir libraries: $libdir headers: $includedir octave-forge is configured with octave: $OCTAVE (version $OCTAVE_VERSION) mkoctfile: $MKOCTFILE for Octave $subver octave-config: $OCTAVE_CONFIG for Octave $subver netCDF compiler flags: $NETCDF_CFLAGS netCDF libraries: $NETCDF_LIBS" netcdf/src/Makefile000664 001750 001750 00000001434 12717333737 015335 0ustar00abarthabarth000000 000000 sinclude Makeconf AWK ?= awk MKOCTFILE ?= mkoctfile OCTAVE ?= octave NC_CONFIG ?= nc-config NCHEADER=$(shell $(NC_CONFIG) --includedir)/netcdf.h SRC=__netcdf__.cc CFLAGS=$(shell $(NC_CONFIG) --cflags) LIBS=$(shell $(NC_CONFIG) --libs) all: __netcdf__.oct constants: $(AWK) -f netcdf_constants.awk $(NCHEADER) > netcdf_constants.h clean: rm -f __netcdf__.o __netcdf__.oct real-clean: clean rm -f ../PKG_ADD ../inst/import_netcdf.m __netcdf__.oct: $(SRC) netcdf_constants.h $(MKOCTFILE) $(CFLAGS) $(SRC) $(LIBS) ../PKG_ADD: $(SRC) sh PKG_ADD.sh check: ../PKG_ADD __netcdf__.oct ($(OCTAVE) -f --eval "pkg unload octcdf; addpath $$PWD; addpath $$PWD/../inst; test_netcdf") check2: ../PKG_ADD __netcdf__.oct ($(OCTAVE) -f --eval "addpath $$PWD; addpath $$PWD/../inst; test_netcdf") netcdf/src/autogen.sh000775 001750 001750 00000001205 12717333737 015672 0ustar00abarthabarth000000 000000 #! /bin/sh ## Generate ./configure rm -f configure.in echo "dnl --- DO NOT EDIT --- Automatically generated by autogen.sh" > configure.in cat configure.base >> configure.in cat <> configure.in AC_OUTPUT(\$CONFIGURE_OUTPUTS) dnl XXX FIXME XXX chmod is not in autoconf's list of portable functions echo " " echo " \"\\\$prefix\" is \$prefix" echo " \"\\\$exec_prefix\" is \$exec_prefix" AC_MSG_RESULT([\$STATUS_MSG ]) EOF autoconf configure.in > configure.tmp if [ diff configure.tmp configure > /dev/null 2>&1 ]; then rm -f configure.tmp; else mv -f configure.tmp configure chmod 0755 configure fi rm -f configure.in netcdf/PKG_ADD000664 001750 001750 00000011654 12717333737 014127 0ustar00abarthabarth000000 000000 % File automatically generated by PKG_ADD.sh autoload ("netcdf_getConstant", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_getConstantNames", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqLibVers", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_setDefaultFormat", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_setChunkCache", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_getChunkCache", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_create", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_open", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_abort", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_sync", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_setFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inq", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqUnlimDims", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqFormat", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_renameDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_renameVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVarFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVarDeflate", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarDeflate", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVarChunking", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarChunking", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVarFletcher32", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarFletcher32", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_endDef", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_reDef", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_putVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_getVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_close", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqAttName", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqAttID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_getAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_putAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_copyAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_renameAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_delAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarIDs", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqDimID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqDimIDs", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defGrp", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqGrps", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqGrpName", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqGrpNameFull", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqGrpParent", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqGrpFullNcid", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqNcid", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); netcdf/INDEX000664 001750 001750 00000002176 12717333737 013704 0ustar00abarthabarth000000 000000 netcdf >> NetCDF interface High-level functions nccreate ncdisp ncinfo ncreadatt ncread ncwriteatt ncwrite ncwriteschema Low-level functions netcdf_getConstant netcdf_getConstantNames netcdf_inqLibVers netcdf_setDefaultFormat netcdf_setChunkCache netcdf_getChunkCache netcdf_create netcdf_open netcdf_abort netcdf_sync netcdf_setFill netcdf_inq netcdf_inqUnlimDims netcdf_inqFormat netcdf_defDim netcdf_renameDim netcdf_defVar netcdf_renameVar netcdf_defVarFill netcdf_inqVarFill netcdf_defVarDeflate netcdf_inqVarDeflate netcdf_defVarChunking netcdf_inqVarChunking netcdf_defVarFletcher32 netcdf_inqVarFletcher32 netcdf_endDef netcdf_reDef netcdf_putVar netcdf_getVar netcdf_close netcdf_inqAttName netcdf_inqAttID netcdf_inqAtt netcdf_getAtt netcdf_putAtt netcdf_copyAtt netcdf_renameAtt netcdf_delAtt netcdf_inqVarID netcdf_inqVarIDs netcdf_inqVar netcdf_inqDim netcdf_inqDimID netcdf_inqDimIDs netcdf_defGrp netcdf_inqGrps netcdf_inqGrpName netcdf_inqGrpNameFull netcdf_inqGrpParent netcdf_inqGrpFullNcid netcdf_inqNcid Test function test_netcdf netcdf/DESCRIPTION000664 001750 001750 00000000707 12717333737 014616 0ustar00abarthabarth000000 000000 Name: netcdf Version: 1.0.11 Date: 2016-05-19 Author: Alexander Barth Maintainer: Alexander Barth Title: netcdf Description: A MATLAB compatible NetCDF interface for Octave Depends: octave (>= 3.4.0) BuildRequires: netcdf-devel [Fedora] BuildRequires: libnetcdf-dev [Debian], netcdf-bin [Debian] License: GPLv2+ Url: http://modb.oce.ulg.ac.be/mediawiki/index.php/Octave-netcdf, http://octave.sf.net netcdf/PKG_DEL000664 001750 001750 00000012600 12717333737 014133 0ustar00abarthabarth000000 000000 % File automatically generated by PKG_ADD.sh autoload ("netcdf_getConstant", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_getConstantNames", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqLibVers", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_setDefaultFormat", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_setChunkCache", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_getChunkCache", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_create", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_open", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_abort", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_sync", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_setFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inq", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqUnlimDims", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqFormat", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_renameDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_renameVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVarFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVarDeflate", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarDeflate", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVarChunking", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarChunking", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVarFletcher32", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarFletcher32", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_endDef", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_reDef", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_putVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_getVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_close", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqAttName", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqAttID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_getAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_putAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_copyAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_renameAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_delAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarIDs", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqDimID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqDimIDs", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defGrp", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqGrps", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqGrpName", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqGrpNameFull", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqGrpParent", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqGrpFullNcid", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqNcid", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); netcdf/COPYING000664 001750 001750 00000043077 12717333737 014152 0ustar00abarthabarth000000 000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. netcdf/NEWS000664 001750 001750 00000004516 12717333737 013611 0ustar00abarthabarth000000 000000 Summary of important user-visible changes for netcdf 1.0.11: ------------------------------------------------------------------- ** Fix cleaning of files (thanks to Rafael Laboissiere) Summary of important user-visible changes for netcdf 1.0.10: ------------------------------------------------------------------- ** Fix bug #46060: building with the --enable-64 option Summary of important user-visible changes for netcdf 1.0.9: ------------------------------------------------------------------- ** Fix bug #47014: writing NaNs Summary of important user-visible changes for netcdf 1.0.8: ------------------------------------------------------------------- ** Fix bug #45190, #46747: netcdf(nccreate) to enable DeflateLevel in nccreate ** Fix bug #46798: using the right delete operator Summary of important user-visible changes for netcdf 1.0.7: ------------------------------------------------------------------- ** Apply patch from John Donoghue to allow cross-compilation (bug #44837) Summary of important user-visible changes for netcdf 1.0.6: ------------------------------------------------------------------- ** ncread: do not replace _FillValue by NaNs for characters ** ncdisp: fix for attributes value with %-sign Summary of important user-visible changes for netcdf 1.0.5: ------------------------------------------------------------------- ** Implement DeflateLevel in nccreate Summary of important user-visible changes for netcdf 1.0.4: ------------------------------------------------------------------- ** Work-around for problem in netcdf 4.1.3 for reading a unlimited variable of current size 0 Summary of important user-visible changes for netcdf 1.0.3: ------------------------------------------------------------------- ** remove NC_INDEPENDENT and NC_COLLECTIVE which are no longer defined in netcdf 4.3.1 Summary of important user-visible changes for netcdf 1.0.2: ------------------------------------------------------------------- ** Avoid obsolete isequalwithequalnans functions Summary of important user-visible changes for netcdf 1.0.1: ------------------------------------------------------------------- ** Fix bug preventing compilation on 32-bit platforms. Summary of important user-visible changes for netcdf 1.0.0: ------------------------------------------------------------------- ** Initial release netcdf/inst/000775 001750 001750 00000000000 12717333737 014061 5ustar00abarthabarth000000 000000 netcdf/inst/ncdisp.m000664 001750 001750 00000010013 12717333737 015512 0ustar00abarthabarth000000 000000 ## Copyright (C) 2013 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {} ncdisp (@var{filename}) ## display meta-data of the NetCDF file @var{filename} ## ## @seealso{ncinfo} ## @end deftypefn function ncdisp(filename) info = ncinfo(filename); fprintf("Source:\n"); indent = repmat(" ",[1 11]); fprintf("%s%s\n",indent,fullfile(filename)); fprintf("Format:\n"); fprintf("%s%s\n",indent,info.Format); colors.var = "red"; colors.att = "cyan"; colors.dim = "blue"; group_color = "green"; printgroup("",info,colors); function s = fmtattr(val) if ischar(val) s = sprintf("""%s""",val); else s = num2str(val); end function s = fmtsize(sz) s = sprintf("%gx",sz); s = s(1:end-1); function printgroup(indent1,info,colors) indent2 = [indent1 repmat(" ",[1 11])]; indent3 = [indent2 repmat(" ",[1 11])]; % attributes if ~isempty(info.Attributes) fprintf("%sGlobal Attributes:\n",indent1); printattr(indent2,info.Attributes,colors); end % dimensions if ~isempty(info.Dimensions) % length of the longest attribute name dim = info.Dimensions; maxlen = max(cellfun(@length,{dim.Name})); fprintf("%sDimensions:\n",indent1); for i = 1:length(dim) space = repmat(" ",[maxlen-length(dim(i).Name) 1]); fprintf("%s",indent2); colormsg(sprintf("%s %s= %d",dim(i).Name,space,dim(i).Length),colors.dim); fprintf("\n"); end end % variables if isfield(info,"Variables") if ~isempty(info.Variables) % length of the longest attribute name vars = info.Variables; fprintf("%sVariables:\n",indent1); for i = 1:length(vars) %fprintf("%s%s\n",indent2(1:end-7),vars(i).Name); colormsg(sprintf("%s%s\n",indent2(1:end-7),vars(i).Name),colors.var); if ~isempty(vars(i).Size) sz = fmtsize(vars(i).Size); dimname = sprintf("%s,",vars(i).Dimensions.Name); dimname = dimname(1:end-1); else sz = "1x1"; dimname = ""; end fprintf("%sSize: %s\n",indent2,sz); fprintf("%sDimensions: %s\n",indent2,dimname); fprintf("%sDatatype: %s\n",indent2,vars(i).Datatype); if ~isempty(vars(i).Attributes); fprintf("%sAttributes:\n",indent2); printattr(indent3,vars(i).Attributes,colors); end end end end % groups if ~isempty(info.Groups) % length of the longest attribute name grps = info.Groups; fprintf("%sGroups:\n",indent1); for i = 1:length(grps) fprintf("%s%s\n",indent2(1:end-7),grps(i).Name); printgroup(indent2,grps(i),colors); end end function printattr(indent,attr,colors) % length of the longest attribute name maxlen = max(cellfun(@length,{attr.Name})); for i = 1:length(attr) space = repmat(" ",[maxlen-length(attr(i).Name) 1]); %fprintf("%s%s %s= %s\n",indent,attr(i).Name,space,fmtattr(attr(i).Value)); fprintf("%s",indent); colormsg(sprintf("%s %s= %s\n",attr(i).Name,space,fmtattr(attr(i).Value)),colors.att); end function colormsg (msg,color) if strcmp(getenv("TERM"),"xterm") esc = char(27); % ANSI escape codes colors.black = [esc, "[30m"]; colors.red = [esc, "[31m"]; colors.green = [esc, "[32m"]; colors.yellow = [esc, "[33m"]; colors.blue = [esc, "[34m"]; colors.magenta = [esc, "[35m"]; colors.cyan = [esc, "[36m"]; colors.white = [esc, "[37m"]; reset = [esc, "[0m"]; c = getfield(colors,color); fprintf('%s',[c, msg, reset]); else fprintf('%s',msg); end netcdf/inst/ncread.m000664 001750 001750 00000006740 12717333737 015502 0ustar00abarthabarth000000 000000 ## Copyright (C) 2013 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {@var{x} =} ncread (@var{filename}, @var{varname}) ## @deftypefnx {Function File} {@var{x} =} ncread (@var{filename}, @var{varname},@var{start},@var{count},@var{stride}) ## ## Read the variable @var{varname} from the NetCDF file @var{filename}. ## ## If @var{start},@var{count} and @var{stride} are present, a subset of the ## variable is loaded. The parameter @var{start} contains the starting indices ## (1-based), @var{count} is the number of elements and @var{stride} the ## increment between two successive elements. These parameters are vectors whose ## length is equal to the number of dimension of the variable. Elements of ## @var{count} might be Inf which means that as many values as possible are ## loaded. ## ## If the variable has the _FillValue attribute, then the corresponding values ## are replaced by NaN (except for characters). NetCDF attributes scale_factor ## (default 1) and add_offset (default 0) are use the transform the variable ## during the loading: ## ## x = scale_factor * x_in_file + add_offset ## ## The output data type matches the NetCDF datatype, except when the attributes ## _FillValue, add_offset or scale_factor are defined in which case the output ## is a array in double precision. ## ## Note that values equal to the attribute missing_value are not replaced by ## NaN (for compatibility). ## ## @seealso{ncwrite,ncinfo,ncdisp} ## ## @end deftypefn function x = ncread(filename,varname,start,count,stride) ncid = netcdf_open(filename,'NC_NOWRITE'); [gid,varid] = ncvarid(ncid,varname); [varname_,xtype,dimids,natts] = netcdf_inqVar(gid,varid); % number of dimenions nd = length(dimids); sz = zeros(1,nd); for i=1:length(dimids) [dimname, sz(i)] = netcdf_inqDim(gid,dimids(i)); end if nargin < 3 start = ones(1,nd); end if nargin < 4 count = inf*ones(1,nd); end if nargin < 5 stride = ones(1,nd); end % replace inf in count i = count == inf; count(i) = (sz(i)-start(i))./stride(i) + 1; x = netcdf_getVar(gid,varid,start-1,count,stride); % apply attributes factor = []; offset = []; fv = []; for i = 0:natts-1 attname = netcdf_inqAttName(gid,varid,i); if strcmp(attname,'scale_factor') factor = netcdf_getAtt(gid,varid,'scale_factor'); elseif strcmp(attname,'add_offset') offset = netcdf_getAtt(gid,varid,'add_offset'); elseif strcmp(attname,'_FillValue') fv = netcdf_getAtt(gid,varid,'_FillValue'); end end netcdf_close(ncid); # the scaling does not make sense of characters if xtype == netcdf_getConstant('char') || ... xtype == netcdf_getConstant('string') return; end if !isempty(fv) || !isempty(factor) || !isempty(offset) if !isa(x,'double') x = double(x); end end if !isempty(fv) x(x == fv) = NaN; end if !isempty(factor) x = x * factor; end if !isempty(offset) x = x + offset; end netcdf/inst/ncwrite.m000664 001750 001750 00000005462 12717333737 015721 0ustar00abarthabarth000000 000000 ## Copyright (C) 2013 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {} ncwrite (@var{filename}, @var{varname}, @var{x}) ## @deftypefnx {Function File} {} ncwrite (@var{filename}, @var{varname}, @var{x}, @var{start}, @var{stride}) ## ## Write array @var{x} to the the variable @var{varname} in the NetCDF file ## @var{filename}. ## ## The variable with the name @var{varname} and the appropriate dimension must ## already exist in the NetCDF file. ## ## If @var{start} and @var{stride} are present, a subset of the ## variable is written. The parameter @var{start} contains the starting indices ## (1-based) and @var{stride} the ## increment between two successive elements. These parameters are vectors whose ## length is equal to the number of dimension of the variable. ## ## If the variable has the _FillValue attribute, then the values equal to NaN ## are replaced by corresponding fill value NetCDF attributes scale_factor ## (default 1) and add_oddset (default 0) are use the transform the variable ## during the writting: ## ## x_in_file = (x - add_offset)/scale_factor ## ## @seealso{ncread,nccreate} ## ## @end deftypefn function ncwrite(filename,varname,x,start,stride) ncid = netcdf_open(filename,'NC_WRITE'); [gid,varid] = ncvarid(ncid,varname); [varname_,xtype,dimids,natts] = netcdf_inqVar(gid,varid); % number of dimenions nd = length(dimids); sz = zeros(1,nd); count = zeros(1,nd); for i=1:length(dimids) [dimname, sz(i)] = netcdf_inqDim(gid,dimids(i)); count(i) = size(x,i); end if nargin < 4 start = ones(1,nd); end if nargin < 5 stride = ones(1,nd); end % apply attributes factor = []; offset = []; fv = []; for i = 0:natts-1 attname = netcdf_inqAttName(gid,varid,i); if strcmp(attname,'scale_factor') factor = netcdf_getAtt(gid,varid,'scale_factor'); elseif strcmp(attname,'add_offset') offset = netcdf_getAtt(gid,varid,'add_offset'); elseif strcmp(attname,'_FillValue') fv = netcdf_getAtt(gid,varid,'_FillValue'); end end if ~isempty(offset) x = x - offset; end if ~isempty(factor) x = x / factor; end if ~isempty(fv) x(isnan(x)) = fv; end netcdf_putVar(gid,varid,start-1,count,stride,x); netcdf_close(ncid); netcdf/inst/ncreadatt.m000664 001750 001750 00000002566 12717333737 016215 0ustar00abarthabarth000000 000000 ## Copyright (C) 2013 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {@var{val} =} ncreadatt(@var{filename},@var{varname},@var{attname}) ## ## Return the attribute @var{attname} of the variable @var{varname} in the file ## @var{filename}. ## ## Gobal attributes can be accessed by using "/" or the group name as ## @var{varname}. The type of attribute is mapped to the Octave data types. ## (see @code{ncinfo}). ## ## @seealso{ncinfo,ncwriteatt} ## ## @end deftypefn function val = ncreadatt(filename,varname,attname) ncid = netcdf_open(filename,'NC_NOWRITE'); [gid,varid] = ncloc(ncid,varname); if isempty(varid) varid = netcdf_getConstant('NC_GLOBAL'); endif val = netcdf_getAtt(gid,varid,attname); netcdf_close(ncid); netcdf/inst/private/000775 001750 001750 00000000000 12717333737 015533 5ustar00abarthabarth000000 000000 netcdf/inst/private/test_netcdf_ncwriteschema.m000664 001750 001750 00000002550 12717333737 023131 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . fname = [tempname '-octave-netcdf-scheme-unlim.nc']; clear s s.Name = '/'; s.Format = 'classic'; s.Dimensions(1).Name = 'lon'; s.Dimensions(1).Length = 20; s.Dimensions(2).Name = 'lat'; s.Dimensions(2).Length = 10; s.Attributes(1).Name = 'institution'; s.Attributes(1).Value = 'GHER, ULg'; s.Variables(1).Name = 'temp'; s.Variables(1).Dimensions = s.Dimensions; s.Variables(1).Datatype = 'double'; s.Variables(1).Attributes(1).Name = 'long_name'; s.Variables(1).Attributes(1).Value = 'temperature'; ncwriteschema(fname,s); info = ncinfo(fname); assert(strcmp(info.Attributes(1).Name,s.Attributes(1).Name)) assert(strcmp(info.Attributes(1).Value,s.Attributes(1).Value)) delete(fname); netcdf/inst/private/nc2octtype.m000664 001750 001750 00000002774 12717333737 020015 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function otype = nc2octtype(nctype) if nctype == netcdf_getConstant("NC_CHAR") otype = "char"; elseif nctype == netcdf_getConstant("NC_FLOAT") otype = "single"; elseif nctype == netcdf_getConstant("NC_DOUBLE") otype = "double"; elseif nctype == netcdf_getConstant("NC_BYTE") otype = "int8"; elseif nctype == netcdf_getConstant("NC_SHORT") otype = "int16"; elseif nctype == netcdf_getConstant("NC_INT") otype = "int32"; elseif nctype == netcdf_getConstant("NC_INT64") otype = "int64"; elseif nctype == netcdf_getConstant("NC_UBYTE") otype = "uint8"; elseif nctype == netcdf_getConstant("NC_USHORT") otype = "uint16"; elseif nctype == netcdf_getConstant("NC_UINT") otype = "uint32"; elseif nctype == netcdf_getConstant("NC_UINT64") otype = "uint64"; else error("netcdf:unknownDataType","unknown data type %d",xtype) endif netcdf/inst/private/ncloc.m000664 001750 001750 00000001675 12717333737 017020 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . % resolves a location (variable or group) by name function [gid,varid] = ncloc(ncid,name) try # try if name is a group gid = netcdf_inqGrpFullNcid(ncid,name); varid = []; catch # assume that name is a variable [gid,varid] = ncvarid(ncid,name); end_try_catch netcdf/inst/private/format2mode.m000664 001750 001750 00000002246 12717333737 020134 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function mode = format2mode(format) mode = netcdf_getConstant("NC_NOCLOBBER"); switch lower(format) case "classic" % do nothing case "64bit" mode = bitor(mode,netcdf_getConstant("NC_64BIT_OFFSET")); case "netcdf4_classic" mode = bitor(bitor(mode,netcdf_getConstant("NC_NETCDF4")),... netcdf_getConstant("NC_CLASSIC_MODEL")); case "netcdf4" mode = bitor(mode,netcdf_getConstant("NC_NETCDF4")); otherwise error("netcdf:unkownFormat","unknown format %s",format); end netcdf/inst/private/test_netcdf_scalar_variable.m000664 001750 001750 00000001633 12717333737 023410 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function test_netcdf_scalar_variable() import_netcdf fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); varidd_scalar = netcdf.defVar(ncid,'double_scalar','double',[]); netcdf.close(ncid); delete(fname); netcdf/inst/private/test_netcdf_high_level_interface.m000664 001750 001750 00000007226 12717333737 024430 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . import_netcdf fname = [tempname '-octave-netcdf.nc']; nccreate(fname,'temp','Dimensions',{'lon',10,'lat',20}); nccreate(fname,'salt','Dimensions',{'lon',10,'lat',20}); nccreate(fname,'u','Dimensions',{'lon','lat'}); u = randn(10,20); ncwrite(fname,'u',u); % for octave prior to 3.8.0 if isempty(which('isequaln')) isequaln = @(x,y) isequalwithequalnans(x,y); end u2 = ncread(fname,'u'); assert(isequaln(u,u2)); u2 = ncread(fname,'u',[10 5],[inf inf],[1 1]); assert(isequaln(u(10:end,5:end),u2)); ncwriteatt(fname,'temp','units','degree Celsius'); assert(strcmp(ncreadatt(fname,'temp','units'),'degree Celsius')); ncwriteatt(fname,'temp','range',[0 10]); assert(isequal(ncreadatt(fname,'temp','range'),[0 10])); ncwriteatt(fname,'temp','float_range',single([0 10])); assert(isequal(ncreadatt(fname,'temp','float_range'),[0 10])); ncwriteatt(fname,'temp','int_range',int32([0 10])); assert(isequal(ncreadatt(fname,'temp','int_range'),[0 10])); info = ncinfo(fname); assert(length(info.Variables) == 3) assert(strcmp(info.Variables(1).Name,'temp')); assert(isequal(info.Variables(1).Size,[10 20])); delete(fname); nccreate(fname,'temp','Dimensions',{'lon',10,'lat',20},'Format','64bit'); delete(fname); nccreate(fname,'temp','Dimensions',{'lon',10,'lat',20},'Format','classic'); info = ncinfo(fname); assert(strcmp(info.Format,'classic')); delete(fname); % netcdf4 nccreate(fname,'temp','Dimensions',{'lon',10,'lat',20},'Format','netcdf4'); ncwriteatt(fname,'temp','uint_range',uint32([0 10])); assert(isequal(ncreadatt(fname,'temp','uint_range'),[0 10])); info = ncinfo(fname); assert(strcmp(info.Format,'netcdf4')); delete(fname) % scalar variable nccreate(fname,'temp','Format','netcdf4','Datatype','double'); ncwrite(fname,'temp',123); assert(ncread(fname,'temp') == 123) delete(fname) % test unlimited dimension with nccreate fname = [tempname '-octave-netcdf.nc']; nccreate(fname,'temp','Dimensions',{'lon',10,'lat',inf}); %system(['ncdump -h ' fname]) info = ncinfo(fname); assert(~info.Dimensions(1).Unlimited) assert(info.Dimensions(2).Unlimited) delete(fname) % test double with _FillValue fname = [tempname '-octave-netcdf.nc']; fv = 99999.; nccreate(fname,'flag','Dimensions',{'lon',10,'lat',10},'Datatype','double',... 'FillValue',fv); %system(['ncdump -h ' fname]) data = zeros(10,10); data(1,2) = fv; ncid = netcdf.open(fname,'NC_WRITE'); varid = netcdf.inqVarID(ncid, 'flag'); netcdf.putVar(ncid,varid,data); netcdf.close(ncid) data2 = ncread(fname,'flag'); data(data == fv) = NaN; assert(isequaln(data,data2)) delete(fname) % test char with _FillValue fname = [tempname '-octave-netcdf.nc']; fv = '*'; nccreate(fname,'flag','Dimensions',{'lon',10,'lat',10},'Datatype','char',... 'FillValue',fv); data = repmat('.',[10 10]); data(1,2) = fv; ncid = netcdf.open(fname,'NC_WRITE'); varid = netcdf.inqVarID(ncid, 'flag'); netcdf.putVar(ncid,varid,data); netcdf.close(ncid) data2 = ncread(fname,'flag'); assert(isequal(data,data2)) delete(fname) % test case for bug 47014 bug_47014 netcdf/inst/private/test_netcdf_attributes.m000664 001750 001750 00000022422 12717333737 022463 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013-2014 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function test_netcdf_attributes() import_netcdf % rename attributes fname = [tempname '-octave-netcdf-rename-attrib.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); gid = netcdf.getConstant('global'); netcdf.putAtt(ncid,gid,'toto',int8(123)); name = netcdf.inqAttName(ncid,gid,0); assert(strcmp(name,'toto')); netcdf.renameAtt(ncid,gid,'toto','lala'); name = netcdf.inqAttName(ncid,gid,0); assert(strcmp(name,'lala')); netcdf.close(ncid); delete(fname) % delete attributes fname = [tempname '-octave-netcdf-delete-attrib.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); gid = netcdf.getConstant('global'); netcdf.putAtt(ncid,gid,'toto',int8(123)); varid = netcdf.defVar(ncid,'double_var','double',[]); [ndims,nvars,natts] = netcdf.inq(ncid); assert(natts == 1); netcdf.delAtt(ncid,gid,'toto'); [ndims,nvars,natts] = netcdf.inq(ncid); assert(natts == 0); netcdf.close(ncid); delete(fname) % copy attributes fname = [tempname '-octave-netcdf-copy-attrib.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); gid = netcdf.getConstant('global'); netcdf.putAtt(ncid,gid,'toto',int8(123)); varid = netcdf.defVar(ncid,'double_var','double',[]); netcdf.copyAtt(ncid,gid,'toto',ncid,varid); [ndims,nvars,natts] = netcdf.inq(ncid); assert(natts == 1); [varname,xtype,dimids,natts] = netcdf.inqVar(ncid,varid); val = netcdf.getAtt(ncid,varid,'toto'); assert(isequal(val,123)); netcdf.close(ncid); delete(fname) % attributes id fname = [tempname '-octave-netcdf-delete-attrib.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); gid = netcdf.getConstant('global'); netcdf.putAtt(ncid,gid,'toto',int8(123)); attnum = netcdf.inqAttID(ncid,gid,'toto'); name = netcdf.inqAttName(ncid,gid,attnum); assert(strcmp(name,'toto')) netcdf.close(ncid); delete(fname) % test one unlimited dimensions fname = [tempname '-octave-netcdf-unlimdim.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); dimID = netcdf.defDim(ncid,'time',netcdf.getConstant('NC_UNLIMITED')); unlimdimIDs = netcdf.inqUnlimDims(ncid); assert(dimID == unlimdimIDs); netcdf.close(ncid); delete(fname) % test netcdf_classic format fname = [tempname '-octave-netcdf-classic-model.nc']; mode = bitor(netcdf.getConstant('classic_model'),netcdf.getConstant('netcdf4')); ncid = netcdf.create(fname,mode); netcdf.close(ncid); info = ncinfo(fname); assert(strcmp(info.Format,'netcdf4_classic')); delete(fname); % test two unlimited dimensions fname = [tempname '-octave-netcdf-2unlimdim.nc']; mode = bitor(netcdf.getConstant('NC_CLOBBER'),netcdf.getConstant('NC_NETCDF4')); ncid = netcdf.create(fname,mode); dimID = netcdf.defDim(ncid,'time',netcdf.getConstant('NC_UNLIMITED')); dimID2 = netcdf.defDim(ncid,'time2',netcdf.getConstant('NC_UNLIMITED')); unlimdimIDs = netcdf.inqUnlimDims(ncid); assert(isequal(sort([dimID,dimID2]),sort(unlimdimIDs))); netcdf.close(ncid); delete(fname); % test fill mode fname = [tempname '-octave-netcdf-fill-mode.nc']; mode = bitor(netcdf.getConstant('NC_CLOBBER'),netcdf.getConstant('NC_NETCDF4')); ncid = netcdf.create(fname,mode); old_mode = netcdf.setFill(ncid,'nofill'); old_mode = netcdf.setFill(ncid,'nofill'); assert(old_mode == netcdf.getConstant('nofill')) netcdf.close(ncid); delete(fname); % deflate for 64bit_offset files fname = [tempname '-octave-netcdf-deflate.nc']; ncid = netcdf.create(fname,'64BIT_OFFSET'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); [shuffle,deflate,deflateLevel] = netcdf.inqVarDeflate(ncid,varid); assert(shuffle == 0) assert(deflate == 0) assert(deflateLevel == 0) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % deflate fname = [tempname '-octave-netcdf-deflate.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); netcdf.defVarDeflate(ncid,varid,true,true,9); [shuffle,deflate,deflateLevel] = netcdf.inqVarDeflate(ncid,varid); assert(shuffle) assert(deflate) assert(deflateLevel == 9) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % chunking - contiguous storage fname = [tempname '-octave-netcdf-chunking.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); netcdf.defVarChunking(ncid,varid,'contiguous'); [storage,chunksize] = netcdf.inqVarChunking(ncid,varid); assert(strcmp(storage,'contiguous')) assert(isempty(chunksize)) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % chunking - chunked storage fname = [tempname '-octave-netcdf-chunking.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); netcdf.defVarChunking(ncid,varid,'chunked',[3 4]); [storage,chunksize] = netcdf.inqVarChunking(ncid,varid); assert(strcmp(storage,'chunked')) assert(isequal(chunksize,[3 4])) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % checksum fname = [tempname '-octave-netcdf-checksum.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); checksum = netcdf.inqVarFletcher32(ncid,varid); assert(strcmp(checksum,'NOCHECKSUM')) netcdf.defVarFletcher32(ncid,varid,'fletcher32'); checksum = netcdf.inqVarFletcher32(ncid,varid); assert(strcmp(checksum,'FLETCHER32')) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % variable fill fname = [tempname '-octave-netcdf-fill.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); netcdf.defVarFill(ncid,varid,false,-99999.); [nofill,fillval] = netcdf.inqVarFill(ncid,varid); assert(isequal(nofill,false)) assert(fillval == -99999.) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % variable fill single fname = [tempname '-octave-netcdf-fill.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'single_var','float',dimids); netcdf.defVarFill(ncid,varid,false,single(-99999.)); [nofill,fillval] = netcdf.inqVarFill(ncid,varid); assert(isequal(nofill,false)) assert(fillval == -99999.) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % variable fill char fname = [tempname '-octave-netcdf-fill-char.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','char',dimids); netcdf.defVarFill(ncid,varid,false,'X'); [fill,fillval] = netcdf.inqVarFill(ncid,varid); assert(~fill) assert(fillval == 'X') netcdf.close(ncid); delete(fname); % check default state of fill fname = [tempname '-octave-netcdf-fill.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); [nofill,fillval] = netcdf.inqVarFill(ncid,varid); assert(isequal(nofill,false)) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % create groups fname = [tempname '-octave-netcdf-groups.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); id1 = netcdf.defGrp(ncid,'group1'); id2 = netcdf.defGrp(ncid,'group2'); id3 = netcdf.defGrp(id1,'subgroup'); ids = netcdf.inqGrps(ncid); assert(isequal(sort([id1,id2]),sort(ids))); id4 = netcdf.inqNcid(ncid,'group1'); assert(id1 == id4) name = netcdf.inqGrpName(id3); assert(strcmp(name,'subgroup')) name = netcdf.inqGrpNameFull(id3); assert(strcmp(name,'/group1/subgroup')) parentid = netcdf.inqGrpParent(id3); assert(id1 == parentid); if 0 id3bis = netcdf.inqGrpFullNcid(ncid,'/group1/subgroup'); assert(id3 == id3bis); end netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % check rename dimension fname = [tempname '-octave-rename-dim.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimid = netcdf.defDim(ncid,'x',123); [name,len] = netcdf.inqDim(ncid,dimid); assert(strcmp(name,'x')); netcdf.renameDim(ncid,dimid,'y'); [name,len] = netcdf.inqDim(ncid,dimid); assert(strcmp(name,'y')); netcdf.close(ncid); delete(fname); % rename variable fname = [tempname '-octave-netcdf-rename-var.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','char',dimids); [varname] = netcdf.inqVar(ncid,varid); assert(strcmp(varname,'double_var')); netcdf.renameVar(ncid,varid,'doublev'); [varname] = netcdf.inqVar(ncid,varid); assert(strcmp(varname,'doublev')); netcdf.close(ncid); delete(fname); netcdf/inst/private/bug_47014.m000664 001750 001750 00000000542 12717333737 017226 0ustar00abarthabarth000000 000000 % test case for bug 47014 % https://savannah.gnu.org/bugs/?func=detailitem&item_id=47014 fname = [tempname '-octave-netcdf.nc']; nccreate(fname,'var','Dimensions',{'x',10},... 'FillValue',-32767,'Datatype','int16') var = ones(10,1); var(1) = NaN; ncwrite(fname,'var',var); var2 = ncread(fname,'var'); assert(isequaln(var,var2)) delete(fname) netcdf/inst/private/test_netcdf_ncwriteschema_group.m000664 001750 001750 00000004437 12717333737 024353 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . fname = [tempname '-octave-netcdf-scheme-group.nc']; clear s s.Name = '/'; s.Format = 'netcdf4'; s.Dimensions(1).Name = 'lon'; s.Dimensions(1).Length = 20; s.Dimensions(2).Name = 'lat'; s.Dimensions(2).Length = 10; s.Attributes(1).Name = 'institution'; s.Attributes(1).Value = 'GHER, ULg'; s.Variables(1).Name = 'temp_diff'; s.Variables(1).Dimensions = s.Dimensions; s.Variables(1).Datatype = 'double'; s.Variables(1).Attributes(1).Name = 'long_name'; s.Variables(1).Attributes(1).Value = 'temperature'; s.Groups(1).Name = 'forecast'; s.Groups(1).Variables(1).Name = 'temp'; s.Groups(1).Variables(1).Dimensions = s.Dimensions; s.Groups(1).Variables(1).Datatype = 'double'; s.Groups(1).Variables(1).Attributes(1).Name = 'long_name'; s.Groups(1).Variables(1).Attributes(1).Value = 'temperature'; s.Groups(1).Attributes(1).Name = 'institution'; s.Groups(1).Attributes(1).Value = 'ULg'; s.Groups(2) = s.Groups(1); s.Groups(2).Name = 'analysis'; ncwriteschema(fname,s); %system(['ncdump -h ' fname]) info = ncinfo(fname); assert(strcmp(info.Attributes(1).Name,s.Attributes(1).Name)) assert(strcmp(info.Attributes(1).Value,s.Attributes(1).Value)) assert(strcmp(s.Groups(1).Name,info.Groups(1).Name)) z = randn(20,10); ncwrite(fname,'/forecast/temp',z); z2 = ncread(fname,'/forecast/temp'); assert(isequal(z,z2)) ginfo = ncinfo(fname,'forecast'); assert(strcmp(ginfo.Name,'forecast')); % read global attribute of root group val = ncreadatt(fname,'/','institution'); assert(strcmp(val,'GHER, ULg')); % read global attribute of group forecast val = ncreadatt(fname,'/forecast','institution'); assert(strcmp(val,'ULg')); delete(fname); netcdf/inst/private/ncvarid.m000664 001750 001750 00000001711 12717333737 017337 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function [gid,varid] = ncvarid(ncid,varname) if strcmp(varname(1), '/') i = find(varname == '/',1,'last'); groupname = varname(1:i-1); varname = varname(i+1:end); gid = netcdf_inqGrpFullNcid(ncid,groupname); else gid = ncid; end varid = netcdf_inqVarID(gid, varname); netcdf/inst/private/test_netcdf_ncwriteschema_chunking.m000664 001750 001750 00000002721 12717333737 025017 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . fname = [tempname '-octave-netcdf-scheme-chunk.nc']; clear s s.Name = '/'; s.Format = 'netcdf4'; s.Dimensions(1).Name = 'lon'; s.Dimensions(1).Length = 20; s.Dimensions(2).Name = 'lat'; s.Dimensions(2).Length = 10; s.Attributes(1).Name = 'institution'; s.Attributes(1).Value = 'GHER, ULg'; s.Variables(1).Name = 'temp'; s.Variables(1).Dimensions = s.Dimensions; s.Variables(1).Datatype = 'double'; s.Variables(1).Attributes(1).Name = 'long_name'; s.Variables(1).Attributes(1).Value = 'temperature'; s.Variables(1).ChunkSize = [2 3]; ncwriteschema(fname,s); info = ncinfo(fname); assert(strcmp(info.Attributes(1).Name,s.Attributes(1).Name)) assert(strcmp(info.Attributes(1).Value,s.Attributes(1).Value)) assert(isequal(info.Variables(1).ChunkSize,s.Variables(1).ChunkSize)); delete(fname); netcdf/inst/private/test_netcdf_create.m000664 001750 001750 00000001611 12717333737 021535 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function test_netcdf_create import_netcdf fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); assert(strcmp(netcdf.inqFormat(ncid),'FORMAT_CLASSIC')); netcdf.close(ncid); delete(fname); netcdf/inst/private/test_scalar_variable.m000664 001750 001750 00000001624 12717333737 022065 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function test_scalar_variable() import_netcdf fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); varidd_scalar = netcdf.defVar(ncid,'double_scalar','double',[]); netcdf.close(ncid); delete(fname); netcdf/inst/private/test_netcdf_low_level_interface.m000664 001750 001750 00000011750 12717333737 024307 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function test_netcdf_low_level_interface import_netcdf % 2 dimensions fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); assert(strcmp(netcdf.inqFormat(ncid),'FORMAT_CLASSIC')); n = 10; m = 5; dimid_lon = netcdf.defDim(ncid,'lon',m); dimid = netcdf.defDim(ncid,'time',n); varidd = netcdf.defVar(ncid,'double_var','double',[dimid_lon,dimid]); varid = netcdf.defVar(ncid,'byte_var','byte',[dimid]); varidf = netcdf.defVar(ncid,'float_var','float',[dimid]); varidi = netcdf.defVar(ncid,'int_var','int',[dimid]); varids = netcdf.defVar(ncid,'short_var','short',[dimid]); assert(varidd == netcdf.inqVarID(ncid,'double_var')) [numdims, numvars, numglobalatts, unlimdimID] = netcdf.inq(ncid); assert(numvars == 5) [varname,xtype,dimids,natts] = netcdf.inqVar(ncid,varidd); assert(strcmp(varname,'double_var')); [dimname,len] = netcdf.inqDim(ncid,dimid); assert(len == n); assert(strcmp(dimname,'time')); types = {'double','float','byte','short','int'}; for i=1:length(types) vid{i} = netcdf.defVar(ncid,[types{i} '_variable'],types{i},[dimid_lon,dimid]); end netcdf.endDef(ncid) z = randn(m,n); netcdf.putVar(ncid,varidd,z); varf = randn(n,1); netcdf.putVar(ncid,varidf,varf); vari = floor(randn(n,1)); netcdf.putVar(ncid,varidi,vari); netcdf.putVar(ncid,varids,[1:n]) z2 = netcdf.getVar(ncid,varidd); assert(all(all(abs(z2 - z) < 1e-5))) z2 = netcdf.getVar(ncid,varidd,[0 0]); assert(z2 == z(1,1)) z2 = netcdf.getVar(ncid,varidd,[2 2],[3 5]); assert(isequal(z2,z(3:5,3:7))) z2 = netcdf.getVar(ncid,varidd,[2 2],[3 4],[1 2]); assert(isequal(z2,z(3:5,3:2:9))) netcdf.putVar(ncid,varidd,[0 0],123.); z(1,1) = 123; z2 = netcdf.getVar(ncid,varidd); assert(isequal(z,z2)) netcdf.putVar(ncid,varidd,[2 2],[3 3],ones(3,3)); z(3:5,3:5) = 1; z2 = netcdf.getVar(ncid,varidd); assert(isequal(z,z2)) netcdf.putVar(ncid,varidd,[0 0],[3 5],[2 2],zeros(3,5)); z(1:2:5,1:2:9) = 0; z2 = netcdf.getVar(ncid,varidd); assert(isequal(z,z2)) z2 = netcdf.getVar(ncid,varidf); assert(all(z2 - varf < 1e-5)) vari2 = netcdf.getVar(ncid,varidi); assert(all(vari2 == vari)) netcdf.close(ncid); delete(fname); % test with different dimensions for i = 1:5 nc_test_ndims(i); end function nc_test_ndims(ndims) import_netcdf fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); sz = ones(1,ndims); dimids = ones(1,ndims); for i = 1:ndims sz(i) = 10+i; dimids(i) = netcdf.defDim(ncid,sprintf('dim%g',i),sz(i)); end varid = netcdf.defVar(ncid,'double_var','double',dimids); [varname,xtype,dimids,natts] = netcdf.inqVar(ncid,varid); assert(strcmp(varname,'double_var')); for i = 1:ndims [dimname,len] = netcdf.inqDim(ncid,dimids(i)); assert(len == sz(i)); assert(strcmp(dimname,sprintf('dim%g',i))); end netcdf.endDef(ncid) if ndims == 1 z = randn(sz,1); else z = randn(sz); end netcdf.putVar(ncid,varid,z); z2 = netcdf.getVar(ncid,varid); assert(isequal(z,z2)) z2 = netcdf.getVar(ncid,varid,zeros(ndims,1)); assert(z2 == z(1)) start = 2 * ones(1,ndims); count = 5 * ones(1,ndims); z2 = netcdf.getVar(ncid,varid,start,count); idx = scs(start,count); assert(isequal(z2,z(idx{:}))) start = 2 * ones(1,ndims); count = 5 * ones(1,ndims); stride = 2 * ones(1,ndims); z2 = netcdf.getVar(ncid,varid,start,count,stride); idx = scs(start,count,stride); assert(isequal(z2,z(idx{:}))) % put with start start = zeros(1,ndims); netcdf.putVar(ncid,varid,start,123.); z(1) = 123; z2 = netcdf.getVar(ncid,varid); assert(isequal(z,z2)) % put with start and count start = 2 * ones(1,ndims); count = 5 * ones(1,ndims); if ndims == 1 data = ones(count,1); else data = ones(count); end netcdf.putVar(ncid,varid,start,count,data); idx = scs(start,count); z(idx{:}) = 1; z2 = netcdf.getVar(ncid,varid); assert(isequal(z,z2)) % put with start, count and stride start = 2 * ones(1,ndims); count = 5 * ones(1,ndims); stride = 2 * ones(1,ndims); if ndims == 1 data = zeros(count,1); else data = zeros(count); end netcdf.putVar(ncid,varid,start,count,stride,data); idx = scs(start,count,stride); z(idx{:}) = 0; z2 = netcdf.getVar(ncid,varid); assert(isequal(z,z2)) netcdf.close(ncid); delete(fname); function idx = scs(start,count,stride) idx = cell(length(start),1); if nargin == 2 stride = ones(length(start),1); end for i = 1:length(start) idx{i} = start(i) + 1 + stride(i) * [0:count(i)-1]; end netcdf/inst/private/test_netcdf_ncwriteschema_unlim.m000664 001750 001750 00000002760 12717333737 024340 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . fname = [tempname '-octave-netcdf-scheme-unlim.nc']; clear s s.Name = '/'; s.Format = 'classic'; s.Dimensions(1).Name = 'lon'; s.Dimensions(1).Length = 20; s.Dimensions(2).Name = 'lat'; s.Dimensions(2).Length = 10; s.Dimensions(3).Name = 'time'; s.Dimensions(3).Length = Inf; %s.Dimensions(3).Unlimited = true; s.Attributes(1).Name = 'institution'; s.Attributes(1).Value = 'GHER, ULg'; s.Variables(1).Name = 'temp'; s.Variables(1).Dimensions = s.Dimensions; s.Variables(1).Datatype = 'double'; s.Variables(1).Attributes(1).Name = 'long_name'; s.Variables(1).Attributes(1).Value = 'temperature'; ncwriteschema(fname,s); info = ncinfo(fname); assert(strcmp(info.Attributes(1).Name,s.Attributes(1).Name)) assert(strcmp(info.Attributes(1).Value,s.Attributes(1).Value)) assert(info.Dimensions(3).Unlimited); delete(fname); netcdf/inst/private/test_netcdf_type.m000664 001750 001750 00000004164 12717333737 021261 0ustar00abarthabarth000000 000000 function test_netcdf_type(nctype,octtype) import_netcdf m = 5; n = 10; fname = [tempname '-octave-netcdf- ' nctype '.nc']; mode = bitor(netcdf.getConstant('NC_CLOBBER'),... netcdf.getConstant('NC_NETCDF4')); ncid = netcdf.create(fname,mode); dimids = [netcdf.defDim(ncid,'lon',m) ... netcdf.defDim(ncid,'time',n)]; varid = netcdf.defVar(ncid,'variable',nctype,dimids); netcdf.endDef(ncid) if strcmp(octtype,'char') z = char(floor(26*rand(m,n)) + 65); testvals = 'a'; testvalv = 'this is a name'; else z = zeros(m,n,octtype); z(:) = randn(m,n); testvals = zeros(1,1,octtype); testvals(:) = rand(1,1); testvalv = zeros(1,5,octtype); testvalv(:) = rand(size(testvalv)); end netcdf.putVar(ncid,varid,z); z2 = netcdf.getVar(ncid,varid); assert(isequal(z,z2)) netcdf.putAtt(ncid,varid,'scalar_attribute',testvals); val = netcdf.getAtt(ncid,varid,'scalar_attribute'); assert(isequal(val,testvals)); assert(strcmp(class(val),octtype)) [xtype,len] = netcdf.inqAtt(ncid,varid,'scalar_attribute'); assert(xtype == netcdf.getConstant(nctype)) assert(len == numel(testvals)); netcdf.putAtt(ncid,varid,'vector_attribute',testvalv); val = netcdf.getAtt(ncid,varid,'vector_attribute'); assert(isequal(val,testvalv)); assert(strcmp(class(val),octtype)) [xtype,len] = netcdf.inqAtt(ncid,varid,'vector_attribute'); assert(xtype == netcdf.getConstant(nctype)) assert(len == numel(testvalv)); netcdf.close(ncid); delete(fname); %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . netcdf/inst/private/test_netcdf_constant.m000664 001750 001750 00000002621 12717333737 022125 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . % test netcdf constants function test_netcdf_constant() import_netcdf names = netcdf.getConstantNames(); assert(any(strcmp(names,'NC_WRITE'))); assert(netcdf.getConstant('NC_NOWRITE') == 0) assert(netcdf.getConstant('NC_WRITE') == 1) assert(netcdf.getConstant('NC_64BIT_OFFSET') == ... netcdf.getConstant('64BIT_OFFSET')) assert(netcdf.getConstant('NC_64BIT_OFFSET') == ... netcdf.getConstant('64bit_offset')) assert(isa(netcdf.getConstant('fill_byte'),'int8')) assert(isa(netcdf.getConstant('fill_ubyte'),'uint8')) assert(isa(netcdf.getConstant('fill_float'),'single')) failed = 0; try % should trow exception netcdf.getConstant('not_found') % should never be reached failed = 1; catch end assert(~failed); netcdf/inst/private/oct2nctype.m000664 001750 001750 00000002751 12717333737 020010 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function nctype = oct2nctype(otype) typemap.int8 = 'byte'; typemap.uint8 = 'ubyte'; typemap.int16 = 'short'; typemap.uint16 = 'ushort'; typemap.int32 = 'int'; typemap.uint32 = 'uint'; typemap.int64 = 'int64'; typemap.uint64 = 'uint64'; typemap.single = 'float'; typemap.double = 'double'; typemap.char = 'char'; if ischar(otype) otype = lower(otype); if isfield(typemap,otype) nctype = typemap.(otype); else error('netcdf:unkownType','unknown type %s',otype); end else nctype = otype; end %typemap.byte = 'int8'; %typemap.ubyte = 'uint8'; %typemap.short = 'int16'; %typemap.ushort = 'uint16'; %typemap.int = 'int32'; %typemap.uint = 'uint32'; %typemap.int64 = 'int64'; %typemap.uint64 = 'uint64'; %typemap.float = 'single'; %typemap.double = 'double'; %typemap.char = 'char'; netcdf/inst/private/test_netcdf_unlim.m000664 001750 001750 00000000546 12717333737 021424 0ustar00abarthabarth000000 000000 import_netcdf % 2 dimensions fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); dimid = netcdf.defDim(ncid,'time',0); varidd = netcdf.defVar(ncid,'time','double',[dimid]); netcdf.close(ncid) ncid = netcdf.open(fname,'NC_NOWRITE'); varid = netcdf.inqVarID(ncid, 'time'); x = netcdf.getVar(ncid,varid); netcdf.close(ncid) netcdf/inst/private/test_netcdf_datatypes.m000664 001750 001750 00000002125 12717333737 022271 0ustar00abarthabarth000000 000000 %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function test_netcdf_datatypes() test_netcdf_type('byte','int8'); test_netcdf_type('ubyte','uint8'); test_netcdf_type('short','int16'); test_netcdf_type('ushort','uint16'); test_netcdf_type('int','int32'); test_netcdf_type('uint','uint32'); test_netcdf_type('int64','int64'); test_netcdf_type('uint64','uint64'); test_netcdf_type('double','double'); test_netcdf_type('float','single'); test_netcdf_type('char','char'); netcdf/inst/ncwriteschema.m000664 001750 001750 00000010343 12717333737 017074 0ustar00abarthabarth000000 000000 ## Copyright (C) 2013 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {} ncwriteschema (@var{filename}, @var{shema}) ## ## Create a NetCDF called @var{filename} with the dimensions, attributes, ## variables and groups given by the structure @var{schema}. ## ## The variable @var{schema} has the same structure as the results of ## @code{ncinfo}. @code{ncinfo} and @code{ncwriteschema} can be used together to ## create a NetCDF using another file as a template: ## ## @example ## schema = ncinfo("template.nc"); ## # the new file should be named "new_file.nc" ## ncwriteschema("new_file.nc",schema); ## @end example ## ## Unused field in @var{schema} such as @var{ChunkSize}, @var{Shuffle}, ## @var{DeflateLevel}, @var{FillValue}, @var{Checksum} can be left-out if the ## corresponding feature is not used. ## ## Dimensions are considered as limited if the field @var{Unlimited} is missing, ## unless the dimension length is Inf. ## ## @seealso{ncinfo} ## ## @end deftypefn function ncwriteschema(filename,s) mode = format2mode(s.Format); ncid = netcdf_create(filename,mode); write_group(ncid,s) netcdf_close(ncid); end function write_group(ncid,s) % normalize schema if ~isfield(s,'Dimensions') s.Dimensions = []; end if isempty(s.Dimensions) s.Dimensions = struct('Name',{},'Length',{},'Unlimited',{}); end if ~isfield(s,'Attributes') s.Attributes = struct('Name',{},'Value',{}); end if ~isfield(s,'Variables') s.Variables = struct('Name',{},'Dimensions',{},'Datatype',{});; end % dimension for i = 1:length(s.Dimensions) dim = s.Dimensions(i); if ~isfield(dim,'Unlimited') dim.Unlimited = false; end len = dim.Length; if dim.Unlimited || isinf(len) len = netcdf_getConstant('NC_UNLIMITED'); end s.Dimensions(i).id = netcdf_defDim(ncid,dim.Name,len); end % global attributes gid = netcdf_getConstant('NC_GLOBAL'); for j = 1:length(s.Attributes) netcdf_putAtt(ncid,gid,s.Attributes(j).Name,s.Attributes(j).Value); end % variables for i = 1:length(s.Variables) v = s.Variables(i); %v.Name % get dimension id dimids = zeros(length(v.Dimensions),1); for j = 1:length(v.Dimensions) dimids(j) = netcdf_inqDimID(ncid,v.Dimensions(j).Name); end % define variable dtype = oct2nctype(v.Datatype); varid = netcdf_defVar(ncid,v.Name,dtype,dimids); % define attributes for j = 1:length(v.Attributes) netcdf_putAtt(ncid,varid,v.Attributes(j).Name,v.Attributes(j).Value); end % define chunk size if isfield(v,'ChunkSize') if ~isempty(v.ChunkSize) netcdf_defVarChunking(ncid,varid,'chunked',v.ChunkSize); end end % define compression shuffle = false; deflatelevel = 0; if isfield(v,'Shuffle') if ~isempty(v.Shuffle) shuffle = v.Shuffle; end end if isfield(v,'DeflateLevel') if ~isempty(v.DeflateLevel) deflatelevel = v.DeflateLevel; end end if shuffle && defaltelevel != 0 deflate = defaltelevel != 0; netcdf_defVarDeflate(ncid,varid,shuffle,deflate,deflatelevel); end % define fill value if isfield(v,'FillValue') if ~isempty(v.FillValue) % leave nofill setting unchanged [nofill,fillval] = netcdf_inqVarFill(ncid,varid); netcdf_defVarFill(ncid,varid,nofill,v.FillValue); end end % define checksum if isfield(v,'Checksum') if ~isempty(v.Checksum) netcdf_defVarFletcher32(ncid,varid,v.Checksum); end end end % groups if isfield(s,'Groups') if ~isempty(s.Groups) for i=1:length(s.Groups) g = s.Groups(i); gid = netcdf_defGrp(ncid,g.Name); write_group(gid,g); end end end end netcdf/inst/ncwriteatt.m000664 001750 001750 00000002620 12717333737 016423 0ustar00abarthabarth000000 000000 ## Copyright (C) 2013 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {} ncwriteatt(@var{filename},@var{varname},@var{attname},@var{val}) ## ## Defines the attribute @var{attname} of the variable @var{varname} in the file ## @var{filename} with the value @var{val}. ## ## Gobal attributes can be defined by using "/" or the group name as ## @var{varname}. The type of value is mapped to the NetCDF data types. ## (see @code{ncinfo}). ## ## @seealso{ncinfo} ## ## @end deftypefn function ncwriteatt(filename,varname,attname,val) ncid = netcdf_open(filename,'NC_WRITE'); netcdf_reDef(ncid); [gid,varid] = ncloc(ncid,varname); if isempty(varid) varid = netcdf_getConstant('NC_GLOBAL'); endif netcdf_putAtt(ncid,varid,attname,val); netcdf_close(ncid); netcdf/inst/test_netcdf.m000664 001750 001750 00000003171 12717333737 016543 0ustar00abarthabarth000000 000000 % test_netcdf % Test the netcdf interface function test_netcdf() import_netcdf tests = {'test_netcdf_constant',... 'test_netcdf_create'... 'test_netcdf_low_level_interface'... 'test_netcdf_unlim',... 'test_netcdf_datatypes',... 'test_netcdf_scalar_variable',... 'test_netcdf_attributes',... 'test_netcdf_high_level_interface',... 'test_netcdf_ncwriteschema',... 'test_netcdf_ncwriteschema_unlim',... 'test_netcdf_ncwriteschema_chunking',... 'test_netcdf_ncwriteschema_group'... }; maxlen = max(cellfun(@(s) length(s),tests)); libver = netcdf.inqLibVers(); fprintf('Using NetCDF library version "%s"\n',libver) for iindex=1:length(tests); dots = repmat('.',1,maxlen - length(tests{iindex})); fprintf('run %s%s ',tests{iindex},dots); try eval(tests{iindex}); disp(' OK '); catch disp(' FAIL '); disp(lasterr) end end %% Copyright (C) 2013 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 2 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . netcdf/inst/import_netcdf.m000664 001750 001750 00000003743 12717333737 017103 0ustar00abarthabarth000000 000000 % File automatically generated by PKG_ADD.sh netcdf.getConstant = @netcdf_getConstant; netcdf.getConstantNames = @netcdf_getConstantNames; netcdf.inqLibVers = @netcdf_inqLibVers; netcdf.setDefaultFormat = @netcdf_setDefaultFormat; netcdf.setChunkCache = @netcdf_setChunkCache; netcdf.getChunkCache = @netcdf_getChunkCache; netcdf.create = @netcdf_create; netcdf.open = @netcdf_open; netcdf.abort = @netcdf_abort; netcdf.sync = @netcdf_sync; netcdf.setFill = @netcdf_setFill; netcdf.inq = @netcdf_inq; netcdf.inqUnlimDims = @netcdf_inqUnlimDims; netcdf.inqFormat = @netcdf_inqFormat; netcdf.defDim = @netcdf_defDim; netcdf.renameDim = @netcdf_renameDim; netcdf.defVar = @netcdf_defVar; netcdf.renameVar = @netcdf_renameVar; netcdf.defVarFill = @netcdf_defVarFill; netcdf.inqVarFill = @netcdf_inqVarFill; netcdf.defVarDeflate = @netcdf_defVarDeflate; netcdf.inqVarDeflate = @netcdf_inqVarDeflate; netcdf.defVarChunking = @netcdf_defVarChunking; netcdf.inqVarChunking = @netcdf_inqVarChunking; netcdf.defVarFletcher32 = @netcdf_defVarFletcher32; netcdf.inqVarFletcher32 = @netcdf_inqVarFletcher32; netcdf.endDef = @netcdf_endDef; netcdf.reDef = @netcdf_reDef; netcdf.putVar = @netcdf_putVar; netcdf.getVar = @netcdf_getVar; netcdf.close = @netcdf_close; netcdf.inqAttName = @netcdf_inqAttName; netcdf.inqAttID = @netcdf_inqAttID; netcdf.inqAtt = @netcdf_inqAtt; netcdf.getAtt = @netcdf_getAtt; netcdf.putAtt = @netcdf_putAtt; netcdf.copyAtt = @netcdf_copyAtt; netcdf.renameAtt = @netcdf_renameAtt; netcdf.delAtt = @netcdf_delAtt; netcdf.inqVarID = @netcdf_inqVarID; netcdf.inqVarIDs = @netcdf_inqVarIDs; netcdf.inqVar = @netcdf_inqVar; netcdf.inqDim = @netcdf_inqDim; netcdf.inqDimID = @netcdf_inqDimID; netcdf.inqDimIDs = @netcdf_inqDimIDs; netcdf.defGrp = @netcdf_defGrp; netcdf.inqGrps = @netcdf_inqGrps; netcdf.inqGrpName = @netcdf_inqGrpName; netcdf.inqGrpNameFull = @netcdf_inqGrpNameFull; netcdf.inqGrpParent = @netcdf_inqGrpParent; netcdf.inqGrpFullNcid = @netcdf_inqGrpFullNcid; netcdf.inqNcid = @netcdf_inqNcid; netcdf/inst/nccreate.m000664 001750 001750 00000007745 12717333737 016040 0ustar00abarthabarth000000 000000 ## Copyright (C) 2013 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {} nccreate(@var{filename},@var{varname}) ## @deftypefnx {Function File} {} nccreate(@var{filename},@var{varname},"property",@var{value},...) ## ## Create the variable @var{varname} in the file @var{filename}. ## ## The following properties can be used: ## @itemize ## @item "Dimensions": a cell array with the dimension names followed by their ## length or Inf if the dimension is unlimited. If the property is ommited, a ## scalar variable is created. ## @item "Datatype": a string with the Octave data type name ## (see @code{ncinfo} for the correspondence between Octave and NetCDF data ## types). The default data type is a "double". ## @item "Format": This can be "netcdf4_classic" (default), "classic", "64bit" ## or "netcdf4". ## @item "FillValue": the value used for undefined elements of the NetCDF ## variable. ## @item "ChunkSize": the size of the data chunks. If omited, the variable is ## not chunked. ## @item "DeflateLevel": The deflate level for compression. It can be the string ## "disable" (default) for no compression or an integer between 0 (no ## compression) and 9 (maximum compression). ## @item "Shuffle": true for enabling the shuffle filter or false (default) for ## disabling it. ## @end itemize ## ## Example: ## @example ## nccreate("test.nc","temp","Dimensions",@{"lon",10,"lat",20@},"Format","classic"); ## ncdisp("test.nc"); ## @end example ## @seealso{ncwrite} ## @end deftypefn function nccreate(filename,varname,varargin) dimensions = {}; datatype = 'double'; ncformat = 'netcdf4_classic'; FillValue = []; ChunkSize = []; DeflateLevel = 'disable'; Shuffle = false; for i = 1:2:length(varargin) if strcmp(varargin{i},'Dimensions') dimensions = varargin{i+1}; elseif strcmp(varargin{i},'Datatype') datatype = varargin{i+1}; elseif strcmp(varargin{i},'Format') ncformat = varargin{i+1}; elseif strcmp(varargin{i},'FillValue') FillValue = varargin{i+1}; elseif strcmp(varargin{i},'ChunkSize') ChunkSize = varargin{i+1}; elseif strcmp(varargin{i},'DeflateLevel') DeflateLevel = varargin{i+1}; elseif strcmp(varargin{i},'Shuffle') Shuffle = varargin{i+1}; else error(['unknown keyword ' varargin{i} '.']); end end if ~isempty(stat(filename)) ncid = netcdf_open(filename,'NC_WRITE'); netcdf_reDef(ncid); else mode = format2mode(ncformat); ncid = netcdf_create(filename,mode); end % create dimensions dimids = []; i = 1; while i <= length(dimensions) if i == length(dimensions) dimids(end+1) = netcdf_inqDimID(ncid,dimensions{i}); i = i+1; elseif ischar(dimensions{i+1}) dimids(end+1) = netcdf_inqDimID(ncid,dimensions{i}); i = i+1; else try if isinf(dimensions{i+1}) dimensions{i+1} = netcdf_getConstant('NC_UNLIMITED'); end dimids(end+1) = netcdf_defDim(ncid,dimensions{i},dimensions{i+1}); catch dimids(end+1) = netcdf_inqDimID(ncid,dimensions{i}); end i = i+2; end end varid = netcdf_defVar(ncid,varname,oct2nctype(datatype),dimids); if ~isempty(ChunkSize) netcdf_defVarChunking(ncid,varid,'chunked',ChunkSize); end if ~isempty(FillValue) % value of nofill? netcdf_defVarFill(ncid,varid,false,FillValue); end if isnumeric(DeflateLevel) netcdf_defVarDeflate(ncid,varid,Shuffle,true,DeflateLevel); end netcdf_close(ncid); netcdf/inst/ncinfo.m000664 001750 001750 00000016736 12717333737 015530 0ustar00abarthabarth000000 000000 ## Copyright (C) 2013 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {@var{info} =} ncinfo (@var{filename}) ## @deftypefnx {Function File} {@var{info} =} ncinfo (@var{filename}, @var{varname}) ## @deftypefnx {Function File} {@var{info} =} ncinfo (@var{filename}, @var{groupname}) ## return information about an entire NetCDF file @var{filename} (i.e. the root ## group "/"), about the variable called @var{varname} or the group called ## @var{groupname}. ## ## The structure @var{info} has always the following fields: ## @itemize ## @item @var{Filename}: the name of the NetCDF file ## @item @var{Format}: one of the strings "CLASSIC", "64BIT", "NETCDF4" ## or "NETCDF4_CLASSIC" ## @end itemize ## ## The structure @var{info} has additional fields depending on wether a ## group of variable is queried. ## ## Groups ## ## Groups are returned as an array structure with the following fields: ## ## @itemize ## @item @var{Name}: the group name. The root group is named "/". ## @item @var{Dimensions}: a array structure with the dimensions. ## @item @var{Variables}: a array structure with the variables. ## @item @var{Attributes}: a array structure with global attributes. ## @item @var{Groups}: a array structure (one for each group) with the ## same fields as this structure. ## @end itemize ## ## Dimensions ## ## Dimensions are returned as an array structure with the following fields: ## @itemize ## @item @var{Name}: the name of the dimension ## @item @var{Length}: the length of the dimension ## @item @var{Unlimited}: true of the dimension has no fixed limited, false ## @end itemize ## ## Variables ## ## Variables are returned as an array structure with the following fields: ## @itemize ## @item @var{Name}: the name of the dimension ## @item @var{Dimensions}: array structure of all dimensions of this variable ## with the same structure as above. ## @item @var{Size}: array with the size of the variable ## @item @var{Datatype}: string with the corresponding octave data-type ## (see below) ## @item @var{Attributes}: a array structure of attributes ## @item @var{FillValue}: the NetCDF fill value of the variable. If the fill ## value is not defined, then this attribute is an empty array ([]). ## @item @var{DeflateLevel}: the NetCDF deflate level between 0 (no ## compression) and 9 (maximum compression). ## @item @var{Shuffle}: is true if the shuffle filter is activated to improve ## compression, otherwise false. ## @item @var{CheckSum}: is set to "fletcher32", if check-sums are used, # otherwise this field is not defined. ## @end itemize ## ## Attributes ## ## Attributes are returned as an array structure with the following fields: ## @itemize ## @item @var{Name}: the name of the attribute ## @item @var{Value}: the value of the attribute (with the corresponding type) ## @item @var{Unlimited}: true of the dimension has no fixed limited, false ## @end itemize ## ## Data-types ## ## The following the the correspondence between the Octave and NetCDF ## data-types: ## ## @multitable @columnfractions .5 .5 ## @headitem Octave type @tab NetCDF type ## @item @code{int8} @tab @code{NC_BYTE} ## @item @code{uint8} @tab @code{NC_UBYTE} ## @item @code{int16} @tab @code{NC_SHORT} ## @item @code{uint16} @tab @code{NC_USHORT} ## @item @code{int32} @tab @code{NC_INT} ## @item @code{uint32} @tab @code{NC_UINT} ## @item @code{int64} @tab @code{NC_INT64} ## @item @code{uint64} @tab @code{NC_UINT64} ## @item @code{single} @tab @code{NC_FLOAT} ## @item @code{double} @tab @code{NC_DOUBLE} ## @item @code{char} @tab @code{NC_CHAR} ## @end multitable ## ## The output of @code{ncinfo} can be used to create a NetCDF file with the same ## meta-data using @code{ncwriteschema}. ## ## Note: If there are no attributes (or variable or groups), the corresponding ## field is an empty matrix and not an empty struct array for compability ## with matlab. ## ## @seealso{ncread,nccreate,ncwriteschema,ncdisp} ## ## @end deftypefn function info = ncinfo(filename,name) ncid = netcdf_open(filename,"NC_NOWRITE"); info.Filename = filename; if nargin == 1 name = "/"; endif [gid,varid] = ncloc(ncid,name); if isempty(varid) info = ncinfo_group(info,gid); else unlimdimIDs = netcdf_inqUnlimDims(gid); info = ncinfo_var(info,gid,varid,unlimdimIDs); endif # NetCDF format ncformat = netcdf_inqFormat(ncid); info.Format = lower(strrep(ncformat,'FORMAT_','')); netcdf_close(ncid); endfunction function dims = ncinfo_dim(ncid,dimids,unlimdimIDs) dims = []; for i=1:length(dimids) tmp = struct(); [tmp.Name, tmp.Length] = netcdf_inqDim(ncid,dimids(i)); tmp.Unlimited = any(unlimdimIDs == dimids(i)); if isempty(dims) dims = [tmp]; else dims(i) = tmp; endif endfor endfunction function vinfo = ncinfo_var(vinfo,ncid,varid,unlimdimIDs) [vinfo.Name,xtype,dimids,natts] = netcdf_inqVar(ncid,varid); % Information about dimension vinfo.Dimensions = ncinfo_dim(ncid,dimids,unlimdimIDs); if isempty(vinfo.Dimensions) vinfo.Size = []; else vinfo.Size = cat(2,vinfo.Dimensions.Length); end % Data type vinfo.Datatype = nc2octtype(xtype); % Attributes vinfo.Attributes = []; for i = 0:natts-1 tmp = struct(); tmp.Name = netcdf_inqAttName(ncid,varid,i); tmp.Value = netcdf_getAtt(ncid,varid,tmp.Name); if isempty(vinfo.Attributes) vinfo.Attributes = [tmp]; else vinfo.Attributes(i+1) = tmp; endif endfor % chunking, fillvalue, compression [storage,vinfo.ChunkSize] = netcdf_inqVarChunking(ncid,varid); [nofill,vinfo.FillValue] = netcdf_inqVarFill(ncid,varid); if nofill vinfo.FillValue = []; endif [shuffle,deflate,vinfo.DeflateLevel] = ... netcdf_inqVarDeflate(ncid,varid); if ~deflate vinfo.DeflateLevel = []; endif vinfo.Shuffle = shuffle; # add checksum information if defined (unlike matlab) checksum = netcdf_inqVarFletcher32(ncid,varid); if ~strcmp(checksum,'nochecksum'); vinfo.Checksum = checksum; endif endfunction function info = ncinfo_group(info,ncid) info.Name = netcdf_inqGrpName(ncid); unlimdimIDs = netcdf_inqUnlimDims(ncid); [ndims,nvars,ngatts] = netcdf_inq(ncid); % dimensions dimids = netcdf_inqDimIDs(ncid); info.Dimensions = ncinfo_dim(ncid,dimids,unlimdimIDs); % variables for i=1:nvars info.Variables(i) = ncinfo_var(struct(),ncid,i-1,unlimdimIDs); endfor % global attributes info.Attributes = []; gid = netcdf_getConstant('NC_GLOBAL'); for i = 0:ngatts-1 tmp = struct(); tmp.Name = netcdf_inqAttName(ncid,gid,i); tmp.Value = netcdf_getAtt(ncid,gid,tmp.Name); if isempty(info.Attributes) info.Attributes = [tmp]; else info.Attributes(i+1) = tmp; endif endfor info.Groups = []; gids = netcdf_inqGrps(ncid); for i = 1:length(gids) tmp = ncinfo_group(struct(),gids(i)); if isempty(info.Groups) info.Groups = [tmp]; else info.Groups(i) = tmp; endif endfor endfunction