| Daniel Dunbar | 61e0a82 | 2008-09-02 17:35:16 +0000 | [diff] [blame] | 1 | # |
| 2 | # Determine if the compiler accepts -fvisibility-inlines-hidden |
| 3 | # |
| 4 | # This macro is specific to LLVM. |
| 5 | # |
| 6 | AC_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 Takumi | 652e013 | 2012-02-19 12:05:12 +0000 | [diff] [blame] | 11 | CXXFLAGS="$CXXFLAGS -O0 -fvisibility-inlines-hidden -Werror" |
| Benjamin Kramer | 942b287 | 2011-12-22 22:25:26 +0000 | [diff] [blame] | 12 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM( |
| Benjamin Kramer | 54671a7 | 2011-12-22 22:50:44 +0000 | [diff] [blame] | 13 | [template <typename T> struct X { void __attribute__((noinline)) f() {} };], |
| Benjamin Kramer | 942b287 | 2011-12-22 22:25:26 +0000 | [diff] [blame] | 14 | [X<int>().f();])], |
| Daniel Dunbar | 61e0a82 | 2008-09-02 17:35:16 +0000 | [diff] [blame] | 15 | [llvm_cv_cxx_visibility_inlines_hidden=yes],[llvm_cv_cxx_visibility_inlines_hidden=no]) |
| 16 | CXXFLAGS="$oldcxxflags" |
| 17 | AC_LANG_POP([C++]) |
| 18 | ]) |
| 19 | if test "$llvm_cv_cxx_visibility_inlines_hidden" = yes ; then |
| 20 | AC_SUBST([ENABLE_VISIBILITY_INLINES_HIDDEN],[1]) |
| 21 | else |
| 22 | AC_SUBST([ENABLE_VISIBILITY_INLINES_HIDDEN],[0]) |
| 23 | fi |
| 24 | ]) |