1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
dnl $Id$
dnl config.m4 for extension sqlite
dnl vim:et:ts=2:sw=2
PHP_ARG_WITH(sqlite, for sqlite support,
[ --without-sqlite=DIR Do not include sqlite support. DIR is the sqlite base
install directory [BUNDLED]], yes)
PHP_ARG_ENABLE(sqlite-utf8, whether to enable UTF-8 support in sqlite (default: ISO-8859-1),
[ --enable-sqlite-utf8 SQLite: Enable UTF-8 support for SQLite], no, no)
dnl
dnl PHP_PROG_LEMON
dnl
dnl Search for lemon binary and check its version
dnl
AC_DEFUN([PHP_PROG_LEMON],[
# we only support certain lemon versions
lemon_version_list="1.0"
AC_CHECK_PROG(LEMON, lemon, lemon)
if test "$LEMON"; then
AC_CACHE_CHECK([for lemon version], php_cv_lemon_version, [
lemon_version=`$LEMON -x 2>/dev/null | $SED -e 's/^.* //'`
php_cv_lemon_version=invalid
for lemon_check_version in $lemon_version_list; do
if test "$lemon_version" = "$lemon_check_version"; then
php_cv_lemon_version="$lemon_check_version (ok)"
fi
done
])
else
lemon_version=none
fi
case $php_cv_lemon_version in
""|invalid[)]
lemon_msg="lemon versions supported for regeneration of libsqlite parsers: $lemon_version_list (found: $lemon_version)."
AC_MSG_WARN([$lemon_msg])
LEMON="exit 0;"
;;
esac
PHP_SUBST(LEMON)
])
if test "$PHP_SQLITE" != "no"; then
if test "$PHP_PDO" != "no"; then
PHP_CHECK_PDO_INCLUDES([], [AC_MSG_WARN([Cannot find php_pdo_driver.h.])])
if test -n "$pdo_inc_path"; then
AC_DEFINE([PHP_SQLITE2_HAVE_PDO], [1], [Have PDO])
pdo_inc_path="-I$pdo_inc_path"
fi
fi
if test "$PHP_SQLITE" != "yes"; then
SEARCH_PATH="/usr/local /usr"
SEARCH_FOR="/include/sqlite.h"
if test -r $PHP_SQLITE/; then # path given as parameter
SQLITE_DIR=$PHP_SQLITE
else # search default path list
AC_MSG_CHECKING([for sqlite files in default path])
for i in $SEARCH_PATH ; do
if test -r $i/$SEARCH_FOR; then
SQLITE_DIR=$i
AC_MSG_RESULT(found in $i)
fi
done
fi
if test -z "$SQLITE_DIR"; then
AC_MSG_RESULT([not found])
AC_MSG_ERROR([Please reinstall the sqlite distribution from http://www.sqlite.org])
fi
PHP_CHECK_LIBRARY(sqlite, sqlite_open, [
PHP_ADD_LIBRARY_WITH_PATH(sqlite, $SQLITE_DIR/$PHP_LIBDIR, SQLITE_SHARED_LIBADD)
PHP_ADD_INCLUDE($SQLITE_DIR/include)
],[
AC_MSG_ERROR([wrong sqlite lib version or lib not found])
],[
-L$SQLITE_DIR/$PHP_LIBDIR -lm
])
SQLITE_MODULE_TYPE=external
PHP_SQLITE_CFLAGS=$pdo_inc_path
sqlite_extra_sources="libsqlite/src/encode.c"
else
# use bundled library
PHP_PROG_LEMON
SQLITE_MODULE_TYPE=builtin
PHP_SQLITE_CFLAGS="-I@ext_srcdir@/libsqlite/src -I@ext_builddir@/libsqlite/src $pdo_inc_path"
sqlite_extra_sources="libsqlite/src/opcodes.c \
libsqlite/src/parse.c libsqlite/src/encode.c \
libsqlite/src/auth.c libsqlite/src/btree.c libsqlite/src/build.c \
libsqlite/src/delete.c libsqlite/src/expr.c libsqlite/src/func.c \
libsqlite/src/hash.c libsqlite/src/insert.c libsqlite/src/main.c \
libsqlite/src/os.c libsqlite/src/pager.c \
libsqlite/src/printf.c libsqlite/src/random.c \
libsqlite/src/select.c libsqlite/src/table.c libsqlite/src/tokenize.c \
libsqlite/src/update.c libsqlite/src/util.c libsqlite/src/vdbe.c \
libsqlite/src/attach.c libsqlite/src/btree_rb.c libsqlite/src/pragma.c \
libsqlite/src/vacuum.c libsqlite/src/copy.c \
libsqlite/src/vdbeaux.c libsqlite/src/date.c \
libsqlite/src/where.c libsqlite/src/trigger.c"
fi
dnl
dnl Common for both bundled/external
dnl
sqlite_sources="sqlite.c sess_sqlite.c pdo_sqlite2.c $sqlite_extra_sources"
PHP_NEW_EXTENSION(sqlite, $sqlite_sources, $ext_shared,,$PHP_SQLITE_CFLAGS)
PHP_ADD_EXTENSION_DEP(sqlite, spl, true)
PHP_ADD_EXTENSION_DEP(sqlite, pdo, true)
PHP_ADD_MAKEFILE_FRAGMENT
PHP_SUBST(SQLITE_SHARED_LIBADD)
PHP_INSTALL_HEADERS([$ext_builddir/libsqlite/src/sqlite.h])
if test "$SQLITE_MODULE_TYPE" = "builtin"; then
PHP_ADD_BUILD_DIR($ext_builddir/libsqlite/src, 1)
AC_CHECK_SIZEOF(char *, 4)
AC_DEFINE(SQLITE_PTR_SZ, SIZEOF_CHAR_P, [Size of a pointer])
dnl use latin 1 for SQLite older than 2.8.9; the utf-8 handling
dnl in funcs.c uses assert(), which is a bit silly and something
dnl we want to avoid. This assert() was removed in SQLite 2.8.9.
if test "$PHP_SQLITE_UTF8" = "yes"; then
SQLITE_ENCODING="UTF8"
AC_DEFINE(SQLITE_UTF8, 1, [ ])
else
SQLITE_ENCODING="ISO8859"
fi
PHP_SUBST(SQLITE_ENCODING)
SQLITE_VERSION=`cat $ext_srcdir/libsqlite/VERSION`
PHP_SUBST(SQLITE_VERSION)
sed -e s/--VERS--/$SQLITE_VERSION/ -e s/--ENCODING--/$SQLITE_ENCODING/ $ext_srcdir/libsqlite/src/sqlite.h.in > $ext_builddir/libsqlite/src/sqlite.h
if test "$ext_shared" = "no" || test "$ext_srcdir" != "$abs_srcdir"; then
echo '#include <php_config.h>' > $ext_builddir/libsqlite/src/config.h
else
echo "#include \"$abs_builddir/config.h\"" > $ext_builddir/libsqlite/src/config.h
fi
cat >> $ext_builddir/libsqlite/src/config.h <<EOF
#if ZTS
# define THREADSAFE 1
#endif
#if !ZEND_DEBUG
# define NDEBUG
#endif
EOF
fi
AC_CHECK_FUNCS(usleep nanosleep)
AC_CHECK_HEADERS(time.h)
fi
|