mirror of https://github.com/openwrt/openwrt.git
75 lines
3.1 KiB
Bash
75 lines
3.1 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Points the autoconf result cache at the file that the build system keeps for
|
|
# this package. Set CONFIGURE_CACHE_DIR to switch this on; see rules.mk.
|
|
#
|
|
# configure sources the site scripts before it loads the cache, so setting
|
|
# cache_file here has the same effect as --cache-file, without a configure
|
|
# argument that a hand written configure script would choke on.
|
|
|
|
# Autoconf before 2.70 reads CONFIG_SITE as a single path name, so the site
|
|
# script of the architecture cannot be a second word in it. Load it from here.
|
|
if [ -n "$CONFIG_SITE_BASE" ] && [ -r "$CONFIG_SITE_BASE" ]; then
|
|
. "$CONFIG_SITE_BASE"
|
|
fi
|
|
|
|
if [ -n "$CONFIGURE_CACHE_FILE" ]; then
|
|
configure_cache_dir=${CONFIGURE_CACHE_FILE%/*}
|
|
|
|
mkdir -p "$configure_cache_dir" 2>/dev/null
|
|
|
|
# A change of the configure arguments gives a new file name. Drop the
|
|
# file of the previous arguments so that the directory holds one cache
|
|
# per package.
|
|
for configure_cache_stale in "$configure_cache_dir"/*.cache "$configure_cache_dir"/*.cache.sum; do
|
|
[ -f "$configure_cache_stale" ] || continue
|
|
[ "${configure_cache_stale%.sum}" = "$CONFIGURE_CACHE_FILE" ] || rm -f "$configure_cache_stale"
|
|
done
|
|
|
|
# An autoreconf run with a new autoconf, automake or libtool, or a new
|
|
# patch, gives a new configure script whose checks can mean something
|
|
# else under the same cache variable name.
|
|
configure_cache_sum=$(cksum < "${as_myself:-$0}")
|
|
if [ "$configure_cache_sum" != "$(cat "$CONFIGURE_CACHE_FILE.sum" 2>/dev/null)" ]; then
|
|
rm -f "$CONFIGURE_CACHE_FILE"
|
|
printf '%s\n' "$configure_cache_sum" > "$CONFIGURE_CACHE_FILE.sum"
|
|
fi
|
|
|
|
# configure aborts when a precious variable such as LIBS or CPP differs
|
|
# from the value in the cache, and it aborts again on every later run.
|
|
# Make the same comparison here and start from a cold cache instead.
|
|
if [ -f "$CONFIGURE_CACHE_FILE" ] && ! (
|
|
set -f
|
|
. "$CONFIGURE_CACHE_FILE"
|
|
for ac_var in $ac_precious_vars; do
|
|
eval "old_set=\$ac_cv_env_${ac_var}_set new_set=\$ac_env_${ac_var}_set"
|
|
[ "$old_set" = "$new_set" ] || exit 1
|
|
eval "set -- \$ac_cv_env_${ac_var}_value"
|
|
old_val=$*
|
|
eval "set -- \$ac_env_${ac_var}_value"
|
|
[ "$old_val" = "$*" ] || exit 1
|
|
done
|
|
); then
|
|
rm -f "$CONFIGURE_CACHE_FILE"
|
|
fi
|
|
|
|
# A cached program path outlives a wipe of staging_dir, so it can name a
|
|
# tool that is gone, or miss one that the build installed since. Drop
|
|
# those answers and let configure search PATH again. A search runs no
|
|
# compiler, and the compiler is where the time goes. The libtool and gmp
|
|
# answers hold the path of the staged sed and m4.
|
|
if [ -f "$CONFIGURE_CACHE_FILE" ]; then
|
|
grep -v -e '^[a-z]*_cv_path_' -e '^ac_cv_prog_' -e '^gmp_cv_prog_' \
|
|
-e '^lt_cv_sys_global_symbol_' -e '^lt_cv_truncate_bin=' \
|
|
-e '^ac_cv_AM_TEST_RUNNER_SHELL=' \
|
|
"$CONFIGURE_CACHE_FILE" > "$CONFIGURE_CACHE_FILE.tmp"
|
|
mv -f "$CONFIGURE_CACHE_FILE.tmp" "$CONFIGURE_CACHE_FILE"
|
|
fi
|
|
|
|
cache_file=$CONFIGURE_CACHE_FILE
|
|
|
|
# A configure script that runs further configure scripts must not hand
|
|
# this cache to them. Their checks run with different flags.
|
|
unset CONFIGURE_CACHE_FILE configure_cache_dir configure_cache_stale configure_cache_sum
|
|
fi
|