On Thu, May 29, 2008 at 07:31:04PM +0200, Bernd Schmidt wrote: > Denys Vlasenko wrote: >> I noticed that uclibc build system is broken. >> After I touch a file, running make won't rebuild it. > > As far as I can tell, only files that go into libc.so and not into > libc.a, such as forward.c from libpthread, are affected. This seems to > have been broken by revision 12519, which changed some Makefiles to give > rules to build lib/libc.so, but the target we're trying to build is > still lib/libc.so.0. > >> So I decided to replace build system, using my >> experience in replacing build system for busybox. > > We can't rewrite entire subsystems everytime we find a bug. Better to > understand what's wrong: in this case the fix is quite simple. Try the > patch below.
We should also apply the hunk below, interp.os is getting linked in twice, otherwise. To me, it looks like we already properly have libc/Makefile.in:LIBS-libc.so := $(interp) $(ldso) $(top_builddir)lib/$(NONSHARED_LIBNAME) Rules.mak:LIBS := $(interp) -L$(top_builddir)lib $(libc:.$(MAJOR_VERSION)=) which is sufficient, AFAICS. Can you confirm this? Without the fix below, we end up with linking any .so with " lib/interp.os ./lib/interp.os ./lib/ld-uClibc.so.0" (for linkm.so) which is too much. Oh, and more importantly we should find a more elegant solution for specifying the dependencies of multi-src files like i did yesterday in inet/Makefile.in (aka r22112). Index: Makerules =================================================================== --- Makerules (revision 22127) +++ Makerules (working copy) @@ -8,7 +8,7 @@ ifeq ($(HAVE_SHARED),y) .LIBPATTERNS: "lib%.so" libs: $(lib-so-y) $(lib-a-y) -$(lib-so-y): $(interp) +$(lib-so-y): else .LIBPATTERNS: "lib%.a" ifeq ($(UCLIBC_FORMAT_SHARED_FLAT),y) _______________________________________________ uClibc mailing list [email protected] http://busybox.net/cgi-bin/mailman/listinfo/uclibc
