I've come up against an awkward situation using libtool, and I wonder if I could ask for some advice on what I'm probably doing wrong here.
I'm developing two different C libraries; lets just call them A and B. A is fairly standalone, and B depends on A.
Using libtool, I can develop on A fine. In particular, it has some internal unit-tests which I run using libtool --mode=exec. These run OK.
Using libtool, I can develop on B just fine, provided the A library is installed as a real system package. The linker can find it by the normal mechanisms and it lives in /usr/lib along with other system things. All is good. Library B also has some unit-tests that are executed with libtool --mode=exec. So far so good.
But now suppose I have a possible change I want to make that needs edits in both libraries. I don't want to build a new system package yet and upset all the other users on this box. That's fine, I can just install library A into my $HOME directory using
$ make install PREFIX=$HOME
In order to be able to test programs that use library A, I'm going to need to set LD_LIBRARY_PATH now so they can find the library here in preference to the system-installed one, so in my .profile I use
But now, that upsets every use of libtool --exec to run any of the unit tests for my libraries in their source code (for both libraries A and B). With LD_LIBRARY_PATH set in the environment, the libtool wrapper script no longer sets it up at all, meaning that libtool --exec on a unit test just sees the system-packaged versions of each library. This means I can't test the new code I just write in library A, because the unit-test executables don't see it.
I could make unit tests for library A itself run fine by entirely defeating the LD_LIBRARY_PATH mechanism again, if I
$ LD_LIBRARY_PATH= make test
But what of library B? It has to be able to see its own locally-build library in $CWD/.libs and library A in $HOME/lib. So I could
$ LD_LIBRARY_PATH=`pwd`/.libs:$LD_LIBRARY_PATH make test
But at that point I really feel like I am fighting against libtool, rather than it helping me do this right.
So, what am I doing wrong here?
Alternatively, am I using this entire setup in its intended way, but libtool just isn't playing ball with me?