Annotation of embedaddon/ntp/m4/ntp_cacheversion.m4, revision 1.1.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>