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 31  
32 32 $(foreach B,$(BINS_examples) $(CBINS_examples),$(eval \
33 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 54 $(OBJS_dftables): external-libs/pcre/dftables.c
55 55 $(call c_compile,$<,)
56 56  
57   -external-libs/$(OUTPUT_DIR)/$(call binname,dftables): LIBS=
58 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 3 $(TARGETS_libqpdf): $(TARGETS_external-libs)
4 4  
5 5 INCLUDES_libqpdf = include libqpdf $(INCLUDES_external-libs)
  6 +LDFLAGS_libqpdf = -Llibqpdf/$(OUTPUT_DIR)
  7 +LIBS_libqpdf = -lqpdf
6 8  
7 9 SRCS_libqpdf = \
8 10 libqpdf/BitStream.cc \
... ... @@ -70,4 +72,4 @@ $(OBJS_libqpdf): libqpdf/$(OUTPUT_DIR)/%.$(LOBJ): libqpdf/%.cc
70 72 # * Otherwise, increment REVISION
71 73  
72 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 36  
37 37 $(foreach B,$(BINS_libtests),$(eval \
38 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 62 $(RANLIB) $(2)
63 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 67 define makelib
68 68 $(RM) $(2) $(2).*
69   - major=$$(( $(3) - $(5))); \
70   - versuffix=$$major.$5.$4; \
  69 + major=$$(( $(5) - $(7))); \
  70 + versuffix=$$major.$(7).$(6); \
71 71 $(CXX) $(CXXFLAGS) -shared -o $(2).$$versuffix $(1) \
72 72 -Wl,--soname -Wl,`basename $(2)`.$$major \
73   - $(LDFLAGS) $(LIBS); \
  73 + $(3) $(4); \
74 74 ln -s `basename $(2)`.$$versuffix $(2); \
75 75 ln -s `basename $(2)`.$$versuffix $(2).$$major
76 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 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 82 endef
... ...
make/libtool.mk
... ... @@ -76,18 +76,16 @@ define makeslib
76 76 $(RANLIB) $(2)
77 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 81 define makelib
82 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 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 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 91 endef
... ...
make/mingw.mk
... ... @@ -44,17 +44,16 @@ define makeslib
44 44 $(RANLIB) $(2)
45 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 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 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 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 59 endef
... ...
make/msvc.mk
... ... @@ -40,26 +40,27 @@ define makeslib
40 40 lib /nologo /OUT:$(2) $(1)
41 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 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 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 53 fi
  54 + mv $(2)$(5).lib $(2).lib
54 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 59 define makebin
59 60 cl /nologo /Zi /Gy /EHsc /MD $(1) \
60 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 64 if [ -f $(2).manifest ]; then \
64 65 mt.exe -nologo -manifest $(2).manifest \
65 66 -outputresource:$(2)\;2; \
... ...
qpdf/build.mk
... ... @@ -30,4 +30,4 @@ $(foreach B,$(CBINS_qpdf),$(eval \
30 30  
31 31 $(foreach B,$(BINS_qpdf) $(CBINS_qpdf),$(eval \
32 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 19 $(call compile,$<,$(INCLUDES_zlib-flate))
20 20  
21 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))
... ...