More fixes for dbind
authorMike Gorse <mgorse@novell.com>
Tue, 26 Oct 2010 14:41:15 +0000 (10:41 -0400)
committerMike Gorse <mgorse@novell.com>
Tue, 26 Oct 2010 14:41:15 +0000 (10:41 -0400)
acinclude.m4 [new file with mode: 0644]
configure.ac

diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644 (file)
index 0000000..6eb7916
--- /dev/null
@@ -0,0 +1,43 @@
+#######################
+# type alignment test #
+#######################
+
+AC_DEFUN([DBIND_CHECK_ALIGNOF],
+       [changequote(<<, >>)dnl
+       dnl The name to #define.
+       define(<<AC_TYPE_NAME>>,
+               translit(dbind_alignof_$1, [a-z *], [A-Z_P]))dnl
+       dnl The cache variable name.
+       define(<<AC_CV_NAME>>,
+               translit(ac_cv_alignof_$1, [ *], [_p]))dnl
+       changequote([, ])dnl
+       AC_MSG_CHECKING(alignment of $1)
+       AC_CACHE_VAL(AC_CV_NAME,
+               [AC_TRY_RUN(
+                       [ #include <stdio.h>
+                          #include <stdlib.h>
+                          #define DBUS_API_SUBJECT_TO_CHANGE
+                         #include <dbus/dbus.h>
+                       typedef struct {char s1;} dbind_struct;
+                       typedef void *dbind_pointer;
+                       struct test {char s1; $1 s2;};
+                       main()
+                       {
+                       FILE *f=fopen("conftestval", "w");
+                       if (!f) exit(1);
+                       fprintf(f, "%d\n", &(((struct test*)0)->s2));
+                       exit(0);
+                       } ],
+                       AC_CV_NAME=`cat conftestval`,
+                       AC_CV_NAME=0, AC_CV_NAME=0)
+               ])dnl
+       AC_MSG_RESULT($AC_CV_NAME)
+       if test "$AC_CV_NAME" = "0" ; then
+               AC_MSG_ERROR([Failed to find alignment. Check config.log for details.])
+       fi
+       AC_TYPE_NAME=$AC_CV_NAME
+       AC_SUBST(AC_TYPE_NAME)
+       undefine([AC_TYPE_NAME])dnl
+       undefine([AC_CV_NAME])dnl
+])
+
index 4b49b4a..7100a41 100644 (file)
@@ -175,6 +175,19 @@ fi
 AM_CONDITIONAL(RELOCATE, test x$enable_relocate = xyes)
 AC_SUBST(enable_relocate)
 
+dnl find sizes & alignments
+orig_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$CPPFLAGS $DBUS_CFLAGS"
+DBIND_CHECK_ALIGNOF(char)
+DBIND_CHECK_ALIGNOF(dbus_bool_t)
+DBIND_CHECK_ALIGNOF(dbus_int16_t)
+DBIND_CHECK_ALIGNOF(dbus_int32_t)
+DBIND_CHECK_ALIGNOF(dbus_int64_t)
+DBIND_CHECK_ALIGNOF(double)
+DBIND_CHECK_ALIGNOF(dbind_pointer)
+DBIND_CHECK_ALIGNOF(dbind_struct)
+
+CPPFLAGS=$orig_CPPFLAGS 
 AC_CONFIG_FILES([Makefile
        xml/Makefile
        dbind/Makefile