# This macro set originally copied from Open MPI: # Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana # University Research and Technology # Corporation. All rights reserved. # Copyright (c) 2004-2005 The University of Tennessee and The University # of Tennessee Research Foundation. All rights # reserved. # Copyright (c) 2004-2007 High Performance Computing Center Stuttgart, # 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. # and renamed for hwloc: # Copyright (c) 2009 INRIA. All rights reserved. # Copyright (c) 2009-2010 Université Bordeaux 1 # Copyright (c) 2010 Cisco Systems, Inc. All rights reserved. # See COPYING in top-level directory. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # # - Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # - Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer listed # in this license in the documentation and/or other materials # provided with the distribution. # # - Neither the name of the copyright holders nor the names of its # contributors may be used to endorse or promote products derived from # this software without specific prior written permission. # # The copyright holders provide no reassurances that the source code # provided does not infringe any patent, copyright, or any other # intellectual property rights of third parties. The copyright holders # disclaim any liability to any recipient for claims brought against # recipient by any third party for infringement of that parties # intellectual property rights. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # _HWLOC_CHECK_VISIBILITY # -------------------------------------------------------- AC_DEFUN([_HWLOC_CHECK_VISIBILITY],[ # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) m4_ifdef([AC_PROG_GREP], [AC_REQUIRE([AC_PROG_GREP])], [GREP=grep]) msg="whether to enable visibility" # Check if the compiler has support for visibility, like some # versions of gcc, icc. AC_ARG_ENABLE(visibility, AC_HELP_STRING([--enable-visibility], [enable visibility feature of certain compilers/linkers (default: enabled)])) case ${target} in *-*-aix*|*-*-mingw*|*-*-cygwin*|*-*-hpux*) enable_visibility=no ;; esac if test "$enable_visibility" = "no"; then AC_MSG_CHECKING([$msg]) AC_MSG_RESULT([no (disabled)]) have_visibility=0 else CFLAGS_orig="$CFLAGS" CFLAGS="$CFLAGS_orig -fvisibility=hidden" hwloc_add= AC_CACHE_CHECK([if $CC supports -fvisibility], [hwloc_cv_cc_fvisibility], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ __attribute__((visibility("default"))) int foo; ]],[[int i;]])], [hwloc_cv_cc_fvisibility=yes], [if test -s conftest.err ; then $GREP -iq "visibility" conftest.err if test "$?" = "0" ; then hwloc_cv_cc_fvisibility=no else hwloc_cv_cc_fvisibility=yes fi else hwloc_cv_cc_fvisibility=yes fi], [hwloc_cv_cc_fvisibility=no]) ]) if test "$hwloc_cv_cc_fvisibility" = "yes" ; then hwloc_add=" -fvisibility=hidden" have_visibility=1 AC_MSG_CHECKING([$msg]) AC_MSG_RESULT([yes (via$hwloc_add)]) 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([$msg]) AC_MSG_RESULT([no (unsupported)]) have_visibility=0 fi CFLAGS=$CFLAGS_orig HWLOC_VISIBILITY_CFLAGS=$hwloc_add unset hwloc_add fi AC_DEFINE_UNQUOTED([HWLOC_C_HAVE_VISIBILITY], [$have_visibility], [Whether C compiler supports -fvisibility]) ])