Hi Ralf - You mention below that if I'm not using libtool I can just add the libraries twice, but what if I am using libtool? I'm combining two different software packages - the one I want to build uses libtool and the libraries I want to add have the circular dependencies. I'm pushing on the development team that developed the libraries to get rid of the circular dependencies but for now I'm stuck with what I have. So, I tried to do both: add the --start-group/--end-group and add the libraries twice (I also tried them each individually also). I have attached the link line below. You can see that in the call to libtool the --start-group/--end-group flags are there and they are in the correct position. Also you can see that all the libraries are there twice (all my libraries start with elem_). But then when it actually does the link (I think) the flags seem to have been sorted and the libraries are only listed once. I'm guessing that libtool has the "intelligence" to do sort the flags and figure out that libraries are listed more then once and it does what it thinks is the right thing. Is there anyway to get around this with libtool?
Thanks for any help you can offer. Jim /bin/sh ./libtool --mode=link --tag=CC gcc -Wsign-compare -Wall -pipe -o vlc vlc-vlc.o src/libvlc.a -Wl,--start-group -lelem_chkpt_api -lelem_chmgmt_api -lelem_core_api -lelem_mobj_api -lelem_fault_api -lelem_rel_api -lelem_chkpt_api -lelem_chmgmt_api -lelem_core_api -lelem_mobj_api -lelem_fault_api -lelem_rel_api -lelement_callouts -llinx -Wl,--end-group ./modules/misc/memcpy/libmemcpymmx.a ./modules/video_chroma/libi420_rgb_mmx.a ./modules/video_chroma/libi422_yuy2_mmx.a ./modules/video_chroma/libi420_ymga_mmx.a ./modules/video_chroma/libi420_yuy2_mmx.a ./modules/misc/memcpy/libmemcpymmxext.a ./modules/misc/memcpy/libmemcpy3dn.a ./modules/mux/mpeg/libmux_ts.a -L/usr/local/lib -g -lrt -lpthread -ldl -lm -ldvbpsi -L/home/jim/work_area/element/lib/linux-x86 -L/home/jim/work_area/element/ref_platforms/x86/lib/linux-x86 -L/home/jim/work_area/element/linx/linx-1.0.1/lib mkdir .libs gcc -Wsign-compare -Wall -pipe -o vlc vlc-vlc.o -Wl,--start-group -Wl,--end-group -g src/libvlc.a -lelem_chkpt_api -lelem_chmgmt_api -lelem_core_api -lelem_mobj_api -lelem_fault_api -lelem_rel_api -lelement_callouts -llinx ./modules/misc/memcpy/libmemcpymmx.a ./modules/video_chroma/libi420_rgb_mmx.a ./modules/video_chroma/libi422_yuy2_mmx.a ./modules/video_chroma/libi420_ymga_mmx.a ./modules/video_chroma/libi420_yuy2_mmx.a ./modules/misc/memcpy/libmemcpymmxext.a ./modules/misc/memcpy/libmemcpy3dn.a ./modules/mux/mpeg/libmux_ts.a -L/usr/local/lib -lrt -lpthread -ldl -lm /usr/local/lib/libdvbpsi.so -L/home/jim/work_area/element/lib/linux-x86 -L/home/jim/work_area/element/ref_platforms/x86/lib/linux-x86 -L/home/jim/work_area/element/linx/linx-1.0.1/lib -Wl,--rpath -Wl,/usr/local/lib -Wl,--rpath -Wl,/usr/local/lib -----Original Message----- From: Ralf Wildenhues [mailto:[EMAIL PROTECTED] Sent: Monday, November 06, 2006 12:43 PM To: Jim Rainville Cc: mick; automake@gnu.org Subject: Re: adding libraries and header file directories Hello Jim, Mick, * Jim Rainville wrote on Mon, Nov 06, 2006 at 02:46:12PM CET: > > This was very helpful. It got me off the ground and now I think I'm > about 90% there. What I'm struggling with now is circular dependencies > in libraries. In the old Makefile for this software they dealt with this > in this fashion: > -Wl,--start-group <libs> -Wl,--end-group > > With autoconf/automake this won't work because you're supposed to add > linker flags with the _LDFLAGS macro and when you do that it's not > positional. If you're not using Libtool: just mention the library/libraries twice. But the real solution is to get rid of the circular dependencies. It's not portable to have them. -Wl,--start-group is limited to GNU binutils ld, so that's a lot less portable even. > From: mick [mailto:[EMAIL PROTECTED] > On Sun, 5 Nov 2006 02:36, you wrote: > > > > ... -I$(path_to_my_headers) -L$(path_to_my_libraries) element_hal > > element_sal ... > I have used:- > > bin_PROGRAMS = gyachi > > gyachi_SOURCES = \ > ... > INCLUDES = -I/usr/include/gtkhtml-2.0 -I/usr/include/libxml2 AM_CPPFLAGS is a non-anachronistic way of spelling INCLUDES in Makefile.am files. But you don't want to spell out absolute paths in such a file like that anyway if you want your program to be portable (your next user will have gtkhtml 2.1 installed below /opt/foobar, and libxml below her $HOME). Libraries like that usually make their flags known in some way, either an Autoconf macro they ship and you can use, (the Autoconf Macro Archive has one of those), or e.g., pkg-config. Otherwise there is of course still the possibility for the user of your package to ./configure \ CPPFLAGS='-I/usr/include/gtkhtml-2.0 -I/usr/include/libxml2' \ LDFLAGS='-L/opt/foobar/lib ...' Hope that helps. Cheers, Ralf