autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Problem with LIBS generated by a macro


From: Sergio Belkin
Subject: Problem with LIBS generated by a macro
Date: Sat, 30 Oct 2010 18:55:17 -0300

Hi,

I've autoconfiscated a project that link against libresolv and
libtpthread, and optionally against ssl, mysqlclient and pq. I am
working on Fedora 13 (i686).

I've found a macro AX_EXT_HAVE_LIB
(http://www.gnu.org/software/autoconf-archive/ax_ext_have_lib.html)
that "is identical to AC_SEARCH_LIBS with the exception that will add
-L<directory> when looking, and use a different variable for each
directory. " It seems great for me!

The problem is that at the end only take the last library found, in my
case "pq".

It seems that macro override the earlier value of "LIBS" variable.

 I've examined the configure script but it's a bit tricky, you may
read a snippet about the macro on http://pastebin.com/vHKYp0UR

I've tried modifying macro, replacing the final LIBS="$new_libs" por
LIBS="$new_libs $LIBS" which you may read  on
http://pastebin.com/DNCCfgnU

But now LIBS ends as: '-lpq -lmysqlclient -lssl -lpthread -lresolv
-lssl -lpthread -lresolv '

It seems harmless but it's too ugly, isn't it? Please could you help
me to get the correct value of LIBS variable

The autoconf is as follows:
AC_PREREQ([2.59])
AC_INIT([UpTools],[8.5.3],address@hidden,[UpTools])
AM_INIT_AUTOMAKE([foreign -Wall -Werror])
LT_PREREQ([2.2])
LT_INIT([dlopen])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([UpConf.cc])
AC_CONFIG_HEADERS([config.h])
AC_PREFIX_DEFAULT(/usr)
AC_PROG_CXX
AX_EXT_HAVE_LIB([/lib64 /lib /usr/lib64 /usr/lib64 /usr/lib
/usr/local/lib64 /usr/local/lib],resolv,inet_net_pton)
AS_ECHO($LIBS)
AX_EXT_HAVE_LIB([/lib64 /lib /usr/lib64 /usr/lib64 /usr/lib
/usr/local/lib64 /usr/local/lib],pthread,pthread_create)
AC_ARG_WITH([ssl],
            [AS_HELP_STRING([--with-ssl],
              [enable support for ssl @<:@default=check@:>@])],
            [],
            [with_ssl=check])
AS_IF([test "x$with_ssl" != xno],[AX_EXT_HAVE_LIB(/lib64 /lib
/usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib
/usr/local/lib64/ssl /usr/lib/ssl , ssl, SSL_library_init)],
[if test "x$with_ssl" != xcheck -a "x$ext_lib_found" = xno
then AC_MSG_FAILURE([ssl test failed (--without-ssl to disable)])
fi
])
if test x"$ext_lib_found" = xyes
        then found_ssl=yes
fi
AC_ARG_WITH([mysql],
            [AS_HELP_STRING([--with-mysql],
              [enable support for mysql @<:@default=check@:>@])],
            [],
            [with_mysql=check])
AS_IF([test "x$with_mysql" != xno],[AX_EXT_HAVE_LIB(/lib64 /lib
/usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib
/usr/local/lib64/mysql /usr/lib/mysql , mysqlclient, mysql_close)],
[if test "x$with_mysql" != xcheck -a "x$ext_lib_found" = xno
then AC_MSG_FAILURE([mysql test failed (--without-mysql to disable)])
fi
])
if test x"$ext_lib_found" = xyes
        then found_mysql=yes
fi
AC_ARG_WITH([postgresql],
            [AS_HELP_STRING([--with-postgresql],
              [enable support for mysql @<:@default=check@:>@])],
            [],
            [with_postgresql=check])
AS_IF([test "x$with_postgresql" != xno],[AX_EXT_HAVE_LIB(/lib64 /lib
/usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib
/usr/local/lib64/postgresql /usr/lib/postgresql , pq, PQfinish)],
[if test "x$with_postgresql" != xcheck -a "x$ext_lib_found" = xno
then AC_MSG_FAILURE([postgresql test failed (--without-postgresql to disable)])
fi
])
if test x"$ext_lib_found" = xyes
        then found_postgresql=yes
fi
AC_HEADER_RESOLV
if test "x${found_ssl}" = xyes
        then AC_CHECK_HEADERS([openssl/ssl.h yassl/ssl.h], [break])
        if test x"$ac_cv_header_openssl_ssl_h" != xyes -a
x"$ac_cv_header_yassl_ssl_h" != xyes
                then AC_MSG_FAILURE([ssl headers not found or not usable])
                else ssl=true
        fi
        else ssl=false
fi
if test "x$want_mysql" != xno -a "x$found_mysql" != xno
        then AC_CHECK_HEADERS([mysql/mysql.h mysql.h], [break])
        if test x"$ac_cv_header_mysql_mysql_h" != xyes -a
x"$ac_cv_header_mysql_h" != xyes
                then AC_MSG_FAILURE([MySQL headers not found or not usable])
                else mysql=true
        fi
        else mysql=false
fi
if test x"${found_pq}" = xyes
        then AC_CHECK_HEADERS([postgresql/libpq-fe.h libpq-fe.h], [break])
        if test x"$ac_cv_header_postgresql_libpq_fe_h" != xyes -a
x"$ac_cv_header_libpq_fe_h" != xyes
                then AC_MSG_FAILURE([PostgreSQL headers not found or
not usable])
                else postgresql=true
        fi
        else postgresql=false
fi
AM_CONDITIONAL([ssl], [test x$ssl = xtrue])
AM_CONDITIONAL([mysql], [test x$mysql = xtrue])
AM_CONDITIONAL([postgresql], [test x$postgresql = xtrue])
if test x"$ssl" = xfalse
then
        ss="No. You may enable with --enable-ssl"
else
        ss="Yes"
fi
if test x"$mysql" != xtrue
then
        ms="No. You may enable with --with-mysql"
else
        ms="Yes"
fi
if test x"$postgresql" = xfalse
then
        pq="No. You may enable with --with-postgresql"
else
        pq="Yes"
fi
AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h stdlib.h
string.h strings.h sys/ioctl.h sys/socket.h sys/time.h syslog.h
unistd.h])
AC_HEADER_STDBOOL
AC_C_INLINE
AC_TYPE_SIZE_T
AC_FUNC_MKTIME
AC_CHECK_FUNCS([gethostbyname localtime_r memmove memset regcomp
select socket strcasecmp strerror strncasecmp])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
echo \
"-------------------------------------------------
Congratulations! You have created a Makefile for: ${PACKAGE_NAME}
${PACKAGE_VERSION}
Prefix is '${prefix}'.
Compiler is '${CXX}
LIBS are '${LIBS}'
ssl support: '${ss}'
Wanted MySQL: ${want_mysql}
mysql support: ${found_mysql}
postgresql support: '${pq}'
UpTools will be Built on: '${build}'
UpTools will Built for: '${host}'
Now type 'make'  in order to compile
If you want to test your compiling type 'make check'
After compiling, you can install with 'make install'
At the end, you can check your installation with 'make installcheck'
--------------------------------------------------"
EOF


TIA!
-- 
--
Sergio Belkin http://www.sergiobelkin.com
Watch More TV http://sebelk.blogspot.com
Sergio Belkin -



reply via email to

[Prev in Thread] Current Thread [Next in Thread]