basic API docs
[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 AC_ARG_VAR([AR], [system library archiver])
17 AC_PATH_PROG([AR], [ar])
18 PHP_SUBST([AR])
19
20 AC_ARG_VAR([RANLIB], [system library archive indexer])
21 AC_PATH_PROG([RANLIB], [ranlib])
22 PHP_SUBST([RANLIB])
23
24 use_bundled_ionc=false
25 AC_DEFUN([ION_BUNDLE], [dnl
26
27 AC_MSG_CHECKING([for bundled ion-c])
28 if test -f PHP_EXT_SRCDIR([ion])/ion-c/CMakeLists.txt; then
29 AC_MSG_RESULT([ion-c])
30 elif test -d PHP_EXT_SRCDIR([ion])/.git; then
31 AC_MSG_RESULT([git submodule])
32 if ! GIT_DIR=PHP_EXT_SRCDIR([ion])/.git GIT_WORK_TREE=PHP_EXT_SRCDIR([ion])/ \
33 "$GIT" submodule update --init --depth 1 --recursive ion-c; then
34 AC_MSG_ERROR([giving up])
35 fi
36 else
37 AC_MSG_RESULT([not found])
38 AC_MSG_ERROR([invalid bundle: PHP_EXT_SRCDIR([ion])/ion-c])
39 fi
40
41 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR([ion])/ion-c/ionc/include)
42 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR([ion])/ion-c/decNumber/include)
43
44 PHP_EXPAND_PATH(PHP_EXT_BUILDDIR([ion]), builddir)
45 builddir="$builddir/ion-c/build"
46 if test "$ext_shared" = yes; then
47 ION_SHARED_LIBADD="-lionc_static -ldecNumber_static -L$builddir/ionc -L$builddir/decNumber"
48 else
49 DLIBS="$DLIBS -lionc_static -ldecNumber_static"
50 EXTRA_LDFLAGS="$EXTRA_LDFLAGS -L$builddir/ionc -L$builddir/decNumber"
51 EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM -L$builddir/ionc -L$builddir/decNumber"
52 fi
53
54 if test "$PHP_DEBUG" = 1; then
55 LIB_IONC_BUILD=Debug
56 else
57 LIB_IONC_BUILD=Release
58 fi
59 PHP_SUBST(LIB_IONC_BUILD)
60 PHP_ADD_MAKEFILE_FRAGMENT()
61 ])
62 AC_DEFUN([ION_CHECK_LIB], [dnl
63 LIBNAME=$1
64 LIBSYMBOL=$2
65 PHP_CHECK_LIBRARY($LIBNAME, $LIBSYMBOL,
66 [
67 [have_]AS_TR_SH($LIBNAME)[_]AS_TR_SH($LIBSYMBOL)=true
68 AC_DEFINE([HAVE_]AS_TR_CPP($LIBNAME)[_]AS_TR_CPP($LIBSYMBOL), 1, [ ])
69 PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $ION_DIR/$PHP_LIBDIR, ION_SHARED_LIBADD)
70 ],[
71 [have_]AS_TR_SH($LIBNAME)[_]AS_TR_SH($LIBSYMBOL)=true
72 AC_MSG_WARN([could not link with $LIBNAME library or find $LIBSYMBOL.])
73 ],[
74 -L$ION_DIR/$PHP_LIBDIR -lm
75 ])
76 ])
77 AC_DEFUN([ION_SYSTEM], [dnl
78 SEARCH_PATH="/usr/local /usr"
79 SEARCH_FOR="/include/ionc/ion.h"
80 if test -r $PHP_ION/$SEARCH_FOR; then
81 ION_DIR=$PHP_ION
82 else
83 AC_MSG_CHECKING([for ion-c files in default path])
84 for i in $SEARCH_PATH ; do
85 if test -r $i/$SEARCH_FOR; then
86 ION_DIR=$i
87 break
88 fi
89 done
90 fi
91 dnl
92 if test -n "$ION_DIR"; then
93 AC_MSG_RESULT(found in $ION_DIR)
94 PHP_ADD_INCLUDE([$ION_DIR/include])
95 ION_CHECK_LIB(ionc, ion_error_to_str)
96 ION_CHECK_LIB(decNumber, decQuadFromInt32)
97 if ! $have_ionc_ion_error_to_str || ! $have_decNumber_decQuadFromInt32; then
98 ION_BUNDLE
99 fi
100 else
101 AC_MSG_RESULT([not found])
102 ION_BUNDLE
103 fi
104
105 ])
106
107 if test "$PHP_ION" != "no"; then
108 PHP_NEW_EXTENSION(ion, ion.c, $ext_shared)
109
110 case "$PHP_ION" in
111 ion-c|b|bundle*) ION_BUNDLE ;;
112 *) ION_SYSTEM ;;
113 esac
114
115 PHP_SUBST(ION_SHARED_LIBADD)
116 AC_DEFINE(HAVE_ION, 1, [ Have ion support ])
117 fi