libtool
[Top][All Lists]
Advanced

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

AC_REQUIRE hell


From: Akim Demaille
Subject: AC_REQUIRE hell
Date: Fri, 12 Dec 2008 11:17:08 +0100

Hi!

There must be something not going too well in the AC_REQUIRES of ltld. In the attached configure.ac, some macros are issued out of order, which results in, for instance, shrext_cmds being used before its definition:

$ grep -E 'shrext|If you need' configure
eval libltdl_cv_shlibext=$shrext_cmds
# If you need to create a library, use libtool. <---- First line in the macro
      shrext_cmds=".dll"
shrext_cmds=".so"
  shrext_cmds=".dll"
  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
    shrext_cmds='.so'
    shrext_cmds='.sl'
    shrext_cmds='.sl'
  shrext_cmds=".dll"
shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
shrext_cmds \
shrext_cmds=$lt_shrext_cmds


I have a simple work around: instead of

AC_DEFUN([URBI_LTDL], [my macro])

I have

AC_DEFUN([URBI_LTDL], [m4_fatal([should never be used])])
m4_define([URBI_LTDL], [my macro])

The first line is to have aclocal notice that the macro is defined in an m4/ file, and the second is to avoid that URBI_LTDL define an AC_REQUIRE boundary. I don't remember the details, but it seems suspicious to me that code using shrext_cmds is emitted before the contents of my macro. Either somewhere there are m4_define that should be AC_DEFUN to define the AC_REQUIRE barriers (an error in Libtool), or when a macro OUTER invokes a macro INNER which requires REQUIRED then REQUIRED is output before OUTER, which seems wrong to me (an error in Autoconf).

Cheers!

Attachment: configure.ac
Description: Binary data





reply via email to

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