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

Reply via email to