X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=acinclude.m4;h=bbc2781eab00efaa492b7d458dd88aa1d8d1561e;hb=HEAD;hp=1195da3802df283eebff68ce321fe864450bfedf;hpb=50d999aa40dcbfb01b414219e50b5beadf32dba6;p=mono.git diff --git a/acinclude.m4 b/acinclude.m4 index 1195da3802d..bbc2781eab0 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -22,9 +22,19 @@ if test x$GCC != xyes; then dolt_supported=no fi case $host in -i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*) ;; -amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*) ;; -*) dolt_supported=no ;; +i?86-*-linux*|i?86-apple-darwin*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \ +|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*|x86_64-apple-darwin*|aarch64*) + pic_options='-fPIC' + ;; +?86-pc-cygwin*|i?86-pc-cygwin*|i?86-pc-mingw32*) + pic_options='-DDLL_EXPORT' + ;; +i?86-apple-darwin*|arm-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]) @@ -72,7 +82,9 @@ if test ! -d "$libobjdir" ; then fi pic_object="$libobjdir/$objbase.o" args@<:@$objarg@:>@="$pic_object" -"${args@<:@@@:>@}" -fPIC -DPIC || exit $? +__DOLTCOMPILE__EOF__ + cat <<__DOLTCOMPILE__EOF__ >>doltcompile +"\${args@<:@@@:>@}" $pic_options -DPIC || exit \$? __DOLTCOMPILE__EOF__ fi @@ -104,7 +116,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 @@ -114,7 +126,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 @@ -130,6 +142,39 @@ dnl Done writing out doltcompile; substitute it for libtool compilation. chmod +x doltcompile LTCOMPILE='$(top_builddir)/doltcompile $(COMPILE)' LTCXXCOMPILE='$(top_builddir)/doltcompile $(CXXCOMPILE)' + +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 + --silent) ;; + --mode=compile) modeok=true ;; + --tag=CC|--tag=CXX) tagok=true ;; + --quiet) ;; + *) args@<:@${#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)