aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2009-10-10 18:51:20 +0200
committerJay Berkenbilt <ejb@ql.org>2009-10-10 18:51:20 +0200
commitc7be2041b8c97129323a8a7ad6d8da0310d371f1 (patch)
tree34e0422395e05a6a50177868b9fb0d00967c0e96
parentdd66ea8160e79003aa407a423a92899427ea6ffe (diff)
downloadqpdf-c7be2041b8c97129323a8a7ad6d8da0310d371f1.tar.zst
include external-libs
git-svn-id: svn+q:///qpdf/trunk@761 71b93d88-0707-0410-a8cf-f5a4172ac649
-rw-r--r--Makefile3
-rw-r--r--external-libs/Makefile1
-rw-r--r--external-libs/build.mk57
-rw-r--r--libqpdf/build.mk2
-rw-r--r--make/gcc-linux.mk10
-rw-r--r--make/rules.mk22
6 files changed, 89 insertions, 6 deletions
diff --git a/Makefile b/Makefile
index a0207f5b..9998dbb9 100644
--- a/Makefile
+++ b/Makefile
@@ -30,7 +30,8 @@
# install to install in a separate location. This is useful for
# packagers.
-BUILD_ITEMS = manual libqpdf zlib-flate libtests qpdf examples
+#XXX
+BUILD_ITEMS = manual external-libs libqpdf zlib-flate libtests qpdf examples
OUTPUT_DIR = build
ALL_TARGETS =
diff --git a/external-libs/Makefile b/external-libs/Makefile
new file mode 100644
index 00000000..90899055
--- /dev/null
+++ b/external-libs/Makefile
@@ -0,0 +1 @@
+include ../make/proxy.mk
diff --git a/external-libs/build.mk b/external-libs/build.mk
new file mode 100644
index 00000000..5b092481
--- /dev/null
+++ b/external-libs/build.mk
@@ -0,0 +1,57 @@
+TARGETS_external-libs = external-libs/$(OUTPUT_DIR)/libexternal.a
+INCLUDES_external-libs = external-libs/zlib external-libs/pcre \
+ external-libs/$(OUTPUT_DIR)
+
+SRCS_external-libs_zlib = \
+ external-libs/zlib/adler32.c \
+ external-libs/zlib/compress.c \
+ external-libs/zlib/crc32.c \
+ external-libs/zlib/gzio.c \
+ external-libs/zlib/uncompr.c \
+ external-libs/zlib/deflate.c \
+ external-libs/zlib/trees.c \
+ external-libs/zlib/zutil.c \
+ external-libs/zlib/inflate.c \
+ external-libs/zlib/infback.c \
+ external-libs/zlib/inftrees.c \
+ external-libs/zlib/inffast.c \
+
+SRCS_external-libs_pcre = \
+ external-libs/pcre/maketables.c \
+ external-libs/pcre/get.c \
+ external-libs/pcre/study.c \
+ external-libs/pcre/pcre.c
+
+SRCS_external-libs = $(SRCS_external-libs_zlib) $(SRCS_external-libs_pcre)
+
+external-libs/$(OUTPUT_DIR)/pcre.$(LOBJ): external-libs/$(OUTPUT_DIR)/chartables.c
+
+external-libs/$(OUTPUT_DIR)/chartables.c: external-libs/$(OUTPUT_DIR)/$(call binname,dftables)
+ external-libs/$(OUTPUT_DIR)/$(call binname,dftables) \
+ external-libs/$(OUTPUT_DIR)/chartables.c
+
+external-libs/$(OUTPUT_DIR)/$(call binname,dftables):
+ $(CC) -o $@ external-libs/pcre/dftables.c
+
+# -----
+
+OBJS_external-libs_zlib = $(call c_src_to_lobj,$(subst zlib/,,$(SRCS_external-libs_zlib)))
+OBJS_external-libs_pcre = $(call c_src_to_lobj,$(subst pcre/,,$(SRCS_external-libs_pcre)))
+
+OBJS_external-libs = $(OBJS_external-libs_zlib) $(OBJS_external-libs_pcre)
+
+x:
+ @echo $(call lobj_to_dep,$(OBJS_external-libs))
+
+ifeq ($(GENDEPS),1)
+-include $(call lobj_to_dep,$(OBJS_external-libs))
+endif
+
+$(OBJS_external-libs_zlib): external-libs/$(OUTPUT_DIR)/%.$(LOBJ): external-libs/zlib/%.c
+ $(call c_libcompile,$<,$(INCLUDES_external-libs))
+
+$(OBJS_external-libs_pcre): external-libs/$(OUTPUT_DIR)/%.$(LOBJ): external-libs/pcre/%.c
+ $(call c_libcompile,$<,$(INCLUDES_external-libs))
+
+$(TARGETS_external-libs): $(OBJS_external-libs)
+ $(call makeslib,$(OBJS_external-libs),$(TARGETS_external-libs))
diff --git a/libqpdf/build.mk b/libqpdf/build.mk
index 5696a3b5..ecda6a25 100644
--- a/libqpdf/build.mk
+++ b/libqpdf/build.mk
@@ -1,5 +1,7 @@
TARGETS_libqpdf = libqpdf/$(OUTPUT_DIR)/$(call libname,qpdf)
+$(TARGETS_libqpdf): $(TARGETS_external-libs)
+
INCLUDES_libqpdf = include libqpdf
SRCS_libqpdf = \
diff --git a/make/gcc-linux.mk b/make/gcc-linux.mk
index e4fdbe02..6124357b 100644
--- a/make/gcc-linux.mk
+++ b/make/gcc-linux.mk
@@ -28,7 +28,7 @@ endef
# Usage: $(call c_compile,src,includes)
define c_compile
$(CC) $(CPPFLAGS) $(CFLAGS) \
- $(call depflags,$(basename $(call src_to_obj,$(1)))) \
+ $(call depflags,$(basename $(call c_src_to_obj,$(1)))) \
$(foreach I,$(2),-I$(I)) \
-c $(1) -o $(call c_src_to_obj,$(1))
endef
@@ -39,6 +39,12 @@ define libcompile
$(foreach I,$(2),-I$(I)) \
-c $(1) -o $(call src_to_obj,$(1))
endef
+define c_libcompile
+ $(CC) $(CPPFLAGS) $(CXXFLAGS) -fpic \
+ $(call depflags,$(basename $(call c_src_to_lobj,$(1)))) \
+ $(foreach I,$(2),-I$(I)) \
+ -c $(1) -o $(call c_src_to_obj,$(1))
+endef
# 1 2
@@ -52,7 +58,7 @@ endef
# 1 2 3 4 5
# Usage: $(call makelib,objs,library,current,revision,age)
define makelib
- $(RM) $2
+ $(RM) $(2) $(2).*
major=$$(( $(3) - $(5))); \
versuffix=$$major.$5.$4; \
$(CXX) $(CXXFLAGS) -shared -o $(2).$$versuffix $(1) \
diff --git a/make/rules.mk b/make/rules.mk
index a55087b5..efeb9a7f 100644
--- a/make/rules.mk
+++ b/make/rules.mk
@@ -1,18 +1,34 @@
include make/$(BUILDRULES).mk
+define firstelem
+$(word 1,$(subst /, ,$(1)))
+endef
+SPC := $(subst /, ,/)
+define lastelem
+$(subst $(SPC),/,$(word $(words $(subst /, ,$(1))),$(subst /, ,$(1))))
+endef
+define objbase
+$(patsubst %.$(2),%.$(3),$(firstelem)/$(OUTPUT_DIR)/$(lastelem))
+endef
+
# Usage: $(call src_to_obj,srcs)
define src_to_obj
-$(foreach F,$(1),$(dir $(F))$(OUTPUT_DIR)/$(patsubst %.cc,%.$(OBJ),$(notdir $(F))))
+$(foreach F,$(1),$(call objbase,$(F),cc,$(OBJ)))
endef
# Usage: $(call c_src_to_obj,srcs)
define c_src_to_obj
-$(foreach F,$(1),$(dir $(F))$(OUTPUT_DIR)/$(patsubst %.c,%.$(OBJ),$(notdir $(F))))
+$(foreach F,$(1),$(call objbase,$(F),c,$(OBJ)))
endef
# Usage: $(call src_to_lobj,srcs)
define src_to_lobj
-$(foreach F,$(1),$(dir $(F))$(OUTPUT_DIR)/$(patsubst %.cc,%.$(LOBJ),$(notdir $(F))))
+$(foreach F,$(1),$(call objbase,$(F),cc,$(LOBJ)))
+endef
+
+# Usage: $(call c_src_to_lobj,srcs)
+define c_src_to_lobj
+$(foreach F,$(1),$(call objbase,$(F),c,$(LOBJ)))
endef
# Usage: $(call obj_to_dep,objs)