Fixes user makefiles
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 25 Nov 2014 23:35:39 +0000 (15:35 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 25 Nov 2014 23:35:39 +0000 (15:35 -0800)
Previously, we had the library linking depend on a changed dependency.  That's
not enough if a header (like uthread.h) changes.  So the .o file creation needs
to depend on the headers, in some manner.  In lieu of depending directly on the
headers, we depend on the lib, which we know depends on the headers.

Additionally, the install target was triggering all the time, which kept
recopying (and updating the timestamp on) the installed libs.

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

index 01569e1..d70805e 100644 (file)
@@ -11,6 +11,7 @@ INCDIR = $(SRCDIR)include
 
 INCS = -I. -I$(INCDIR) 
 FINALLIB = $(OBJDIR)/lib$(LIBNAME).a
+FINALLIB-INSTALL = $(XCC_TARGET_ROOT)/lib/lib$(LIBNAME).a
 
 uc = $(shell echo $(1) | tr a-z A-Z)
 
@@ -30,22 +31,25 @@ $(OBJDIR)/$(ARCH)/%.o: $(SRCDIR)$(ARCH)/%.S $(HEADERS)
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS)
+$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS) $(DEPLIBAS)
        @echo + cc [$(LIBUCNAME)] $<
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(FINALLIB): $(OBJS) $(DEPLIBAS)
+$(FINALLIB): $(OBJS)
        @echo + ar [$(LIBUCNAME)] $@
        @mkdir -p $(@D)
        $(Q)$(AR) rc $@ $(OBJS)
 
