Started with caching support
authorAnders Henja <anders@baltrad.eu>
Wed, 21 Dec 2011 15:10:36 +0000 (16:10 +0100)
committerAnders Henja <anders@baltrad.eu>
Wed, 21 Dec 2011 15:10:36 +0000 (16:10 +0100)
configure
configure.in
def.mk.in
lib/Makefile
lib/beamblockage.c
lib/beamblockage.h
lib/config.h.in [new file with mode: 0644]

index 352d7d2..0ecd0ae 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.67 for beamb 0.1.
+# Generated by GNU Autoconf 2.68 for beamb 0.1.
 #
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -89,6 +89,7 @@ fi
 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
@@ -213,11 +214,18 @@ IFS=$as_save_IFS
   # 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
        export CONFIG_SHELL
-       exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+       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+"$@"}
 fi
 
     if test x$as_have_required = xno; then :
@@ -555,6 +563,7 @@ PACKAGE_URL=''
 
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
+BEAMB_CACHE_DIR
 LD_PRINTOUT
 HLHDFLDSHARED
 HLHDF_LIBRARY_FLAG
@@ -1035,7 +1044,7 @@ Try \`$0 --help' for more information"
     $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}
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
     ;;
 
   esac
@@ -1319,7 +1328,7 @@ test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
 beamb configure 0.1
-generated by GNU Autoconf 2.67
+generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
@@ -1365,7 +1374,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
 
        ac_retval=1
 fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_compile
@@ -1374,7 +1383,7 @@ This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by beamb $as_me 0.1, which was
-generated by GNU Autoconf 2.67.  Invocation command line was
+generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
 
@@ -1632,7 +1641,7 @@ $as_echo "$as_me: loading site script $ac_site_file" >&6;}
       || { { $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 ; }
+See \`config.log' for more details" "$LINENO" 5; }
   fi
 done
 
@@ -1726,6 +1735,10 @@ if test "${prefix}" = "NONE"; then
        prefix=/opt/baltrad/beamb
 fi
 
+if test "${localstatedir}" = "\${prefix}/var"; then
+    localstatedir="`echo ${prefix}`/var"
+fi
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -1736,7 +1749,7 @@ if test -n "$ac_tool_prefix"; then
 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 test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -1776,7 +1789,7 @@ if test -z "$ac_cv_prog_CC"; then
 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 test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -1829,7 +1842,7 @@ if test -z "$CC"; then
 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 test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -1869,7 +1882,7 @@ if test -z "$CC"; then
 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 test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -1928,7 +1941,7 @@ if test -z "$CC"; then
 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 test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -1972,7 +1985,7 @@ do
 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 test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -2027,7 +2040,7 @@ 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 ; }
+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
@@ -2142,7 +2155,7 @@ 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 ; }
+See \`config.log' for more details" "$LINENO" 5; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
@@ -2185,7 +2198,7 @@ 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 ; }
+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
@@ -2244,7 +2257,7 @@ $as_echo "$ac_try_echo"; } >&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 ; }
+See \`config.log' for more details" "$LINENO" 5; }
     fi
   fi
 fi
@@ -2255,7 +2268,7 @@ 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 test "${ac_cv_objext+set}" = set; then :
+if ${ac_cv_objext+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2296,7 +2309,7 @@ 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 ; }
+See \`config.log' for more details" "$LINENO" 5; }
 fi
 rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
@@ -2306,7 +2319,7 @@ 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 test "${ac_cv_c_compiler_gnu+set}" = set; then :
+if ${ac_cv_c_compiler_gnu+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2343,7 +2356,7 @@ 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 test "${ac_cv_prog_cc_g+set}" = set; then :
+if ${ac_cv_prog_cc_g+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
@@ -2421,7 +2434,7 @@ else
 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 test "${ac_cv_prog_cc_c89+set}" = set; then :
+if ${ac_cv_prog_cc_c89+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
@@ -2532,7 +2545,7 @@ fi
 
 case $withval in
   no)
-    as_fn_error $? "You cannot remove dependencies to RAVE" "$LINENO" 5 ;
+    as_fn_error $? "You cannot remove dependencies to RAVE" "$LINENO" 5;
     ;;
   *)
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RAVE installation" >&5
@@ -2576,7 +2589,7 @@ $as_echo "not found" >&6; };
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "The RAVE installation does not contain def.mk. Is this an old installation
-See \`config.log' for more details" "$LINENO" 5 ; };
+See \`config.log' for more details" "$LINENO" 5; };
 fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RAVE cc compiler" >&5
@@ -2729,6 +2742,9 @@ if [ "$HLHDF_SZLIB_LIB" != "" ]; then
   LD_PRINTOUT=$LD_PRINTOUT:`echo "$HLHDF_SZLIB_LIB" | sed -e"s/[ \t]*-L//"`
 fi
 
+BEAMB_CACHE_DIR=`echo $localstatedir`/cache
+
+
 
 
 
@@ -2748,7 +2764,7 @@ fi
 
 
 
-ac_config_files="$ac_config_files def.mk"
+ac_config_files="$ac_config_files def.mk lib/config.h"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -2814,10 +2830,21 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
      :end' >>confcache
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
-    test "x$cache_file" != "x/dev/null" &&
+    if test "x$cache_file" != "x/dev/null"; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
 $as_echo "$as_me: updating cache $cache_file" >&6;}
-    cat confcache >$cache_file
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+       cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+         mv -f confcache "$cache_file"$$ &&
+         mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+         mv -f confcache "$cache_file" ;;
+       esac
+      fi
+    fi
   else
     { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
@@ -2885,7 +2912,7 @@ LTLIBOBJS=$ac_ltlibobjs
 
 
 
-: ${CONFIG_STATUS=./config.status}
+: "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
@@ -2986,6 +3013,7 @@ fi
 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
@@ -3293,7 +3321,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # values after options handling.
 ac_log="
 This file was extended by beamb $as_me 0.1, which was
-generated by GNU Autoconf 2.67.  Invocation command line was
+generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -3346,7 +3374,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
 beamb config.status 0.1
-configured by $0, generated by GNU Autoconf 2.67,
+configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -3456,8 +3484,9 @@ for ac_config_target in $ac_config_targets
 do
   case $ac_config_target in
     "def.mk") CONFIG_FILES="$CONFIG_FILES def.mk" ;;
+    "lib/config.h") CONFIG_FILES="$CONFIG_FILES lib/config.h" ;;
 
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
 done
 
@@ -3478,9 +3507,10 @@ fi
 # after its creation but before its name has been assigned to `$tmp'.
 $debug ||
 {
-  tmp=
+  tmp= ac_tmp=
   trap 'exit_status=$?
-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $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
 }
