d64846a38e8a5f2c1de09b43e8aca690bc5029df
[m6w6/ext-psi] / config.psi.m4
1 psi_includes() {
2 local have_
3 have_=`AS_ECHO($ac_header) | $as_tr_cpp`
4 cat <<EOF
5 #ifdef HAVE_$have_
6 # include <$ac_header>
7 #endif
8 EOF
9 }
10
11 AC_DEFUN(PSI_INCLUDES, [AC_INCLUDES_DEFAULT([`psi_includes`])])
12
13 AC_DEFUN(PSI_LEMON, [
14 AC_ARG_VAR(LEMON, The lemon parser generator of the SQLite project)
15 AC_PATH_PROG(LEMON, lemon, ./lemon)
16 PHP_SUBST(LEMON)
17 ])
18
19 AC_DEFUN([PSI_PKG_CONFIG], [
20 if test -z "$PKG_CONFIG"
21 then
22 AC_PATH_PROG(PKG_CONFIG, pkg-config, false)
23 fi
24 export PKG_CONFIG_PATH="$PHP_PSI_LIBFFI/lib/pkgconfig:$PHP_PSI_LIBJIT/lib/pkgconfig:$PKG_CONFIG_PATH"
25 ])
26
27 AC_DEFUN(PSI_CHECK_OFFSETOF, [
28 _AC_CACHE_CHECK_INT(
29 [offset of $2 in $1],
30 [AS_TR_SH([ac_cv_offsetof_$1_$2])],
31 [(long int) (offsetof ($1, $2))],
32 [PSI_INCLUDES],
33 [AC_MSG_FAILURE([cannot compute offsetof ($1, $2)])]
34 )
35 AC_DEFINE_UNQUOTED(
36 AS_TR_CPP(offsetof_$1_$2),
37 $AS_TR_SH([ac_cv_offsetof_$1_$2]),
38 [The offset of `$2' in `$1', as computed by offsetof.]
39 )
40 ])
41
42 AC_DEFUN(PSI_CHECK_LIBJIT, [
43 PHP_ARG_WITH(psi-libjit, where to find libjit,
44 [ --with-psi-libjit=DIR PSI: path to libjit], [ ], [ ])
45 AC_CACHE_CHECK(for libjit, psi_cv_libjit_dir, [
46 for psi_cv_libjit_dir in $PHP_PSI_LIBJIT {/usr{,/local},/opt}{,/libjit}
47 do
48 if test -e $psi_cv_libjit_dir/include/jit/jit.h
49 then
50 break
51 fi
52 psi_cv_libjit_dir=
53 done
54 ])
55 if test -n "$psi_cv_libjit_dir"
56 then
57 PHP_ADD_INCLUDE($psi_cv_libjit_dir/include)
58 PHP_ADD_LIBRARY_WITH_PATH(jit, $psi_cv_libjit_dir/$PHP_LIBDIR, PSI_SHARED_LIBADD)
59 AC_DEFINE(HAVE_LIBJIT, 1, Have libjit)
60 else
61 AC_MSG_WARN([Could not find libjit, please provide the base install path])
62 fi
63 ])
64
65 AC_DEFUN(PSI_CHECK_LIBFFI, [
66 AC_REQUIRE([PSI_PKG_CONFIG])dnl
67 PHP_ARG_WITH(psi-libffi, where to find libffi,
68 [ --with-psi-libffi=DIR PSI: path to libffi], [ ], [ ])
69
70 AC_CACHE_CHECK(for libffi through pkg-config, psi_cv_libffi, [
71 if $PKG_CONFIG --exists libffi
72 then
73 psi_cv_libffi=true
74 else
75 psi_cv_libffi=false
76 fi])
77 if $psi_cv_libffi
78 then
79 AC_MSG_CHECKING(for libffi)
80 psi_cv_libffi_dir=`$PKG_CONFIG --variable=prefix libffi`
81 AC_MSG_RESULT($psi_cv_libffi_dir)
82 PHP_EVAL_INCLINE(`$PKG_CONFIG --cflags libffi`)
83 PHP_EVAL_LIBLINE(`$PKG_CONFIG --libs libffi`, PSI_SHARED_LIBADD)
84 AC_DEFINE(HAVE_LIBFFI, 1, Have libffi)
85 else
86 AC_CACHE_CHECK(for libffi, psi_cv_libffi_dir, [
87 for psi_cv_libffi_dir in $PHP_PSI_LIBFFI {/usr{,/local},/opt}{,/libffi}
88 do
89 if test -e $psi_cv_libffi_dir/include/ffi/ffi.h
90 then
91 break
92 fi
93 psi_cv_libffi_dir=
94 done])
95 if test -n "$psi_cv_libffi_dir"
96 then
97 PHP_ADD_INCLUDE($psi_cv_libffi_dir/include/ffi)
98 PHP_ADD_LIBRARY_WITH_PATH(ffi, $psi_cv_libffi_dir/$PHP_LIBDIR, PSI_SHARED_LIBADD)
99 AC_DEFINE(HAVE_LIBFFI, 1, Have libffi)
100 else
101 AC_MSG_WARN([Could not find libffi, please provide the base install path])
102 fi
103 fi
104 PHP_CHECK_LIBRARY(ffi, ffi_closure_alloc, [
105 PHP_CHECK_LIBRARY(ffi, ffi_prep_closure_loc, [
106 AC_DEFINE(PSI_HAVE_FFI_PREP_CLOSURE_LOC, 1, [ ])
107 ], [], -L$psi_cv_libffi_dir/$PHP_LIBDIR)
108 AC_DEFINE(PSI_HAVE_FFI_CLOSURE_ALLOC, 1, [ ])
109 ], [
110 PHP_CHECK_LIBRARY(ffi, ffi_prep_closure, [
111 AC_CHECK_HEADERS(sys/mman.h)
112 PHP_CHECK_FUNC(mmap)
113 AC_DEFINE(PSI_HAVE_FFI_PREP_CLOSURE, 1, [ ])
114 ], [
115 ], -L$psi_cv_libffi_dir/$PHP_LIBDIR)
116 ], -L$psi_cv_libffi_dir/$PHP_LIBDIR)
117 ])
118
119 dnl PSI_COMPUTE_STR(variable, string or expression)
120 AC_DEFUN(PSI_COMPUTE_STR, [
121 AC_TRY_RUN(
122 PSI_INCLUDES
123 [int main() {
124 return EOF == fputs($2, fopen("conftest.out", "w"));
125 }
126 ], [
127 eval $1=\\\"`cat conftest.out`\\\"
128 ])
129 ])