-install: $(FINALLIB)
+$(FINALLIB-INSTALL): $(FINALLIB)
        @cp $(FINALLIB) $(XCC_TARGET_ROOT)/lib/
        @cp -R $(INCDIR)/* $(XCC_TARGET_ROOT)/sys-include/
        @rm -rf $(XCC_TARGET_ROOT)/sys-include/benchutil
        @ln -fs . $(XCC_TARGET_ROOT)/sys-include/benchutil
 
+install: $(FINALLIB-INSTALL)
+       @echo > /dev/null
+
 clean: 
        @echo + clean [$(LIBUCNAME)]
        $(Q)rm -rf $(FINALLIB)
index 5160d7e..cf9d723 100644 (file)
@@ -11,6 +11,7 @@ INCDIR = .
 
 INCS = -I. -I$(INCDIR)
 FINALLIB = $(OBJDIR)/lib$(LIBNAME).a
+FINALLIB-INSTALL = $(XCC_TARGET_ROOT)/lib/lib$(LIBNAME).a
 
 uc = $(shell echo $(1) | tr a-z A-Z)
 
@@ -30,19 +31,22 @@ $(OBJDIR)/$(ARCH)/%.o: $(SRCDIR)$(ARCH)/%.S $(HEADERS)
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS)
+$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS) $(DEPLIBAS)
        @echo + cc [$(LIBUCNAME)] $<
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(FINALLIB): $(OBJS) $(DEPLIBAS)
+$(FINALLIB): $(OBJS)
        @echo + ar [$(LIBUCNAME)] $@
        @mkdir -p $(@D)
        $(Q)$(AR) rc $@ $(OBJS)
 
-install: $(FINALLIB)
+$(FINALLIB-INSTALL): $(FINALLIB)
        @cp $(FINALLIB) $(XCC_TARGET_ROOT)/lib/
 
+install: $(FINALLIB-INSTALL)
+       @echo > /dev/null
+
 clean: 
        @echo + clean [$(LIBUCNAME)]
        $(Q)rm -rf $(FINALLIB)
index 0e3a193..3620144 100644 (file)
@@ -11,6 +11,7 @@ INCDIR = $(SRCDIR)include
 
 INCS = -I. -I$(INCDIR)
 FINALLIB = $(OBJDIR)/lib$(LIBNAME).a
+FINALLIB-INSTALL = $(XCC_TARGET_ROOT)/lib/lib$(LIBNAME).a
 
 uc = $(shell echo $(1) | tr a-z A-Z)
 
@@ -30,22 +31,25 @@ $(OBJDIR)/$(ARCH)/%.o: $(SRCDIR)$(ARCH)/%.S $(HEADERS)
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS)
+$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS) $(DEPLIBAS)
        @echo + cc [$(LIBUCNAME)] $<
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(FINALLIB): $(OBJS) $(DEPLIBAS)
+$(FINALLIB): $(OBJS)
        @echo + ar [$(LIBUCNAME)] $@
        @mkdir -p $(@D)
        $(Q)$(AR) rc $@ $(OBJS)
 
-install: $(FINALLIB)
+$(FINALLIB-INSTALL): $(FINALLIB)
        @cp $(FINALLIB) $(XCC_TARGET_ROOT)/lib/
        @cp -R $(INCDIR)/* $(XCC_TARGET_ROOT)/sys-include/
        @rm -rf $(XCC_TARGET_ROOT)/sys-include/iplib  
        @ln -fs . $(XCC_TARGET_ROOT)/sys-include/iplib  
 
+install: $(FINALLIB-INSTALL)
+       @echo > /dev/null
+
 clean: 
        @echo + clean [$(LIBUCNAME)]
        $(Q)rm -rf $(FINALLIB)
index 4bf4dc3..f8b2f27 100644 (file)
@@ -11,6 +11,7 @@ INCDIR = $(SRCDIR)include
 
 INCS = -I. -I$(INCDIR)
 FINALLIB = $(OBJDIR)/lib$(LIBNAME).a
+FINALLIB-INSTALL = $(XCC_TARGET_ROOT)/lib/lib$(LIBNAME).a
 
 uc = $(shell echo $(1) | tr a-z A-Z)
 
@@ -30,22 +31,25 @@ $(OBJDIR)/$(ARCH)/%.o: $(SRCDIR)$(ARCH)/%.S $(HEADERS)
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS)
+$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS) $(DEPLIBAS)
        @echo + cc [$(LIBUCNAME)] $<
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(FINALLIB): $(OBJS) $(DEPLIBAS)
+$(FINALLIB): $(OBJS)
        @echo + ar [$(LIBUCNAME)] $@
        @mkdir -p $(@D)
        $(Q)$(AR) rc $@ $(OBJS)
 
-install: $(FINALLIB)
+$(FINALLIB-INSTALL): $(FINALLIB)
        @cp $(FINALLIB) $(XCC_TARGET_ROOT)/lib/
        @cp -R $(INCDIR)/* $(XCC_TARGET_ROOT)/sys-include/
        @rm -rf $(XCC_TARGET_ROOT)/sys-include/libip  
        @ln -fs . $(XCC_TARGET_ROOT)/sys-include/libip  
 
+install: $(FINALLIB-INSTALL)
+       @echo > /dev/null
+
 clean: 
        @echo + clean [$(LIBUCNAME)]
        $(Q)rm -rf $(FINALLIB)
index c3cbd54..e298e54 100644 (file)
@@ -11,6 +11,7 @@ INCDIR = $(SRCDIR)include
 
 INCS = -I. -I$(INCDIR) 
 FINALLIB = $(OBJDIR)/lib$(LIBNAME).a
+FINALLIB-INSTALL = $(XCC_TARGET_ROOT)/lib/lib$(LIBNAME).a
 
 uc = $(shell echo $(1) | tr a-z A-Z)
 
@@ -25,27 +26,30 @@ OBJS    := $(patsubst %.c, $(OBJDIR)/%.o, $(CFILES)) \
 all: $(FINALLIB)
        @:
 
-$(OBJDIR)/$(ARCH)/%.o: $(SRCDIR)$(ARCH)/%.S $(HEADERS)
+$(OBJDIR)/$(ARCH)/%.o: $(SRCDIR)$(ARCH)/%.S $(HEADERS) $(DEPLIBAS)
        @echo + as [$(LIBUCNAME)] $<
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS)
+$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS) $(DEPLIBAS)
        @echo + cc [$(LIBUCNAME)] $<
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(FINALLIB): $(OBJS) $(DEPLIBAS)
+$(FINALLIB): $(OBJS)
        @echo + ar [$(LIBUCNAME)] $@
        @mkdir -p $(@D)
        $(Q)$(AR) rc $@ $(OBJS)
 
-install: $(FINALLIB)
-       @cp $(FINALLIB) $(XCC_TARGET_ROOT)/lib/
+$(FINALLIB-INSTALL): $(FINALLIB)
+       @cp $(FINALLIB) $@
        @cp -R $(INCDIR)/* $(XCC_TARGET_ROOT)/sys-include/
        @rm -rf $(XCC_TARGET_ROOT)/sys-include/parlib  
        @ln -fs . $(XCC_TARGET_ROOT)/sys-include/parlib  
 
+install: $(FINALLIB-INSTALL)
+       @echo > /dev/null
+
 clean: 
        @echo + clean [$(LIBUCNAME)]
        $(Q)rm -rf $(FINALLIB)
index ffde07f..5ecefbd 100644 (file)
@@ -11,6 +11,7 @@ INCDIR = $(SRCDIR).
 
 INCS = -I$(INCDIR) 
 FINALLIB = $(OBJDIR)/lib$(LIBNAME).a
+FINALLIB-INSTALL = $(XCC_TARGET_ROOT)/lib/lib$(LIBNAME).a
 
 uc = $(shell echo $(1) | tr a-z A-Z)
 
@@ -22,20 +23,23 @@ OBJS    := $(patsubst %.c, $(OBJDIR)/%.o, $(CFILES))
 all: $(FINALLIB)
        @:
 
-$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS)
+$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS) $(DEPLIBAS)
        @echo + cc [$(LIBUCNAME)] $<
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(FINALLIB): $(OBJS) $(DEPLIBAS)
+$(FINALLIB): $(OBJS)
        @echo + ar [$(LIBUCNAME)] $@
        @mkdir -p $(@D)
        $(Q)$(AR) rc $@ $(OBJS)
 
-install: $(FINALLIB)
-       @cp $(FINALLIB) $(XCC_TARGET_ROOT)/lib/
+$(FINALLIB-INSTALL): $(FINALLIB)
+       @cp $(FINALLIB) $@
        @cp -R $(INCDIR)/*.h $(XCC_TARGET_ROOT)/sys-include/
 
+install: $(FINALLIB-INSTALL)
+       @echo > /dev/null
+
 clean: 
        @echo + clean [$(LIBUCNAME)]
        $(Q)rm -rf $(FINALLIB)
index c820d00..3db3b1c 100644 (file)
@@ -2,6 +2,9 @@ ARCH ?= none # catch bugs
 CFLAGS_USER += -g
 CXXFLAGS_USER += -g
 LIBNAME = utest 
+# DEPLIBS passed in from the top-level Makefile
+DEPLIBS := $(DEPLIBS)
+DEPLIBAS = $(patsubst %, $(XCC_TARGET_ROOT)/lib/lib%.a, $(DEPLIBS))
 
 SRCDIR := 
 OBJDIR := $(SRCDIR)obj
@@ -22,7 +25,7 @@ EXECS_CPP = $(patsubst $(SRCDIR)%.cc, $(OBJDIR)/%, $(SRCS_CPP))
 EXECS = $(EXECS_C) $(EXECS_CPP)
 
 STATIC := $(findstring static,$(CFLAGS_USER))
-$(OBJDIR)/%: %.c $(HEADERS)
+$(OBJDIR)/%: %.c $(HEADERS) $(DEPLIBAS)
        @echo + cc [$(LIBUCNAME)] $<
        @mkdir -p $(@D)
        $(Q)$(CC) $(CFLAGS_USER) -I$(INCDIR) -o $@ $< $(LDLIBS)
@@ -33,7 +36,7 @@ $(OBJDIR)/%: %.c $(HEADERS)
 
 # Note that we don't disassemble CPPs by default, even if they aren't static.
 # The files are pretty large regardless (9MB for a simple stream test asm).
-$(OBJDIR)/%: %.cc $(HEADERS)
+$(OBJDIR)/%: %.cc $(HEADERS) $(DEPLIBAS)
        @echo + cc [$(LIBUCNAME)] $<
        @mkdir -p $(@D)
        $(Q)$(CPP) $(CXXFLAGS_USER) -I$(INCDIR) -o $@ $< $(LDLIBS)