autoconf
[Top][All Lists]
Advanced

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

Conditional Linking Question


From: Jeff Gold
Subject: Conditional Linking Question
Date: Sun, 13 Jan 2002 22:28:10 -0500
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.7) Gecko/20011226

Greetings,
I've been migrating an existing project to autoconf and automake, and I've encountered an interesting problem. I've consulted the fine manual, mailing list archives and Google, but no satisfactory solution has emerged. I wonder if anyone here has a solution to this puzzle. The program I'm constructing can be compiled to use either POSIX threads or System V IPC. I want configure to select one of these based on which header files are available. That's quite easy, but if threads are in use I need to link with libpthread and define _REENTRANT. Unfortunately AC_CHECK_HEADER and AC_CHECK_HEADERS don't define HAVE_<HEADER>_H as shell variables, so that leaves me with a configure.in with this:

    use_pthreads=no
    AC_CHECK_HEADER(pthread.h, use_pthreads=yes)
    AM_CONDITIONAL(ENABLE_PTHREADS, test "$use_pthreads" = "yes")
    if test "$use_pthread" = "yes"; then
      AC_DEFINE(HAVE_PTHREAD_H)
    else
      AC_CHECK_HEADER(sys/ipc.h, AC_DEFINE(HAVE_SYS_IPC_H))
    fi

This is clearly unmaintainable. For example, if I wanted to add Windows threads under Cygwin it would get even more ugly. What I want is something like this:

    use_multi=unknown
    AC_CHECK_HEADERS(pthread.h sys/ipc.h, use_multi=$ac_safe; break)
    AM_CONDITIONAL(ENABLE_PTHREADS, test "$use_multi" = "pthread_h")

This also works, but obviously $ac_safe is an implementation detail subject to change without notice. I don't want make this a user selected feature or check for the same header twice. Can anyone tell me what the right way to do this might be? (Please copy on any replies as I'm not subscribed.)
                                             Thanks
                                                 Jeff




reply via email to

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