[RFC] build system replacement

Bernhard Fischer rep.dot.nop at gmail.com
Fri May 30 22:03:40 UTC 2008


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)




More information about the uClibc mailing list