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