This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
RFC: Support conditional implied directory
- From: "H.J. Lu" <hongjiu dot lu at intel dot com>
- To: GNU C Library <libc-alpha at sourceware dot org>
- Date: Wed, 18 Jul 2012 13:10:43 -0700
- Subject: RFC: Support conditional implied directory
- Reply-to: "H.J. Lu" <hjl dot tools at gmail dot com>
Hi,
This patch removes support for Implies-before and Implies-after.
Instead, it adds support for conditional implied directory. You can
have
$variable:condition:directory
in Implies. If $variable == condition then use directory. This patch
uses
x86
$machine:x86_64/64:wordsize-64
$machine:x86_64/x32:wordsize-32
ieee754/ldbl-96
ieee754/dbl-64/wordsize-64
ieee754/dbl-64
ieee754/flt-32
in sysdeps/x86_64/Implies. I am planning to use it to add another
conditional directory for x86 bits/environments.h to fix
http://www.sourceware.org/bugzilla/show_bug.cgi?id=14200
Any comments?
Thanks.
H.J.
---
2012-07-18 H.J. Lu <hongjiu.lu@intel.com>
* configure.in (sysnames): Don't look for Implies-before and
Implies-after files. Handle conditional implied directory.
* configure: Regenerated.
* sysdeps/x86_64/Implies: Add $machine:x86_64/64:wordsize-64 and
$machine:x86_64/x32:wordsize-32.
* sysdeps/x86_64/64/Implies-after: Removed.
* sysdeps/x86_64/x32/Implies-after: Likewise.
diff --git a/configure b/configure
index 1268168..fab6465 100755
--- a/configure
+++ b/configure
@@ -4276,43 +4276,51 @@ while test $# -gt 0; do
test -n "$enable_debug_configure" &&
echo "DEBUG: name/Implies $xsrcdir$name/Implies" >&2
- for implies_file in Implies Implies-before Implies-after; do
- implies_type=`echo $implies_file | sed s/-/_/`
- eval ${implies_type}=
- if test -f $xsrcdir$name/$implies_file; then
- # Collect more names from the `Implies' file (removing comments).
- implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
- for x in $implied_candidate; do
- found=no
- if test -d $xsrcdir$name_base/$x; then
- eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
+ if test -f $xsrcdir$name/Implies; then
+ # Collect more names from the `Implies' file (removing comments).
+ implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
+ implied=
+ for x in $implied_candidate; do
+ case $x in
+ "\$"*:*:*)
+ implied_var="`echo $x | sed 's/:.*$//'`"
+ eval "implied_var=$implied_var"
+ implied_cond="`echo $x | sed 's/.*:\(.*\):.*$/\1/'`"
+ test "$implied_var" = "$implied_cond" || continue
+ x="`echo $x | sed 's/.*://'`"
+ ;;
+ esac
+ found=no
+ if test -d $xsrcdir$name_base/$x; then
+ implied="$implied $name_base/$x";
+ found=yes
+ fi
+ for d in $add_ons_pfx ''; do
+ try="${d}sysdeps/$x"
+ case $d in
+ /*) try_srcdir= ;;
+ *) try_srcdir=$srcdir/ ;;
+ esac
+ test -n "$enable_debug_configure" &&
+ echo "DEBUG: $name implied $x try($d) {$try_srcdir}$try" >&2
+ if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
+ then
+ implied="$implied $try"
found=yes
- fi
- for d in $add_ons_pfx ''; do
- try="${d}sysdeps/$x"
- case $d in
- /*) try_srcdir= ;;
- *) try_srcdir=$srcdir/ ;;
+ case "$sysnames_add_ons" in
+ *" $d "*) ;;
+ *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
esac
- test -n "$enable_debug_configure" &&
- echo "DEBUG: $name $implies_file $x try($d) {$try_srcdir}$try" >&2
- if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
- then
- eval "${implies_type}=\"\$${implies_type} \$try\""
- found=yes
- case "$sysnames_add_ons" in
- *" $d "*) ;;
- *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
- esac
- fi
- done
- if test $found = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $name/$implies_file specifies nonexistent $x" >&5
-$as_echo "$as_me: WARNING: $name/$implies_file specifies nonexistent $x" >&2;}
fi
done
- fi
- done
+ if test $found = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $name/Implies specifies nonexistent $x" >&5
+$as_echo "$as_me: WARNING: $name/Implies specifies nonexistent $x" >&2;}
+ fi
+ done
+ else
+ implied=
+ fi
# Add NAME to the list of names.
names="$names $name"
@@ -4320,10 +4328,6 @@ $as_echo "$as_me: WARNING: $name/$implies_file specifies nonexistent $x" >&2;}
# Find the parent of NAME, using the empty string if it has none.
parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
- test -n "$enable_debug_configure" &&
- echo "DEBUG: $name Implies='$Implies' rest='$*' parent='$parent' \
-Implies_before='$Implies_after' Implies_after='$Implies_after'" >&2
-
# Add the names implied by NAME, and NAME's parent (if it has one), to
# the list of names to be processed (the argument list). We prepend the
# implied names to the list and append the parent. We want implied
@@ -4331,7 +4335,7 @@ Implies_before='$Implies_after' Implies_after='$Implies_after'" >&2
# configuration components; this ensures that for sysv4, unix/common
# (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
# after sysv4).
- sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
+ sysnames="`echo $implied $* $parent`"
test -n "$sysnames" && set $sysnames
done
diff --git a/configure.in b/configure.in
index 6b6dde5..4ff5802 100644
--- a/configure.in
+++ b/configure.in
@@ -769,42 +769,50 @@ while test $# -gt 0; do
test -n "$enable_debug_configure" &&
echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
- for implies_file in Implies Implies-before Implies-after; do
- implies_type=`echo $implies_file | sed s/-/_/`
- eval ${implies_type}=
- if test -f $xsrcdir$name/$implies_file; then
- # Collect more names from the `Implies' file (removing comments).
- implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
- for x in $implied_candidate; do
- found=no
- if test -d $xsrcdir$name_base/$x; then
- eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
+ if test -f $xsrcdir$name/Implies; then
+ # Collect more names from the `Implies' file (removing comments).
+ implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
+ implied=
+ for x in $implied_candidate; do
+ case $x in
+ "\$"*:*:*)
+ implied_var="`echo $x | sed 's/:.*$//'`"
+ eval "implied_var=$implied_var"
+ implied_cond="`echo $x | sed 's/.*:\(.*\):.*$/\1/'`"
+ test "$implied_var" = "$implied_cond" || continue
+ x="`echo $x | sed 's/.*://'`"
+ ;;
+ esac
+ found=no
+ if test -d $xsrcdir$name_base/$x; then
+ implied="$implied $name_base/$x";
+ found=yes
+ fi
+ for d in $add_ons_pfx ''; do
+ try="${d}sysdeps/$x"
+ case $d in
+ /*) try_srcdir= ;;
+ *) try_srcdir=$srcdir/ ;;
+ esac
+ test -n "$enable_debug_configure" &&
+ echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
+ if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
+ then
+ implied="$implied $try"
found=yes
- fi
- for d in $add_ons_pfx ''; do
- try="${d}sysdeps/$x"
- case $d in
- /*) try_srcdir= ;;
- *) try_srcdir=$srcdir/ ;;
+ case "$sysnames_add_ons" in
+ *" $d "*) ;;
+ *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
esac
- test -n "$enable_debug_configure" &&
- echo "[DEBUG]: $name $implies_file $x try($d) {$try_srcdir}$try" >&2
- if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
- then
- eval "${implies_type}=\"\$${implies_type} \$try\""
- found=yes
- case "$sysnames_add_ons" in
- *" $d "*) ;;
- *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
- esac
- fi
- done
- if test $found = no; then
- AC_MSG_WARN($name/$implies_file specifies nonexistent $x)
fi
done
- fi
- done
+ if test $found = no; then
+ AC_MSG_WARN($name/Implies specifies nonexistent $x)
+ fi
+ done
+ else
+ implied=
+ fi
# Add NAME to the list of names.
names="$names $name"
@@ -814,10 +822,6 @@ changequote(,)dnl
parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
changequote([,])dnl
- test -n "$enable_debug_configure" &&
- echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \
-Implies_before='$Implies_after' Implies_after='$Implies_after'" >&2
-
# Add the names implied by NAME, and NAME's parent (if it has one), to
# the list of names to be processed (the argument list). We prepend the
# implied names to the list and append the parent. We want implied
@@ -825,7 +829,7 @@ Implies_before='$Implies_after' Implies_after='$Implies_after'" >&2
# configuration components; this ensures that for sysv4, unix/common
# (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
# after sysv4).
- sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
+ sysnames="`echo $implied $* $parent`"
test -n "$sysnames" && set $sysnames
done
diff --git a/sysdeps/x86_64/64/Implies-after b/sysdeps/x86_64/64/Implies-after
deleted file mode 100644
index a8cae95..0000000
--- a/sysdeps/x86_64/64/Implies-after
+++ /dev/null
@@ -1 +0,0 @@
-wordsize-64
diff --git a/sysdeps/x86_64/Implies b/sysdeps/x86_64/Implies
index 811c19a..8b4daae 100644
--- a/sysdeps/x86_64/Implies
+++ b/sysdeps/x86_64/Implies
@@ -1,4 +1,6 @@
x86
+$machine:x86_64/64:wordsize-64
+$machine:x86_64/x32:wordsize-32
ieee754/ldbl-96
ieee754/dbl-64/wordsize-64
ieee754/dbl-64
diff --git a/sysdeps/x86_64/x32/Implies-after b/sysdeps/x86_64/x32/Implies-after
deleted file mode 100644
index 39a34c5..0000000
--- a/sysdeps/x86_64/x32/Implies-after
+++ /dev/null
@@ -1 +0,0 @@
-wordsize-32
--
1.7.10.4