Make the CXX be called ucb-akaros
[akaros.git] / user / parlib / Makefile
index 5abde99..e298e54 100644 (file)
@@ -1,11 +1,9 @@
-TARGET_ARCH ?= none    # catch bugs
-CFLAGS = -O2 -std=gnu99 -static -fomit-frame-pointer -g
+ARCH ?= none   # catch bugs
+CFLAGS_USER += -static -fomit-frame-pointer -g
 LIBNAME = parlib
-V ?= @
-
-GCCPREFIX := $(TARGET_ARCH)-ros-
-CC := $(GCCPREFIX)gcc
-GCC_ROOT := $(shell which $(CC) | xargs dirname)/../
+# DEPLIBS passed in from the top-level Makefile
+DEPLIBS := $(DEPLIBS)
+DEPLIBAS = $(patsubst %, $(XCC_TARGET_ROOT)/lib/lib%.a, $(DEPLIBS))
 
 SRCDIR := 
 OBJDIR := $(SRCDIR)obj
@@ -13,42 +11,47 @@ 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)
 
 LIBUCNAME := $(call uc, $(LIBNAME))
 HEADERS := $(shell find $(INCDIR) -name *.h)
 CFILES  := $(wildcard $(SRCDIR)*.c)
-CFILES  += $(wildcard $(SRCDIR)$(TARGET_ARCH)/*.c)
-SFILES  := $(wildcard $(SRCDIR)$(TARGET_ARCH)/*.S)
+CFILES  += $(wildcard $(SRCDIR)$(ARCH)/*.c)
+SFILES  := $(wildcard $(SRCDIR)$(ARCH)/*.S)
 OBJS    := $(patsubst %.c, $(OBJDIR)/%.o, $(CFILES)) \
            $(patsubst %.S, $(OBJDIR)/%.o, $(SFILES))
 
 all: $(FINALLIB)
+       @:
 
-$(OBJDIR)/$(TARGET_ARCH)/%.o: $(SRCDIR)$(TARGET_ARCH)/%.S $(HEADERS)
+$(OBJDIR)/$(ARCH)/%.o: $(SRCDIR)$(ARCH)/%.S $(HEADERS) $(DEPLIBAS)
        @echo + as [$(LIBUCNAME)] $<
        @mkdir -p $(@D)
-       $(V)$(CC) $(CFLAGS) $(INCS) -o $@ -c $<
+       $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
-$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS)
+$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS) $(DEPLIBAS)
        @echo + cc [$(LIBUCNAME)] $<
        @mkdir -p $(@D)
-       $(V)$(CC) $(CFLAGS) $(INCS) -o $@ -c $<
+       $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $<
 
 $(FINALLIB): $(OBJS)
        @echo + ar [$(LIBUCNAME)] $@
        @mkdir -p $(@D)
-       $(V)$(AR) rc $@ $(OBJS)
+       $(Q)$(AR) rc $@ $(OBJS)
+
+$(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)
-       cp $(FINALLIB) $(GCC_ROOT)/$(TARGET_ARCH)-ros/lib/
-       cp -R $(INCDIR)/* $(GCC_ROOT)/$(TARGET_ARCH)-ros/sys-include/
-       rm -rf $(GCC_ROOT)/$(TARGET_ARCH)-ros/sys-include/parlib  
-       ln -fs . $(GCC_ROOT)/$(TARGET_ARCH)-ros/sys-include/parlib  
+install: $(FINALLIB-INSTALL)
+       @echo > /dev/null
 
 clean: 
        @echo + clean [$(LIBUCNAME)]
-       $(V)rm -rf $(FINALLIB)
-       $(V)rm -rf $(OBJDIR)
+       $(Q)rm -rf $(FINALLIB)
+       $(Q)rm -rf $(OBJDIR)