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.

289 lines
9.3 KiB

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
  1. dnl
  2. dnl $Id$
  3. dnl
  4. AC_DEFUN([PHP_MBSTRING_ADD_SOURCES], [
  5. PHP_MBSTRING_SOURCES="$PHP_MBSTRING_SOURCES $1"
  6. ])
  7. AC_DEFUN([PHP_MBSTRING_ADD_BASE_SOURCES], [
  8. PHP_MBSTRING_BASE_SOURCES="$PHP_MBSTRING_BASE_SOURCES $1"
  9. ])
  10. AC_DEFUN([PHP_MBSTRING_ADD_BUILD_DIR], [
  11. PHP_MBSTRING_EXTRA_BUILD_DIRS="$PHP_MBSTRING_EXTRA_BUILD_DIRS $1"
  12. ])
  13. AC_DEFUN([PHP_MBSTRING_ADD_INCLUDE], [
  14. PHP_MBSTRING_EXTRA_INCLUDES="$PHP_MBSTRING_EXTRA_INCLUDES $1"
  15. ])
  16. AC_DEFUN([PHP_MBSTRING_ADD_CONFIG_HEADER], [
  17. PHP_MBSTRING_EXTRA_CONFIG_HEADERS="$PHP_MBSTRING_EXTRA_CONFIG_HEADERS $1"
  18. ])
  19. AC_DEFUN([PHP_MBSTRING_ADD_CFLAG], [
  20. PHP_MBSTRING_CFLAGS="$PHP_MBSTRING_CFLAGS $1"
  21. ])
  22. AC_DEFUN([PHP_MBSTRING_EXTENSION], [
  23. PHP_NEW_EXTENSION(mbstring, $PHP_MBSTRING_SOURCES, $ext_shared,, $PHP_MBSTRING_CFLAGS)
  24. PHP_SUBST(MBSTRING_SHARED_LIBADD)
  25. for dir in $PHP_MBSTRING_EXTRA_BUILD_DIRS; do
  26. PHP_ADD_BUILD_DIR([$ext_builddir/$dir], 1)
  27. done
  28. for dir in $PHP_MBSTRING_EXTRA_INCLUDES; do
  29. PHP_ADD_INCLUDE([$ext_srcdir/$dir])
  30. PHP_ADD_INCLUDE([$ext_builddir/$dir])
  31. done
  32. if test "$ext_shared" = "no"; then
  33. PHP_ADD_SOURCES(PHP_EXT_DIR(mbstring), $PHP_MBSTRING_BASE_SOURCES)
  34. out="php_config.h"
  35. else
  36. PHP_ADD_SOURCES_X(PHP_EXT_DIR(mbstring),$PHP_MBSTRING_BASE_SOURCES,,shared_objects_mbstring,yes)
  37. if test -f "$ext_builddir/config.h.in"; then
  38. out="$abs_builddir/config.h"
  39. else
  40. out="php_config.h"
  41. fi
  42. fi
  43. for cfg in $PHP_MBSTRING_EXTRA_CONFIG_HEADERS; do
  44. cat > $ext_builddir/$cfg <<EOF
  45. #include "$out"
  46. EOF
  47. done
  48. ])
  49. AC_DEFUN([PHP_MBSTRING_SETUP_MBREGEX], [
  50. if test "$PHP_MBREGEX" = "yes"; then
  51. AC_CACHE_CHECK(for variable length prototypes and stdarg.h, cv_php_mbstring_stdarg, [
  52. AC_TRY_RUN([
  53. #include <stdarg.h>
  54. int foo(int x, ...) {
  55. va_list va;
  56. va_start(va, x);
  57. va_arg(va, int);
  58. va_arg(va, char *);
  59. va_arg(va, double);
  60. return 0;
  61. }
  62. int main() { return foo(10, "", 3.14); }
  63. ], [cv_php_mbstring_stdarg=yes], [cv_php_mbstring_stdarg=no], [cv_php_mbstring_stdarg=no])
  64. ])
  65. AC_CHECK_HEADERS([stdlib.h string.h strings.h unistd.h sys/time.h sys/times.h])
  66. AC_CHECK_SIZEOF(int, 4)
  67. AC_CHECK_SIZEOF(short, 2)
  68. AC_CHECK_SIZEOF(long, 4)
  69. AC_C_CONST
  70. AC_HEADER_TIME
  71. AC_FUNC_ALLOCA
  72. AC_FUNC_MEMCMP
  73. if test "$cv_php_mbstring_stdarg" = "yes"; then
  74. AC_DEFINE([HAVE_STDARG_PROTOTYPES], 1, [Define if stdarg.h is available])
  75. fi
  76. AC_DEFINE([HAVE_MBREGEX], 1, [whether to have multibyte regex support])
  77. PHP_MBSTRING_ADD_CFLAG([-DNOT_RUBY])
  78. PHP_MBSTRING_ADD_BUILD_DIR([oniguruma])
  79. PHP_MBSTRING_ADD_BUILD_DIR([oniguruma/enc])
  80. PHP_MBSTRING_ADD_INCLUDE([oniguruma])
  81. PHP_MBSTRING_ADD_CONFIG_HEADER([oniguruma/config.h])
  82. PHP_MBSTRING_ADD_BASE_SOURCES([php_mbregex.c])
  83. PHP_MBSTRING_ADD_SOURCES([
  84. oniguruma/regcomp.c
  85. oniguruma/regerror.c
  86. oniguruma/regexec.c
  87. oniguruma/reggnu.c
  88. oniguruma/regparse.c
  89. oniguruma/regenc.c
  90. oniguruma/regext.c
  91. oniguruma/regsyntax.c
  92. oniguruma/regtrav.c
  93. oniguruma/regversion.c
  94. oniguruma/st.c
  95. oniguruma/enc/unicode.c
  96. oniguruma/enc/ascii.c
  97. oniguruma/enc/utf8.c
  98. oniguruma/enc/euc_jp.c
  99. oniguruma/enc/euc_tw.c
  100. oniguruma/enc/euc_kr.c
  101. oniguruma/enc/sjis.c
  102. oniguruma/enc/iso8859_1.c
  103. oniguruma/enc/iso8859_2.c
  104. oniguruma/enc/iso8859_3.c
  105. oniguruma/enc/iso8859_4.c
  106. oniguruma/enc/iso8859_5.c
  107. oniguruma/enc/iso8859_6.c
  108. oniguruma/enc/iso8859_7.c
  109. oniguruma/enc/iso8859_8.c
  110. oniguruma/enc/iso8859_9.c
  111. oniguruma/enc/iso8859_10.c
  112. oniguruma/enc/iso8859_11.c
  113. oniguruma/enc/iso8859_13.c
  114. oniguruma/enc/iso8859_14.c
  115. oniguruma/enc/iso8859_15.c
  116. oniguruma/enc/iso8859_16.c
  117. oniguruma/enc/koi8.c
  118. oniguruma/enc/koi8_r.c
  119. oniguruma/enc/big5.c
  120. oniguruma/enc/utf16_be.c
  121. oniguruma/enc/utf16_le.c
  122. oniguruma/enc/utf32_be.c
  123. oniguruma/enc/utf32_le.c
  124. ])
  125. fi
  126. ])
  127. AC_DEFUN([PHP_MBSTRING_SETUP_LIBMBFL], [
  128. dnl libmbfl is required and can not be disabled
  129. if test "$PHP_LIBMBFL" = "yes" || test "$PHP_LIBMBFL" = "no"; then
  130. dnl
  131. dnl Bundled libmbfl
  132. dnl
  133. PHP_MBSTRING_ADD_BUILD_DIR([libmbfl])
  134. PHP_MBSTRING_ADD_BUILD_DIR([libmbfl/mbfl])
  135. PHP_MBSTRING_ADD_BUILD_DIR([libmbfl/filters])
  136. PHP_MBSTRING_ADD_BUILD_DIR([libmbfl/nls])
  137. PHP_MBSTRING_ADD_INCLUDE([libmbfl])
  138. PHP_MBSTRING_ADD_INCLUDE([libmbfl/mbfl])
  139. PHP_MBSTRING_ADD_CONFIG_HEADER([libmbfl/config.h])
  140. PHP_MBSTRING_ADD_SOURCES([
  141. libmbfl/filters/html_entities.c
  142. libmbfl/filters/mbfilter_7bit.c
  143. libmbfl/filters/mbfilter_ascii.c
  144. libmbfl/filters/mbfilter_base64.c
  145. libmbfl/filters/mbfilter_big5.c
  146. libmbfl/filters/mbfilter_byte2.c
  147. libmbfl/filters/mbfilter_byte4.c
  148. libmbfl/filters/mbfilter_cp1251.c
  149. libmbfl/filters/mbfilter_cp1252.c
  150. libmbfl/filters/mbfilter_cp866.c
  151. libmbfl/filters/mbfilter_cp932.c
  152. libmbfl/filters/mbfilter_cp936.c
  153. libmbfl/filters/mbfilter_euc_cn.c
  154. libmbfl/filters/mbfilter_euc_jp.c
  155. libmbfl/filters/mbfilter_euc_jp_win.c
  156. libmbfl/filters/mbfilter_cp51932.c
  157. libmbfl/filters/mbfilter_euc_kr.c
  158. libmbfl/filters/mbfilter_euc_tw.c
  159. libmbfl/filters/mbfilter_htmlent.c
  160. libmbfl/filters/mbfilter_hz.c
  161. libmbfl/filters/mbfilter_iso2022_kr.c
  162. libmbfl/filters/mbfilter_iso8859_1.c
  163. libmbfl/filters/mbfilter_iso8859_10.c
  164. libmbfl/filters/mbfilter_iso8859_13.c
  165. libmbfl/filters/mbfilter_iso8859_14.c
  166. libmbfl/filters/mbfilter_iso8859_15.c
  167. libmbfl/filters/mbfilter_iso8859_16.c
  168. libmbfl/filters/mbfilter_iso8859_2.c
  169. libmbfl/filters/mbfilter_iso8859_3.c
  170. libmbfl/filters/mbfilter_iso8859_4.c
  171. libmbfl/filters/mbfilter_iso8859_5.c
  172. libmbfl/filters/mbfilter_iso8859_6.c
  173. libmbfl/filters/mbfilter_iso8859_7.c
  174. libmbfl/filters/mbfilter_iso8859_8.c
  175. libmbfl/filters/mbfilter_iso8859_9.c
  176. libmbfl/filters/mbfilter_jis.c
  177. libmbfl/filters/mbfilter_koi8r.c
  178. libmbfl/filters/mbfilter_armscii8.c
  179. libmbfl/filters/mbfilter_qprint.c
  180. libmbfl/filters/mbfilter_sjis.c
  181. libmbfl/filters/mbfilter_ucs2.c
  182. libmbfl/filters/mbfilter_ucs4.c
  183. libmbfl/filters/mbfilter_uhc.c
  184. libmbfl/filters/mbfilter_utf16.c
  185. libmbfl/filters/mbfilter_utf32.c
  186. libmbfl/filters/mbfilter_utf7.c
  187. libmbfl/filters/mbfilter_utf7imap.c
  188. libmbfl/filters/mbfilter_utf8.c
  189. libmbfl/filters/mbfilter_uuencode.c
  190. libmbfl/mbfl/mbfilter.c
  191. libmbfl/mbfl/mbfilter_8bit.c
  192. libmbfl/mbfl/mbfilter_pass.c
  193. libmbfl/mbfl/mbfilter_wchar.c
  194. libmbfl/mbfl/mbfl_convert.c
  195. libmbfl/mbfl/mbfl_encoding.c
  196. libmbfl/mbfl/mbfl_filter_output.c
  197. libmbfl/mbfl/mbfl_ident.c
  198. libmbfl/mbfl/mbfl_language.c
  199. libmbfl/mbfl/mbfl_memory_device.c
  200. libmbfl/mbfl/mbfl_string.c
  201. libmbfl/mbfl/mbfl_allocators.c
  202. libmbfl/nls/nls_de.c
  203. libmbfl/nls/nls_en.c
  204. libmbfl/nls/nls_ja.c
  205. libmbfl/nls/nls_kr.c
  206. libmbfl/nls/nls_neutral.c
  207. libmbfl/nls/nls_ru.c
  208. libmbfl/nls/nls_uni.c
  209. libmbfl/nls/nls_zh.c
  210. libmbfl/nls/nls_hy.c
  211. libmbfl/nls/nls_tr.c
  212. ])
  213. PHP_MBSTRING_ADD_CFLAG([-DHAVE_CONFIG_H])
  214. else
  215. dnl
  216. dnl External libmfl
  217. dnl
  218. for inc in include include/mbfl-1.0 include/mbfl; do
  219. if test -f "$PHP_LIBMBFL/$inc/mbfilter.h"; then
  220. PHP_LIBMBFL_INCLUDE="$inc"
  221. break
  222. fi
  223. done
  224. if test -z "$PHP_LIBMBFL_INCLUDE"; then
  225. AC_MSG_ERROR([mbfilter.h not found. Please reinstall libmbfl library.])
  226. else
  227. PHP_ADD_INCLUDE([$PHP_LIBMBFL_INCLUDE])
  228. fi
  229. PHP_CHECK_LIBRARY(mbfl, mbfl_buffer_converter_new, [
  230. PHP_ADD_LIBRARY_WITH_PATH(mbfl, $PHP_LIBMBFL/$PHP_LIBDIR, MBSTRING_SHARED_LIBADD)
  231. ],[
  232. AC_MSG_ERROR([Problem with libmbfl. Please check config.log for more information.])
  233. ], [
  234. -LPHP_LIBMBFL/$PHP_LIBDIR
  235. ])
  236. fi
  237. ])
  238. dnl
  239. dnl Main config
  240. dnl
  241. PHP_ARG_ENABLE(mbstring, whether to enable multibyte string support,
  242. [ --enable-mbstring Enable multibyte string support])
  243. PHP_ARG_ENABLE([mbregex], [whether to enable multibyte regex support],
  244. [ --disable-mbregex MBSTRING: Disable multibyte regex support], yes, no)
  245. PHP_ARG_WITH(libmbfl, [for external libmbfl],
  246. [ --with-libmbfl[=DIR] MBSTRING: Use external libmbfl. DIR is the libmbfl install prefix.
  247. If DIR is not set, the bundled libmbfl will be used], no, no)
  248. if test "$PHP_MBSTRING" != "no"; then
  249. AC_DEFINE([HAVE_MBSTRING],1,[whether to have multibyte string support])
  250. PHP_MBSTRING_ADD_BASE_SOURCES([mbstring.c php_unicode.c mb_gpc.c])
  251. if test "$PHP_MBREGEX" != "no"; then
  252. AC_MSG_ERROR([multibyte regex support must be disabled, use --disable-mbregex])
  253. PHP_MBSTRING_SETUP_MBREGEX
  254. fi
  255. dnl libmbfl is required
  256. PHP_MBSTRING_SETUP_LIBMBFL
  257. PHP_MBSTRING_EXTENSION
  258. PHP_INSTALL_HEADERS([ext/mbstring], [mbstring.h php_mbregex.h libmbfl/config.h libmbfl/mbfl/eaw_table.h libmbfl/mbfl/mbfilter.h libmbfl/mbfl/mbfilter_8bit.h libmbfl/mbfl/mbfilter_pass.h libmbfl/mbfl/mbfilter_wchar.h libmbfl/mbfl/mbfl_allocators.h libmbfl/mbfl/mbfl_consts.h libmbfl/mbfl/mbfl_convert.h libmbfl/mbfl/mbfl_defs.h libmbfl/mbfl/mbfl_encoding.h libmbfl/mbfl/mbfl_filter_output.h libmbfl/mbfl/mbfl_ident.h libmbfl/mbfl/mbfl_language.h libmbfl/mbfl/mbfl_memory_device.h libmbfl/mbfl/mbfl_string.h oniguruma/oniguruma.h oniguruma/php_onig_compat.h])
  259. fi
  260. # vim600: sts=2 sw=2 et