130 lines
4.1 KiB
Plaintext
130 lines
4.1 KiB
Plaintext
# NTP_CACHEVERSION(component, version)
|
|
# ------------------------------------
|
|
# compare this configure script's cache version stamp with the stamp
|
|
# saved by the prior run in config.cache. If they differ, clear all
|
|
# cache variables to avoid using results cached with a script that
|
|
# is known to differ in a cache-invalidating manner.
|
|
#
|
|
# Note: use immediately following AC_INIT in configure.ac, as clearing
|
|
# all _cv_ variables only makes sense immediately after loading, before
|
|
# use or modification.
|
|
#
|
|
# The top-level configure.ac in a subtree using NTP_CACHEVERSION
|
|
# will clear a previous cache lacking any saved cache version number,
|
|
# while children do not. This comes into play only when introducing
|
|
# NTP_CACHEVERSION where it had not been previously used: Previous
|
|
# cached results are presumed incompatible and not used. The reason
|
|
# children do not flush the cached is it is shared with the parent and
|
|
# the children can rely on the parent having cleared any cache variables
|
|
# predating this mechanism. Therefore the child can rely on the
|
|
# config.cache generated by the parent on the first run despite not
|
|
# finding the child version stamp in it.
|
|
#
|
|
# See html/copyright.html or COPYRIGHT in plain text.
|
|
|
|
AC_DEFUN_ONCE([NTP_CACHEVERSION], [
|
|
AC_BEFORE([$0], [AM_INIT_AUTOMAKE])dnl
|
|
AC_BEFORE([$0], [AC_CONFIG_HEADERS])dnl
|
|
AC_BEFORE([$0], [AC_PROG_CC])dnl
|
|
AC_BEFORE([$0], [AC_CONFIG_SUBDIRS])dnl
|
|
|
|
ntp_cache_flush=1
|
|
|
|
case "$ntp_cv_[$1]_cache_version" in
|
|
[$2])
|
|
# same version, good
|
|
ntp_cache_flush=0
|
|
;;
|
|
'')
|
|
# No cache, predates ntp_cv_$1_cache_version, or is empty.
|
|
case "$cache_file" in
|
|
/dev/null)
|
|
ntp_cache_flush=0
|
|
;;
|
|
*)
|
|
case "$NTP_CACHEVERSION_PARENT" in
|
|
'')
|
|
# Do not clear the cache immediately after it is created
|
|
# empty as it is noisy. Differentiate a newly-created
|
|
# config.cache from one predating the cache version
|
|
# mechanism by looking for the first cached variable set
|
|
# by Autoconf
|
|
case "$ac_cv_path_install" in
|
|
'')
|
|
# empty config.cache file
|
|
ntp_cache_flush=0
|
|
esac
|
|
;;
|
|
*)
|
|
# Parent configure just created cache from empty,
|
|
# flushing would be counterproductive.
|
|
ntp_cache_flush=0;
|
|
;;
|
|
esac
|
|
esac
|
|
;;
|
|
*)
|
|
# configure cache version mismatches config.cache version
|
|
;;
|
|
esac
|
|
|
|
case "$ntp_cache_flush" in
|
|
1)
|
|
c_version="${ntp_cv_[$1]_cache_version:-(no version found)}"
|
|
|
|
# Do we flush all variables or exclude others' version stamps?
|
|
|
|
case "$NTP_CACHEVERSION_PARENT" in
|
|
'')
|
|
# Clear all *_cv_* variables including our child subdirs'
|
|
# ntp_cv_*_cache_version variables. This prevents subdir
|
|
# configure scripts from noticing a version mismatch just
|
|
# after the top configure in the invocation cleared and
|
|
# recreated the cache.
|
|
|
|
c_varname_list=`set |
|
|
sed -n -e 's/=.*$//' \
|
|
-e '/_cv_/p'
|
|
`
|
|
;;
|
|
*)
|
|
# This is not the top configure this particular invocation.
|
|
# Clear all *_cv_* variables sparing the version stamps
|
|
# of other configure scripts, so we don't trigger
|
|
# useless repeated clearings.
|
|
|
|
c_varname_list=`set |
|
|
sed -n -e 's/=.*$//' \
|
|
-e '/ntp_cv_.*_cache_version/d' \
|
|
-e '/_cv_/p'
|
|
`
|
|
esac
|
|
|
|
for c_varname in $c_varname_list
|
|
do
|
|
dnl AS_UNSET([$c_varname])
|
|
dnl With Autoconf 2.61 and automake 1.10.3, using AS_UNSET
|
|
dnl here triggers generation of a syntax error in configure.
|
|
dnl Once we require a newer Autoconf we can revert to the
|
|
dnl AS_UNSET code.
|
|
{ eval $c_varname=; unset $c_varname; }
|
|
done
|
|
|
|
AC_MSG_NOTICE([[$cache_file saved by another version, ignored.]])
|
|
AC_MSG_NOTICE([[configure script cache version: ]][$2])
|
|
AC_MSG_NOTICE([[$cache_file version: $c_version]])
|
|
AS_UNSET([c_varname])
|
|
AS_UNSET([c_varname_list])
|
|
AS_UNSET([c_version])
|
|
esac
|
|
|
|
AS_UNSET([ntp_cache_flush])
|
|
|
|
# save configure version in config.cache for next time
|
|
ntp_cv_[$1]_cache_version="[$2]"
|
|
|
|
# let any subdir configure.ac NTP_CACHEVERSION invocations
|
|
# know they are not the top level.
|
|
NTP_CACHEVERSION_PARENT='[$1]' ; export NTP_CACHEVERSION_PARENT
|
|
])dnl
|