fix #6: compatibility with 8.2
[awesomized/ext-ion] / config.m4
1
2 PHP_ARG_WITH([ion],
3 [for ION support],
4 [AS_HELP_STRING([--with-ion],
5 [path to libion])],
6 [no])
7
8 AC_ARG_VAR([GIT], [git executable])
9 AC_PATH_PROG([GIT], [git])
10 PHP_SUBST([GIT])
11
12 AC_ARG_VAR([CMAKE], [cmake executable])
13 AC_PATH_PROG([CMAKE], [cmake])
14 PHP_SUBST([CMAKE])
15
16 use_bundled_ionc=false
17 AC_DEFUN([ION_BUNDLE], [dnl
18
19 sdir=PHP_EXT_SRCDIR([ion])
20 AC_MSG_CHECKING([for bundled ion-c])
21 if test -f $sdir/ion-c/CMakeLists.txt; then
22 AC_MSG_RESULT([ion-c])
23 elif test -d $sdir/.git; then
24 AC_MSG_RESULT([git submodule])
25 cd $sdir
26 if ! "$GIT" submodule update --init --depth 1 --recursive ion-c; then
27 cd -
28 AC_MSG_ERROR([giving up on path "$sdir"])
29 fi
30 cd -
31 elif "$GIT" clone -q --depth 1 --recursive https://github.com/amzn/ion-c $sdir/ion-c; then
32 AC_MSG_RESULT([git clone])
33 else
34 AC_MSG_RESULT([not found])
35 AC_MSG_ERROR([invalid bundle: $sdir/ion-c])
36 fi
37
38 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR([ion])/ion-c/ionc/include)
39 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR([ion])/ion-c/decNumber/include)
40
41 PHP_EXPAND_PATH(PHP_EXT_BUILDDIR([ion]), bdir)
42 bdir="$bdir/ion-c/build"
43 if test "$ext_shared" = yes; then
44 ION_SHARED_LIBADD="-lionc_static -ldecNumber_static -L$bdir/ionc -L$bdir/decNumber"
45 else
46 DLIBS="$DLIBS -lionc_static -ldecNumber_static"
47 EXTRA_LDFLAGS="$EXTRA_LDFLAGS -L$bdir/ionc -L$bdir/decNumber"
48 EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM -L$bdir/ionc -L$bdir/decNumber"
49 fi
50
51 if test "$PHP_DEBUG" = 1; then
52 LIB_IONC_BUILD=Debug
53 else
54 LIB_IONC_BUILD=Release
55 fi
56 PHP_SUBST(LIB_IONC_BUILD)
57 PHP_ADD_MAKEFILE_FRAGMENT()
58 ])
59 AC_DEFUN([ION_CHECK_LIB], [dnl
60 LIBNAME=$1
61 LIBSYMBOL=$2
62 PHP_CHECK_LIBRARY($LIBNAME, $LIBSYMBOL,
63 [
64 [have_]AS_TR_SH($LIBNAME)[_]AS_TR_SH($LIBSYMBOL)=true
65 AC_DEFINE([HAVE_]AS_TR_CPP($LIBNAME)[_]AS_TR_CPP($LIBSYMBOL), 1, [ ])
66 PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $ION_DIR/$PHP_LIBDIR, ION_SHARED_LIBADD)
67 ],[
68 [have_]AS_TR_SH($LIBNAME)[_]AS_TR_SH($LIBSYMBOL)=true
69 AC_MSG_WARN([could not link with $LIBNAME library or find $LIBSYMBOL.])
70 ],[
71 -L$ION_DIR/$PHP_LIBDIR -lm
72 ])
73 ])
74 AC_DEFUN([ION_SYSTEM], [dnl
75 SEARCH_PATH="/usr/local /usr"
76 SEARCH_FOR="/include/ionc/ion.h"
77 if test -r $PHP_ION/$SEARCH_FOR; then
78 ION_DIR=$PHP_ION
79 else
80 AC_MSG_CHECKING([for ion-c files in default path])
81 for i in $SEARCH_PATH ; do
82 if test -r $i/$SEARCH_FOR; then
83 ION_DIR=$i
84 break
85 fi
86 done
87 fi
88 dnl
89 if test -n "$ION_DIR"; then
90 AC_MSG_RESULT(found in $ION_DIR)
91 PHP_ADD_INCLUDE([$ION_DIR/include])
92 ION_CHECK_LIB(ionc, ion_error_to_str)
93 ION_CHECK_LIB(decNumber, decQuadFromInt32)
94 if ! $have_ionc_ion_error_to_str || ! $have_decNumber_decQuadFromInt32; then
95 ION_BUNDLE
96 fi
97 else
98 AC_MSG_RESULT([not found])
99 ION_BUNDLE
100 fi
101
102 ])
103
104 if test "$PHP_ION" != "no"; then
105 PHP_NEW_EXTENSION(ion, ion.c, $ext_shared)
106
107 case "$PHP_ION" in
108 ion-c|b|bundle*) ION_BUNDLE ;;
109 *) ION_SYSTEM ;;
110 esac
111
112 PHP_SUBST(ION_SHARED_LIBADD)
113 AC_DEFINE(HAVE_ION, 1, [ Have ion support ])
114 fi