]> git.saurik.com Git - apt.git/blobdiff - buildlib/program.mak
properly handle (currently unused) dpkg pass-through
[apt.git] / buildlib / program.mak
index 41454ad72e50e6cd731723864fe6aa21a92d4811..71c265f39f08b2edfac35f8a2db10568eb6a980f 100644 (file)
@@ -6,38 +6,51 @@
 # $(SOURCE) - The source code to use
 # $(PROGRAM) - The name of the program
 # $(SLIBS) - Shared libs to link against
+# $(LIB_MAKES) - Shared library make files to depend on - to ensure we get
+# remade when the shared library version increases.
 
 # See defaults.mak for information about LOCAL
 
 # Some local definitions
 LOCAL := $(PROGRAM)
 $(LOCAL)-OBJS := $(addprefix $(OBJ)/,$(addsuffix .o,$(notdir $(basename $(SOURCE)))))
-$(LOCAL)-DEP := $(addprefix $(DEP)/,$(addsuffix .d,$(notdir $(basename $(SOURCE)))))
+$(LOCAL)-DEP := $(addprefix $(DEP)/,$(addsuffix .o.d,$(notdir $(basename $(SOURCE)))))
 $(LOCAL)-BIN := $(BIN)/$(PROGRAM)
 $(LOCAL)-SLIBS := $(SLIBS)
+$(LOCAL)-MKS := $(addprefix $(BASE)/,$(LIB_MAKES))
 
 # Install the command hooks
 program: $(BIN)/$(PROGRAM)
 clean: clean/$(LOCAL)
 veryclean: veryclean/$(LOCAL)
 
+TYPE = src
+include $(PODOMAIN_H)
+
+# Make Directories
+MKDIRS += $(OBJ) $(DEP) $(BIN)
+
 # The clean rules
-.PHONY: clean/$(LOCAL) veryclean/$(LOCAL)
+.PHONY: clean/$(LOCAL) veryclean/$(LOCAL) 
 clean/$(LOCAL):
        -rm -f $($(@F)-OBJS) $($(@F)-DEP)
 veryclean/$(LOCAL): clean/$(LOCAL)
        -rm -f $($(@F)-BIN)
 
+# The convience binary build rule
+.PHONY: $(PROGRAM)
+$(PROGRAM): $($(LOCAL)-BIN)
+
 # The binary build rule
-$($(LOCAL)-BIN): $($(LOCAL)-OBJS)
+$($(LOCAL)-BIN): $($(LOCAL)-OBJS) $($(LOCAL)-MKS)
        echo Building program $@
-       $(CXX) $(CXXFLAGS) $(LDFLAGS) $(LFLAGS) $($(LOCAL)-SLIBS) -o $@ $(filter %.o,$^)
+       $(CXX) $(CXXFLAGS) $(LDFLAGS) $(LFLAGS) -o $@ $(filter %.o,$^) $($(@F)-SLIBS) $(LEFLAGS)
 
 # Compilation rules
 vpath %.cc $(SUBDIRS)
 $(OBJ)/%.o: %.cc
        echo Compiling $< to $@
-       $(CXX) -c $(INLINEDEPFLAG) $(CPPFLAGS) $(CXXFLAGS) -o $@ $<
+       $(CXX) -c $(INLINEDEPFLAG) $(CPPFLAGS) $(CXXFLAGS) -o $@ $(abspath $<)
        $(DoDep)
 
 # Include the dependencies that are available