config.m4 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. dnl
  2. dnl $Id$
  3. dnl
  4. RESULT=no
  5. PHP_ARG_WITH(caudium,,
  6. [ --with-caudium[=DIR] Build PHP as a Pike module for use with Caudium.
  7. DIR is the Caudium server dir [/usr/local/caudium/server]], no, no)
  8. AC_MSG_CHECKING([for Caudium support])
  9. if test "$PHP_CAUDIUM" != "no"; then
  10. if test "$prefix" = "NONE"; then CPREF=/usr/local/; fi
  11. if test ! -d $PHP_CAUDIUM ; then
  12. if test "$prefix" = "NONE"; then
  13. PHP_CAUDIUM=/usr/local/caudium/server/
  14. else
  15. PHP_CAUDIUM=$prefix/caudium/server/
  16. fi
  17. fi
  18. if test -f $PHP_CAUDIUM/bin/caudium; then
  19. PIKE=$PHP_CAUDIUM/bin/caudium
  20. elif test -f $PHP_CAUDIUM/bin/pike; then
  21. PIKE=$PHP_CAUDIUM/bin/pike
  22. else
  23. AC_MSG_ERROR([Could not find a pike in $PHP_CAUDIUM/bin/])
  24. fi
  25. 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
  26. PIKE_MODULE_DIR=`$PIKE --show-paths 2>&1| grep '^Module' | sed -e 's/.*: //'`
  27. PIKE_INCLUDE_DIR=`echo $PIKE_MODULE_DIR | sed -e 's,lib/pike/modules,include/pike,' -e 's,lib/modules,include/pike,' `
  28. if test -z "$PIKE_INCLUDE_DIR" || test -z "$PIKE_MODULE_DIR"; then
  29. AC_MSG_ERROR(Failed to figure out Pike module and include directories)
  30. fi
  31. AC_MSG_RESULT(yes)
  32. PIKE=`echo $PIKE | pike -e 'int tries=100;
  33. string orig,pike=Stdio.File("stdin")->read()-"\n";
  34. orig=pike;
  35. if(search(orig, "/"))
  36. orig = combine_path(getcwd(), orig);
  37. while(!catch(pike=readlink(pike)) && tries--)
  38. ;
  39. write(combine_path(dirname(orig), pike)); '`
  40. PHP_ADD_INCLUDE($PIKE_INCLUDE_DIR)
  41. if test "$prefix" != "NONE"; then
  42. PIKE_C_INCLUDE=$prefix/include/`basename $PIKE`
  43. else
  44. PIKE_C_INCLUDE=/usr/local/include/`basename $PIKE`
  45. fi
  46. AC_MSG_CHECKING([for C includes in $PIKE_C_INCLUDE])
  47. if test -f $PIKE_C_INCLUDE/version.h; then
  48. PIKE_TEST_VER=`$PIKE -e 'string v; int rel;sscanf(version(), "Pike v%s release %d", v, rel); write(v+"."+rel);'`
  49. ###### VERSION MATCH CHECK #######
  50. PMAJOR="^#define PIKE_MAJOR_VERSION"
  51. PMINOR="^#define PIKE_MINOR_VERSION"
  52. PBUILD="^#define PIKE_BUILD_VERSION"
  53. PIKE_CMAJOR_VERSION=0
  54. PIKE_CMINOR_VERSION=0
  55. PIKE_CBUILD_VERSION=0
  56. PIKE_CMAJOR_VERSION=`grep "$PMAJOR" $PIKE_C_INCLUDE/version.h | sed -e 's/\(#define.*N \)\(.*\)/\2/'`
  57. if test -z "$PIKE_CMAJOR_VERSION"; then
  58. if test -n "`grep f_version $PIKE_C_INCLUDE/version.h`"; then
  59. PIKE_CMAJOR_VERSION=6
  60. fi
  61. else
  62. PIKE_CMINOR_VERSION=`grep "$PMINOR" $PIKE_C_INCLUDE/version.h | sed -e 's/\(#define.*N \)\(.*\)/\2/'`
  63. PIKE_CBUILD_VERSION=`grep "$PBUILD" $PIKE_C_INCLUDE/version.h | sed -e 's/\(#define.*N \)\(.*\)/\2/'`
  64. fi
  65. if test "$PIKE_TEST_VER" = "${PIKE_CMAJOR_VERSION}.${PIKE_CMINOR_VERSION}.${PIKE_CBUILD_VERSION}"; then
  66. PHP_ADD_INCLUDE($PIKE_C_INCLUDE)
  67. PIKE_INCLUDE_DIR="$PIKE_INCLUDE_DIR, $PIKE_C_INCLUDE"
  68. AC_MSG_RESULT(found)
  69. else
  70. AC_MSG_RESULT(version mismatch)
  71. fi
  72. else
  73. AC_MSG_RESULT(not found)
  74. fi
  75. else
  76. AC_MSG_ERROR([Caudium PHP5 requires Pike 7.0 or newer])
  77. fi
  78. PIKE_VERSION=`$PIKE -e 'string v; int rel;sscanf(version(), "Pike v%s release %d", v, rel); write(v+"."+rel);'`
  79. AC_DEFINE(HAVE_CAUDIUM,1,[Whether to compile with Caudium support])
  80. PHP_SELECT_SAPI(caudium, shared, caudium.c)
  81. INSTALL_IT="\$(INSTALL) -m 0755 $SAPI_SHARED $PHP_CAUDIUM/lib/$PIKE_VERSION/PHP5.so"
  82. RESULT=" *** Pike binary used: $PIKE
  83. *** Pike include dir(s) used: $PIKE_INCLUDE_DIR
  84. *** Pike version: $PIKE_VERSION"
  85. dnl Always use threads since thread-free support really blows.
  86. PHP_BUILD_THREAD_SAFE
  87. fi
  88. AC_MSG_RESULT($RESULT)
  89. dnl ## Local Variables:
  90. dnl ## tab-width: 4
  91. dnl ## End: