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