1#######################
2# type alignment test #
3#######################
4
5AC_DEFUN([DBIND_CHECK_ALIGNOF],
6	[changequote(<<, >>)dnl
7	dnl The name to #define.
8	define(<<AC_TYPE_NAME>>,
9		translit(dbind_alignof_$1, [a-z *], [A-Z_P]))dnl
10	dnl The cache variable name.
11	define(<<AC_CV_NAME>>,
12		translit(ac_cv_alignof_$1, [ *], [_p]))dnl
13	changequote([, ])dnl
14	AC_MSG_CHECKING(alignment of $1)
15	AC_CACHE_VAL(AC_CV_NAME,
16		[AC_TRY_RUN(
17			[ #include <stdio.h>
18                          #include <stdlib.h>
19                          #define DBUS_API_SUBJECT_TO_CHANGE
20			  #include <dbus/dbus.h>
21			typedef struct {char s1;} dbind_struct;
22			typedef void *dbind_pointer;
23			struct test {char s1; $1 s2;};
24			main()
25			{
26			FILE *f=fopen("conftestval", "w");
27			if (!f) exit(1);
28			fprintf(f, "%d\n", &(((struct test*)0)->s2));
29			exit(0);
30			} ],
31			AC_CV_NAME=`cat conftestval`,
32			AC_CV_NAME=0, AC_CV_NAME=0)
33		])dnl
34	AC_MSG_RESULT($AC_CV_NAME)
35	if test "$AC_CV_NAME" = "0" ; then
36		AC_MSG_ERROR([Failed to find alignment. Check config.log for details.])
37	fi
38	AC_TYPE_NAME=$AC_CV_NAME
39	AC_SUBST(AC_TYPE_NAME)
40	undefine([AC_TYPE_NAME])dnl
41	undefine([AC_CV_NAME])dnl
42])
43
44dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]])
45dnl Check if a module containing a given symbol is visible to python.
46AC_DEFUN([AM_CHECK_PYMOD],
47[AC_REQUIRE([AM_PATH_PYTHON])
48py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
49AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1)
50AC_CACHE_VAL(py_cv_mod_$py_mod_var, [
51ifelse([$2],[], [prog="
52import sys
53try:
54	import $1
55except ImportError:
56	sys.exit(1)
57except:
58	sys.exit(0)
59sys.exit(0)"], [prog="
60import $1
61import $1.$2"])
62if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
63  then
64    eval "py_cv_mod_$py_mod_var=yes"
65  else
66    eval "py_cv_mod_$py_mod_var=no"
67  fi
68])
69py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
70if test "x$py_val" != xno; then
71  AC_MSG_RESULT(yes)
72  ifelse([$3], [],, [$3
73])dnl
74else
75  AC_MSG_RESULT(no)
76  ifelse([$4], [],, [$4
77])dnl
78fi
79])
80