Discussion:
complex configure tests involving multiple files and possibly libtool/automake
Václav Haisman
2017-01-26 08:35:16 UTC
Permalink
Hi.

I have a test that I would like to run during configure time which
basically involves compiling two files and linking a shared object/DLL
out of them. I think I would like to be using automake/libtool to
compile and link the configure test itself. Is there a good practice
or good example on how to do this?

Before you comment, no, simple single file compile and link will not
do. This is in attempt to detect issue on Cygwin with C++11
`thread_local`. See
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64697#.
--
VH
Eric Blake
2017-01-26 21:42:25 UTC
Permalink
Post by Václav Haisman
Hi.
I have a test that I would like to run during configure time which
basically involves compiling two files and linking a shared object/DLL
out of them. I think I would like to be using automake/libtool to
compile and link the configure test itself. Is there a good practice
or good example on how to do this?
I'm not directly aware of a way to do it, but you CAN use AC_TRY_COMPILE
and then in the 'action-if-true' branch you can copy conftest.o to a
safe location, then try and figure out how to make the subsequent
AC_TRY_LINK refer back to the .o file that you squirreled away. You'll
have to experiment if you can't find an actual example, and if you get
it working, be sure to post back to the list, but I hope that gives you
some hints of things to try.
Post by Václav Haisman
Before you comment, no, simple single file compile and link will not
do. This is in attempt to detect issue on Cygwin with C++11
`thread_local`. See
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64697#.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
Eric Blake
2017-01-26 21:44:40 UTC
Permalink
Post by Eric Blake
I'm not directly aware of a way to do it, but you CAN use AC_TRY_COMPILE
and then in the 'action-if-true' branch you can copy conftest.o to a
safe location, then try and figure out how to make the subsequent
AC_TRY_LINK refer back to the .o file that you squirreled away. You'll
have to experiment if you can't find an actual example, and if you get
it working, be sure to post back to the list, but I hope that gives you
some hints of things to try.
Correction - use the modern macros instead. In fact, AC_COMPILE_IFELSE
already documents that you can access conftest.$OBJEXT in the
action-if-true block, so it is a supported interface:

https://www.gnu.org/software/autoconf/manual/autoconf.html#Running-the-Compiler
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
Peter Johansson
2017-01-27 00:24:32 UTC
Permalink
Post by Václav Haisman
Hi.
I have a test that I would like to run during configure time which
basically involves compiling two files and linking a shared object/DLL
out of them. I think I would like to be using automake/libtool to
These macros use libtool to link in configure tests. There might be some
cherries to steal:

http://dev.thep.lu.se/yat/svn/trunk/m4/yat_lt_link_ifelse.m4

Cheers,
Peter

Loading...