diff -ru ./configure.in ./configure.in --- ./configure.in 2006-10-06 02:32:11.000000000 +0200 +++ ./configure.in 2006-10-06 02:34:36.000000000 +0200 @@ -1802,9 +1802,16 @@ dnl PHP/MapScript module options dnl --------------------------------------------------------------------- -AC_CHECKING(for PHP/MapScript module options) -AC_ARG_WITH(php, -[ --with-php=DIR Specify directory where PHP4's include files are +AC_CHECKING(for PHP4/MapScript module options) +AC_ARG_WITH(php4, +[ --with-php4=DIR Specify directory where PHP4's include files are + installed (or a pointer to the full source tree) + Required in order to compile the PHP/MapScript + module.],,) + +AC_CHECKING(for PHP5/MapScript module options) +AC_ARG_WITH(php5, +[ --with-php5=DIR Specify directory where PHP5's include files are installed (or a pointer to the full source tree) Required in order to compile the PHP/MapScript module.],,) @@ -1815,8 +1822,10 @@ link php_mapscript.so. Try this only if the default internal macro didn't work.],,) -if test -n "$with_php" -a -d "$with_php" ; then - AC_EXPAND_PATH($with_php, PHP_SRC_DIR) +dnl -------------------------------------------------------------------------- +dnl No php version specific +dnl -------------------------------------------------------------------------- +if test -n "$with_php4" -o -n "$with_php5" ; then dnl dnl Checks for shared library linking. dnl @@ -1825,7 +1834,6 @@ dnl (The perl-V macro was the default in 3.6 and before but this was dnl changed in 3.7 to use the internal AC_LD_SHARED macro by default) dnl - if test "$enable_perlv_ld_detect" = "yes" ; then AC_MSG_RESULT(Using perl -V macro to figure ld command to link php_mapscript.so) @@ -1847,6 +1855,10 @@ PHP_CC="$CC $C_PIC" PHP_LD="$LD_SHARED" fi +fi + +if test -n "$with_php4" -a -d "$with_php4" ; then + AC_EXPAND_PATH($with_php4,PHP_SRC_DIR) dnl dnl Look for PHP3's config.h or PHP4's php_config.h. @@ -1936,6 +1948,94 @@ AC_SUBST(MAKE_PHPMS, $MAKE_PHPMS) AC_SUBST(MAKE_PHPMS_CLEAN, $MAKE_PHPMS_CLEAN) +if test -n "$with_php5" -a -d "$with_php5" ; then + AC_EXPAND_PATH($with_php5, PHP5_SRC_DIR) + + dnl + dnl Look for PHP3's config.h or PHP4's php_config.h. + dnl We'll need the config file to find info about the PHP configuration + dnl + AC_MSG_CHECKING([for location of config.h or php_config.h]) + dnl In PHP3, it was called config.h + test -f "$PHP5_SRC_DIR/config.h" && PHP5_CONFIG_H="$PHP5_SRC_DIR/config.h" + + dnl In PHP 4.0.1 to 4.0.3, it was php-4.0.x/php_config.h + test -f "$PHP5_SRC_DIR/php_config.h" && PHP5_CONFIG_H="$PHP5_SRC_DIR/php_config.h" + + dnl Starting with PHP 4.0.4, it's php-4.0.x/main/php_config.h + test -f "$PHP5_SRC_DIR/main/php_config.h" && PHP5_CONFIG_H="$PHP5_SRC_DIR/main/php_config.h" + + dnl If php was installed, then the headers are under $prefix/include/php/* + test -f "$PHP5_SRC_DIR/include/php/main/php_config.h" && PHP5_SRC_DIR="$PHP5_SRC_DIR/include/php/" && PHP5_CONFIG_H="$PHP5_SRC_DIR/main/php_config.h" + + if test -n "$PHP5_CONFIG_H" ; then + AC_MSG_RESULT([$PHP5_CONFIG_H]) + else + AC_MSG_ERROR([ +!!! Could not find config.h or php_config.h in $PHP5_SRC_DIR. !!! +!!! Has PHP5 been configured yet? !!!]) + fi + + dnl + dnl Check which PHP5 version we're using. + dnl + AC_MSG_CHECKING([whether we have PHP5]) + if test -n "`grep 'ZEND_API' $PHP5_CONFIG_H`" ; then + PHP5_VERSION_FLAG="-DPHP4" + else + AC_MSG_ERROR([ +!!! PHP MapScript now requires PHP 5.0.0 or more recent. !!! +!!! Support for PHP3 has been dropped after MapServer version 3.5. !!!]) + fi + AC_MSG_RESULT([$PHP5_VERSION_FLAG]) + + dnl + dnl Check if PHP was compiled with the bundled regex, and if so then + dnl use the same version to compile MapServer. + dnl + AC_MSG_CHECKING([whether we should use PHP5's regex]) + if test -n "`grep 'define REGEX 1' $PHP5_CONFIG_H`" ; then + AC_MSG_RESULT(yes) + + dnl We'll check for regex_extra.h - that might let use build + dnl without the source using libphp_common.so + test -f "$PHP5_SRC_DIR/regex/regex_extra.h" && PHP5_NO_SOURCE="1" + if test -n "$PHP5_NO_SOURCE" ; then + dnl Found regex_extra.h + USE_PHP5_REGEX="-DUSE_PHP_REGEX" + PHP5_REGEX_OBJ=php_regex.o + AC_MSG_RESULT([ found regex_extra.h - building PHP MapScript with PHP5's bundled regex ]) + else + AC_MSG_ERROR([ +!!! PHP5 uses its bundled regex library but regex/regex_extra.h cannot be !!! +!!! found. !!!]) + fi + + else + AC_MSG_RESULT(no) + fi + + PHP5MS_MAKEFILE=mapscript/php5/Makefile + MAKE_PHP5MS=php5_mapscript + MAKE_PHP5MS_CLEAN=php_mapscript_clean + + AC_SUBST(PHP5_VERSION_FLAG, $PHP5_VERSION_FLAG) + AC_SUBST(PHP5_SRC_DIR, $PHP5_SRC_DIR) + AC_SUBST(PHP5_REGEX_INC, $PHP5_REGEX_INC) + AC_SUBST(PHP5_REGEX_OBJ, $PHP5_REGEX_OBJ) + AC_SUBST(USE_PHP5_REGEX, $USE_PHP5_REGEX) + + AC_MSG_RESULT([ PHP5/MapScript module configured.]) + AC_MSG_RESULT([ $PHP5_VERSION_FLAG, $PHP5_SRC_DIR]) +elif test -n "$with_php5" -a "$with_php5" != "no" ; then + AC_MSG_ERROR([Missing or invalid PHP5 source directory in --with-php5=DIR.]) +else + AC_MSG_RESULT([ PHP5/MapScript module not configured.]) +fi + +AC_SUBST(MAKE_PHP5MS, $MAKE_PHP5MS) +AC_SUBST(MAKE_PHP5MS_CLEAN, $MAKE_PHP5MS_CLEAN) + dnl --------------------------------------------------------------------- dnl 'apxs' option for PHP built as an Apache module (libphp3.so) @@ -2052,5 +2152,5 @@ AC_SUBST(ALL_STATIC_LIB, $ALL_STATIC_LIB) AC_SUBST(RPATHS, [$RPATHS]) -AC_OUTPUT(Makefile $PHPMS_MAKEFILE mapscript/java/Makefile mapscript/csharp/Makefile) +AC_OUTPUT(Makefile $PHPMS_MAKEFILE $PHP5MS_MAKEFILE mapscript/java/Makefile mapscript/csharp/Makefile) diff -ru ./Makefile.in ./Makefile.in --- ./Makefile.in 2006-10-06 02:32:11.000000000 +0200 +++ ./Makefile.in 2006-10-06 01:02:10.000000000 +0200 @@ -163,6 +163,8 @@ # PHP_REGEX_OBJ=@PHP_REGEX_OBJ@ PHP_REGEX_INC=@PHP_REGEX_INC@ +PHP5_REGEX_OBJ=@PHP5_REGEX_OBJ@ +PHP5_REGEX_INC=@PHP5_REGEX_INC@ # # Multithreading support. @@ -238,11 +240,14 @@ .cpp.o: $(CXX) -c $(CXXFLAGS) $< -o $@ -all: $(MAKE_GD) libmap.a $(EXTRA_DEFAULT) $(EXE_LIST) @MAKE_PHPMS@ +all: $(MAKE_GD) libmap.a $(EXTRA_DEFAULT) $(EXE_LIST) @MAKE_PHPMS@ @MAKE_PHP5MS@ php3_mapscript:: $(LIBMAP_STATIC) cd mapscript/php3; $(MAKE); cd ../.. +php5_mapscript:: $(LIBMAP_STATIC) + cd mapscript/php5; $(MAKE); cd ../.. + maplexer.o: maplexer.c map.h mapfile.h maplexer.c: maplexer.l @@ -319,6 +324,9 @@ php3_mapscript_clean:: cd mapscript/php3; $(MAKE) clean; cd ../.. +php5_mapscript_clean:: + cd mapscript/php3; $(MAKE) clean; cd ../.. + install: @echo "" @echo "***** MapServer Installation *****" @@ -339,7 +347,7 @@ (cd $(INST_BIN) && rm $(EXE_LIST) ) (cd $(INST_LIB) && rm $(LIBMAP_SH_VER) $(LIBMAP_SHARED) ) -clean: @MAKE_PHPMS_CLEAN@ +clean: @MAKE_PHPMS_CLEAN@ @MAKE_PHP5MS_CLEAN@ rm -f $(LIBMAP_STATIC) $(LIBMAP_SHARED) $(LIBMAP_SH_VER) *.o $(EXE_LIST) exe-clean: diff -ru ./mapscript/php5/Makefile.in ./mapscript/php5/Makefile.in --- ./mapscript/php5/Makefile.in 2006-10-06 02:32:11.000000000 +0200 +++ ./mapscript/php5/Makefile.in 2006-10-06 03:11:51.000000000 +0200 @@ -35,26 +35,26 @@ CC = @PHP_CC@ LD = @PHP_LD@ -CFLAGS = @CFLAGS@ @USE_PHP_REGEX@ -DCOMPILE_DL=1 @PHP_VERSION_FLAG@ +CFLAGS = @CFLAGS@ @USE_PHP5_REGEX@ -DCOMPILE_DL=1 @PHP5_VERSION_FLAG@ RUNPATHS= @RPATHS@ # # Set PHP_SRC_DIR to point to the root of the PHP source tree # -PHP_SRC_DIR = @PHP_SRC_DIR@ +PHP_SRC_DIR = @PHP5_SRC_DIR@ PHP_INC = -I$(PHP_SRC_DIR) -I$(PHP_SRC_DIR)/dl -I$(PHP_SRC_DIR)/main \ -I$(PHP_SRC_DIR)/Zend -I$(PHP_SRC_DIR)/include \ -I$(PHP_SRC_DIR)/TSRM @APACHE_INC@ # -# IMPORTANT NOTE ABOUT REGEX FOR PHP_MAPSCRIPT USERS: +# IMPORTANT NOTE ABOUT REGEX FOR PHP5_MAPSCRIPT USERS: # -# In order to compile the PHP_MAPSCRIPT module, we have to make MapServer -# uses the same version of the REGEX library that PHP was compiled with: +# In order to compile the PHP5_MAPSCRIPT module, we have to make MapServer +# uses the same version of the REGEX library that PHP5 was compiled with: # -PHP_REGEX_OBJ=@PHP_REGEX_OBJ@ -PHP_REGEX_INC=@PHP_REGEX_INC@ +PHP5_REGEX_OBJ=@PHP5_REGEX_OBJ@ +PHP5_REGEX_INC=@PHP5_REGEX_INC@ # @@ -75,20 +75,20 @@ # The rest of the file should not have to be edited... # -CFLAGS112 = $(CFLAGS) $(MS_DEFINE) $(MS_INC) $(PHP_INC) $(PHP_REGEX_INC) +CFLAGS112 = $(CFLAGS) $(MS_DEFINE) $(MS_INC) $(PHP_INC) $(PHP5_REGEX_INC) all: php_mapscript.so -PHPMS_OBJS = php_mapscript_util.o php_mapscript.o mapscript_i.o $(PHP_REGEX_OBJ) +PHP5MS_OBJS = php_mapscript_util.o php_mapscript.o mapscript_i.o $(PHP5_REGEX_OBJ) -PHPPROJ_OBJS = php_mapscript_util.o php_proj.o $(PHP_REGEX_OBJ) +PHP5PROJ_OBJS = php_mapscript_util.o php_proj.o $(PHP5_REGEX_OBJ) -php_mapscript.so: $(PHPMS_OBJS) ../../libmap.a - $(LD) -o $@ $(PHPMS_OBJS) $(MS_LIBS) +php_mapscript.so: $(PHP5MS_OBJS) ../../libmap.a + $(LD) -o $@ $(PHP5MS_OBJS) $(MS_LIBS) -php_proj.so: $(PHPPROJ_OBJS) - $(LD) -o $@ $(PHPPROJ_OBJS) $(MS_LIBS) +php_proj.so: $(PHP5PROJ_OBJS) + $(LD) -o $@ $(PHP5PROJ_OBJS) $(MS_LIBS) %.o: %.c php_mapscript_util.h php_mapscript.h $(CC) $(CFLAGS112) -c -o $@ $<