#19124 [Asn->Csd]: config.m4 problems with ext/xmlrpc
| From: | sniper@php.net | Date: | Fri, 30 Aug 2002 03:06:57 +0000 |
| Subject: | #19124 [Asn->Csd]: config.m4 problems with ext/xmlrpc | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-18205@lists.php.net to get a copy of this message | ||
ID: 19124
Updated by: sniper@php.net
Reported By: list@firehawksystems.com
-Status: Assigned
+Status: Closed
Bug Type: XMLRPC-EPI related
Operating System: FreeBSD 4.3, but any Unix
PHP Version: 4.2.2
Assigned To: sniper
New Comment:
This bug has been fixed in CVS.
In case this was a PHP problem, snapshots of the sources are packaged
every three hours; this change will be in the next snapshot. You can
grab the snapshot at http://snaps.php.net/.
In case this was a documentation problem, the fix will show up soon at
http://www.php.net/manual/.
In case this was a PHP.net website problem, the change will show
up on the PHP.net site and on the mirror sites in short time.
Thank you for the report, and for helping us make PHP better.
Previous Comments:
------------------------------------------------------------------------
[2002-08-28 12:57:45] list@firehawksystems.com
Let me know if I can help test.
The thing for me is build option 3. I did test 1 and 3, but I couldn't
completely test 2 and 4 as I couldn't get xmlrpc to compile with the
freebsd ports package of xmlrpc-c. It did configure it correctly, just
code problems with the freebsd ports verion.
The reason for the HAVE_CONFIG change was when building shared it would
not pull in the COMPILE_DL_XMLRPC from the local copy of the config.h.
This made it a invalid extension because ZEND_GET_MODULE(xmlrpc) was
not compiled in. Sorry, I didn't think about how the WIN32 would do it
and may need changed to handle that platform.
Thanks for you help!
Brian
------------------------------------------------------------------------
[2002-08-28 12:28:03] sniper@php.net
I'm looking into this..the provided patch is not the way to do it.
------------------------------------------------------------------------
[2002-08-28 12:23:14] kalowsky@php.net
Can you please make your patch a unified diff (diff -u) which makes it
easier for us to test against.
Your HAVE_CONFIG change seems to disregard the initial intention which
was to provide functionality for Win32 users. You might want to make
that happen as well.
------------------------------------------------------------------------
[2002-08-27 11:26:40] list@firehawksystems.com
I tried to build xmlrpc as a shared extension (phpize, ./configure,
make), but when it builds it didn't have dependences for libexpat and
libiconv, but the expat, libiconv and XMLRPC_ functions are undefined.
While trying to fix this I rewrote the config.m4 to handle all the
following build cases:
1) built-in to PHP with libxmlrpc included from extension directory
--with-xmlrpc
2) built-in to PHP with shared libxmlrpc
--with-xmlrpc --with-libxmlrpc=/usr/local
3) built shared with libxmlrpc included from extension directory
--with-xmlrpc=shared
4) built shared with shared libxmlrpc
--with-xmlrpc=shared --with-libxmlrpc=/usr/local
There is one part I don't like and that is the new option of
--with-libxmlrpc is only used in a state where it is not equal to 'yes'
or 'no'. It would have a directory value, but I don't like how it I
did it.
Is this the best way to handle it? Comments?
For the new config.m4 to work, xmlrpc-epi-php.c needs this changed:
#ifndef PHP_WIN32
#include "php_config.h"
#endif
to:
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
Also what does PHP_FAST_OUTPUT do?
Thanks,
Brian
------
sinclude(ext/xmlrpc/libxmlrpc/acinclude.m4)
sinclude(ext/xmlrpc/libxmlrpc/xmlrpc.m4)
sinclude(libxmlrpc/acinclude.m4)
sinclude(libxmlrpc/xmlrpc.m4)
PHP_ARG_WITH(xmlrpc, for XMLRPC-EPI support,
[ --with-xmlrpc Include XMLRPC-EPI support.])
PHP_ARG_WITH(libxmlrpc, Use shared libxmlrpc for XMLRPC-EPI,
[ --with-libxmlrpc[=DIR] Will build and include the local copy of
XMLRPC-EPI,
unless the DIR is set. ])
PHP_ARG_WITH(expat-dir, libexpat dir for XMLRPC-EPI,
[ --with-expat-dir=DIR XMLRPC-EPI: libexpat dir for
XMLRPC-EPI.])
if test "$PHP_XMLRPC" != "no"; then
PHP_EXTENSION(xmlrpc, $ext_shared)
PHP_SUBST(XMLRPC_SHARED_LIBADD)
if test "$PHP_LIBXMLRPC" = "no" || test "$PHP_LIBXMLRPC" =
"yes";
then
XMLRPC_CHECKS
XMLRPC_SHARED_LIBADD=libxmlrpc/libxmlrpc.la
XMLRPC_LIBADD=libxmlrpc/libxmlrpc.la
XMLRPC_SUBDIRS=libxmlrpc
PHP_SUBST(XMLRPC_LIBADD)
PHP_SUBST(XMLRPC_SUBDIRS)
AC_DEFINE(HAVE_BUNDLED_XMLRPC, 1, [ ])
dnl PHP_FAST_OUTPUT($ext_builddir/libxmlrpc/Makefile)
LIB_BUILD($ext_builddir/libxmlrpc,$ext_shared,yes)
PHP_ADD_INCLUDE($ext_srcdir/libxmlrpc)
else
if test -r $PHP_XMLRPC/include/xmlrpc.h; then
XMLRPC_DIR=$PHP_XMLRPC
else
AC_MSG_CHECKING([for XMLRPC-EPI in default path])
for i in /usr/local /usr; do
if test -r $i/include/xmlrpc.h; then
XMLRPC_DIR=$i
AC_MSG_RESULT(found in $i)
fi
done
fi
if test -z "$XMLRPC_DIR"; then
AC_MSG_ERROR([XMLRPC-EPI not found, please reinstall the
XMLRPC-EPI distribution])
fi
PHP_ADD_INCLUDE($XMLRPC_DIR/include)
PHP_ADD_LIBRARY_WITH_PATH(xmlrpc, $XMLRPC_DIR/lib,
XMLRPC_SHARED_LIBADD)
fi
PHP_SUBST(EXPAT_SHARED_LIBADD)
AC_DEFINE(HAVE_LIBEXPAT, 1, [ ])
for i in $PHP_XML $PHP_EXPAT_DIR; do
if test -f $i/lib/libexpat.a -o -f
$i/lib/libexpat.$SHLIB_SUFFIX_NAME ; then
EXPAT_DIR=$i
fi
done
if test -z "$EXPAT_DIR"; then
AC_MSG_ERROR(not found. Please reinstall the expat
distribution.)
fi
PHP_ADD_INCLUDE($EXPAT_DIR/include)
PHP_ADD_LIBRARY_WITH_PATH(expat, $EXPAT_DIR/lib,
XMLRPC_SHARED_LIBADD)
if test "$PHP_ICONV" = "no"; then
PHP_ICONV=yes
fi
PHP_SETUP_ICONV(XMLRPC_SHARED_LIBADD, [], [
AC_MSG_ERROR([iconv not found, in order to build xmlrpc you need
the iconv library])
])
AC_DEFINE(HAVE_XMLRPC, 1, [ ])
fi
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=19124&edit=1