summaryrefslogtreecommitdiff
path: root/sapi/caudium/config.m4
blob: a4f76db1b6441e9f1095e8fdeeb2351e6a8b0a85 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
dnl
dnl $Id$
dnl 

RESULT=no
AC_MSG_CHECKING(for Caudium support)
AC_ARG_WITH(caudium, 
[  --with-caudium=DIR      Build PHP as a Pike module for use with Caudium
                          DIR is the Caudium server dir, with the default value
                          /usr/local/caudium/server.],
[
    if test "$prefix" = "NONE"; then CPREF=/usr/local/; fi
	if test ! -d $withval ; then
      if test "$prefix" = "NONE"; then
	     withval=/usr/local/caudium/server/
	  else
	     withval=$prefix/caudium/server/
      fi
	fi
	if test -f $withval/bin/caudium; then
		PIKE=$withval/bin/caudium
	elif test -f $withval/bin/pike; then
		PIKE=$withval/bin/pike
	else
		AC_MSG_ERROR(Couldn't find a pike in $withval/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" -o -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 PHP4 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 $withval/lib/$PIKE_VERSION/PHP4.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

])
AC_MSG_RESULT($RESULT)

dnl ## Local Variables:
dnl ## tab-width: 4
dnl ## End: