]> git.meshlink.io Git - catta/blobdiff - m4/gcc_visibility.m4
rename 'common' directory to 'm4' (because really, forget doxygen.mk)
[catta] / m4 / gcc_visibility.m4
diff --git a/m4/gcc_visibility.m4 b/m4/gcc_visibility.m4
new file mode 100644 (file)
index 0000000..6b5a89d
--- /dev/null
@@ -0,0 +1,36 @@
+dnl @synopsis CHECK_VISIBILITY([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl
+dnl @summary check for the gcc -fvisibility flag
+dnl
+
+AC_DEFUN([CHECK_VISIBILITY_HIDDEN], [
+  save_CFLAGS="$CFLAGS"
+  VISIBILITY_HIDDEN_CFLAGS=""
+  OPTION=-fvisibility=hidden
+
+  AC_MSG_CHECKING(for gcc $OPTION support)
+
+  CFLAGS="$CFLAGS $OPTION"
+
+  AC_TRY_COMPILE([
+      int default_vis __attribute__ ((visibility("default")));
+      int hidden_vis __attribute__ ((visibility("hidden")));
+    ],
+    [],
+    ac_visibility_supported=yes,
+    ac_visibility_supported=no)
+  AC_MSG_RESULT($ac_visibility_supported)
+
+  if test x"$ac_visibility_supported" = xyes; then
+    ifelse([$1],,AC_DEFINE(HAVE_GCC_VISIBILITY,1,[Define if you have gcc -fvisibility=hidden support ]),[$1])
+    VISIBILITY_HIDDEN_CFLAGS="$OPTION -DHAVE_VISIBILITY_HIDDEN"
+    AC_DEFINE(HAVE_VISIBILITY_HIDDEN,[],[Support for visibility hidden])
+  else
+    $2
+    :
+  fi
+
+  AC_SUBST(VISIBILITY_HIDDEN_CFLAGS)
+
+  CFLAGS="$save_CFLAGS"
+])