Annotation of embedaddon/ntp/m4/ntp_cacheversion.m4, revision 1.1
1.1 ! misho 1: # NTP_CACHEVERSION(component, version)
! 2: # ------------------------------------
! 3: # compare this configure script's cache version stamp with the stamp
! 4: # saved by the prior run in config.cache. If they differ, clear all
! 5: # cache variables to avoid using results cached with a script that
! 6: # is known to differ in a cache-invalidating manner.
! 7: #
! 8: # Note: use immediately following AC_INIT in configure.ac, as clearing
! 9: # all _cv_ variables only makes sense immediately after loading, before
! 10: # use or modification.
! 11: #
! 12: # It is assumed that parent configure.ac files which use
! 13: # AC_CONFIG_SUBDIR to invoke child configure.ac files have used
! 14: # NTP_CACHEVERSION if any children do. The top-level configure script
! 15: # will clear a previous cache lacking any saved cache version number,
! 16: # while children do not. The reason is the children can rely on the
! 17: # parent having cleared any cache variables predating this mechanism.
! 18: # Therefore the child can rely on the config.cache generated by the
! 19: # parent on the first run despite not finding its version stamp
! 20: # previously saved. In this case top-level means a configure script
! 21: # not invoked by another configure script in its parent directory.
! 22:
! 23: AC_DEFUN_ONCE([NTP_CACHEVERSION], [
! 24: AC_BEFORE([$0], [AM_INIT_AUTOMAKE])dnl
! 25: AC_BEFORE([$0], [AM_CONFIG_HEADER])dnl
! 26: AC_BEFORE([$0], [AC_PROG_CC])dnl
! 27: AC_BEFORE([$0], [AC_CONFIG_SUBDIRS])dnl
! 28:
! 29: ntp_cache_flush=1
! 30:
! 31: case "$ntp_cv_[$1]_cache_version" in
! 32: [$2])
! 33: # same version, good
! 34: ntp_cache_flush=0
! 35: ;;
! 36: '')
! 37: # No cache, predates ntp_cv_$1_cache_version, or is empty.
! 38: case "$cache_file" in
! 39: /dev/null)
! 40: ntp_cache_flush=0
! 41: ;;
! 42: *)
! 43: case "$NTP_CACHEVERSION_PARENT" in
! 44: '')
! 45: # Do not clear the cache immediately after it is created
! 46: # empty as it is noisy. Differentiate a newly-created
! 47: # config.cache from one predating the cache version
! 48: # mechanism by looking for the first cached variable set
! 49: # by Autoconf
! 50: case "$ac_cv_path_install" in
! 51: '')
! 52: # empty config.cache file
! 53: ntp_cache_flush=0
! 54: esac
! 55: ;;
! 56: *)
! 57: # Parent configure just created cache from empty,
! 58: # flushing would be counterproductive.
! 59: ntp_cache_flush=0;
! 60: esac
! 61: esac
! 62: ;;
! 63: *)
! 64: # configure cache version mismatches config.cache version
! 65: esac
! 66:
! 67: case "$ntp_cache_flush" in
! 68: 1)
! 69: c_version="${ntp_cv_[$1]_cache_version:-(no version found)}"
! 70:
! 71: # Do we flush all variables or exclude others' version stamps?
! 72:
! 73: case "$NTP_CACHEVERSION_PARENT" in
! 74: '')
! 75: # Clear all *_cv_* variables including our child subdirs'
! 76: # ntp_cv_*_cache_version variables. This prevents subdir
! 77: # configure scripts from noticing a version mismatch just
! 78: # after the top configure in the invocation cleared and
! 79: # recreated the cache.
! 80:
! 81: c_varname_list=`set |
! 82: sed -n -e 's/=.*$//' \
! 83: -e '/_cv_/p'
! 84: `
! 85: ;;
! 86: *)
! 87: # This is not the top configure this particular invocation.
! 88: # Clear all *_cv_* variables sparing the version stamps
! 89: # of other configure scripts, so we don't trigger
! 90: # useless repeated clearings.
! 91:
! 92: c_varname_list=`set |
! 93: sed -n -e 's/=.*$//' \
! 94: -e '/ntp_cv_.*_cache_version/d' \
! 95: -e '/_cv_/p'
! 96: `
! 97: esac
! 98:
! 99: for c_varname in $c_varname_list
! 100: do
! 101: AS_UNSET([$c_varname])
! 102: done
! 103:
! 104: AC_MSG_NOTICE([[$cache_file saved by another version, ignored.]])
! 105: AC_MSG_NOTICE([[configure script cache version: ]][$2])
! 106: AC_MSG_NOTICE([[$cache_file version: $c_version]])
! 107: AS_UNSET([c_varname])
! 108: AS_UNSET([c_varname_list])
! 109: AS_UNSET([c_version])
! 110: esac
! 111:
! 112: AS_UNSET([ntp_cache_flush])
! 113:
! 114: # save configure version in config.cache for next time
! 115: ntp_cv_[$1]_cache_version="[$2]"
! 116:
! 117: # let any subdir configure.ac NTP_CACHEVERSION invocations
! 118: # know they are not the top level.
! 119: NTP_CACHEVERSION_PARENT='[$1]' ; export NTP_CACHEVERSION_PARENT
! 120: ])dnl
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>