blob: b1cc42aa5f535a63658ca9b00363c3aebc1947a4 [file] [log] [blame]
Daniel Dunbar61e0a822008-09-02 17:35:16 +00001#
2# Determine if the compiler accepts -fvisibility-inlines-hidden
3#
4# This macro is specific to LLVM.
5#
6AC_DEFUN([AC_CXX_USE_VISIBILITY_INLINES_HIDDEN],
7[AC_CACHE_CHECK([for compiler -fvisibility-inlines-hidden option],
8 [llvm_cv_cxx_visibility_inlines_hidden],
9[ AC_LANG_PUSH([C++])
10 oldcxxflags="$CXXFLAGS"
NAKAMURA Takumi652e0132012-02-19 12:05:12 +000011 CXXFLAGS="$CXXFLAGS -O0 -fvisibility-inlines-hidden -Werror"
Benjamin Kramer942b2872011-12-22 22:25:26 +000012 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Benjamin Kramer54671a72011-12-22 22:50:44 +000013 [template <typename T> struct X { void __attribute__((noinline)) f() {} };],
Benjamin Kramer942b2872011-12-22 22:25:26 +000014 [X<int>().f();])],
Daniel Dunbar61e0a822008-09-02 17:35:16 +000015 [llvm_cv_cxx_visibility_inlines_hidden=yes],[llvm_cv_cxx_visibility_inlines_hidden=no])
16 CXXFLAGS="$oldcxxflags"
17 AC_LANG_POP([C++])
18])
19if test "$llvm_cv_cxx_visibility_inlines_hidden" = yes ; then
20 AC_SUBST([ENABLE_VISIBILITY_INLINES_HIDDEN],[1])
21else
22 AC_SUBST([ENABLE_VISIBILITY_INLINES_HIDDEN],[0])
23fi
24])