[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: tweak for documentation of how to create universal binaries
From: |
Ralf Wildenhues |
Subject: |
Re: tweak for documentation of how to create universal binaries |
Date: |
Wed, 22 Apr 2009 22:22:24 +0200 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
Hi Bruno,
* Bruno Haible wrote on Sun, Apr 19, 2009 at 05:39:06PM CEST:
> Ralf Wildenhues wrote:
> > In the
> > patch that I sent, there is an "icc" case match. If you omit that match
> > from the patch, does not specifying --enable-dependency-tracking still
> > cause depmode=none for gcc in universal mode?
>
> Yes. Without --enable-dependency-tracking: depmode=none.
> With --enable-dependency-tracking: depmode=makedepend.
> So, omitting "| icc" does not change anything.
Thanks again for testing, and Eric for the review. I've applied the
patch as below, to git master of Automake. Will cherry-pick to
branch-1-10 in a couple of days, unless I hear complaints.
Cheers,
Ralf
Avoid racy depmodes with universal builds.
* m4/depend.m4 (_AM_DEPENDENCIES): If universal builds are used,
avoid racy depmodes.
* lib/depcomp: Ignore `-arch' argument for makedepend depmode.
Report by Bruno Haible, analysis by Bruno Haible, Peter O'Gorman,
and Eric Blake.
diff --git a/lib/depcomp b/lib/depcomp
index 0fb633e..9ebfd85 100755
--- a/lib/depcomp
+++ b/lib/depcomp
@@ -1,7 +1,7 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2009-03-04.20
+scriptversion=2009-04-22.22
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
# Software Foundation, Inc.
@@ -474,7 +474,7 @@ makedepend)
fi
# X makedepend
shift
- cleared=no
+ cleared=no eat=no
for arg
do
case $cleared in
@@ -482,11 +482,17 @@ makedepend)
set ""; shift
cleared=yes ;;
esac
+ if test $eat = yes; then
+ eat=no
+ continue
+ fi
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
+ -arch)
+ eat=yes ;;
-*|$object)
;;
*)
diff --git a/m4/depend.m4 b/m4/depend.m4
index 451312a..efe8643 100644
--- a/m4/depend.m4
+++ b/m4/depend.m4
@@ -63,6 +63,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
if test "$am_compiler_list" = ""; then
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
for depmode in $am_compiler_list; do
# Setup a source with many dependencies, because some compilers
# like to wrap large dependency lists on column 80 (with \), and
@@ -87,6 +97,10 @@ AC_CACHE_CHECK([dependency style of $depcc],
am__obj=sub/conftest.${OBJEXT-o}
am__minus_obj="-o $am__obj"
case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
nosideeffect)
# after this tag, mechanisms are not by side-effect, so they'll
# only be used when explicitly requested