1dnl config.m4 for extension zstd
2
3dnl Check PHP version:
4AC_MSG_CHECKING(PHP version)
5if test ! -z "$phpincludedir"; then
6    PHP_VERSION=`grep 'PHP_VERSION ' $phpincludedir/main/php_version.h | sed -e 's/.*"\([[0-9\.]]*\)".*/\1/g' 2>/dev/null`
7elif test ! -z "$PHP_CONFIG"; then
8    PHP_VERSION=`$PHP_CONFIG --version 2>/dev/null`
9fi
10
11if test x"$PHP_VERSION" = "x"; then
12    AC_MSG_WARN([none])
13else
14    PHP_MAJOR_VERSION=`echo $PHP_VERSION | sed -e 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\1/g' 2>/dev/null`
15    PHP_MINOR_VERSION=`echo $PHP_VERSION | sed -e 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\2/g' 2>/dev/null`
16    PHP_RELEASE_VERSION=`echo $PHP_VERSION | sed -e 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\3/g' 2>/dev/null`
17    AC_MSG_RESULT([$PHP_VERSION])
18fi
19
20if test $PHP_MAJOR_VERSION -lt 5; then
21    AC_MSG_ERROR([need at least PHP 5 or newer])
22fi
23
24PHP_ARG_ENABLE(zstd, whether to enable zstd support,
25[  --enable-zstd           Enable zstd support])
26
27PHP_ARG_WITH(libzstd, whether to use system zstd library,
28[  --with-libzstd           Use system zstd library], no, no)
29
30if test "$PHP_ZSTD" != "no"; then
31
32  if test "$PHP_LIBZSTD" != "no"; then
33    AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
34
35    AC_MSG_CHECKING(for libzstd)
36    if test -x "$PKG_CONFIG" && $PKG_CONFIG --exists libzstd; then
37      if $PKG_CONFIG libzstd --atleast-version 1; then
38        LIBZSTD_CFLAGS=`$PKG_CONFIG libzstd --cflags`
39        LIBZSTD_LIBDIR=`$PKG_CONFIG libzstd --libs`
40        LIBZSTD_VERSON=`$PKG_CONFIG libzstd --modversion`
41        AC_MSG_RESULT(from pkgconfig: version $LIBZSTD_VERSON)
42      else
43        AC_MSG_ERROR(system libzstd is too old)
44      fi
45    else
46      AC_MSG_ERROR(pkg-config not found)
47    fi
48    PHP_EVAL_LIBLINE($LIBZSTD_LIBDIR, ZSTD_SHARED_LIBADD)
49    PHP_EVAL_INCLINE($LIBZSTD_CFLAGS)
50  else
51    ZSTD_COMMON_SOURCES="
52      zstd/lib/common/debug.c
53      zstd/lib/common/entropy_common.c
54      zstd/lib/common/error_private.c
55      zstd/lib/common/fse_decompress.c
56      zstd/lib/common/pool.c
57      zstd/lib/common/threading.c
58      zstd/lib/common/xxhash.c
59      zstd/lib/common/zstd_common.c
60    "
61    ZSTD_COMPRESS_SOURCES="
62      zstd/lib/compress/fse_compress.c
63      zstd/lib/compress/hist.c
64      zstd/lib/compress/huf_compress.c
65      zstd/lib/compress/zstd_compress.c
66      zstd/lib/compress/zstd_compress_literals.c
67      zstd/lib/compress/zstd_compress_sequences.c
68      zstd/lib/compress/zstd_compress_superblock.c
69      zstd/lib/compress/zstd_double_fast.c
70      zstd/lib/compress/zstd_fast.c
71      zstd/lib/compress/zstd_lazy.c
72      zstd/lib/compress/zstd_ldm.c
73      zstd/lib/compress/zstd_opt.c
74      zstd/lib/compress/zstdmt_compress.c
75    "
76    ZSTD_DECOMPRESS_SOURCES="
77      zstd/lib/decompress/huf_decompress.c
78      zstd/lib/decompress/zstd_ddict.c
79      zstd/lib/decompress/zstd_decompress.c
80      zstd/lib/decompress/zstd_decompress_block.c
81    "
82
83    PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/zstd/lib/common)
84    PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/zstd/lib)
85  fi
86  PHP_NEW_EXTENSION(zstd, zstd.c $ZSTD_COMMON_SOURCES $ZSTD_COMPRESS_SOURCES $ZSTD_DECOMPRESS_SOURCES, $ext_shared)
87  PHP_SUBST(ZSTD_SHARED_LIBADD)
88
89  if test "$PHP_LIBZSTD" = "no"; then
90    PHP_ADD_BUILD_DIR($ext_builddir/zstd/lib/common)
91    PHP_ADD_BUILD_DIR($ext_builddir/zstd/lib/compress)
92    PHP_ADD_BUILD_DIR($ext_builddir/zstd/lib/decompress)
93  fi
94
95  ifdef([PHP_INSTALL_HEADERS],
96  [
97    PHP_INSTALL_HEADERS([ext/zstd/], [php_zstd.h])
98  ], [
99    PHP_ADD_MAKEFILE_FRAGMENT
100  ])
101fi
102
103dnl coverage
104PHP_ARG_ENABLE(coverage, whether to enable coverage support,
105[  --enable-coverage       Enable coverage support], no, no)
106
107if test "$PHP_COVERAGE" != "no"; then
108    EXTRA_CFLAGS="--coverage"
109    PHP_SUBST(EXTRA_CFLAGS)
110fi
111