Fix a few problems with the compiler visibility test:
* Update to be safe for AC 2.68 by using AC_LINK_IFELSE instead of AC_TRY_LINK * If enable visibility was used, ensure we fail if the compiler doesn't support it * Rename OMPI_CHECK_VISIBILITY -> OPAL_CHECK_VISIBILITY (and all internal variables) This commit was SVN r23923.
Этот коммит содержится в:
родитель
8a37b3071a
Коммит
8ffb046649
@ -1009,7 +1009,7 @@ AC_CACHE_SAVE
|
||||
# the visibility feature.
|
||||
ompi_show_title "Symbol visibility feature"
|
||||
|
||||
OMPI_CHECK_VISIBILITY
|
||||
OPAL_CHECK_VISIBILITY
|
||||
|
||||
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
# University of Stuttgart. All rights reserved.
|
||||
# Copyright (c) 2004-2005 The Regents of the University of California.
|
||||
# All rights reserved.
|
||||
# Copyright (c) 2006-2007 Cisco Systems, Inc. All rights reserved.
|
||||
# Copyright (c) 2006-2010 Cisco Systems, Inc. All rights reserved.
|
||||
# Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
@ -19,19 +19,18 @@
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
|
||||
# OMPI_CHECK_VISIBILITY
|
||||
# OPAL_CHECK_VISIBILITY
|
||||
# --------------------------------------------------------
|
||||
AC_DEFUN([OMPI_CHECK_VISIBILITY],[
|
||||
AC_DEFUN([OPAL_CHECK_VISIBILITY],[
|
||||
AC_REQUIRE([AC_PROG_GREP])
|
||||
|
||||
# Check if the compiler has support for visibility, like some versions of gcc, icc Sun Studio cc.
|
||||
AC_ARG_ENABLE(visibility,
|
||||
AC_HELP_STRING([--enable-visibility],
|
||||
[enable visibility feature of certain compilers/linkers (default: enabled)]))
|
||||
if test "$enable_visibility" = "no" -o "$opal_cv___attribute__visibility" = "0"; then
|
||||
AC_MSG_CHECKING([enable symbol visibility])
|
||||
AC_MSG_RESULT([no])
|
||||
if test "$enable_visibility" = "no"; then
|
||||
AC_MSG_CHECKING([whether to enable symbol visibility])
|
||||
AC_MSG_RESULT([no (disabled)])
|
||||
have_visibility=0
|
||||
else
|
||||
CFLAGS_orig="$CFLAGS"
|
||||
@ -40,71 +39,69 @@ AC_DEFUN([OMPI_CHECK_VISIBILITY],[
|
||||
# check using gcc -fvisibility=hidden flag
|
||||
CFLAGS="$CFLAGS_orig -fvisibility=hidden"
|
||||
AC_CACHE_CHECK([if $CC supports -fvisibility],
|
||||
[ompi_cv_cc_fvisibility],
|
||||
[AC_TRY_LINK([
|
||||
#include <stdio.h>
|
||||
[opal_cv_cc_fvisibility],
|
||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||
__attribute__((visibility("default"))) int foo;
|
||||
void bar(void) { fprintf(stderr, "bar\n"); }
|
||||
],[],
|
||||
]],[[int i;]])],
|
||||
[opal_cv_cc_fvisibility=yes],
|
||||
[if test -s conftest.err ; then
|
||||
$GREP -iq "visibility" conftest.err
|
||||
if test "$?" = "0" ; then
|
||||
ompi_cv_cc_fvisibility="no"
|
||||
opal_cv_cc_fvisibility=no
|
||||
else
|
||||
ompi_cv_cc_fvisibility="yes"
|
||||
opal_cv_cc_fvisibility=yes
|
||||
fi
|
||||
else
|
||||
ompi_cv_cc_fvisibility="yes"
|
||||
opal_cv_cc_fvisibility=yes
|
||||
fi],
|
||||
[ompi_cv_cc_fvisibility="no"])
|
||||
[opal_cv_cc_fvisibility=no])
|
||||
])
|
||||
if test "$ompi_c_vendor" = "sun" ; then
|
||||
# Check using Sun Studio -xldscope=hidden flag
|
||||
CFLAGS="$CFLAGS_orig -xldscope=hidden"
|
||||
AC_CACHE_CHECK([if $CC supports -xldscope],
|
||||
[ompi_cv_cc_xldscope],
|
||||
[AC_TRY_LINK([
|
||||
#include <stdio.h>
|
||||
[opal_cv_cc_xldscope],
|
||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||
__attribute__((visibility("default"))) int foo;
|
||||
void bar(void) { fprintf(stderr, "bar\n"); }
|
||||
],[],
|
||||
]],[[int i;]])],
|
||||
[opal_cv_cc_fvisibilty=yes],
|
||||
[if test -s conftest.err ; then
|
||||
$GREP -iq "visibility" conftest.err
|
||||
if test "$?" = "0" ; then
|
||||
ompi_cv_cc_xldscope="no"
|
||||
opal_cv_cc_xldscope="no"
|
||||
else
|
||||
ompi_cv_cc_xldscope="yes"
|
||||
opal_cv_cc_xldscope="yes"
|
||||
fi
|
||||
else
|
||||
ompi_cv_cc_xldscope="yes"
|
||||
opal_cv_cc_xldscope="yes"
|
||||
fi],
|
||||
[ompi_cv_cc_xldscope="no"])
|
||||
[opal_cv_cc_xldscope="no"])
|
||||
])
|
||||
fi
|
||||
if test "$ompi_cv_cc_fvisibility" = "yes" ; then
|
||||
if test "$opal_cv_cc_fvisibility" = "yes" ; then
|
||||
add=" -fvisibility=hidden"
|
||||
have_visibility=1
|
||||
AC_MSG_CHECKING([enable symbol visibility])
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_MSG_CHECKING([whether to enable symbol visibility])
|
||||
AC_MSG_RESULT([yes (via$add)])
|
||||
AC_MSG_WARN([$add has been added to CFLAGS])
|
||||
elif test "$ompi_cv_cc_xldscope" = "yes" ; then
|
||||
elif test "$opal_cv_cc_xldscope" = "yes" ; then
|
||||
add=" -xldscope=hidden"
|
||||
have_visibility=1
|
||||
AC_MSG_CHECKING([enable symbol visibility])
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_MSG_CHECKING([whether to enable symbol visibility])
|
||||
AC_MSG_RESULT([yes (via$add)])
|
||||
AC_MSG_WARN([$add has been added to CFLAGS])
|
||||
elif test "$enable_visibility" = "yes"; then
|
||||
AC_MSG_ERROR([Symbol visibility support requested but compiler does not seem to support it. Aborting])
|
||||
else
|
||||
AC_MSG_CHECKING([enable symbol visibility])
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_CHECKING([whether enable symbol visibility])
|
||||
AC_MSG_RESULT([no (unsupported)])
|
||||
have_visibility=0
|
||||
fi
|
||||
CFLAGS="$CFLAGS_orig$add"
|
||||
OPAL_VISIBILITY_CFLAGS="$add"
|
||||
unset add
|
||||
fi
|
||||
|
||||
AC_DEFINE_UNQUOTED([OPAL_C_HAVE_VISIBILITY], [$have_visibility],
|
||||
[Whether C compiler supports -fvisibility])
|
||||
|
||||
])
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user