[ovs-dev] [PATCH] configure: Pass correct -target option to "cgcc" in the common case.
Ethan Jackson
ethan at nicira.com
Mon Jul 11 23:08:52 UTC 2011
Looks fine to me.
Ethan
On Mon, Jul 11, 2011 at 13:58, Ben Pfaff <blp at nicira.com> wrote:
> The "cgcc" script included with sparse guesses the target architecture
> based on the host architecture instead of based on the GCC architecture.
> This means that it often guesses wrong on biarch systems, e.g. my Linux
> kernel is x86_64 but userspace is i686 and thus GCC targets i686 by
> default.
>
> This fixes the problem by passing an explicit "-target=i86" to cgcc if
> GCC targets x86 or "-target=x86_64" if GCC targets x86_64.
>
> Bug #6312.
> Reported-by: Ethan Jackson <ethan at nicira.com>
> ---
> acinclude.m4 | 24 ++++++++++++++++++++++--
> 1 files changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/acinclude.m4 b/acinclude.m4
> index 1618a43..b379489 100644
> --- a/acinclude.m4
> +++ b/acinclude.m4
> @@ -409,10 +409,30 @@ EOF
> fi])
> AS_IF([test $ovs_cv_gnu_make_if = yes], [$1], [$2])])
>
> +dnl OVS_CHECK_SPARSE_TARGET
> +dnl
> +dnl The "cgcc" script from "sparse" isn't very good at detecting the
> +dnl target for which the code is being built. This helps it out.
> +AC_DEFUN([OVS_CHECK_SPARSE_TARGET],
> + [AC_CACHE_CHECK(
> + [target hint for cgcc],
> + [ac_cv_sparse_target],
> + [AS_CASE([`$CC -dumpmachine 2>/dev/null`],
> + [i?86-* | athlon-*], [ac_cv_sparse_target=x86],
> + [x86_64-*], [ac_cv_sparse_target=x86_64],
> + [ac_cv_sparse_target=other])])
> + AS_CASE([$ac_cv_sparse_target],
> + [x86], [SPARSEFLAGS= CGCCFLAGS=-target=i86],
> + [x86_64], [SPARSEFLAGS=-m64 CGCCFLAGS=-target=x86_64],
> + [SPARSEFLAGS= CGCCFLAGS=])
> + AC_SUBST([SPARSEFLAGS])
> + AC_SUBST([CGCCFLAGS])])
> +
> dnl OVS_ENABLE_SPARSE
> AC_DEFUN([OVS_ENABLE_SPARSE],
> - [OVS_MAKE_HAS_IF(
> + [AC_REQUIRE([OVS_CHECK_SPARSE_TARGET])
> + OVS_MAKE_HAS_IF(
> [AC_CONFIG_COMMANDS_PRE(
> [: ${SPARSE=sparse}
> AC_SUBST([SPARSE])
> - CC='$(if $(C),REAL_CC="'"$CC"'" CHECK="$(SPARSE) -I $(top_srcdir)/include/sparse" cgcc,'"$CC"')'])])])
> + CC='$(if $(C),REAL_CC="'"$CC"'" CHECK="$(SPARSE) -I $(top_srcdir)/include/sparse $(SPARSEFLAGS)" cgcc $(CGCCFLAGS),'"$CC"')'])])])
> --
> 1.7.4.4
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
More information about the dev
mailing list