Commit 2b5ac676ed1cbde1092d41acf0775b1c8d9a2baf

Authored by Jay Berkenbilt
1 parent 9e05a15d

generalize build

git-svn-id: svn+q:///qpdf/trunk@776 71b93d88-0707-0410-a8cf-f5a4172ac649
examples/build.mk
@@ -31,4 +31,4 @@ $(foreach B,$(CBINS_examples),$(eval \ @@ -31,4 +31,4 @@ $(foreach B,$(CBINS_examples),$(eval \
31 31
32 $(foreach B,$(BINS_examples) $(CBINS_examples),$(eval \ 32 $(foreach B,$(BINS_examples) $(CBINS_examples),$(eval \
33 examples/$(OUTPUT_DIR)/$(call binname,$(B)): $(OBJS_$(B)) ; \ 33 examples/$(OUTPUT_DIR)/$(call binname,$(B)): $(OBJS_$(B)) ; \
34 - $(call makebin,$(OBJS_$(B)),$$@))) 34 + $(call makebin,$(OBJS_$(B)),$$@,$(LDFLAGS) $(LDFLAGS_libqpdf),$(LIBS) $(LIBS_libqpdf))))
external-libs/build.mk
@@ -54,6 +54,5 @@ OBJS_dftables = $(call c_src_to_obj,external-libs/pcre/dftables.c) @@ -54,6 +54,5 @@ OBJS_dftables = $(call c_src_to_obj,external-libs/pcre/dftables.c)
54 $(OBJS_dftables): external-libs/pcre/dftables.c 54 $(OBJS_dftables): external-libs/pcre/dftables.c
55 $(call c_compile,$<,) 55 $(call c_compile,$<,)
56 56
57 -external-libs/$(OUTPUT_DIR)/$(call binname,dftables): LIBS=  
58 external-libs/$(OUTPUT_DIR)/$(call binname,dftables): $(OBJS_dftables) 57 external-libs/$(OUTPUT_DIR)/$(call binname,dftables): $(OBJS_dftables)
59 - $(call makebin,$(OBJS_dftables),$@) 58 + $(call makebin,$(OBJS_dftables),$@,,)
libqpdf/build.mk
@@ -3,6 +3,8 @@ TARGETS_libqpdf = libqpdf/$(OUTPUT_DIR)/$(call libname,qpdf) @@ -3,6 +3,8 @@ TARGETS_libqpdf = libqpdf/$(OUTPUT_DIR)/$(call libname,qpdf)
3 $(TARGETS_libqpdf): $(TARGETS_external-libs) 3 $(TARGETS_libqpdf): $(TARGETS_external-libs)
4 4
5 INCLUDES_libqpdf = include libqpdf $(INCLUDES_external-libs) 5 INCLUDES_libqpdf = include libqpdf $(INCLUDES_external-libs)
  6 +LDFLAGS_libqpdf = -Llibqpdf/$(OUTPUT_DIR)
  7 +LIBS_libqpdf = -lqpdf
6 8
7 SRCS_libqpdf = \ 9 SRCS_libqpdf = \
8 libqpdf/BitStream.cc \ 10 libqpdf/BitStream.cc \
@@ -70,4 +72,4 @@ $(OBJS_libqpdf): libqpdf/$(OUTPUT_DIR)/%.$(LOBJ): libqpdf/%.cc @@ -70,4 +72,4 @@ $(OBJS_libqpdf): libqpdf/$(OUTPUT_DIR)/%.$(LOBJ): libqpdf/%.cc
70 # * Otherwise, increment REVISION 72 # * Otherwise, increment REVISION
71 73
72 $(TARGETS_libqpdf): $(OBJS_libqpdf) 74 $(TARGETS_libqpdf): $(OBJS_libqpdf)
73 - $(call makelib,$(OBJS_libqpdf),$@,3,0,0) 75 + $(call makelib,$(OBJS_libqpdf),$@,$(LDFLAGS),$(LIBS),3,0,0)
libtests/build.mk
@@ -36,4 +36,4 @@ $(foreach B,$(BINS_libtests),$(eval \ @@ -36,4 +36,4 @@ $(foreach B,$(BINS_libtests),$(eval \
36 36
37 $(foreach B,$(BINS_libtests),$(eval \ 37 $(foreach B,$(BINS_libtests),$(eval \
38 libtests/$(OUTPUT_DIR)/$(call binname,$(B)): $(OBJS_$(B)) ; \ 38 libtests/$(OUTPUT_DIR)/$(call binname,$(B)): $(OBJS_$(B)) ; \
39 - $(call makebin,$(OBJS_$(B)),$$@))) 39 + $(call makebin,$(OBJS_$(B)),$$@,$(LDFLAGS) $(LDFLAGS_libqpdf),$(LIBS) $(LIBS_libqpdf))))
make/gcc-linux.mk
@@ -62,22 +62,21 @@ define makeslib @@ -62,22 +62,21 @@ define makeslib
62 $(RANLIB) $(2) 62 $(RANLIB) $(2)
63 endef 63 endef
64 64
65 -# 1 2 3 4 5  
66 -# Usage: $(call makelib,objs,library,current,revision,age) 65 +# 1 2 3 4 5 6 7
  66 +# Usage: $(call makelib,objs,library,ldflags,libs,current,revision,age)
67 define makelib 67 define makelib
68 $(RM) $(2) $(2).* 68 $(RM) $(2) $(2).*
69 - major=$$(( $(3) - $(5))); \  
70 - versuffix=$$major.$5.$4; \ 69 + major=$$(( $(5) - $(7))); \
  70 + versuffix=$$major.$(7).$(6); \
71 $(CXX) $(CXXFLAGS) -shared -o $(2).$$versuffix $(1) \ 71 $(CXX) $(CXXFLAGS) -shared -o $(2).$$versuffix $(1) \
72 -Wl,--soname -Wl,`basename $(2)`.$$major \ 72 -Wl,--soname -Wl,`basename $(2)`.$$major \
73 - $(LDFLAGS) $(LIBS); \ 73 + $(3) $(4); \
74 ln -s `basename $(2)`.$$versuffix $(2); \ 74 ln -s `basename $(2)`.$$versuffix $(2); \
75 ln -s `basename $(2)`.$$versuffix $(2).$$major 75 ln -s `basename $(2)`.$$versuffix $(2).$$major
76 endef 76 endef
77 77
78 -# 1 2  
79 -# Usage: $(call makebin,objs,binary) 78 +# 1 2 3 4
  79 +# Usage: $(call makebin,objs,binary,ldflags,libs)
80 define makebin 80 define makebin
81 - $(CXX) $(CXXFLAGS) $(1) -o $(2) $(LDFLAGS) \  
82 - -Llibqpdf/$(OUTPUT_DIR) -lqpdf $(LIBS) 81 + $(CXX) $(CXXFLAGS) $(1) -o $(2) $(LDFLAGS) $(3) $(4)
83 endef 82 endef
make/libtool.mk
@@ -76,18 +76,16 @@ define makeslib @@ -76,18 +76,16 @@ define makeslib
76 $(RANLIB) $(2) 76 $(RANLIB) $(2)
77 endef 77 endef
78 78
79 -# 1 2 3 4 5  
80 -# Usage: $(call makelib,objs,library,current,revision,age) 79 +# 1 2 3 4 5 6 7
  80 +# Usage: $(call makelib,objs,library,ldflags,libs,current,revision,age)
81 define makelib 81 define makelib
82 $(LIBTOOL) --mode=link \ 82 $(LIBTOOL) --mode=link \
83 - $(CXX) $(CXXFLAGS) -o $(2) $(1) $(LDFLAGS) $(LIBS) \  
84 - -rpath $(libdir) -version-info $(3):$(4):$(5) 83 + $(CXX) $(CXXFLAGS) -o $(2) $(1) $(3) $(4) \
  84 + -rpath $(libdir) -version-info $(5):$(6):$(7)
85 endef 85 endef
86 86
87 -# 1 2  
88 -# Usage: $(call makebin,objs,binary) 87 +# 1 2 3 4
  88 +# Usage: $(call makebin,objs,binary,ldflags,libs)
89 define makebin 89 define makebin
90 - $(LIBTOOL) --mode=link \  
91 - $(CXX) $(CXXFLAGS) $(1) -o $(2) $(LDFLAGS) \  
92 - -Llibqpdf/$(OUTPUT_DIR) -lqpdf $(LIBS) 90 + $(LIBTOOL) --mode=link $(CXX) $(CXXFLAGS) $(1) -o $(2) $(3) $(4)
93 endef 91 endef
make/mingw.mk
@@ -44,17 +44,16 @@ define makeslib @@ -44,17 +44,16 @@ define makeslib
44 $(RANLIB) $(2) 44 $(RANLIB) $(2)
45 endef 45 endef
46 46
47 -# 1 2 3 4 5  
48 -# Usage: $(call makelib,objs,library,current,revision,age) 47 +# 1 2 3 4 5 6 7
  48 +# Usage: $(call makelib,objs,library,ldflags,libs,current,revision,age)
49 define makelib 49 define makelib
50 - dlltool -l $(2) -D $$(basename `echo $(2) | sed -e 's,/lib\(.*\).a,/\1,'`$(3).dll) $(1); \  
51 - $(CXX) -shared -o `echo $(2) | sed -e 's,/lib\(.*\).a,/\1,'`$(3).dll \  
52 - $(1) $(LDFLAGS) $(LIBS) 50 + dlltool -l $(2) -D $$(basename `echo $(2) | sed -e 's,/lib\(.*\).a,/\1,'`$(5).dll) $(1); \
  51 + $(CXX) -shared -o `echo $(2) | sed -e 's,/lib\(.*\).a,/\1,'`$(5).dll \
  52 + $(1) $(3) $(4)
53 endef 53 endef
54 54
55 -# 1 2  
56 -# Usage: $(call makebin,objs,binary) 55 +# 1 2 3 4
  56 +# Usage: $(call makebin,objs,binary,ldflags,libs)
57 define makebin 57 define makebin
58 - $(CXX) $(CXXFLAGS) $(1) -o $(2) $(LDFLAGS) \  
59 - -Llibqpdf/$(OUTPUT_DIR) -lqpdf $(LIBS) 58 + $(CXX) $(CXXFLAGS) $(1) -o $(2) $(3) $(4)
60 endef 59 endef
make/msvc.mk
@@ -40,26 +40,27 @@ define makeslib @@ -40,26 +40,27 @@ define makeslib
40 lib /nologo /OUT:$(2) $(1) 40 lib /nologo /OUT:$(2) $(1)
41 endef 41 endef
42 42
43 -# 1 2 3 4 5  
44 -# Usage: $(call makelib,objs,library,current,revision,age) 43 +# 1 2 3 4 5 6 7
  44 +# Usage: $(call makelib,objs,library,ldflags,libs,current,revision,age)
45 define makelib 45 define makelib
46 - cl /nologo /Zi /Gy /EHsc /MD /LD /Fe$(basename $(2))$(3).dll $(1) \ 46 + cl /nologo /Zi /Gy /EHsc /MD /LD /Fe$(basename $(2))$(5).dll $(1) \
47 /link /incremental:no \ 47 /link /incremental:no \
48 - $(foreach L,$(subst -L,,$(LDFLAGS)),/LIBPATH:$(L)) \  
49 - $(foreach L,$(subst -l,,$(LIBS)),$(L).lib)  
50 - if [ -f $(basename $(2))$(3).dll.manifest ]; then \  
51 - mt.exe -nologo -manifest $(basename $(2))$(3).dll.manifest \  
52 - -outputresource:$(basename $(2))$(3).dll\;2; \ 48 + $(foreach L,$(subst -L,,$(3)),/LIBPATH:$(L)) \
  49 + $(foreach L,$(subst -l,,$(4)),$(L).lib)
  50 + if [ -f $(basename $(2))$(5).dll.manifest ]; then \
  51 + mt.exe -nologo -manifest $(basename $(2))$(5).dll.manifest \
  52 + -outputresource:$(basename $(2))$(5).dll\;2; \
53 fi 53 fi
  54 + mv $(2)$(5).lib $(2).lib
54 endef 55 endef
55 56
56 -# 1 2  
57 -# Usage: $(call makebin,objs,binary) 57 +# 1 2 3 4
  58 +# Usage: $(call makebin,objs,binary,ldflags,libs)
58 define makebin 59 define makebin
59 cl /nologo /Zi /Gy /EHsc /MD $(1) \ 60 cl /nologo /Zi /Gy /EHsc /MD $(1) \
60 /link /incremental:no /OUT:$(2) \ 61 /link /incremental:no /OUT:$(2) \
61 - $(foreach L,$(subst -L,,$(LDFLAGS)),/LIBPATH:$(L)) \  
62 - $(foreach L,$(subst -l,,$(LIBS)),$(L).lib) 62 + $(foreach L,$(subst -L,,$(3)),/LIBPATH:$(L)) \
  63 + $(foreach L,$(subst -l,,$(4)),$(L).lib)
63 if [ -f $(2).manifest ]; then \ 64 if [ -f $(2).manifest ]; then \
64 mt.exe -nologo -manifest $(2).manifest \ 65 mt.exe -nologo -manifest $(2).manifest \
65 -outputresource:$(2)\;2; \ 66 -outputresource:$(2)\;2; \
qpdf/build.mk
@@ -30,4 +30,4 @@ $(foreach B,$(CBINS_qpdf),$(eval \ @@ -30,4 +30,4 @@ $(foreach B,$(CBINS_qpdf),$(eval \
30 30
31 $(foreach B,$(BINS_qpdf) $(CBINS_qpdf),$(eval \ 31 $(foreach B,$(BINS_qpdf) $(CBINS_qpdf),$(eval \
32 qpdf/$(OUTPUT_DIR)/$(call binname,$(B)): $(OBJS_$(B)) ; \ 32 qpdf/$(OUTPUT_DIR)/$(call binname,$(B)): $(OBJS_$(B)) ; \
33 - $(call makebin,$(OBJS_$(B)),$$@))) 33 + $(call makebin,$(OBJS_$(B)),$$@,$(LDFLAGS) $(LDFLAGS_libqpdf),$(LIBS) $(LIBS_libqpdf))))
zlib-flate/build.mk
@@ -19,4 +19,4 @@ $(OBJS_zlib-flate): zlib-flate/$(OUTPUT_DIR)/%.$(OBJ): zlib-flate/%.cc @@ -19,4 +19,4 @@ $(OBJS_zlib-flate): zlib-flate/$(OUTPUT_DIR)/%.$(OBJ): zlib-flate/%.cc
19 $(call compile,$<,$(INCLUDES_zlib-flate)) 19 $(call compile,$<,$(INCLUDES_zlib-flate))
20 20
21 zlib-flate/$(OUTPUT_DIR)/$(call binname,zlib-flate): $(OBJS_zlib-flate) 21 zlib-flate/$(OUTPUT_DIR)/$(call binname,zlib-flate): $(OBJS_zlib-flate)
22 - $(call makebin,$(OBJS_zlib-flate),$@) 22 + $(call makebin,$(OBJS_zlib-flate),$@,$(LDFLAGS) $(LDFLAGS_libqpdf),$(LIBS) $(LIBS_libqpdf))