summaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
authorDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2006-07-10 22:14:55 +0000
committerDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2006-07-10 22:14:55 +0000
commit69e362bb43c8e2b67a9b52205256f73298c66b4a (patch)
treef7c63384b05f8b25aec5b09216ff8d37ca453bfb /m4
parente70c5600f5653c6915931717bdd52f9a6a2f2d9d (diff)
downloadxine-lib-69e362bb43c8e2b67a9b52205256f73298c66b4a.tar.gz
xine-lib-69e362bb43c8e2b67a9b52205256f73298c66b4a.tar.bz2
Add the m4 file with the needed check for -fvisibility=hidden.
CVS patchset: 8102 CVS date: 2006/07/10 22:14:55
Diffstat (limited to 'm4')
-rw-r--r--m4/attributes.m4163
1 files changed, 163 insertions, 0 deletions
diff --git a/m4/attributes.m4 b/m4/attributes.m4
new file mode 100644
index 000000000..430f0a363
--- /dev/null
+++ b/m4/attributes.m4
@@ -0,0 +1,163 @@
+# Functions to check for attributes support in compiler
+
+AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [
+ AC_CACHE_CHECK([if compiler supports __attribute__((constructor))],
+ [cc_cv_attribute_constructor],
+ [AC_COMPILE_IFELSE([
+ void ctor() __attribute__((constructor));
+ void ctor() { };
+ ],
+ [cc_cv_attribute_constructor=yes],
+ [cc_cv_attribute_constructor=no])
+ ])
+
+ if test "x$cc_cv_attribute_constructor" = "xyes"; then
+ AC_DEFINE([SUPPORT_ATTRIBUTE_CONSTRUCTOR], 1, [Define this if the compiler supports the constructor attribute])
+ $1
+ else
+ true
+ $2
+ fi
+])
+
+AC_DEFUN([CC_ATTRIBUTE_FORMAT], [
+ AC_CACHE_CHECK([if compiler supports __attribute__((format(printf, n, n)))],
+ [cc_cv_attribute_format],
+ [AC_COMPILE_IFELSE([
+ void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { }
+ ],
+ [cc_cv_attribute_format=yes],
+ [cc_cv_attribute_format=no])
+ ])
+
+ if test "x$cc_cv_attribute_format" = "xyes"; then
+ AC_DEFINE([SUPPORT_ATTRIBUTE_FORMAT], 1, [Define this if the compiler supports the format attribute])
+ $1
+ else
+ true
+ $2
+ fi
+])
+
+AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [
+ AC_CACHE_CHECK([if compiler supports __attribute__((format_arg(printf)))],
+ [cc_cv_attribute_format_arg],
+ [AC_COMPILE_IFELSE([
+ void __attribute__((format_arg(printf, 1))) gettextlike(const char *fmt) { }
+ ],
+ [cc_cv_attribute_format_arg=yes],
+ [cc_cv_attribute_format_arg=no])
+ ])
+
+ if test "x$cc_cv_attribute_format_arg" = "xyes"; then
+ AC_DEFINE([SUPPORT_ATTRIBUTE_FORMAT_ARG], 1, [Define this if the compiler supports the format_arg attribute])
+ $1
+ else
+ true
+ $2
+ fi
+])
+
+AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [
+ AC_CACHE_CHECK([if compiler supports __attribute__((visibility("...")))],
+ [cc_cv_attribute_visibility],
+ [AC_COMPILE_IFELSE([
+ void __attribute__((visibility("internal"))) internal_function() { }
+ void __attribute__((visibility("hidden"))) hidden_function() { }
+ void __attribute__((visibility("default"))) external_function() { }
+ ],
+ [cc_cv_attribute_visibility=yes],
+ [cc_cv_attribute_visibility=no])
+ ])
+
+ if test "x$cc_cv_attribute_visibility" = "xyes"; then
+ AC_DEFINE([SUPPORT_ATTRIBUTE_VISIBILITY], 1, [Define this if the compiler supports the visibility attribute])
+ $1
+ else
+ true
+ $2
+ fi
+])
+
+AC_DEFUN([CC_FLAG_VISIBILITY], [
+ AC_CACHE_CHECK([if compiler supports -fvisibility=hidden],
+ [cc_cv_flag_visibility],
+ [
+ save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -fvisibility=hidden"
+ AC_COMPILE_IFELSE([int a;],
+ [cc_cv_flag_visibility=yes],
+ [cc_cv_flag_visibility=no])
+ CFLAGS="$save_CFLAGS"
+ ])
+
+ if test "x$cc_cv_flag_visibility" = "xyes"; then
+ AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1, [Define this if the compiler supports the -fvisibility flag])
+ $1
+ else
+ true
+ $2
+ fi
+])
+
+AC_DEFUN([CC_ATTRIBUTE_NONNULL], [
+ AC_CACHE_CHECK([if compiler supports __attribute__((nonnull()))],
+ [cc_cv_attribute_nonnull],
+ [AC_COMPILE_IFELSE([
+ void some_function(void *foo, void *bar) __attribute__((nonnull()));
+ void some_function(void *foo, void *bar) { }
+ ],
+ [cc_cv_attribute_nonnull=yes],
+ [cc_cv_attribute_nonnull=no])
+ ])
+
+ if test "x$cc_cv_attribute_nonnull" = "xyes"; then
+ AC_DEFINE([SUPPORT_ATTRIBUTE_NONNULL], 1, [Define this if the compiler supports the nonnull attribute])
+ $1
+ else
+ true
+ $2
+ fi
+])
+
+AC_DEFUN([CC_ATTRIBUTE_UNUSED], [
+ AC_CACHE_CHECK([if compiler supports __attribute__((unused))],
+ [cc_cv_attribute_unused],
+ [AC_COMPILE_IFELSE([
+ void some_function(void *foo, __attribute__((unused)) void *bar);
+ ],
+ [cc_cv_attribute_unused=yes],
+ [cc_cv_attribute_unused=no])
+ ])
+
+ if test "x$cc_cv_attribute_unused" = "xyes"; then
+ AC_DEFINE([SUPPORT_ATTRIBUTE_UNUSED], 1, [Define this if the compiler supports the unused attribute])
+ $1
+ else
+ true
+ $2
+ fi
+])
+
+AC_DEFUN([CC_FUNC_EXPECT], [
+ AC_CACHE_CHECK([if compiler has __builtin_expect function],
+ [cc_cv_func_expect],
+ [AC_COMPILE_IFELSE([
+ int some_function()
+ {
+ int a = 3;
+ return (int)__builtin_expect(a, 3);
+ }
+ ],
+ [cc_cv_func_expect=yes],
+ [cc_cv_func_expect=no])
+ ])
+
+ if test "x$cc_cv_func_expect" = "xyes"; then
+ AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1, [Define this if the compiler supports __builtin_expect() function])
+ $1
+ else
+ true
+ $2
+ fi
+])