summaryrefslogtreecommitdiff
path: root/sapi/caudium/config.m4
diff options
context:
space:
mode:
Diffstat (limited to 'sapi/caudium/config.m4')
-rw-r--r--sapi/caudium/config.m498
1 files changed, 98 insertions, 0 deletions
diff --git a/sapi/caudium/config.m4 b/sapi/caudium/config.m4
new file mode 100644
index 0000000..8aba33e
--- /dev/null
+++ b/sapi/caudium/config.m4
@@ -0,0 +1,98 @@
+dnl
+dnl $Id$
+dnl
+
+RESULT=no
+PHP_ARG_WITH(caudium,,
+[ --with-caudium[=DIR] Build PHP as a Pike module for use with Caudium.
+ DIR is the Caudium server dir [/usr/local/caudium/server]], no, no)
+
+AC_MSG_CHECKING([for Caudium support])
+
+if test "$PHP_CAUDIUM" != "no"; then
+ if test "$prefix" = "NONE"; then CPREF=/usr/local/; fi
+ if test ! -d $PHP_CAUDIUM ; then
+ if test "$prefix" = "NONE"; then
+ PHP_CAUDIUM=/usr/local/caudium/server/
+ else
+ PHP_CAUDIUM=$prefix/caudium/server/
+ fi
+ fi
+ if test -f $PHP_CAUDIUM/bin/caudium; then
+ PIKE=$PHP_CAUDIUM/bin/caudium
+ elif test -f $PHP_CAUDIUM/bin/pike; then
+ PIKE=$PHP_CAUDIUM/bin/pike
+ else
+ AC_MSG_ERROR([Could not find a pike in $PHP_CAUDIUM/bin/])
+ fi
+ if $PIKE -e 'float v; int rel;sscanf(version(), "Pike v%f release %d", v, rel);v += rel/10000.0; if(v < 7.0268) exit(1); exit(0);'; then
+ PIKE_MODULE_DIR=`$PIKE --show-paths 2>&1| grep '^Module' | sed -e 's/.*: //'`
+ PIKE_INCLUDE_DIR=`echo $PIKE_MODULE_DIR | sed -e 's,lib/pike/modules,include/pike,' -e 's,lib/modules,include/pike,' `
+ if test -z "$PIKE_INCLUDE_DIR" || test -z "$PIKE_MODULE_DIR"; then
+ AC_MSG_ERROR(Failed to figure out Pike module and include directories)
+ fi
+ AC_MSG_RESULT(yes)
+ PIKE=`echo $PIKE | pike -e 'int tries=100;
+ string orig,pike=Stdio.File("stdin")->read()-"\n";
+ orig=pike;
+ if(search(orig, "/"))
+ orig = combine_path(getcwd(), orig);
+ while(!catch(pike=readlink(pike)) && tries--)
+ ;
+ write(combine_path(dirname(orig), pike)); '`
+ PHP_ADD_INCLUDE($PIKE_INCLUDE_DIR)
+ if test "$prefix" != "NONE"; then
+ PIKE_C_INCLUDE=$prefix/include/`basename $PIKE`
+ else
+ PIKE_C_INCLUDE=/usr/local/include/`basename $PIKE`
+ fi
+ AC_MSG_CHECKING([for C includes in $PIKE_C_INCLUDE])
+ if test -f $PIKE_C_INCLUDE/version.h; then
+ PIKE_TEST_VER=`$PIKE -e 'string v; int rel;sscanf(version(), "Pike v%s release %d", v, rel); write(v+"."+rel);'`
+ ###### VERSION MATCH CHECK #######
+ PMAJOR="^#define PIKE_MAJOR_VERSION"
+ PMINOR="^#define PIKE_MINOR_VERSION"
+ PBUILD="^#define PIKE_BUILD_VERSION"
+
+ PIKE_CMAJOR_VERSION=0
+ PIKE_CMINOR_VERSION=0
+ PIKE_CBUILD_VERSION=0
+
+ PIKE_CMAJOR_VERSION=`grep "$PMAJOR" $PIKE_C_INCLUDE/version.h | sed -e 's/\(#define.*N \)\(.*\)/\2/'`
+ if test -z "$PIKE_CMAJOR_VERSION"; then
+ if test -n "`grep f_version $PIKE_C_INCLUDE/version.h`"; then
+ PIKE_CMAJOR_VERSION=6
+ fi
+ else
+ PIKE_CMINOR_VERSION=`grep "$PMINOR" $PIKE_C_INCLUDE/version.h | sed -e 's/\(#define.*N \)\(.*\)/\2/'`
+ PIKE_CBUILD_VERSION=`grep "$PBUILD" $PIKE_C_INCLUDE/version.h | sed -e 's/\(#define.*N \)\(.*\)/\2/'`
+ fi
+
+ if test "$PIKE_TEST_VER" = "${PIKE_CMAJOR_VERSION}.${PIKE_CMINOR_VERSION}.${PIKE_CBUILD_VERSION}"; then
+ PHP_ADD_INCLUDE($PIKE_C_INCLUDE)
+ PIKE_INCLUDE_DIR="$PIKE_INCLUDE_DIR, $PIKE_C_INCLUDE"
+ AC_MSG_RESULT(found)
+ else
+ AC_MSG_RESULT(version mismatch)
+ fi
+ else
+ AC_MSG_RESULT(not found)
+ fi
+ else
+ AC_MSG_ERROR([Caudium PHP5 requires Pike 7.0 or newer])
+ fi
+ PIKE_VERSION=`$PIKE -e 'string v; int rel;sscanf(version(), "Pike v%s release %d", v, rel); write(v+"."+rel);'`
+ AC_DEFINE(HAVE_CAUDIUM,1,[Whether to compile with Caudium support])
+ PHP_SELECT_SAPI(caudium, shared, caudium.c)
+ INSTALL_IT="\$(INSTALL) -m 0755 $SAPI_SHARED $PHP_CAUDIUM/lib/$PIKE_VERSION/PHP5.so"
+ RESULT=" *** Pike binary used: $PIKE
+ *** Pike include dir(s) used: $PIKE_INCLUDE_DIR
+ *** Pike version: $PIKE_VERSION"
+ dnl Always use threads since thread-free support really blows.
+ PHP_BUILD_THREAD_SAFE
+fi
+AC_MSG_RESULT($RESULT)
+
+dnl ## Local Variables:
+dnl ## tab-width: 4
+dnl ## End: