This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RFC: Support conditional implied directory


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]