summaryrefslogtreecommitdiffstats
path: root/m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4')
-rw-r--r--m4/.gitignore1
-rw-r--r--m4/atomic_operations.m453
-rw-r--r--m4/atomic_operations_64bit.m453
-rw-r--r--m4/ax_check_off64_t.m469
4 files changed, 176 insertions, 0 deletions
diff --git a/m4/.gitignore b/m4/.gitignore
new file mode 100644
index 00000000..0f4126cd
--- /dev/null
+++ b/m4/.gitignore
@@ -0,0 +1 @@
+*.m4
diff --git a/m4/atomic_operations.m4 b/m4/atomic_operations.m4
new file mode 100644
index 00000000..ad0ee606
--- /dev/null
+++ b/m4/atomic_operations.m4
@@ -0,0 +1,53 @@
+# rsyslog
+#
+# atomic_operations.m4 - autoconf macro to check if compiler supports atomic
+# operations
+#
+# rgerhards, 2008-09-18, added based on
+# http://svn.apache.org/repos/asf/apr/apr/trunk/configure.in
+#
+#
+AC_DEFUN([RS_ATOMIC_OPERATIONS],
+[AC_CACHE_CHECK([whether the compiler provides atomic builtins], [ap_cv_atomic_builtins],
+[AC_TRY_RUN([
+int main()
+{
+ unsigned long val = 1010, tmp, *mem = &val;
+
+ if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020)
+ return 1;
+
+ tmp = val;
+
+ if (__sync_fetch_and_sub(mem, 1010) != tmp || val != 1010)
+ return 1;
+
+ if (__sync_sub_and_fetch(&val, 1010) != 0 || val != 0)
+ return 1;
+
+ tmp = 3030;
+
+ if (__sync_val_compare_and_swap(mem, 0, tmp) != 0 || val != tmp)
+ return 1;
+
+ if (__sync_lock_test_and_set(&val, 4040) != 3030)
+ return 1;
+
+ mem = &tmp;
+
+ if (__sync_val_compare_and_swap(&mem, &tmp, &val) != &tmp)
+ return 1;
+
+ __sync_synchronize();
+
+ if (mem != &val)
+ return 1;
+
+ return 0;
+}], [ap_cv_atomic_builtins=yes], [ap_cv_atomic_builtins=no], [ap_cv_atomic_builtins=no])])
+
+if test "$ap_cv_atomic_builtins" = "yes"; then
+ AC_DEFINE(HAVE_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins])
+fi
+
+])
diff --git a/m4/atomic_operations_64bit.m4 b/m4/atomic_operations_64bit.m4
new file mode 100644
index 00000000..3121cf15
--- /dev/null
+++ b/m4/atomic_operations_64bit.m4
@@ -0,0 +1,53 @@
+# rsyslog
+#
+# atomic_operations.m4 - autoconf macro to check if compiler supports atomic
+# operations
+#
+# rgerhards, 2008-09-18, added based on
+# http://svn.apache.org/repos/asf/apr/apr/trunk/configure.in
+#
+#
+AC_DEFUN([RS_ATOMIC_OPERATIONS_64BIT],
+[AC_CACHE_CHECK([whether the compiler provides atomic builtins for 64 bit data types], [ap_cv_atomic_builtins_64],
+[AC_TRY_RUN([
+int main()
+{
+ unsigned long long val = 1010, tmp, *mem = &val;
+
+ if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020)
+ return 1;
+
+ tmp = val;
+
+ if (__sync_fetch_and_sub(mem, 1010) != tmp || val != 1010)
+ return 1;
+
+ if (__sync_sub_and_fetch(&val, 1010) != 0 || val != 0)
+ return 1;
+
+ tmp = 3030;
+
+ if (__sync_val_compare_and_swap(mem, 0, tmp) != 0 || val != tmp)
+ return 1;
+
+ if (__sync_lock_test_and_set(&val, 4040) != 3030)
+ return 1;
+
+ mem = &tmp;
+
+ if (__sync_val_compare_and_swap(&mem, &tmp, &val) != &tmp)
+ return 1;
+
+ __sync_synchronize();
+
+ if (mem != &val)
+ return 1;
+
+ return 0;
+}], [ap_cv_atomic_builtins_64=yes], [ap_cv_atomic_builtins_64=no], [ap_cv_atomic_builtins_64=no])])
+
+if test "$ap_cv_atomic_builtins_64" = "yes"; then
+ AC_DEFINE(HAVE_ATOMIC_BUILTINS_64BIT, 1, [Define if compiler provides 64 bit atomic builtins])
+fi
+
+])
diff --git a/m4/ax_check_off64_t.m4 b/m4/ax_check_off64_t.m4
new file mode 100644
index 00000000..05d6f45d
--- /dev/null
+++ b/m4/ax_check_off64_t.m4
@@ -0,0 +1,69 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_check_off64_t.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_CHECK_OFF64_T
+#
+# DESCRIPTION
+#
+# Check if off64_t is defined. On true define HAVE_OFF64_T, also define
+# __LARGEFILE64_SOURCE where one is needed. (Note that an appropriative
+# entry must be in config.h.in.)
+#
+# LICENSE
+#
+# Copyright (c) 2008 Ruslan Shevchenko <Ruslan@Shevchenko.Kiev.UA>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 6
+
+AU_ALIAS([RSSH_CHECK_OFF64_T], [AX_CHECK_OFF64_T])
+AC_DEFUN([AX_CHECK_OFF64_T], [
+AC_REQUIRE([AC_SYS_LARGEFILE])dnl
+AC_CHECK_HEADER(unistd.h)
+AC_CACHE_CHECK([whether type off64_t support],
+ [ax_cv_check_off64_t],
+ [
+ AC_COMPILE_IFELSE(
+AC_LANG_SOURCE([
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+extern off64_t x1;
+])
+,ax_have_off64t=1)
+ if test "x$ax_have_off64t" = "x"
+ then
+ AC_COMPILE_IFELSE(
+AC_LANG_SOURCE([
+#define _LARGEFILE64_SOURCE
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+extern off64_t x1;
+]),
+ ax_cv_check_off64_t="_LARGEFILE64_SOURCE",
+ ax_cv_check_off64_t="no"
+)dnl
+
+ else
+ ax_cv_check_off64_t=yes
+ fi
+ ])dnl
+
+if test "x$ax_cv_check_off64_t" = "x_LARGEFILE64_SOURCE"
+then
+ AC_DEFINE(_LARGEFILE64_SOURCE)
+ AC_DEFINE(HAVE_OFF64_T)
+elif test "x$ax_cv_check_off64_t" = "xyes"
+then
+ AC_DEFINE(HAVE_OFF64_T)
+fi
+])dnl
+