summaryrefslogtreecommitdiff
path: root/buildlib/staticlibrary.mak
diff options
context:
space:
mode:
authorArch Librarian <arch@canonical.com>2004-09-20 16:51:39 +0000
committerArch Librarian <arch@canonical.com>2004-09-20 16:51:39 +0000
commite1b1ae50b50242e30a56e14df854d4368e8b49c2 (patch)
tree138434f2ab10a4aa5a73154347553a912a9cb4ae /buildlib/staticlibrary.mak
parentc3c459fc5ec635db7e6fa7cff97f4d954cd39fc9 (diff)
Static lib support
Author: jgg Date: 1998-11-24 01:09:49 GMT Static lib support
Diffstat (limited to 'buildlib/staticlibrary.mak')
-rw-r--r--buildlib/staticlibrary.mak54
1 files changed, 54 insertions, 0 deletions
diff --git a/buildlib/staticlibrary.mak b/buildlib/staticlibrary.mak
new file mode 100644
index 000000000..998ca5bf2
--- /dev/null
+++ b/buildlib/staticlibrary.mak
@@ -0,0 +1,54 @@
+# -*- make -*-
+
+# This creates a static library.
+
+# Input
+# $(SOURCE) - The source code to use
+# $(HEADERS) - Exported header files and private header files
+# $(LIBRARY) - The name of the library without lib or .so
+
+# All output is writtin to .o files in the build directory
+
+# See defaults.mak for information about LOCAL
+
+# Some local definitions
+LOCAL := lib$(LIBRARY).a
+$(LOCAL)-OBJS := $(addprefix $(OBJ)/,$(addsuffix .o,$(notdir $(basename $(SOURCE)))))
+$(LOCAL)-DEP := $(addprefix $(DEP)/,$(addsuffix .o.d,$(notdir $(basename $(SOURCE)))))
+$(LOCAL)-HEADERS := $(addprefix $(INCLUDE)/,$(HEADERS))
+$(LOCAL)-LIB := $(LIB)/lib$(LIBRARY).a
+
+# Install the command hooks
+headers: $($(LOCAL)-HEADERS)
+library: $($(LOCAL)-LIB)
+clean: clean/$(LOCAL)
+veryclean: veryclean/$(LOCAL)
+
+# The clean rules
+.PHONY: clean/$(LOCAL) veryclean/$(LOCAL)
+clean/$(LOCAL):
+ -rm -f $($(@F)-OBJS) $($(@F)-DEP)
+veryclean/$(LOCAL): clean/$(LOCAL)
+ -rm -f $($(@F)-HEADERS) $($(@F)-LIB)
+
+# Build rules for the two symlinks
+.PHONY: $($(LOCAL)-LIB)
+
+# The binary build rule
+$($(LOCAL)-LIB): $($(LOCAL)-HEADERS) $($(LOCAL)-OBJS)
+ echo Building library $@
+ -rm $@ > /dev/null 2>&1
+ $(AR) cq $@ $(filter %.o,$^)
+
+# Compilation rules
+vpath %.cc $(SUBDIRS)
+$(OBJ)/%.o: %.cc
+ echo Compiling $< to $@
+ $(CXX) -c $(INLINEDEPFLAG) $(CPPFLAGS) $(CXXFLAGS) -o $@ $<
+ $(DoDep)
+
+# Include the dependencies that are available
+The_DFiles = $(wildcard $($(LOCAL)-DEP))
+ifneq ($(words $(The_DFiles)),0)
+include $(The_DFiles)
+endif