@@ -3488,12 +3518,13 @@ $debug ||
 
 {
   tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
+  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.
@@ -3515,7 +3546,7 @@ else
   ac_cs_awk_cr=$ac_cr
 fi
 
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
 _ACEOF
 
 
@@ -3543,7 +3574,7 @@ done
 rm -f conf$$subs.sh
 
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
 _ACEOF
 sed -n '
 h
@@ -3591,7 +3622,7 @@ t delim
 rm -f conf$$subs.awk
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
   for (key in S) S_is_set[key] = 1
   FS = "\a"
 
@@ -3623,7 +3654,7 @@ 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 < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
   || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
 _ACEOF
 
@@ -3663,7 +3694,7 @@ do
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -3682,7 +3713,7 @@ do
     for ac_f
     do
       case $ac_f in
-      -) ac_f="$tmp/stdin";;
+      -) 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 `:'.
@@ -3691,7 +3722,7 @@ do
           [\\/$]*) false;;
           *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
           esac ||
-          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;;
+          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'"
@@ -3717,8 +3748,8 @@ $as_echo "$as_me: creating $ac_file" >&6;}
     esac
 
     case $ac_tag in
-    *:-:* | *:-) cat >"$tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5  ;;
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
     esac
     ;;
   esac
@@ -3843,21 +3874,22 @@ 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 "$tmp/subs.awk" >$tmp/out \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+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' "$tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { 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 "$tmp/stdin"
+  rm -f "$ac_tmp/stdin"
   case $ac_file in
-  -) cat "$tmp/out" && rm -f "$tmp/out";;
-  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  -) 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
  ;;
index a389dbf..9e3fc86 100644 (file)
@@ -8,6 +8,11 @@ if test "${prefix}" = "NONE"; then
        prefix=/opt/baltrad/beamb
 fi
 
+dnl Since I can not expand the localstatedir I do this instead
+if test "${localstatedir}" = "\${prefix}/var"; then
+    localstatedir="`echo ${prefix}`/var"
+fi
+
 AC_PROG_CC
 
 LIBS=-lm
@@ -175,6 +180,8 @@ if [[ "$HLHDF_SZLIB_LIB" != "" ]]; then
   LD_PRINTOUT=$LD_PRINTOUT:`echo "$HLHDF_SZLIB_LIB" | sed -e"s/[[ \t]]*-L//"`
 fi
 
+BEAMB_CACHE_DIR=`echo $localstatedir`/cache
+
 AC_SUBST(RAVE_ROOT_DIR)
 AC_SUBST(RAVE_INCLUDE_FLAG)
 AC_SUBST(RAVE_LIB_FLAG)
@@ -193,6 +200,7 @@ AC_SUBST(HLHDF_INCLUDE_FLAG)
 AC_SUBST(HLHDF_LIBRARY_FLAG)
 AC_SUBST(HLHDFLDSHARED)
 AC_SUBST(LD_PRINTOUT)
+AC_SUBST(BEAMB_CACHE_DIR)
 
-AC_CONFIG_FILES(def.mk)
+AC_CONFIG_FILES(def.mk lib/config.h)
 AC_OUTPUT
\ No newline at end of file
index 0198cd9..c0f2b6c 100644 (file)
--- a/def.mk.in
+++ b/def.mk.in
@@ -37,6 +37,11 @@ EXPAT_SUPPRESSED=   @EXPAT_SUPPRESSED@
 HLHDF_LIBRARY_FLAG= @HLHDF_LIBRARY_FLAG@
 HLHDF_INCLUDE_FLAG= @HLHDF_INCLUDE_FLAG@
 
+#
+# Keep caches here
+#
+BEAMB_CACHE_DIR= @BEAMB_CACHE_DIR@
+
 # Special flag to be used for printouts of the necessary LD_LIBRARY_PATH
 #
 LD_PRINTOUT=        @LD_PRINTOUT@
index aeeca86..fc995bd 100644 (file)
@@ -84,7 +84,7 @@ clean:
 
 .PHONY=distclean                
 distclean:     clean
-       @\rm -f $(TARGET)
+       @\rm -f $(TARGET) config.h
 
 # --------------------------------------------------------------------
 # Rules
index 0bc2b34..b9c826e 100644 (file)
@@ -30,6 +30,7 @@ along with beamb.  If not, see <http://www.gnu.org/licenses/>.
 #include "rave_alloc.h"
 #include "math.h"
 #include <string.h>
+#include "config.h"
 
 /**
  * Represents the beam blockage algorithm
@@ -37,6 +38,7 @@ along with beamb.  If not, see <http://www.gnu.org/licenses/>.
 struct _BeamBlockage_t {
   RAVE_OBJECT_HEAD /** Always on top */
   BeamBlockageMap_t* mapper; /**< the topography reader */
+  char* cachedir;            /**< the cache directory */
 };
 
 /*@{ Private functions */
@@ -46,15 +48,17 @@ struct _BeamBlockage_t {
 static int BeamBlockage_constructor(RaveCoreObject* obj)
 {
   BeamBlockage_t* self = (BeamBlockage_t*)obj;
+  self->cachedir = NULL;
   self->mapper = RAVE_OBJECT_NEW(&BeamBlockageMap_TYPE);
 
-  if (self->mapper == NULL) {
+  if (self->mapper == NULL || !BeamBlockage_setCacheDirectory(self, BEAMB_CACHE_DIR)) {
          goto error;
   }
 
   return 1;
 error:
   RAVE_OBJECT_RELEASE(self->mapper);
+  RAVE_FREE(self->cachedir);
   return 0;
 }
 
@@ -66,6 +70,7 @@ static void BeamBlockage_destructor(RaveCoreObject* obj)
 {
   BeamBlockage_t* self = (BeamBlockage_t*)obj;
   RAVE_OBJECT_RELEASE(self->mapper);
+  RAVE_FREE(self->cachedir);
 }
 
 /**
@@ -76,8 +81,9 @@ static int BeamBlockage_copyconstructor(RaveCoreObject* obj, RaveCoreObject* src
   BeamBlockage_t* this = (BeamBlockage_t*)obj;
   BeamBlockage_t* src = (BeamBlockage_t*)srcobj;
   this->mapper = RAVE_OBJECT_CLONE(src->mapper);
+  this->cachedir = NULL;
 
-  if (this->mapper == NULL) {
+  if (this->mapper == NULL || !BeamBlockage_setCacheDirectory(this, src->cachedir)) {
     goto error;
   }
   return 1;
@@ -156,6 +162,83 @@ static void BeamBlockageInternal_cummax(double* p, long nlen)
   }
 }
 
+/**
+ * Creates a full filename from the information in the scan file and the cache dir name. If
+ * cachedir is NULL, only the filename will be set.
+ * We format the filename like this.
+ *   lon_lat_height_elangle_nrays_nbins_rscale_rstart_beamwidth
+ *   All floating point values except height are represented with 2 decimals
+ *
+ * @param[in] self - self
+ * @param[in] scan - scan
+ * @param[in] filename - the allocated array where the filename should be written
+ * @param[in] len - the length of the allocated array
+ * @return 1 on success otherwise 0
+ */
+static int BeamBlockageInternal_createCacheFilename(BeamBlockage_t* self, PolarScan_t* scan, char* filename, int len)
+{
+  int result = 0;
+  double lat, lon, height, bw, elangle, rscale, rstart;
+  long nrays, nbins;
+  int elen = 0;
+
+  RAVE_ASSERT((self != NULL), "self == NULL");
+  RAVE_ASSERT((scan != NULL), "scan == NULL");
+
+  lat = PolarScan_getLatitude(scan) * 180.0 / M_PI;
+  lon = PolarScan_getLongitude(scan) * 180.0 / M_PI;
+  height = PolarScan_getHeight(scan);
+  bw = PolarScan_getBeamwidth(scan) * 180.0 / M_PI;
+  nrays = PolarScan_getNrays(scan);
+  nbins = PolarScan_getNbins(scan);
+  elangle = PolarScan_getElangle(scan) * 180.0 / M_PI;
+  rscale = PolarScan_getRscale(scan);
+  rstart = PolarScan_getRstart(scan);
+
+  if (self->cachedir == NULL) {
+    elen = snprintf(filename, len,
+                    "%.2f_%.2f_%.0f_%.2f_%ld_%ld_%.2f_%.2f_%.2f.h5\n",
+                    lon, lat, height, elangle, nrays, nbins, rscale, rstart, bw);
+  } else {
+    elen = snprintf(filename, len,
+                    "%s/%.2f_%.2f_%.0f_%.2f_%ld_%ld_%.2f_%.2f_%.2f.h5\n",
+                    self->cachedir, lon, lat, height, elangle, nrays, nbins, rscale, rstart, bw);
+  }
+
+  if (elen >= len) {
+    RAVE_ERROR0("Not enough room was created for filename");
+    goto done;
+  }
+
+  result = 1;
+done:
+  return result;
+}
+
+/**
+ * Returns a cached file matching the given scan if there is one.
+ * @param[in] self - self
+ * @param[in] scan - the scan
+ */
+static RaveField_t* BeamBlockageInternal_getCachedFile(BeamBlockage_t* self, PolarScan_t* scan)
+{
+  RaveField_t* result = NULL;
+
+  RAVE_ASSERT((self != NULL), "self == NULL");
+  RAVE_ASSERT((scan != NULL), "scan == NULL");
+
+  if (self->cachedir != NULL) {
+    char filename[512];
+    if (!BeamBlockageInternal_createCacheFilename(self, scan, filename, 512)) {
+      goto done;
+    }
+    fprintf(stderr, "FILENAME: %s\n", filename);
+  }
+
+done:
+  return result;
+}
+
 /*@} End of Private functions */
 
 /*@{ Interface functions */
@@ -171,6 +254,33 @@ const char* BeamBlockage_getTopo30Directory(BeamBlockage_t* self)
   return (const char*)BeamBlockageMap_getTopo30Directory(self->mapper);
 }
 
+int BeamBlockage_setCacheDirectory(BeamBlockage_t* self, const char* cachedir)
+{
+  char* tmp = NULL;
+  int result = 0;
+
+  RAVE_ASSERT((self != NULL), "self == NULL");
+
+  if (cachedir != NULL) {
+    tmp = RAVE_STRDUP(cachedir);
+    if (tmp == NULL) {
+      goto done;
+    }
+  }
+  self->cachedir = tmp;
+  tmp = NULL; // Release responsibility for memory
+  result = 1;
+done:
+  RAVE_FREE(tmp);
+  return result;
+}
+
+const char* BeamBlockage_getCacheDirectory(BeamBlockage_t* self)
+{
+  RAVE_ASSERT((self != NULL), "self == NULL");
+  return (const char*)self->cachedir;
+}
+
 RaveField_t* BeamBlockage_getBlockage(BeamBlockage_t* self, PolarScan_t* scan, double dBlim)
 {
   RaveField_t *field = NULL, *result = NULL;
@@ -191,6 +301,9 @@ RaveField_t* BeamBlockage_getBlockage(BeamBlockage_t* self, PolarScan_t* scan, d
   if (scan == NULL) {
     return NULL;
   }
+
+  BeamBlockageInternal_getCachedFile(self, scan);
+
   navigator = PolarScan_getNavigator(scan);
   if (navigator == NULL) {
     RAVE_ERROR0("Scan does not have a polar navigator instance attached");
index 37b89a9..eccf31e 100644 (file)
@@ -56,6 +56,24 @@ int BeamBlockage_setTopo30Directory(BeamBlockage_t* self, const char* topodirect
 const char* BeamBlockage_getTopo30Directory(BeamBlockage_t* self);
 
 /**
+ * Sets the cache directory. Default is the value specified in the
+ * internal config.h file. If set to NULL, then caching is disabled.
+ * @param[in] self - self
+ * @param[in] cachedir - the cache directory
+ * @return 1 on success otherwise 0
+ */
+int BeamBlockage_setCacheDirectory(BeamBlockage_t* self, const char* cachedir);
+
+/**
+ * Returns the cache directory. Default is the value specified in the
+ * internal config.h file. If NULL is returned it means that caching is
+ * disabled.
+ * @param[in] self - self
+ * @return the cache directory or NULL
+ */
+const char* BeamBlockage_getCacheDirectory(BeamBlockage_t* self);
+
+/**
  * Gets the blockage for the provided scan.
  * @param[in] self - self
  * @param[in] scan - the scan to check blockage
diff --git a/lib/config.h.in b/lib/config.h.in
new file mode 100644 (file)
index 0000000..2a64bca
--- /dev/null
@@ -0,0 +1,26 @@
+/* --------------------------------------------------------------------
+Copyright (C) 2011 Swedish Meteorological and Hydrological Institute, SMHI,
+
+This file is part of beam blockage (beamb).
+
+beamb is free software: you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+beamb 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 Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with beamb.  If not, see <http://www.gnu.org/licenses/>.
+------------------------------------------------------------------------*/
+/**
+ * Basic configuration file containing path information
+ * @file
+ * @author Anders Henja (SMHI)
+ * @date 2011-12-21
+ */
+#define BEAMB_CACHE_DIR "@BEAMB_CACHE_DIR@"