Dear all,
I'm asking your help because I'm not able to solve an issue probably related to
some foolish mistake I have not yet discovered.
I'm trying to develop an experimental extension to interface LIXA library
(http:/lixa.sourceforge.net/).
I have created the basic stuff (config.m4, lixa.c, php_lixa.h and so on).
If I use this sequence from the ext/lixa directory:
/opt/php/bin/phpize
./configure --help
I can see the lixa extension is available:
[...]
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-libdir=NAME Look for libraries in .../NAME rather than .../lib
--with-php-config=PATH Path to php-config php-config
--with-lixa=FILE Include LIXA support. File is the path to lixa-config
[...]
and I can compile with:
./configure --with-lixa=/opt/lixa/bin/lixa-config
--with-php-config=/opt/php/bin/php-config
the build process runs as expected and the extension is available after an
addition to php.ini (extension=[...]/ext/lixa/modules/lixa.so).
If I use this sequence from the PHP root directory:
./buildconf --force
as described here:
talks.somabo.de/200510_zend_conf_php_extension_development.pdf
I cannot see "lixa" as an available option of my configure:
./configure --help|grep lixa
is empty.
If I try to build PHP anyway, I obtain:
tiian@mojan:~/src/swig/php5.4-201202241630$ ./configure
--with-lixa=/opt/lixa/bin/lixa-config
configure: WARNING: unrecognized options: --with-lixa
that's a reasonable result because "lixa" extension does not appear in
configure help.
It seems the global "configure" does not recognize my extension.
Here's the config.m4 I have built in the last trials:
dnl config.m4 start
PHP_ARG_WITH(lixa, for LIXA support,
[ --with-lixa=FILE Include LIXA support. File is the path to
lixa-config program])
if test "$PHP_LIXA" != "no"; then
LIXA_CONFIG=$PHP_LIXA
dnl --with-lixa -> SWIG is a pre-requisite
AC_CHECK_PROGS(SWIG, [swig], [])
if test -z $SWIG
then
AC_MSG_ERROR([cannot find swig program])
fi
dnl use lixa-config to determine LIXA include dir
AC_MSG_CHECKING([for LIXA using $LIXA_CONFIG])
LIXA_INCLUDE="$($LIXA_CONFIG --include-dir)"
if test -r "$LIXA_INCLUDE/tx.h"
then
AC_MSG_RESULT(found tx.h in $LIXA_INCLUDE)
LIXA_DIR="$($PHP_LIXA --prefix)"
fi
if test -z "$LIXA_DIR"
then
AC_MSG_RESULT([not found])
AC_MSG_ERROR([Please specify a valid lixa-config utility
program or reinstall the LIXA distribution])
fi
dnl # --with-lixa -> add include path
PHP_ADD_INCLUDE($($LIXA_CONFIG --include-dir))
AC_MSG_CHECKING([if LIXA is compiled with PostgreSQL support])
tmp=$($LIXA_CONFIG --include-dir-postgresql 2>/dev/null)
if test $? -eq 0
then
PHP_ADD_INCLUDE($tmp)
HAVE_LIXA_POSTGRESQL=1
AC_DEFINE([HAVE_LIXA_POSTGRESQL], [1], [Define to 1 if LIXA is
compiled with PostgreSQL support])
AC_MSG_RESULT([yes])
else
HAVE_LIXA_POSTGRESQL=0
AC_MSG_RESULT([no])
fi
AC_MSG_CHECKING([if LIXA is compiled with MySQL support])
tmp=$($LIXA_CONFIG --include-dir-mysql 2>/dev/null)
if test $? -eq 0
then
PHP_ADD_INCLUDE($tmp)
HAVE_LIXA_MYSQL=1
AC_DEFINE([HAVE_LIXA_MYSQL], [1], [Define to 1 if LIXA is
compiled with MySQL support])
AC_MSG_RESULT([yes])
else
HAVE_LIXA_MYSQL=0
AC_MSG_RESULT([no])
fi
dnl # --with-lixa -> dynamically generate lixa.i interface file for SWIG
LIXA_INTERFACE="lixa.i"
AC_MSG_NOTICE([Producing file $LIXA_INTERFACE dynamically...])
echo "%module lixa" > $LIXA_INTERFACE
echo "%{" >> $LIXA_INTERFACE
echo "#include \"tx.h\"" >> $LIXA_INTERFACE
if test $HAVE_LIXA_POSTGRESQL -eq 1
then
echo "#include \"lixapq.h\"" >> $LIXA_INTERFACE
fi
if test $HAVE_LIXA_MYSQL -eq 1
then
echo "#include \"lixamy.h\"" >> $LIXA_INTERFACE
fi
echo "%}" >> $LIXA_INTERFACE
echo "%include \"tx.h\"" >> $LIXA_INTERFACE
if test $HAVE_LIXA_POSTGRESQL -eq 1
then
echo "%include \"lixapq.h\"" >> $LIXA_INTERFACE
fi
if test $HAVE_LIXA_MYSQL -eq 1
then
echo "%include \"lixamy.h\"" >> $LIXA_INTERFACE
fi
dnl # --with-lixa -> building LIXA interface using SWIG
AC_MSG_CHECKING([if LIXA wrapper can be created with SWIG])
$SWIG -php -I$LIXA_INCLUDE -o lixa.c $LIXA_INTERFACE
if test $? -eq 0
then
AC_MSG_RESULT([yes])
else
AC_MSG_ERROR([unable to create LIXA php wrapper using SWIG])
fi
dnl # --with-lixa -> check for lib and symbol presence
LIBNAME=lixac # you may want to change this
LIBSYMBOL=tx_open # you most likely want to change this
PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
[
PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $($PHP_LIXA --lib-dir),
LIXA_SHARED_LIBADD)
AC_DEFINE(HAVE_LIXALIB,1,[ ])
],[
AC_MSG_ERROR([wrong lixac lib version or lib not found])
],[
$($PHP_LIXA --libs)
])
dnl
AC_DEFINE(HAVE_LIXA, 1, [Whether you have LIXA])
PHP_SUBST(LIXA_SHARED_LIBADD)
PHP_NEW_EXTENSION(lixa, lixa.c, $ext_shared)
fi
dnl config.m4 end
I did the same with a simpler test extension named "sample" with a trivial
config.m4:
PHP_ARG_ENABLE(sample,
[Whether to enable the "sample" extension],
[ --enable-sample Enable "sample" extension support])
if test $PHP_SAMPLE != "no"; then
PHP_SUBST(SAMPLE_SHARED_LIBADD)
PHP_NEW_EXTENSION(sample,sample.c,$ext_shared)
fi
but I've obtained the same result.
Any hint will be very useful.
Thanks in advance.
Ch.F.
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php