1# Copyright (C) 2001-2012 Artifex Software, Inc.
2# All Rights Reserved.
3#
4# This software is provided AS-IS with no warranty, either express or
5# implied.
6#
7# This software is distributed under license and may not be copied,
8# modified or distributed except as expressly authorized under the terms
9# of the license contained in the file LICENSE in this distribution.
10#
11# Refer to licensing information at http://www.artifex.com or contact
12# Artifex Software, Inc.,  7 Mt. Lassen Drive - Suite A-134, San Rafael,
13# CA  94903, U.S.A., +1(415)492-9861, for further information.
14#
15#
16
17# makefile for jasper JPEG 2000 support library
18# Users of this makefile must define the following:
19#	SHARE_JPX - whether to compile in or link to the library
20#	JPXSRCDIR - the top-level library source directory
21#
22# gs.mak and friends define the following:
23#	JPXOBJDIR - the output obj directory
24#	JPXGENDIR - generated (.dev) file directory
25#	JPXI_ and JPXCF_ - include and cflags for building the library
26#
27# We define the jasper.dev target and its dependencies
28#
29# This partial makefile compiles a portion of the jasper library for use in
30# Ghostscript. You're better off just linking to the library's native build
31# but this supports the library on all our platforms.
32
33# Define the name of this makefile
34JASPER_MAK=$(GLSRC)jasper.mak
35
36JASSRC=$(JPXSRCDIR)$(D)src$(D)libjasper$(D)
37JASGEN=$(JPXGENDIR)$(D)
38JASOBJ=$(JPXOBJDIR)$(D)
39
40# our required files from jasper 1.701.x
41
42libjasper_OBJS_base=\
43	$(JASOBJ)jas_cm.$(OBJ) \
44	$(JASOBJ)jas_debug.$(OBJ) \
45	$(JASOBJ)jas_getopt.$(OBJ) \
46	$(JASOBJ)jas_image.$(OBJ) \
47	$(JASOBJ)jas_icc.$(OBJ) \
48	$(JASOBJ)jas_iccdata.$(OBJ) \
49	$(JASOBJ)jas_init.$(OBJ) \
50	$(JASOBJ)jas_malloc.$(OBJ) \
51	$(JASOBJ)jas_seq.$(OBJ) \
52	$(JASOBJ)jas_stream.$(OBJ) \
53	$(JASOBJ)jas_string.$(OBJ) \
54	$(JASOBJ)jas_tvp.$(OBJ) \
55	$(JASOBJ)jas_version.$(OBJ)
56
57libjasper_OBJS_jpc=\
58	$(JASOBJ)jpc_bs.$(OBJ) \
59	$(JASOBJ)jpc_cs.$(OBJ) \
60	$(JASOBJ)jpc_dec.$(OBJ) \
61	$(JASOBJ)jpc_enc.$(OBJ) \
62	$(JASOBJ)jpc_math.$(OBJ) \
63	$(JASOBJ)jpc_mct.$(OBJ) \
64	$(JASOBJ)jpc_mqcod.$(OBJ) \
65	$(JASOBJ)jpc_mqdec.$(OBJ) \
66	$(JASOBJ)jpc_mqenc.$(OBJ) \
67	$(JASOBJ)jpc_qmfb.$(OBJ) \
68	$(JASOBJ)jpc_tagtree.$(OBJ) \
69	$(JASOBJ)jpc_t1cod.$(OBJ) \
70	$(JASOBJ)jpc_t1dec.$(OBJ) \
71	$(JASOBJ)jpc_t1enc.$(OBJ) \
72	$(JASOBJ)jpc_tsfb.$(OBJ) \
73	$(JASOBJ)jpc_t2cod.$(OBJ) \
74	$(JASOBJ)jpc_t2dec.$(OBJ) \
75	$(JASOBJ)jpc_t2enc.$(OBJ) \
76	$(JASOBJ)jpc_util.$(OBJ)
77
78libjasper_OBJS_jp2=\
79	$(JASOBJ)jp2_cod.$(OBJ) \
80	$(JASOBJ)jp2_dec.$(OBJ) \
81	$(JASOBJ)jp2_enc.$(OBJ)
82
83libjasper_OBJS=$(libjasper_OBJS_base) $(libjasper_OBJS_jpc) $(libjasper_OBJS_jp2)
84
85libjasper_HDRS_base=\
86	$(JASSRC)include$(D)jasper$(D)jasper.h \
87	$(JASSRC)include$(D)jasper$(D)jas_config.h \
88	$(JASSRC)include$(D)jasper$(D)jas_config_win32.h \
89	$(JASSRC)include$(D)jasper$(D)jas_cm.h \
90	$(JASSRC)include$(D)jasper$(D)jas_fix.h \
91	$(JASSRC)include$(D)jasper$(D)jas_debug.h \
92	$(JASSRC)include$(D)jasper$(D)jas_getopt.h \
93	$(JASSRC)include$(D)jasper$(D)jas_icc.h \
94	$(JASSRC)include$(D)jasper$(D)jas_image.h \
95	$(JASSRC)include$(D)jasper$(D)jas_init.h \
96	$(JASSRC)include$(D)jasper$(D)jas_malloc.h \
97	$(JASSRC)include$(D)jasper$(D)jas_math.h \
98	$(JASSRC)include$(D)jasper$(D)jas_seq.h \
99	$(JASSRC)include$(D)jasper$(D)jas_stream.h \
100	$(JASSRC)include$(D)jasper$(D)jas_string.h \
101	$(JASSRC)include$(D)jasper$(D)jas_tvp.h \
102	$(JASSRC)include$(D)jasper$(D)jas_types.h \
103	$(JASSRC)include$(D)jasper$(D)jas_version.h
104
105libjasper_HDRS_jpc=\
106	$(JASSRC)jpc$(D)jpc_bs.h \
107	$(JASSRC)jpc$(D)jpc_cod.h \
108	$(JASSRC)jpc$(D)jpc_cs.h \
109	$(JASSRC)jpc$(D)jpc_dec.h \
110	$(JASSRC)jpc$(D)jpc_enc.h \
111	$(JASSRC)jpc$(D)jpc_fix.h \
112	$(JASSRC)jpc$(D)jpc_flt.h \
113	$(JASSRC)jpc$(D)jpc_math.h \
114	$(JASSRC)jpc$(D)jpc_mct.h \
115	$(JASSRC)jpc$(D)jpc_mqcod.h \
116	$(JASSRC)jpc$(D)jpc_mqdec.h \
117	$(JASSRC)jpc$(D)jpc_mqenc.h \
118	$(JASSRC)jpc$(D)jpc_qmfb.h \
119	$(JASSRC)jpc$(D)jpc_tagtree.h \
120	$(JASSRC)jpc$(D)jpc_t1cod.h \
121	$(JASSRC)jpc$(D)jpc_t1dec.h \
122	$(JASSRC)jpc$(D)jpc_t1enc.h \
123	$(JASSRC)jpc$(D)jpc_tsfb.h \
124	$(JASSRC)jpc$(D)jpc_t2cod.h \
125	$(JASSRC)jpc$(D)jpc_t2dec.h \
126	$(JASSRC)jpc$(D)jpc_t2enc.h \
127	$(JASSRC)jpc$(D)jpc_util.h
128
129libjasper_HDRS_jp2=\
130	$(JASSRC)jp2$(D)jp2_cod.h \
131	$(JASSRC)jp2$(D)jp2_dec.h
132
133libjasper_HDRS=$(libjasper_HDRS_base) $(libjasper_HDRS_jpc) $(libjasper_HDRS_jp2)
134
135jasper.clean : jasper.config-clean jasper.clean-not-config-clean
136
137### WRONG.  MUST DELETE OBJ AND GEN FILES SELECTIVELY.
138jasper.clean-not-config-clean :
139	$(EXP)$(ECHOGS_XE) $(JASSRC) $(JASOBJ)
140	$(RM_) $(JASOBJ)*.$(OBJ)
141
142jasper.config-clean :
143	$(RMN_) $(JASGEN)$(D)jasper*.dev
144
145JASDEP=$(AK) $(JASPER_MAK)
146
147# hack: jasper uses EXCLUDE_fmt_SUPPORT defines to turn off unwanted
148# format support. This keeps the noise down on the normal compiles
149# where everything is enabled, but is inconvenient for us because
150# we must disable everything that's implicitly included except those
151# formats that we explicitly build. A better approach would be to
152# patch jasper to invert the sense of these defines and to use
153# config.h in its normal build to keep the noise down
154JAS_EXCF_=\
155	$(D_)EXCLUDE_BMP_SUPPORT$(_D_)1$(_D)\
156	$(D_)EXCLUDE_JPG_SUPPORT$(_D_)1$(_D)\
157	$(D_)EXCLUDE_MIF_SUPPORT$(_D_)1$(_D)\
158	$(D_)EXCLUDE_PGX_SUPPORT$(_D_)1$(_D)\
159        $(D_)EXCLUDE_PNM_SUPPORT$(_D_)1$(_D)\
160        $(D_)EXCLUDE_RAS_SUPPORT$(_D_)1$(_D)\
161        $(D_)EXCLUDE_PNG_SUPPORT$(_D_)1$(_D)
162
163# define our specific compiler
164JAS_CC=$(CC_) $(I_)$(JASGEN) $(II)$(JPXI_)$(_I) $(JPXCF_) $(JAS_EXCF_)
165JASO_=$(O_)$(JASOBJ)
166
167# switch in the selected .dev
168$(JASGEN)jasper.dev : $(TOP_MAKEFILES) $(JASGEN)jasper_$(SHARE_JPX).dev
169	$(CP_) $(JASGEN)jasper_$(SHARE_JPX).dev $(JASGEN)jasper.dev
170
171# external link .dev
172$(JASGEN)jasper_1.dev : $(TOP_MAKEFILES) $(JASPER_MAK) $(ECHOGS_XE)
173	$(SETMOD) $(JASGEN)jasper_1 -lib jasper
174
175# compile in .dev
176$(JASGEN)jasper_0.dev : $(TOP_MAKEFILES) $(JASPER_MAK) $(ECHOGS_XE) $(libjasper_OBJS)
177	$(SETMOD) $(JASGEN)jasper_0 $(libjasper_OBJS_base)
178	$(ADDMOD) $(JASGEN)jasper_0 $(libjasper_OBJS_jpc)
179	$(ADDMOD) $(JASGEN)jasper_0 $(libjasper_OBJS_jp2)
180
181# explicit rules for building the source files
182# for simplicity we have every source file depend on all headers
183
184$(JASOBJ)jas_cm.$(OBJ) : $(JASSRC)base$(D)jas_cm.c $(JASDEP) $(libjasper_HDRS)
185	$(JAS_CC) $(JASO_)jas_cm.$(OBJ) $(C_) $(JASSRC)base$(D)jas_cm.c
186
187$(JASOBJ)jas_debug.$(OBJ) : $(JASSRC)base$(D)jas_debug.c $(JASDEP) $(libjasper_HDRS)
188	$(JAS_CC) $(JASO_)jas_debug.$(OBJ) $(C_) $(JASSRC)base$(D)jas_debug.c
189
190$(JASOBJ)jas_getopt.$(OBJ) : $(JASSRC)base$(D)jas_getopt.c $(JASDEP) $(libjasper_HDRS)
191	$(JAS_CC) $(JASO_)jas_getopt.$(OBJ) $(C_) $(JASSRC)base$(D)jas_getopt.c
192
193$(JASOBJ)jas_icc.$(OBJ) : $(JASSRC)base$(D)jas_icc.c $(JASDEP) $(libjasper_HDRS)
194	$(JAS_CC) $(JASO_)jas_icc.$(OBJ) $(C_) $(JASSRC)base$(D)jas_icc.c
195
196$(JASOBJ)jas_iccdata.$(OBJ) : $(JASSRC)base$(D)jas_iccdata.c $(JASDEP) $(libjasper_HDRS)
197	$(JAS_CC) $(JASO_)jas_iccdata.$(OBJ) $(C_) $(JASSRC)base$(D)jas_iccdata.c
198
199$(JASOBJ)jas_image.$(OBJ) : $(JASSRC)base$(D)jas_image.c $(JASDEP) $(libjasper_HDRS)
200	$(JAS_CC) $(JASO_)jas_image.$(OBJ) $(C_) $(JASSRC)base$(D)jas_image.c
201
202$(JASOBJ)jas_init.$(OBJ) : $(JASSRC)base$(D)jas_init.c $(JASDEP) $(libjasper_HDRS)
203	$(JAS_CC) $(JASO_)jas_init.$(OBJ) $(C_) $(JASSRC)base$(D)jas_init.c
204
205$(JASOBJ)jas_malloc.$(OBJ) : $(JASSRC)base$(D)jas_malloc.c $(JASDEP) $(libjasper_HDRS)
206	$(JAS_CC) $(JASO_)jas_malloc.$(OBJ) $(C_) $(JASSRC)base$(D)jas_malloc.c
207
208$(JASOBJ)jas_seq.$(OBJ) : $(JASSRC)base$(D)jas_seq.c $(JASDEP) $(libjasper_HDRS)
209	$(JAS_CC) $(JASO_)jas_seq.$(OBJ) $(C_) $(JASSRC)base$(D)jas_seq.c
210
211$(JASOBJ)jas_stream.$(OBJ) : $(JASSRC)base$(D)jas_stream.c $(JASDEP) $(libjasper_HDRS)
212	$(JAS_CC) $(JASO_)jas_stream.$(OBJ) $(C_) $(JASSRC)base$(D)jas_stream.c
213
214$(JASOBJ)jas_string.$(OBJ) : $(JASSRC)base$(D)jas_string.c $(JASDEP) $(libjasper_HDRS)
215	$(JAS_CC) $(JASO_)jas_string.$(OBJ) $(C_) $(JASSRC)base$(D)jas_string.c
216
217$(JASOBJ)jas_tvp.$(OBJ) : $(JASSRC)base$(D)jas_tvp.c $(JASDEP) $(libjasper_HDRS)
218	$(JAS_CC) $(JASO_)jas_tvp.$(OBJ) $(C_) $(JASSRC)base$(D)jas_tvp.c
219
220$(JASOBJ)jas_version.$(OBJ) : $(JASSRC)base$(D)jas_version.c $(JASDEP) $(libjasper_HDRS)
221	$(JAS_CC) $(JASO_)jas_version.$(OBJ) $(C_) $(JASSRC)base$(D)jas_version.c
222
223
224$(JASOBJ)jpc_bs.$(OBJ) : $(JASSRC)jpc$(D)jpc_bs.c $(JASDEP) $(libjasper_HDRS)
225	$(JAS_CC) $(JASO_)jpc_bs.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_bs.c
226
227$(JASOBJ)jpc_cs.$(OBJ) : $(JASSRC)jpc$(D)jpc_cs.c $(JASDEP) $(libjasper_HDRS)
228	$(JAS_CC) $(JASO_)jpc_cs.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_cs.c
229
230$(JASOBJ)jpc_dec.$(OBJ) : $(JASSRC)jpc$(D)jpc_dec.c $(JASDEP) $(libjasper_HDRS)
231	$(JAS_CC) $(JASO_)jpc_dec.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_dec.c
232
233$(JASOBJ)jpc_enc.$(OBJ) : $(JASSRC)jpc$(D)jpc_enc.c $(JASDEP) $(libjasper_HDRS)
234	$(JAS_CC) $(JASO_)jpc_enc.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_enc.c
235
236$(JASOBJ)jpc_math.$(OBJ) : $(JASSRC)jpc$(D)jpc_math.c $(JASDEP) $(libjasper_HDRS)
237	$(JAS_CC) $(JASO_)jpc_math.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_math.c
238
239$(JASOBJ)jpc_mct.$(OBJ) : $(JASSRC)jpc$(D)jpc_mct.c $(JASDEP) $(libjasper_HDRS)
240	$(JAS_CC) $(JASO_)jpc_mct.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_mct.c
241
242$(JASOBJ)jpc_mqcod.$(OBJ) : $(JASSRC)jpc$(D)jpc_mqcod.c $(JASDEP) $(libjasper_HDRS)
243	$(JAS_CC) $(JASO_)jpc_mqcod.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_mqcod.c
244
245$(JASOBJ)jpc_mqdec.$(OBJ) : $(JASSRC)jpc$(D)jpc_mqdec.c $(JASDEP) $(libjasper_HDRS)
246	$(JAS_CC) $(JASO_)jpc_mqdec.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_mqdec.c
247
248$(JASOBJ)jpc_mqenc.$(OBJ) : $(JASSRC)jpc$(D)jpc_mqenc.c $(JASDEP) $(libjasper_HDRS)
249	$(JAS_CC) $(JASO_)jpc_mqenc.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_mqenc.c
250
251$(JASOBJ)jpc_qmfb.$(OBJ) : $(JASSRC)jpc$(D)jpc_qmfb.c $(JASDEP) $(libjasper_HDRS)
252	$(JAS_CC) $(JASO_)jpc_qmfb.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_qmfb.c
253
254$(JASOBJ)jpc_tagtree.$(OBJ) : $(JASSRC)jpc$(D)jpc_tagtree.c $(JASDEP) $(libjasper_HDRS)
255	$(JAS_CC) $(JASO_)jpc_tagtree.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_tagtree.c
256
257$(JASOBJ)jpc_t1cod.$(OBJ) : $(JASSRC)jpc$(D)jpc_t1cod.c $(JASDEP) $(libjasper_HDRS)
258	$(JAS_CC) $(JASO_)jpc_t1cod.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_t1cod.c
259
260$(JASOBJ)jpc_t1dec.$(OBJ) : $(JASSRC)jpc$(D)jpc_t1dec.c $(JASDEP) $(libjasper_HDRS)
261	$(JAS_CC) $(JASO_)jpc_t1dec.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_t1dec.c
262
263$(JASOBJ)jpc_t1enc.$(OBJ) : $(JASSRC)jpc$(D)jpc_t1enc.c $(JASDEP) $(libjasper_HDRS)
264	$(JAS_CC) $(JASO_)jpc_t1enc.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_t1enc.c
265
266$(JASOBJ)jpc_tsfb.$(OBJ) : $(JASSRC)jpc$(D)jpc_tsfb.c $(JASDEP) $(libjasper_HDRS)
267	$(JAS_CC) $(JASO_)jpc_tsfb.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_tsfb.c
268
269$(JASOBJ)jpc_t2cod.$(OBJ) : $(JASSRC)jpc$(D)jpc_t2cod.c $(JASDEP) $(libjasper_HDRS)
270	$(JAS_CC) $(JASO_)jpc_t2cod.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_t2cod.c
271
272$(JASOBJ)jpc_t2dec.$(OBJ) : $(JASSRC)jpc$(D)jpc_t2dec.c $(JASDEP) $(libjasper_HDRS)
273	$(JAS_CC) $(JASO_)jpc_t2dec.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_t2dec.c
274
275$(JASOBJ)jpc_t2enc.$(OBJ) : $(JASSRC)jpc$(D)jpc_t2enc.c $(JASDEP) $(libjasper_HDRS)
276	$(JAS_CC) $(JASO_)jpc_t2enc.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_t2enc.c
277
278$(JASOBJ)jpc_util.$(OBJ) : $(JASSRC)jpc$(D)jpc_util.c $(JASDEP) $(libjasper_HDRS)
279	$(JAS_CC) $(JASO_)jpc_util.$(OBJ) $(C_) $(JASSRC)jpc$(D)jpc_util.c
280
281
282$(JASOBJ)jp2_cod.$(OBJ) : $(JASSRC)jp2$(D)jp2_cod.c $(JASDEP) $(libjasper_HDRS)
283	$(JAS_CC) $(JASO_)jp2_cod.$(OBJ) $(C_) $(JASSRC)jp2$(D)jp2_cod.c
284
285$(JASOBJ)jp2_dec.$(OBJ) : $(JASSRC)jp2$(D)jp2_dec.c $(JASDEP) $(libjasper_HDRS)
286	$(JAS_CC) $(JASO_)jp2_dec.$(OBJ) $(C_) $(JASSRC)jp2$(D)jp2_dec.c
287
288$(JASOBJ)jp2_enc.$(OBJ) : $(JASSRC)jp2$(D)jp2_enc.c $(JASDEP) $(libjasper_HDRS)
289	$(JAS_CC) $(JASO_)jp2_enc.$(OBJ) $(C_) $(JASSRC)jp2$(D)jp2_enc.c
290
291