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>