You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

157 lines
5.3 KiB

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