Ralf, Spot on :)
I had managed to find this, while you were posting your reply by generating a simple project from scratch, and new makefile.am's and per chance I did not include the '.' to these and so I managed to work it back. I had not appreciated that the top level is made last , I have not idea hoe the '.' made it there :) I have one last problem that I'd like to run past you. I have added all the modules that need tobe built and the full library is now generated, however some sub objects are missing. The text from the library generation make[2]: Entering directory `/home/nick/libwhite' bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 --tag=CXX -o libwhite.la -rpath /usr/local/lib src/utils/libutils.la src/common/libcommon.la src/libsrc.la src/containers/libcontainers.la src/FileIO/libfileio.la src/network/libnetwork.la src/parsers/libparsers.la src/servers/libservers.la src/stacks/libstacks.la This bit looks fine, all the sub libs components are mentioned here (above) rm -fr .libs/libwhite.a .libs/libwhite.la .libs/libwhite.lai .libs/libwhite.so .libs/libwhite.so.0 .libs/libwhite.so.0.0.0 gcc -shared -Wl,--whole-archive src/common/.libs/libcommon.a src/.libs/libsrc.a src/containers/.libs/libcontainers.a -Wl,--no-whole-archive -Wl,--rpath -Wl,/home/nick/libwhite/src/utils/.libs -Wl,--rpath -Wl,/home/nick/libwhite/src/FileIO/.libs -Wl,--rpath -Wl,/home/nick/libwhite/src/network/.libs -Wl,--rpath -Wl,/home/nick/libwhite/src/parsers/.libs -Wl,--rpath -Wl,/home/nick/libwhite/src/servers/.libs -Wl,--rpath -Wl,/home/nick/libwhite/src/stacks/.libs -Wl,--rpath -Wl,/usr/local/lib src/utils/.libs/libutils.so src/FileIO/.libs/libfileio.so src/network/.libs/libnetwork.so src/parsers/.libs/libparsers.so src/servers/.libs/libservers.so src/stacks/.libs/libstacks.so -Wl,-soname -Wl,libwhite.so.0 -o .libs/libwhite.so.0.0.0 This again looks ok (above) Below is where is does not look good (cd .libs && rm -f libwhite.so.0 && ln -s libwhite.so.0.0.0 libwhite.so.0) (cd .libs && rm -f libwhite.so && ln -s libwhite.so.0.0.0 libwhite.so) rm -fr .libs/libwhite.lax mkdir .libs/libwhite.lax rm -fr .libs/libwhite.lax/libcommon.a mkdir .libs/libwhite.lax/libcommon.a (cd .libs/libwhite.lax/libcommon.a && ar x /home/nick/libwhite/src/common/.libs/libcommon.a) rm -fr .libs/libwhite.lax/libsrc.a mkdir .libs/libwhite.lax/libsrc.a (cd .libs/libwhite.lax/libsrc.a && ar x /home/nick/libwhite/src/.libs/libsrc.a) rm -fr .libs/libwhite.lax/libcontainers.a mkdir .libs/libwhite.lax/libcontainers.a (cd .libs/libwhite.lax/libcontainers.a && ar x /home/nick/libwhite/src/containers/.libs/libcontainers.a) ar cru .libs/libwhite.a .libs/libwhite.lax/libcommon.a/libcommon_la-packetbuffer.o .libs/libwhite.lax/libcommon.a/libcommon_la-IStack.o .libs/libwhite.lax/libcommon.a/libcommon_la-icircularbuffer.o .libs/libwhite.lax/libcommon.a/libcommon_la-ievent.o .libs/libwhite.lax/libcommon.a/libcommon_la-iqueue.o .libs/libwhite.lax/libcommon.a/libcommon_la-ithread.o .libs/libwhite.lax/libcommon.a/libcommon_la-IBitBuffer.o .libs/libwhite.lax/libcommon.a/libcommon_la-ixmlregistry.o .libs/libwhite.lax/libcommon.a/libcommon_la-LFilePath.o .libs/libwhite.lax/libcommon.a/libcommon_la-iutil.o .libs/libwhite.lax/libcommon.a/libcommon_la-imembuffer.o .libs/libwhite.lax/libcommon.a/libcommon_la-imutex.o .libs/libwhite.lax/libcommon.a/libcommon_la-iregistry.o .libs/libwhite.lax/libcommon.a/libcommon_la-ifile.o .libs/libwhite.lax/libcommon.a/libcommon_la-istring.o .libs/libwhite.lax/libcommon.a/libcommon_la-ipacketbuffer.o .libs/libwhite.lax/libcommon.a/libcommon_la-imemcpy.o .libs/libwhite.lax/libcommon.a/libcommon_la-imath.o .libs/libwhite.lax/libcommon.a/libcommon_la-ITokenizer.o .libs/libwhite.lax/libsrc.a/libsrc_la-IDebug.o .libs/libwhite.lax/libsrc.a/libsrc_la-IObject.o .libs/libwhite.lax/libcontainers.a/libcontainers_la-IFileTree.o .libs/libwhite.lax/libcontainers.a/libcontainers_la-IVariant.o .libs/libwhite.lax/libcontainers.a/libcontainers_la-IMIMETypes.o The final library only consists of libsrc, libcommon, libcontainers and not the others libstacks etc, and it looks like libcommon is partial, it should consist of 39 objects I dont really know what script its running here (ltmain.sh?) or why is missing the rest. The only thing that comes to mind is running out of environment space? Hopefully this is the last issue ? !! I'd welcome your opinion. Thanks very much again nick ranlib .libs/libwhite.a rm -fr .libs/libwhite.lax Ralf Wildenhues wrote: > > Hi Nick, > > * nickthefarrow wrote on Thu, Aug 07, 2008 at 10:17:57AM CEST: >> >> Making all in . >> make[2]: Entering directory `/home/nick/libwhite' >> make[2]: *** No rule to make target `src/common/libcommon.la', needed by >> `libwhite.la'. Stop. >> make[2]: Leaving directory `/home/nick/libwhite' > [...] >> my top level makefile.am is >> ---------------------------------- >> SUBDIRS = . ./src/common/ > > This is the culprit. By listing '.' early in SUBDIRS you are in effect > telling Automake to build things in the current Makefile first, and only > then go into the src/common sub directory. Solution is to list '.' last > or not at all (in which it will default to being last). > > BTW, please drop the leading './' from that name here, it may confuse > some non-GNU make IIRC (they typically don't treat 'file' and './file' > as identical). > >> AC_CONFIG_SUBDIRS([src/common]) >> AC_OUTPUT(Makefile src/common/Makefile) > > FWIW, listing arguments in AC_OUTPUT is a bit old-fashioned. The new > way would be: > AC_CONFIG_FILES([Makefile src/common/Makefile]) > AC_OUTPUT > > Also, there is some bug lingering here: when you list src/common in > AC_CONFIG_SUBDIRS, then you are effectively saying that there is another > configure script in the src/common directory. If that is the case, then > it should also be the case that that configure script creates the > Makefile in that directory; but your AC_OUTPUT line tells the toplevel > configure script to create the Makefile. If both configure scripts do > this (and you can be certain that they won't produce identical results), > then things will get confused pretty quickly. > > If you don't need another configure script in src/common, you can simply > remove the AC_CONFIG_SUBDIRS line. > > Hope that helps. > > Cheers, > Ralf > > > > -- View this message in context: http://www.nabble.com/Nesting-and-final-linking---tp18828132p18869246.html Sent from the Gnu - Automake - General mailing list archive at Nabble.com.