config.m4 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. dnl config.m4 for extension zip
  2. PHP_ARG_ENABLE(zip, for zip archive read/writesupport,
  3. [ --enable-zip Include Zip read/write support])
  4. if test -z "$PHP_ZLIB_DIR"; then
  5. PHP_ARG_WITH(zlib-dir, for the location of libz,
  6. [ --with-zlib-dir[=DIR] ZIP: Set the path to libz install prefix], no, no)
  7. fi
  8. PHP_ARG_WITH(pcre-dir, pcre install prefix,
  9. [ --with-pcre-dir ZIP: pcre install prefix], no, no)
  10. PHP_ARG_WITH(libzip, libzip,
  11. [ --with-libzip[=DIR] ZIP: use libzip], yes, no)
  12. if test "$PHP_ZIP" != "no"; then
  13. dnl libzip, depends on zlib
  14. if test "$PHP_ZLIB_DIR" != "no" && test "$PHP_ZLIB_DIR" != "yes"; then
  15. if test -f "$PHP_ZLIB_DIR/include/zlib/zlib.h"; then
  16. PHP_ZLIB_DIR="$PHP_ZLIB_DIR"
  17. PHP_ZLIB_INCDIR="$PHP_ZLIB_DIR/include/zlib"
  18. elif test -f "$PHP_ZLIB_DIR/include/zlib.h"; then
  19. PHP_ZLIB_DIR="$PHP_ZLIB_DIR"
  20. PHP_ZLIB_INCDIR="$PHP_ZLIB_DIR/include"
  21. else
  22. AC_MSG_ERROR([Can not find zlib headers under "$PHP_ZLIB_DIR"])
  23. fi
  24. else
  25. for i in /usr/local /usr; do
  26. if test -f "$i/include/zlib/zlib.h"; then
  27. PHP_ZLIB_DIR="$i"
  28. PHP_ZLIB_INCDIR="$i/include/zlib"
  29. elif test -f "$i/include/zlib.h"; then
  30. PHP_ZLIB_DIR="$i"
  31. PHP_ZLIB_INCDIR="$i/include"
  32. fi
  33. done
  34. fi
  35. dnl # zlib
  36. AC_MSG_CHECKING([for the location of zlib])
  37. if test "$PHP_ZLIB_DIR" = "no"; then
  38. AC_MSG_ERROR([zip support requires ZLIB. Use --with-zlib-dir=<DIR> to specify prefix where ZLIB include and library are located])
  39. else
  40. AC_MSG_RESULT([$PHP_ZLIB_DIR])
  41. PHP_ADD_LIBRARY_WITH_PATH(z, $PHP_ZLIB_DIR/$PHP_LIBDIR, ZIP_SHARED_LIBADD)
  42. PHP_ADD_INCLUDE($PHP_ZLIB_INCDIR)
  43. fi
  44. if test "$PHP_LIBZIP" != "no"; then
  45. AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
  46. dnl system libzip, depends on libzip
  47. AC_MSG_CHECKING(for libzip)
  48. if test -r $PHP_LIBZIP/include/zip.h; then
  49. LIBZIP_CFLAGS="-I$PHP_LIBZIP/include"
  50. LIBZIP_LIBDIR="$PHP_LIBZIP/$PHP_LIBDIR"
  51. AC_MSG_RESULT(from option: found in $PHP_LIBZIP)
  52. elif test -x "$PKG_CONFIG" && $PKG_CONFIG --exists libzip; then
  53. if $PKG_CONFIG libzip --atleast-version 0.11; then
  54. LIBZIP_CFLAGS=`$PKG_CONFIG libzip --cflags`
  55. LIBZIP_LIBDIR=`$PKG_CONFIG libzip --variable=libdir`
  56. LIBZIP_VERSON=`$PKG_CONFIG libzip --modversion`
  57. AC_MSG_RESULT(from pkgconfig: version $LIBZIP_VERSON found in $LIBZIP_LIBDIR)
  58. else
  59. AC_MSG_ERROR(system libzip must be upgraded to version >= 0.11)
  60. fi
  61. else
  62. for i in /usr/local /usr; do
  63. if test -r $i/include/zip.h; then
  64. LIBZIP_CFLAGS="-I$i/include"
  65. LIBZIP_LIBDIR="$i/$PHP_LIBDIR"
  66. AC_MSG_RESULT(in default path: found in $i)
  67. break
  68. fi
  69. done
  70. fi
  71. if test -z "$LIBZIP_LIBDIR"; then
  72. AC_MSG_RESULT(not found)
  73. AC_MSG_ERROR(Please reinstall the libzip distribution)
  74. fi
  75. dnl Could not think of a simple way to check libzip for overwrite support
  76. PHP_CHECK_LIBRARY(zip, zip_open,
  77. [
  78. PHP_ADD_LIBRARY_WITH_PATH(zip, $LIBZIP_LIBDIR, ZIP_SHARED_LIBADD)
  79. AC_DEFINE(HAVE_LIBZIP,1,[ ])
  80. ], [
  81. AC_MSG_ERROR(could not find usable libzip)
  82. ], [
  83. -L$LIBZIP_LIBDIR
  84. ])
  85. PHP_CHECK_LIBRARY(zip, zip_file_set_encryption,
  86. [
  87. PHP_ADD_LIBRARY_WITH_PATH(zip, $LIBZIP_LIBDIR, ZIP_SHARED_LIBADD)
  88. AC_DEFINE(HAVE_ENCRYPTION, 1, [Libzip >= 1.2.0 with encryption support])
  89. ], [
  90. AC_MSG_WARN(Libzip >= 1.2.0 needed for encryption support)
  91. ], [
  92. -L$LIBZIP_LIBDIR
  93. ])
  94. PHP_CHECK_LIBRARY(zip, zip_libzip_version,
  95. [
  96. AC_DEFINE(HAVE_LIBZIP_VERSION, 1, [Libzip >= 1.3.1 with zip_libzip_version function])
  97. ], [
  98. ], [
  99. -L$LIBZIP_LIBDIR
  100. ])
  101. AC_DEFINE(HAVE_ZIP,1,[ ])
  102. PHP_EVAL_INCLINE($LIBZIP_CFLAGS)
  103. PHP_NEW_EXTENSION(zip, php_zip.c zip_stream.c, $ext_shared)
  104. PHP_SUBST(ZIP_SHARED_LIBADD)
  105. else
  106. AC_MSG_WARN(========================================================)
  107. AC_MSG_WARN(Use of bundled libzip is deprecated and will be removed.)
  108. AC_MSG_WARN(Some features such as encryption and bzip2 are not available.)
  109. AC_MSG_WARN(Use system library and --with-libzip is recommended.)
  110. AC_MSG_WARN(========================================================)
  111. PHP_ZIP_SOURCES="$PHP_ZIP_SOURCES lib/zip_add.c lib/zip_add_dir.c lib/zip_add_entry.c\
  112. lib/zip_buffer.c lib/zip_file_set_mtime.c lib/zip_io_util.c lib/zip_source_begin_write.c \
  113. lib/zip_source_call.c lib/zip_source_commit_write.c lib/zip_source_is_deleted.c \
  114. lib/zip_source_remove.c lib/zip_source_rollback_write.c lib/zip_source_seek.c \
  115. lib/zip_source_seek_write.c lib/zip_source_supports.c lib/zip_source_tell.c \
  116. lib/zip_source_tell_write.c lib/zip_source_write.c \
  117. lib/zip_close.c lib/zip_delete.c lib/zip_dir_add.c lib/zip_dirent.c lib/zip_discard.c lib/zip_entry.c\
  118. lib/zip_err_str.c lib/zip_error.c lib/zip_error_clear.c lib/zip_error_get.c lib/zip_error_get_sys_type.c\
  119. lib/zip_error_strerror.c lib/zip_error_to_str.c lib/zip_extra_field.c lib/zip_extra_field_api.c\
  120. lib/zip_fclose.c lib/zip_fdopen.c lib/zip_file_add.c lib/zip_file_error_clear.c lib/zip_file_error_get.c\
  121. lib/zip_file_get_comment.c lib/zip_file_get_offset.c lib/zip_file_rename.c lib/zip_file_replace.c\
  122. lib/zip_file_set_comment.c lib/zip_file_strerror.c lib/zip_filerange_crc.c lib/zip_fopen.c\
  123. lib/zip_file_get_external_attributes.c lib/zip_file_set_external_attributes.c \
  124. lib/zip_fopen_encrypted.c lib/zip_fopen_index.c lib/zip_fopen_index_encrypted.c lib/zip_fread.c\
  125. lib/zip_get_archive_comment.c lib/zip_get_archive_flag.c lib/zip_get_compression_implementation.c\
  126. lib/zip_get_encryption_implementation.c lib/zip_get_file_comment.c lib/zip_get_name.c lib/zip_get_num_entries.c \
  127. lib/zip_get_num_files.c lib/zip_memdup.c lib/zip_name_locate.c lib/zip_new.c lib/zip_open.c lib/zip_rename.c lib/zip_replace.c\
  128. lib/zip_hash.c \
  129. lib/zip_set_archive_comment.c lib/zip_set_archive_flag.c lib/zip_set_default_password.c lib/zip_set_file_comment.c\
  130. lib/zip_set_file_compression.c lib/zip_set_name.c lib/zip_source_buffer.c lib/zip_source_close.c lib/zip_source_crc.c\
  131. lib/zip_source_deflate.c lib/zip_source_error.c lib/zip_source_file.c lib/zip_source_filep.c lib/zip_source_free.c\
  132. lib/zip_source_function.c lib/zip_source_layered.c lib/zip_source_open.c lib/zip_source_pkware.c \
  133. lib/zip_source_read.c lib/zip_source_stat.c lib/zip_source_window.c lib/zip_source_zip.c lib/zip_source_zip_new.c\
  134. lib/zip_stat.c lib/zip_stat_index.c lib/zip_stat_init.c lib/zip_strerror.c lib/zip_string.c lib/zip_unchange.c lib/zip_unchange_all.c\
  135. lib/zip_unchange_archive.c lib/zip_unchange_data.c lib/zip_utf-8.c lib/mkstemp.c"
  136. AC_DEFINE(HAVE_ZIP,1,[ ])
  137. PHP_NEW_EXTENSION(zip, php_zip.c zip_stream.c $PHP_ZIP_SOURCES, $ext_shared)
  138. PHP_ADD_BUILD_DIR($ext_builddir/lib, 1)
  139. PHP_ADD_INCLUDE([$ext_srcdir/lib])
  140. PHP_SUBST(ZIP_SHARED_LIBADD)
  141. fi
  142. AC_CHECK_HEADERS(stdbool.h)
  143. AC_CHECK_HEADERS(fts.h)
  144. AC_CHECK_TYPES([int8_t])
  145. AC_CHECK_TYPES([int16_t])
  146. AC_CHECK_TYPES([int32_t])
  147. AC_CHECK_TYPES([int64_t])
  148. AC_CHECK_TYPES([uint8_t])
  149. AC_CHECK_TYPES([uint16_t])
  150. AC_CHECK_TYPES([uint32_t])
  151. AC_CHECK_TYPES([uint64_t])
  152. AC_CHECK_TYPES([ssize_t])
  153. AC_CHECK_SIZEOF([short])
  154. AC_CHECK_SIZEOF([int])
  155. AC_CHECK_SIZEOF([long])
  156. AC_CHECK_SIZEOF([long long])
  157. AC_CHECK_SIZEOF([off_t])
  158. if test "$ac_cv_sizeof_off_t" = "0" ; then
  159. AC_MSG_ERROR(off_t undefined; check your library configuration)
  160. fi
  161. AC_CHECK_SIZEOF([size_t])
  162. AC_PATH_PROG([TOUCH], [touch])
  163. AC_PATH_PROG([UNZIP], [unzip])
  164. AC_STRUCT_TIMEZONE
  165. case $host_os
  166. in
  167. *bsd*) MANFMT=mdoc;;
  168. *) MANFMT=man;;
  169. esac
  170. AC_SUBST([MANFMT])
  171. dnl so we always include the known-good working hack.
  172. PHP_ADD_MAKEFILE_FRAGMENT
  173. fi