ID:               49648
 Updated by:       j...@php.net
 Reported By:      sven at whgl dot uni-frankfurt dot de
 Status:           Wont fix
 Bug Type:         Compile Failure
 Operating System: Linux
 PHP Version:      5.2.11
 New Comment:

And as why "wont fix": There's really nothing to fix. The macro works 
just like I want it to work. Changing it would potentially cause more 
problems than solving any.


Previous Comments:
------------------------------------------------------------------------

[2009-09-25 21:42:21] j...@php.net

This macro was created as quick'n'dirty solution. And your problem is 
easily solved by simply passing the libs like this: -L$OMAPI_DIR/lib -
l$LIBNAME -lomapi -ldst



------------------------------------------------------------------------

[2009-09-25 11:17:36] sven at whgl dot uni-frankfurt dot de

Here's the corresponding call from the config.m4, whre extra-libs is
not placed where it should be:

LIBNAME=dhcpctl
LIBSYMBOL=dhcpctl_initialize

PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,[
      PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $OMAPI_DIR/lib,
OMAPI_STATIC_LIBADD)
      AC_DEFINE(HAVE_OMAPILIB,1,we have the DHCPCTL lib.[])
  ],[
      AC_MSG_ERROR([dhcpctl lib not found.])
  ],[
      -L$OMAPI_DIR/lib -lomapi -ldst
    ])
PHP_SUBST(OMAPI_STATIC_LIBADD)

------------------------------------------------------------------------

[2009-09-25 07:20:27] j...@php.net

Where is the faulty config.m4 of yours or at least the call to the
macro which you obviously did wrong. There's nothing wrong with the
macro itself, it works exactly how it's supposed to..

------------------------------------------------------------------------

[2009-09-25 03:07:31] sven at whgl dot uni-frankfurt dot de

Here is a thread on the PECL mailing list showing more details,
including the wrong call to gcc.

http://marc.info/?t=125226693200002&r=1&w=2

Esp.:

http://marc.info/?l=pecl-dev&m=125324886632523&w=2

when PHP_CHECK_LIB is called with [dhcpctl, libsym, pass, fail, -lomapi
-ldst] will call gcc with:

cc -o conftest -g -O2   -lomapi -ldst conftest.c -ldhcpctl
                      [LDFLAGS, wrong placing!]     [LIBS]

other-libs need to be appended after -ldhcpctl and this is cleary the
macro's fault, since passing $5 as 5th parameter to AC_CHECK_LIB (and
removing the call to PHP_EVAL_LIBLINE restores the correct ordering of
the parameters, as expected)

And, to quote from the autoconf manual!:

"Variable: LDFLAGS

    Options for the linker. If it is not set in the environment when
configure runs, the default value is empty. configure uses this variable
when linking programs to test for C, C++, Objective C, and Fortran
features.

    This variable's contents should contain options like -s and -L that
affect only the behavior of the linker. Please see the explanation of
CFLAGS for what you can do if an option also affects other phases of the
compiler.

    *Don't use this variable to pass library names (-l) to the linker;
use LIBS instead. *
"

---

"Variable: LIBS

    -l options to pass to the linker. The default value is empty, but
some Autoconf macros may prepend extra libraries to this variable if
those libraries are found and provide necessary functions, see
Libraries. configure uses this variable when linking programs to test
for C, C++, and Fortran features. "

--- From AC_CHECK_LIB desc: --- 

If linking with library results in unresolved symbols that would be
resolved by linking with additional libraries, give those libraries as
the other-libraries argument, separated by spaces: e.g., -lXt -lX11.
Otherwise, this macro fails to detect that library is present, because
linking the test program always fails with unresolved symbols. The
other-libraries argument should be limited to cases where it is
desirable to test for one library in the presence of another that is not
already in LIBS. 

------------------
Since the dpendant libs are not in LIBS yet, PHP_CHECK_LIB needs to
take care of either putting them there, or pushing them down into the
5th parameter of AC_CHECK_LIB. (which is not done either).

------------------------------------------------------------------------

[2009-09-24 08:41:56] j...@php.net

Not enough information. And there's nothing wrong with the macro
either, it's been used in dozens of places without any problems. 

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/49648

-- 
Edit this bug report at http://bugs.php.net/?id=49648&edit=1

Reply via email to