User libraries depend on their dependencies .a's
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 19 Nov 2014 02:31:36 +0000 (18:31 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 19 Nov 2014 02:31:36 +0000 (18:31 -0800)
The previous commit exposed an issue where libraries would not rebuild if their
dependency was newer.  The old style just made sure the dependencies rebuilt
first, but not that the libraries would actually rebuild.  Their linking needs
to depend on the dependencies output archive (e.g. libparlib.a).

Makefile
user/benchutil/Makefile
user/bsd/Makefile
user/iplib/Makefile
user/ndblib/Makefile
user/parlib/Makefile
user/pthread/Makefile

index 5f7681f..9977989 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -551,7 +551,7 @@ PHONY += install-libs $(user-dirs)
 install-libs: $(user-dirs) symlinks cc-exists
 
 $(user-dirs):
-       @cd user/$@ && $(MAKE) && $(MAKE) install
+       @cd user/$@ && $(MAKE) DEPLIBS="$^" && $(MAKE) install
 
 
 PHONY += userclean $(clean-user-dirs)
index 4994510..01569e1 100644 (file)
@@ -1,6 +1,9 @@
 ARCH ?= none   # catch bugs
 CFLAGS_USER += -static -fomit-frame-pointer -g
 LIBNAME = benchutil
+# DEPLIBS passed in from the top-level Makefile
+DEPLIBS := $(DEPLIBS)
+DEPLIBAS = $(patsubst %, $(XCC_TARGET_ROOT)/lib/lib%.a, $(DEPLIBS))
 
 SRCDIR := 
 OBJDIR := $(SRCDIR)obj
@@ -32,7 +35,7 @@ $(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS)
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(FINALLIB): $(OBJS)
+$(FINALLIB): $(OBJS) $(DEPLIBAS)
        @echo + ar [$(LIBUCNAME)] $@
        @mkdir -p $(@D)
        $(Q)$(AR) rc $@ $(OBJS)
index 66470b6..5160d7e 100644 (file)
@@ -1,6 +1,9 @@
 ARCH ?= none   # catch bugs
 CFLAGS_USER += -static -fomit-frame-pointer -g
 LIBNAME = bsd
+# DEPLIBS passed in from the top-level Makefile
+DEPLIBS := $(DEPLIBS)
+DEPLIBAS = $(patsubst %, $(XCC_TARGET_ROOT)/lib/lib%.a, $(DEPLIBS))
 
 SRCDIR := 
 OBJDIR := $(SRCDIR)obj
@@ -32,7 +35,7 @@ $(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS)
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(FINALLIB): $(OBJS)
+$(FINALLIB): $(OBJS) $(DEPLIBAS)
        @echo + ar [$(LIBUCNAME)] $@
        @mkdir -p $(@D)
        $(Q)$(AR) rc $@ $(OBJS)
index aa967e2..0e3a193 100644 (file)
@@ -1,6 +1,9 @@
 ARCH ?= none   # catch bugs
 CFLAGS_USER += -static -fomit-frame-pointer -g
 LIBNAME = iplib
+# DEPLIBS passed in from the top-level Makefile
+DEPLIBS := $(DEPLIBS)
+DEPLIBAS = $(patsubst %, $(XCC_TARGET_ROOT)/lib/lib%.a, $(DEPLIBS))
 
 SRCDIR := 
 OBJDIR := $(SRCDIR)obj
@@ -32,7 +35,7 @@ $(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS)
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(FINALLIB): $(OBJS)
+$(FINALLIB): $(OBJS) $(DEPLIBAS)
        @echo + ar [$(LIBUCNAME)] $@
        @mkdir -p $(@D)
        $(Q)$(AR) rc $@ $(OBJS)
index 22e3e9f..4bf4dc3 100644 (file)
@@ -1,6 +1,9 @@
 ARCH ?= none   # catch bugs
 CFLAGS_USER += -static -fomit-frame-pointer -g
 LIBNAME = ndb
+# DEPLIBS passed in from the top-level Makefile
+DEPLIBS := $(DEPLIBS)
+DEPLIBAS = $(patsubst %, $(XCC_TARGET_ROOT)/lib/lib%.a, $(DEPLIBS))
 
 SRCDIR := 
 OBJDIR := $(SRCDIR)obj
@@ -32,7 +35,7 @@ $(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS)
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(FINALLIB): $(OBJS)
+$(FINALLIB): $(OBJS) $(DEPLIBAS)
        @echo + ar [$(LIBUCNAME)] $@
        @mkdir -p $(@D)
        $(Q)$(AR) rc $@ $(OBJS)
index 9d6c67d..c3cbd54 100644 (file)
@@ -1,6 +1,9 @@
 ARCH ?= none   # catch bugs
 CFLAGS_USER += -static -fomit-frame-pointer -g
 LIBNAME = parlib
+# DEPLIBS passed in from the top-level Makefile
+DEPLIBS := $(DEPLIBS)
+DEPLIBAS = $(patsubst %, $(XCC_TARGET_ROOT)/lib/lib%.a, $(DEPLIBS))
 
 SRCDIR := 
 OBJDIR := $(SRCDIR)obj
@@ -32,7 +35,7 @@ $(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS)
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(FINALLIB): $(OBJS)
+$(FINALLIB): $(OBJS) $(DEPLIBAS)
        @echo + ar [$(LIBUCNAME)] $@
        @mkdir -p $(@D)
        $(Q)$(AR) rc $@ $(OBJS)
index a5b975c..ffde07f 100644 (file)
@@ -1,6 +1,9 @@
 ARCH ?= none # catch bugs
 CFLAGS_USER += -static -fomit-frame-pointer -g
 LIBNAME = pthread
+# DEPLIBS passed in from the top-level Makefile
+DEPLIBS := $(DEPLIBS)
+DEPLIBAS = $(patsubst %, $(XCC_TARGET_ROOT)/lib/lib%.a, $(DEPLIBS))
 
 SRCDIR := 
 OBJDIR := $(SRCDIR)obj
@@ -24,7 +27,7 @@ $(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS)
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(FINALLIB): $(OBJS)
+$(FINALLIB): $(OBJS) $(DEPLIBAS)
        @echo + ar [$(LIBUCNAME)] $@
        @mkdir -p $(@D)
        $(Q)$(AR) rc $@ $(OBJS)