3 # This creates a static library.
 
   6 # $(SOURCE) - The source code to use
 
   7 # $(HEADERS) - Exported header files and private header files
 
   8 # $(LIBRARY) - The name of the library without lib or .so 
 
  10 # All output is writtin to .o files in the build directory
 
  12 # See defaults.mak for information about LOCAL
 
  14 # Some local definitions
 
  15 LOCAL := lib$(LIBRARY).a
 
  16 $(LOCAL)-OBJS := $(addprefix $(OBJ)/,$(addsuffix .o,$(notdir $(basename $(SOURCE)))))
 
  17 $(LOCAL)-DEP := $(addprefix $(DEP)/,$(addsuffix .o.d,$(notdir $(basename $(SOURCE)))))
 
  18 $(LOCAL)-HEADERS := $(addprefix $(INCLUDE)/,$(HEADERS))
 
  19 $(LOCAL)-LIB := $(LIB)/lib$(LIBRARY).a
 
  21 # Install the command hooks
 
  22 headers: $($(LOCAL)-HEADERS)
 
  23 library: $($(LOCAL)-LIB)
 
  25 veryclean: veryclean/$(LOCAL)
 
  28 MKDIRS += $(OBJ) $(DEP) $(LIB) $(dir $($(LOCAL)-HEADERS))
 
  31 .PHONY: clean/$(LOCAL) veryclean/$(LOCAL)
 
  33         -rm -f $($(@F)-OBJS) $($(@F)-DEP)
 
  34 veryclean/$(LOCAL): clean/$(LOCAL)
 
  35         -rm -f $($(@F)-HEADERS) $($(@F)-LIB)
 
  37 # Build rules for the two symlinks
 
  38 .PHONY: $($(LOCAL)-LIB)
 
  40 # The binary build rule
 
  41 $($(LOCAL)-LIB): $($(LOCAL)-HEADERS) $($(LOCAL)-OBJS)
 
  42         echo Building library $@
 
  43         -rm $@ > /dev/null 2>&1
 
  44         $(AR) cq $@ $(filter %.o,$^)
 
  45 ifneq ($(words $(RANLIB)),0)
 
  52         echo Compiling $< to $@
 
  53         $(CXX) -c $(INLINEDEPFLAG) $(CPPFLAGS) $(CXXFLAGS) -o $@ $<
 
  56 # Include the dependencies that are available
 
  57 The_DFiles = $(wildcard $($(LOCAL)-DEP))
 
  58 ifneq ($(words $(The_DFiles)),0)