diff options
Diffstat (limited to 'make/rules.mk')
-rw-r--r-- | make/rules.mk | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/make/rules.mk b/make/rules.mk new file mode 100644 index 00000000..901534cd --- /dev/null +++ b/make/rules.mk @@ -0,0 +1,63 @@ + +# Usage: $(call src_to_obj,srcs) +define src_to_obj +$(foreach F,$(1),$(dir $(F))$(OUTPUT_DIR)/$(patsubst %.cc,%.o,$(notdir $(F)))) +endef + +# Usage: $(call src_to_lobj,srcs) +define src_to_lobj +$(foreach F,$(1),$(dir $(F))$(OUTPUT_DIR)/$(patsubst %.cc,%.lo,$(notdir $(F)))) +endef + +# Usage: $(call obj_to_dep,objs) +define obj_to_dep +$(patsubst %.o,%.dep,$(1)) +endef + +# Usage: $(call lobj_to_dep,objs) +define lobj_to_dep +$(patsubst %.lo,%.dep,$(1)) +endef + +# Usage: $(call depflags,$(basename obj)) +ifeq ($(GENDEPS),1) +depflags=-MD -MF $(1).dep -MP +else +depflags= +endif + +# 1 2 +# Usage: $(call compile,src,includes) +define compile + $(CXX) $(CPPFLAGS) $(CXXFLAGS) \ + $(call depflags,$(basename $(call src_to_obj,$(1)))) \ + $(foreach I,$(2),-I$(I)) \ + -c $(1) -o $(call src_to_obj,$(1)) +endef + +# 1 2 +# Usage: $(call libcompile,src,includes) +define libcompile + $(LIBTOOL) --mode=compile \ + $(CXX) $(CPPFLAGS) $(CXXFLAGS) \ + $(call depflags,$(basename $(call src_to_obj,$(1)))) \ + $(foreach I,$(2),-I$(I)) \ + -c $(1) -o $(call src_to_obj,$(1)) +endef + +# 1 2 3 4 5 +# Usage: $(call makelib,objs,library,current,revision,age) +define makelib + $(LIBTOOL) --mode=link \ + $(CXX) $(CXXFLAGS) -o $(2) $(1) $(LDFLAGS) $(LIBS) \ + -rpath $(libdir) -version-info $(3):$(4):$(5) +endef + +# 1 2 +# Usage: $(call makebin,objs,binary) +define makebin + $(LIBTOOL) --mode=link \ + $(CXX) $(CXXFLAGS) $(1) -o $(2) $(LDFLAGS) \ + -Llibqpdf/$(OUTPUT_DIR) -lqpdf $(LIBS) +endef + |