PageRenderTime 37ms CodeModel.GetById 8ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/fixtures/ext/mbstring/config.m4

http://github.com/c9s/phpbrew
m4 | 375 lines | 336 code | 35 blank | 4 comment | 0 complexity | 0425ac4864f1d12365e62057ed138b6b MD5 | raw file
  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_ADD_INSTALL_HEADERS], [
  23. PHP_MBSTRING_INSTALL_HEADERS="$PHP_MBSTRING_INSTALL_HEADERS $1"
  24. ])
  25. AC_DEFUN([PHP_MBSTRING_EXTENSION], [
  26. PHP_NEW_EXTENSION(mbstring, $PHP_MBSTRING_SOURCES, $ext_shared,, $PHP_MBSTRING_CFLAGS)
  27. PHP_SUBST(MBSTRING_SHARED_LIBADD)
  28. for dir in $PHP_MBSTRING_EXTRA_BUILD_DIRS; do
  29. PHP_ADD_BUILD_DIR([$ext_builddir/$dir], 1)
  30. done
  31. for dir in $PHP_MBSTRING_EXTRA_INCLUDES; do
  32. PHP_ADD_INCLUDE([$ext_srcdir/$dir])
  33. PHP_ADD_INCLUDE([$ext_builddir/$dir])
  34. done
  35. if test "$ext_shared" = "no"; then
  36. PHP_ADD_SOURCES(PHP_EXT_DIR(mbstring), $PHP_MBSTRING_BASE_SOURCES)
  37. out="php_config.h"
  38. else
  39. PHP_ADD_SOURCES_X(PHP_EXT_DIR(mbstring),$PHP_MBSTRING_BASE_SOURCES,,shared_objects_mbstring,yes)
  40. if test -f "$ext_builddir/config.h.in"; then
  41. out="$abs_builddir/config.h"
  42. else
  43. out="php_config.h"
  44. fi
  45. fi
  46. for cfg in $PHP_MBSTRING_EXTRA_CONFIG_HEADERS; do
  47. cat > $ext_builddir/$cfg <<EOF
  48. #include "$out"
  49. EOF
  50. done
  51. PHP_MBSTRING_ADD_INSTALL_HEADERS([mbstring.h])
  52. PHP_INSTALL_HEADERS([ext/mbstring], [$PHP_MBSTRING_INSTALL_HEADERS])
  53. ])
  54. AC_DEFUN([PHP_MBSTRING_SETUP_MBREGEX], [
  55. if test "$PHP_MBREGEX" = "yes"; then
  56. if test "$PHP_ONIG" = "yes" || test "$PHP_ONIG" = "no"; then
  57. dnl
  58. dnl Bundled oniguruma
  59. dnl
  60. if test "$PHP_MBREGEX_BACKTRACK" != "no"; then
  61. AC_DEFINE([USE_COMBINATION_EXPLOSION_CHECK],1,[whether to check multibyte regex backtrack])
  62. fi
  63. AC_CACHE_CHECK(for variable length prototypes and stdarg.h, php_cv_mbstring_stdarg, [
  64. AC_TRY_RUN([
  65. #include <stdarg.h>
  66. int foo(int x, ...) {
  67. va_list va;
  68. va_start(va, x);
  69. va_arg(va, int);
  70. va_arg(va, char *);
  71. va_arg(va, double);
  72. return 0;
  73. }
  74. int main() { return foo(10, "", 3.14); }
  75. ], [php_cv_mbstring_stdarg=yes], [php_cv_mbstring_stdarg=no], [
  76. dnl cross-compile needs something here
  77. case $host_alias in
  78. *netware*)
  79. php_cv_mbstring_stdarg=yes
  80. ;;
  81. *)
  82. php_cv_mbstring_stdarg=no
  83. ;;
  84. esac
  85. ])
  86. ])
  87. AC_CHECK_HEADERS([stdlib.h string.h strings.h unistd.h sys/time.h sys/times.h stdarg.h])
  88. AC_CHECK_SIZEOF(int, 4)
  89. AC_CHECK_SIZEOF(short, 2)
  90. AC_CHECK_SIZEOF(long, 4)
  91. AC_C_CONST
  92. AC_HEADER_TIME
  93. AC_FUNC_ALLOCA
  94. AC_FUNC_MEMCMP
  95. AC_CHECK_HEADER([stdarg.h], [
  96. AC_DEFINE([HAVE_STDARG_PROTOTYPES], [1], [Define to 1 if you have the <stdarg.h> header file.])
  97. ], [])
  98. AC_DEFINE([PHP_ONIG_BUNDLED], [1], [Define to 1 if the bundled oniguruma is used])
  99. AC_DEFINE([HAVE_ONIG], [1], [Define to 1 if the oniguruma library is available])
  100. PHP_MBSTRING_ADD_CFLAG([-DNOT_RUBY])
  101. PHP_MBSTRING_ADD_BUILD_DIR([oniguruma])
  102. PHP_MBSTRING_ADD_BUILD_DIR([oniguruma/enc])
  103. PHP_MBSTRING_ADD_INCLUDE([oniguruma])
  104. PHP_MBSTRING_ADD_CONFIG_HEADER([oniguruma/config.h])
  105. PHP_MBSTRING_ADD_SOURCES([
  106. oniguruma/regcomp.c
  107. oniguruma/regerror.c
  108. oniguruma/regexec.c
  109. oniguruma/reggnu.c
  110. oniguruma/regparse.c
  111. oniguruma/regenc.c
  112. oniguruma/regext.c
  113. oniguruma/regsyntax.c
  114. oniguruma/regtrav.c
  115. oniguruma/regversion.c
  116. oniguruma/st.c
  117. oniguruma/enc/unicode.c
  118. oniguruma/enc/ascii.c
  119. oniguruma/enc/utf8.c
  120. oniguruma/enc/euc_jp.c
  121. oniguruma/enc/euc_tw.c
  122. oniguruma/enc/euc_kr.c
  123. oniguruma/enc/sjis.c
  124. oniguruma/enc/iso8859_1.c
  125. oniguruma/enc/iso8859_2.c
  126. oniguruma/enc/iso8859_3.c
  127. oniguruma/enc/iso8859_4.c
  128. oniguruma/enc/iso8859_5.c
  129. oniguruma/enc/iso8859_6.c
  130. oniguruma/enc/iso8859_7.c
  131. oniguruma/enc/iso8859_8.c
  132. oniguruma/enc/iso8859_9.c
  133. oniguruma/enc/iso8859_10.c
  134. oniguruma/enc/iso8859_11.c
  135. oniguruma/enc/iso8859_13.c
  136. oniguruma/enc/iso8859_14.c
  137. oniguruma/enc/iso8859_15.c
  138. oniguruma/enc/iso8859_16.c
  139. oniguruma/enc/koi8.c
  140. oniguruma/enc/koi8_r.c
  141. oniguruma/enc/big5.c
  142. oniguruma/enc/utf16_be.c
  143. oniguruma/enc/utf16_le.c
  144. oniguruma/enc/utf32_be.c
  145. oniguruma/enc/utf32_le.c
  146. ])
  147. PHP_MBSTRING_ADD_INSTALL_HEADERS([oniguruma/oniguruma.h])
  148. else
  149. dnl
  150. dnl External oniguruma
  151. dnl
  152. if test ! -f "$PHP_ONIG/include/oniguruma.h"; then
  153. AC_MSG_ERROR([oniguruma.h not found in $PHP_ONIG/include])
  154. fi
  155. PHP_ADD_INCLUDE([$PHP_ONIG/include])
  156. PHP_CHECK_LIBRARY(onig, onig_init, [
  157. PHP_ADD_LIBRARY_WITH_PATH(onig, $PHP_ONIG/$PHP_LIBDIR, MBSTRING_SHARED_LIBADD)
  158. AC_DEFINE([HAVE_ONIG], [1], [Define to 1 if the oniguruma library is available])
  159. ],[
  160. AC_MSG_ERROR([Problem with oniguruma. Please check config.log for more information.])
  161. ], [
  162. -L$PHP_ONIG/$PHP_LIBDIR
  163. ])
  164. save_old_LDFLAGS=$LDFLAGS
  165. PHP_EVAL_LIBLINE([$MBSTRING_SHARED_LIBADD], LDFLAGS)
  166. AC_MSG_CHECKING([if oniguruma has an invalid entry for KOI8 encoding])
  167. AC_TRY_LINK([
  168. #include <oniguruma.h>
  169. ], [
  170. return (int)(ONIG_ENCODING_KOI8 + 1);
  171. ], [
  172. AC_MSG_RESULT([no])
  173. ], [
  174. AC_MSG_RESULT([yes])
  175. AC_DEFINE([PHP_ONIG_BAD_KOI8_ENTRY], [1], [define to 1 if oniguruma has an invalid entry for KOI8 encoding])
  176. ])
  177. LDFLAGS=$save_old_LDFLAGS
  178. fi
  179. PHP_MBSTRING_ADD_CFLAG([-DONIG_ESCAPE_UCHAR_COLLISION=1])
  180. PHP_MBSTRING_ADD_CFLAG([-DUChar=OnigUChar])
  181. AC_DEFINE([HAVE_MBREGEX], 1, [whether to have multibyte regex support])
  182. PHP_MBSTRING_ADD_BASE_SOURCES([php_mbregex.c])
  183. PHP_MBSTRING_ADD_INSTALL_HEADERS([php_mbregex.h php_onig_compat.h])
  184. fi
  185. ])
  186. AC_DEFUN([PHP_MBSTRING_SETUP_LIBMBFL], [
  187. dnl libmbfl is required and can not be disabled
  188. if test "$PHP_LIBMBFL" = "yes" || test "$PHP_LIBMBFL" = "no"; then
  189. dnl
  190. dnl Bundled libmbfl
  191. dnl
  192. PHP_MBSTRING_ADD_BUILD_DIR([libmbfl])
  193. PHP_MBSTRING_ADD_BUILD_DIR([libmbfl/mbfl])
  194. PHP_MBSTRING_ADD_BUILD_DIR([libmbfl/filters])
  195. PHP_MBSTRING_ADD_BUILD_DIR([libmbfl/nls])
  196. PHP_MBSTRING_ADD_INCLUDE([libmbfl])
  197. PHP_MBSTRING_ADD_INCLUDE([libmbfl/mbfl])
  198. PHP_MBSTRING_ADD_CONFIG_HEADER([libmbfl/config.h])
  199. PHP_MBSTRING_ADD_SOURCES([
  200. libmbfl/filters/html_entities.c
  201. libmbfl/filters/mbfilter_7bit.c
  202. libmbfl/filters/mbfilter_ascii.c
  203. libmbfl/filters/mbfilter_base64.c
  204. libmbfl/filters/mbfilter_big5.c
  205. libmbfl/filters/mbfilter_byte2.c
  206. libmbfl/filters/mbfilter_byte4.c
  207. libmbfl/filters/mbfilter_cp1251.c
  208. libmbfl/filters/mbfilter_cp1252.c
  209. libmbfl/filters/mbfilter_cp1254.c
  210. libmbfl/filters/mbfilter_cp5022x.c
  211. libmbfl/filters/mbfilter_cp51932.c
  212. libmbfl/filters/mbfilter_cp850.c
  213. libmbfl/filters/mbfilter_cp866.c
  214. libmbfl/filters/mbfilter_cp932.c
  215. libmbfl/filters/mbfilter_cp936.c
  216. libmbfl/filters/mbfilter_gb18030.c
  217. libmbfl/filters/mbfilter_euc_cn.c
  218. libmbfl/filters/mbfilter_euc_jp.c
  219. libmbfl/filters/mbfilter_euc_jp_2004.c
  220. libmbfl/filters/mbfilter_euc_jp_win.c
  221. libmbfl/filters/mbfilter_euc_kr.c
  222. libmbfl/filters/mbfilter_euc_tw.c
  223. libmbfl/filters/mbfilter_htmlent.c
  224. libmbfl/filters/mbfilter_hz.c
  225. libmbfl/filters/mbfilter_iso2022_jp_ms.c
  226. libmbfl/filters/mbfilter_iso2022jp_2004.c
  227. libmbfl/filters/mbfilter_iso2022jp_mobile.c
  228. libmbfl/filters/mbfilter_iso2022_kr.c
  229. libmbfl/filters/mbfilter_iso8859_1.c
  230. libmbfl/filters/mbfilter_iso8859_10.c
  231. libmbfl/filters/mbfilter_iso8859_13.c
  232. libmbfl/filters/mbfilter_iso8859_14.c
  233. libmbfl/filters/mbfilter_iso8859_15.c
  234. libmbfl/filters/mbfilter_iso8859_16.c
  235. libmbfl/filters/mbfilter_iso8859_2.c
  236. libmbfl/filters/mbfilter_iso8859_3.c
  237. libmbfl/filters/mbfilter_iso8859_4.c
  238. libmbfl/filters/mbfilter_iso8859_5.c
  239. libmbfl/filters/mbfilter_iso8859_6.c
  240. libmbfl/filters/mbfilter_iso8859_7.c
  241. libmbfl/filters/mbfilter_iso8859_8.c
  242. libmbfl/filters/mbfilter_iso8859_9.c
  243. libmbfl/filters/mbfilter_jis.c
  244. libmbfl/filters/mbfilter_koi8r.c
  245. libmbfl/filters/mbfilter_armscii8.c
  246. libmbfl/filters/mbfilter_qprint.c
  247. libmbfl/filters/mbfilter_sjis.c
  248. libmbfl/filters/mbfilter_sjis_open.c
  249. libmbfl/filters/mbfilter_sjis_mobile.c
  250. libmbfl/filters/mbfilter_sjis_mac.c
  251. libmbfl/filters/mbfilter_sjis_2004.c
  252. libmbfl/filters/mbfilter_tl_jisx0201_jisx0208.c
  253. libmbfl/filters/mbfilter_ucs2.c
  254. libmbfl/filters/mbfilter_ucs4.c
  255. libmbfl/filters/mbfilter_uhc.c
  256. libmbfl/filters/mbfilter_utf16.c
  257. libmbfl/filters/mbfilter_utf32.c
  258. libmbfl/filters/mbfilter_utf7.c
  259. libmbfl/filters/mbfilter_utf7imap.c
  260. libmbfl/filters/mbfilter_utf8.c
  261. libmbfl/filters/mbfilter_utf8_mobile.c
  262. libmbfl/filters/mbfilter_uuencode.c
  263. libmbfl/filters/mbfilter_koi8u.c
  264. libmbfl/mbfl/mbfilter.c
  265. libmbfl/mbfl/mbfilter_8bit.c
  266. libmbfl/mbfl/mbfilter_pass.c
  267. libmbfl/mbfl/mbfilter_wchar.c
  268. libmbfl/mbfl/mbfl_convert.c
  269. libmbfl/mbfl/mbfl_encoding.c
  270. libmbfl/mbfl/mbfl_filter_output.c
  271. libmbfl/mbfl/mbfl_ident.c
  272. libmbfl/mbfl/mbfl_language.c
  273. libmbfl/mbfl/mbfl_memory_device.c
  274. libmbfl/mbfl/mbfl_string.c
  275. libmbfl/mbfl/mbfl_allocators.c
  276. libmbfl/nls/nls_de.c
  277. libmbfl/nls/nls_en.c
  278. libmbfl/nls/nls_ja.c
  279. libmbfl/nls/nls_kr.c
  280. libmbfl/nls/nls_neutral.c
  281. libmbfl/nls/nls_ru.c
  282. libmbfl/nls/nls_uni.c
  283. libmbfl/nls/nls_zh.c
  284. libmbfl/nls/nls_hy.c
  285. libmbfl/nls/nls_tr.c
  286. libmbfl/nls/nls_ua.c
  287. ])
  288. PHP_MBSTRING_ADD_CFLAG([-DHAVE_CONFIG_H])
  289. PHP_MBSTRING_ADD_INSTALL_HEADERS([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])
  290. else
  291. dnl
  292. dnl External libmfl
  293. dnl
  294. for inc in include include/mbfl-1.0 include/mbfl; do
  295. if test -f "$PHP_LIBMBFL/$inc/mbfilter.h"; then
  296. PHP_LIBMBFL_INCLUDE="$inc"
  297. break
  298. fi
  299. done
  300. if test -z "$PHP_LIBMBFL_INCLUDE"; then
  301. AC_MSG_ERROR([mbfilter.h not found. Please reinstall libmbfl library.])
  302. else
  303. PHP_ADD_INCLUDE([$PHP_LIBMBFL_INCLUDE])
  304. fi
  305. PHP_CHECK_LIBRARY(mbfl, mbfl_buffer_converter_new, [
  306. PHP_ADD_LIBRARY_WITH_PATH(mbfl, $PHP_LIBMBFL/$PHP_LIBDIR, MBSTRING_SHARED_LIBADD)
  307. ],[
  308. AC_MSG_ERROR([Problem with libmbfl. Please check config.log for more information.])
  309. ], [
  310. -L$PHP_LIBMBFL/$PHP_LIBDIR
  311. ])
  312. fi
  313. ])
  314. dnl
  315. dnl Main config
  316. dnl
  317. PHP_ARG_ENABLE(mbstring, whether to enable multibyte string support,
  318. [ --enable-mbstring Enable multibyte string support])
  319. PHP_ARG_ENABLE([mbregex], [whether to enable multibyte regex support],
  320. [ --disable-mbregex MBSTRING: Disable multibyte regex support], yes, no)
  321. PHP_ARG_ENABLE([mbregex_backtrack], [whether to check multibyte regex backtrack],
  322. [ --disable-mbregex-backtrack
  323. MBSTRING: Disable multibyte regex backtrack check], yes, no)
  324. PHP_ARG_WITH(libmbfl, [for external libmbfl],
  325. [ --with-libmbfl[=DIR] MBSTRING: Use external libmbfl. DIR is the libmbfl base
  326. install directory [BUNDLED]], no, no)
  327. PHP_ARG_WITH(onig, [for external oniguruma],
  328. [ --with-onig[=DIR] MBSTRING: Use external oniguruma. DIR is the oniguruma install prefix.
  329. If DIR is not set, the bundled oniguruma will be used], no, no)
  330. if test "$PHP_MBSTRING" != "no"; then
  331. AC_DEFINE([HAVE_MBSTRING],1,[whether to have multibyte string support])
  332. PHP_MBSTRING_ADD_BASE_SOURCES([mbstring.c php_unicode.c mb_gpc.c])
  333. if test "$PHP_MBREGEX" != "no"; then
  334. PHP_MBSTRING_SETUP_MBREGEX
  335. fi
  336. dnl libmbfl is required
  337. PHP_MBSTRING_SETUP_LIBMBFL
  338. PHP_MBSTRING_EXTENSION
  339. fi
  340. # vim600: sts=2 sw=2 et