
On Tuesday 31 May 2011 14:44:58, Simon Marlow wrote:
What you need is libbfd.so, which is a symbolic link to the versioned library (libbfd-2.20.0.20100122-6.so). This is normally installed by the development version of the library (e.g. libbfd-dev on Debian-derived distros).
Couldn't find anything like that for openSuSE (11.3), the versioned .so comes with binutils, libbfd.a (and .la) come from binutils-devel. I'll take a look at the AC stuff and if I don't see how it might work, I'll try with a manually created symlink.
The shared version has the dependency built-in, so the GHC build system wouldn't have to do anything (that's how it works here).
I'm far from an expert, but as far as I can see, there is already such a test, in configure.ac:
AC_CHECK_LIB(bfd, bfd_init)
I think that only tests for the presence of the symbol in the library, it doesn't test that compiling an executable against that library actually works.
Well, compiling and running a simple test programme that calls bfd_init() works here without linking in libz, so I guess that test wouldn't detect the dependency even if it actually runs the executable.
with a test using bfd_init in configure. Unfortunately, that doesn't detect if libz is needed without using some functions depending on it. If I had the slightest idea how to make it detect the dependency on libz, I happily would, but I've not yet found any introduction to shell scripting or using autotools accessible to a complete beginner.
Yes, I'm afraid the learning curve is a bit steep. It's so hard to get right that I wouldn't even attempt to try to fix it without a machine to test on! A good place to start would be tests that do similar things - a quick look at the code suggests AC_COMPILE_IFFELSE and AC_LINK_IFFELSE might be useful, also FP_CHECK_FUNC looks like it might do what you want.
I'll look. Cheers, Daniel