From ff5f33b679839555bcfe278a72e88c6ea4cb33f2 Mon Sep 17 00:00:00 2001 From: Alp Toker Date: Thu, 26 Jun 2008 19:19:33 +0000 Subject: [PATCH] 2008-06-26 Alp Toker * acinclude.m4: Update dolt to the latest git version 5e9eef10. (The one we had wasn't in fact the latest version and had a known bug.) svn path=/trunk/mono/; revision=106670 --- ChangeLog | 5 ++++ acinclude.m4 | 66 ++++++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 59 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index bb486f76b0a..04ca8b6b1a3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-06-26 Alp Toker + + * acinclude.m4: Update dolt to the latest git version 5e9eef10. (The one we + had wasn't in fact the latest version and had a known bug.) + 2008-06-25 Zoltan Varga * configure.in: Enable dolt by default as an experiment. diff --git a/acinclude.m4 b/acinclude.m4 index dae9468cd23..8c75480ae08 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -13,8 +13,6 @@ AC_REQUIRE([AC_CANONICAL_HOST]) # dolt, a replacement for libtool # Josh Triplett AC_PATH_PROG(DOLT_BASH, bash) -AC_MSG_CHECKING([if libtool sucks]) -AC_MSG_RESULT([yup, it does]) AC_MSG_CHECKING([if dolt supports this host]) dolt_supported=yes if test x$DOLT_BASH = x; then @@ -24,11 +22,21 @@ if test x$GCC != xyes; then dolt_supported=no fi case $host in -i?86-*-linux*|x86_64-*-linux*) ;; -*) dolt_supported=no ;; +i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux* \ +|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*) + pic_options='-fPIC' + ;; +i?86-apple-darwin*) + pic_options='-fno-common' + ;; +*) + dolt_supported=no + ;; esac if test x$dolt_supported = xno ; then AC_MSG_RESULT([no, falling back to libtool]) + LTCOMPILE='$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(COMPILE)' + LTCXXCOMPILE='$(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXXCOMPILE)' else AC_MSG_RESULT([yes, replacing libtool]) @@ -62,15 +70,18 @@ dnl Write out shared compilation code. cat <<'__DOLTCOMPILE__EOF__' >>doltcompile libobjdir="${obj%$objbase}.libs" if test ! -d "$libobjdir" ; then - mkdir "$libobjdir" + mkdir_out="$(mkdir "$libobjdir" 2>&1)" mkdir_ret=$? if test "$mkdir_ret" -ne 0 && test ! -d "$libobjdir" ; then + echo "$mkdir_out" 1>&2 exit $mkdir_ret fi fi pic_object="$libobjdir/$objbase.o" args@<:@$objarg@:>@="$pic_object" -"${args@<:@@@:>@}" -fPIC -DPIC +__DOLTCOMPILE__EOF__ + cat <<__DOLTCOMPILE__EOF__ >>doltcompile +"\${args@<:@@@:>@}" $pic_options -DPIC || exit \$? __DOLTCOMPILE__EOF__ fi @@ -83,11 +94,11 @@ args@<:@$objarg@:>@="$non_pic_object" __DOLTCOMPILE__EOF__ if test x$enable_shared = xyes; then cat <<'__DOLTCOMPILE__EOF__' >>doltcompile -"${args@<:@@@:>@}" >/dev/null 2>&1 +"${args@<:@@@:>@}" >/dev/null 2>&1 || exit $? __DOLTCOMPILE__EOF__ else cat <<'__DOLTCOMPILE__EOF__' >>doltcompile -"${args@<:@@@:>@}" +"${args@<:@@@:>@}" || exit $? __DOLTCOMPILE__EOF__ fi fi @@ -102,7 +113,7 @@ __DOLTCOMPILE__EOF__ if test x$enable_shared = xyes; then cat <<'__DOLTCOMPILE__EOF__' >>doltcompile -echo "pic_object='$pic_object'" +echo "pic_object='.libs/${objbase}.o'" __DOLTCOMPILE__EOF__ else cat <<'__DOLTCOMPILE__EOF__' >>doltcompile @@ -112,7 +123,7 @@ __DOLTCOMPILE__EOF__ if test x$enable_static = xyes; then cat <<'__DOLTCOMPILE__EOF__' >>doltcompile -echo "non_pic_object='$non_pic_object'" +echo "non_pic_object='${objbase}.o'" __DOLTCOMPILE__EOF__ else cat <<'__DOLTCOMPILE__EOF__' >>doltcompile @@ -127,9 +138,40 @@ __DOLTCOMPILE__EOF__ dnl Done writing out doltcompile; substitute it for libtool compilation. chmod +x doltcompile LTCOMPILE='$(top_builddir)/doltcompile $(COMPILE)' - AC_SUBST(LTCOMPILE) LTCXXCOMPILE='$(top_builddir)/doltcompile $(CXXCOMPILE)' - AC_SUBST(LTCXXCOMPILE) + +dnl automake ignores LTCOMPILE and LTCXXCOMPILE when it has separate CFLAGS for +dnl a target, so write out a libtool wrapper to handle that case. +dnl Note that doltlibtool does not handle inferred tags or option arguments +dnl without '=', because automake does not use them. + cat <<__DOLTLIBTOOL__EOF__ > doltlibtool +#!$DOLT_BASH +__DOLTLIBTOOL__EOF__ + cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool +top_builddir_slash="${0%%doltlibtool}" +: ${top_builddir_slash:=./} +args=() +modeok=false +tagok=false +for arg in "$[]@"; do + case "$arg" in + --mode=compile) modeok=true ;; + --tag=CC|--tag=CXX) tagok=true ;; + *) args+=("$arg") + esac +done +if $modeok && $tagok ; then + . ${top_builddir_slash}doltcompile "${args@<:@@@:>@}" +else + exec ${top_builddir_slash}libtool "$[]@" +fi +__DOLTLIBTOOL__EOF__ + +dnl Done writing out doltlibtool; substitute it for libtool. + chmod +x doltlibtool + LIBTOOL='$(top_builddir)/doltlibtool' fi +AC_SUBST(LTCOMPILE) +AC_SUBST(LTCXXCOMPILE) # end dolt ]) -- 2.25.1