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