From: Ralf Wildenhues Date: Wed, 22 Apr 2009 20:13:05 +0000 (+0200) Subject: Avoid racy depmodes with universal builds. X-Git-Tag: v1.11~23 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4f2950ac63faad47c4640eb56fade7d6b1d74307;p=platform%2Fupstream%2Fautomake.git 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. Signed-off-by: Ralf Wildenhues --- diff --git a/ChangeLog b/ChangeLog index dfafb91..5585ced 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-04-22 Ralf Wildenhues + + 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. + 2009-04-21 Fabian Alenius (tiny change) Fix link to autotools tutorial. 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