small fix in configure.ac (credit to Vincent Torri)
[openjpeg.git] / configure.ac
1
2 # According to http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info :
3 #
4 # 1) when bugs are fixed or internal code is changed: increase MICRO
5 # 2) if API is added, increase MINOR and set MICRO to 0
6 # 3) if API or ABI is broken (this case should (must) never happen as it's very bad for a library), or a new designed library, increase MAJOR and set MINOR and MICRO to 0
7
8 m4_define([OPJ_MAJOR], [1])
9 m4_define([OPJ_MINOR], [4])
10 m4_define([OPJ_MICRO], [0])
11
12 m4_define([JP3D_MAJOR], [1])
13 m4_define([JP3D_MINOR], [3])
14 m4_define([JP3D_MICRO], [0])
15
16 m4_define([lt_cur], m4_eval(OPJ_MAJOR + OPJ_MINOR))
17 m4_define([lt_rev], OPJ_MICRO)
18 m4_define([lt_age], OPJ_MINOR)
19
20 m4_define([lt_cur_jp3d], m4_eval(JP3D_MAJOR + JP3D_MINOR))
21 m4_define([lt_rev_jp3d], JP3D_MICRO)
22 m4_define([lt_age_jp3d], JP3D_MINOR)
23
24 AC_PREREQ([2.62])
25 AC_INIT([OpenJPEG],
26    [OPJ_MAJOR.OPJ_MINOR.OPJ_MICRO],
27    [openjpeg@googlegroups.com],
28    [openjpeg],
29    [http://www.openjpeg.org])
30 AC_CONFIG_SRCDIR([configure.ac])
31 AC_CONFIG_MACRO_DIR([m4])
32 AC_CONFIG_HEADERS([opj_config.h])
33
34 AC_CANONICAL_SYSTEM
35 AC_CANONICAL_HOST
36
37 AM_INIT_AUTOMAKE(1.11 foreign dist-bzip2)
38 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
39
40 MAJOR_NR=OPJ_MAJOR
41 MINOR_NR=OPJ_MINOR
42 MICRO_NR=OPJ_MICRO
43 AC_SUBST(MAJOR_NR)
44 AC_SUBST(MINOR_NR)
45 AC_SUBST(MICRO_NR)
46
47 JP3D_MAJOR_NR=JP3D_MAJOR
48 JP3D_MINOR_NR=JP3D_MINOR
49 JP3D_MICRO_NR=JP3D_MICRO
50 AC_SUBST(JP3D_MAJOR_NR)
51 AC_SUBST(JP3D_MINOR_NR)
52 AC_SUBST(JP3D_MICRO_NR)
53
54 LT_PREREQ([2.0])
55 LT_INIT([win32-dll])
56
57 lt_version=lt_cur:lt_rev:lt_age
58 AC_SUBST(lt_version)
59
60 lt_version_jp3d=lt_cur_jp3d:lt_rev_jp3d:lt_age_jp3d
61 AC_SUBST(lt_version_jp3d)
62
63
64 ### Needed information
65
66 have_win32=no
67 have_darwin="no"
68 case "$host_os" in
69    mingw*)
70       have_win32="yes"
71       ;;
72    darwin*)
73       have_darwin="yes"
74       ;;
75 esac
76
77 AM_CONDITIONAL([HAVE_WIN32], [test "x${have_win32}" = "xyes"])
78 AM_CONDITIONAL([HAVE_DARWIN], [test "x${have_darwin}" = "xyes"])
79
80
81 ### Additional options to configure
82
83 # debug
84
85 AC_ARG_ENABLE([debug],
86    [AC_HELP_STRING([--enable-debug], [build with debug symbols @<:@default=disabled@:>@])],
87    [
88     if test "x${enableval}" = "xyes" ; then
89        want_debug="yes"
90     else
91        want_debug="no"
92     fi
93    ],
94    [want_debug="no"])
95
96 AC_MSG_CHECKING([whether to build in debug mode])
97 AC_MSG_RESULT([${want_debug}])
98
99 # MJ2
100
101 AC_ARG_ENABLE([mj2],
102    [AC_HELP_STRING([--enable-mj2], [build mj2 binaries @<:@default=disabled@:>@])],
103    [
104     if test "x${enableval}" = "xyes" ; then
105        want_mj2="yes"
106     else
107        want_mj2="no"
108     fi
109    ],
110    [want_mj2="no"])
111
112 AC_MSG_CHECKING([whether to build the MJ2 binaries])
113 AC_MSG_RESULT([${want_mj2}])
114
115 if test "x${want_mj2}" = "xyes" ; then
116    AC_DEFINE(USE_MJ2, [1], [define to 1 if you use mj2])
117 fi
118
119 AM_CONDITIONAL([WANT_MJ2], [test "x${want_mj2}" = "xyes"])
120
121 # JPWL
122
123 AC_ARG_ENABLE([jpwl],
124    [AC_HELP_STRING([--enable-jpwl], [build JPWL library @<:@default=disabled@:>@])],
125    [
126     if test "x${enableval}" = "xyes" ; then
127        want_jpwl="yes"
128     else
129        want_jpwl="no"
130     fi
131    ],
132    [want_jpwl="no"])
133
134 AC_MSG_CHECKING([whether to build the JPWL library])
135 AC_MSG_RESULT([${want_jpwl}])
136
137 if test "x${want_jpwl}" = "xyes" ; then
138    AC_DEFINE(USE_JPWL, [1], [define to 1 if you use jpwl])
139 fi
140
141 AM_CONDITIONAL([WANT_JPWL], [test "x${want_jpwl}" = "xyes"])
142
143 # JP3D
144
145 AC_ARG_ENABLE([jp3d],
146    [AC_HELP_STRING([--enable-jp3d], [build jp3d library @<:@default=disabled@:>@])],
147    [
148     if test "x${enableval}" = "xyes" ; then
149        want_jp3d="yes"
150     else
151        want_jp3d="no"
152     fi
153    ],
154    [want_jp3d="no"])
155
156 AC_MSG_CHECKING([whether to build the JP3D library])
157 AC_MSG_RESULT([${want_jp3d}])
158
159 if test "x${want_jp3d}" = "xyes" ; then
160    AC_DEFINE(USE_JP3D, [1], [define to 1 if you use jp3d])
161 fi
162
163 AM_CONDITIONAL([WANT_JP3D], [test "x${want_jp3d}" = "xyes"])
164
165
166 ### Checks for programs
167
168 AC_PROG_CC
169
170 # pkg-config
171
172 PKG_PROG_PKG_CONFIG
173
174 # Check whether pkg-config supports Requires.private
175 if $PKG_CONFIG --atleast-pkgconfig-version 0.22 ; then
176    pkgconfig_requires_private="Requires.private"
177 else
178    pkgconfig_requires_private="Requires"
179 fi
180 AC_SUBST(pkgconfig_requires_private)
181 AC_SUBST(requirements)
182
183 # doxygen
184
185 OPJ_CHECK_DOXYGEN
186
187 #  ln -s
188
189 AC_PROG_LN_S
190
191
192 ### Checks for libraries
193
194 # libpng
195
196 have_libpng="no"
197
198 AC_ARG_ENABLE([png],
199    [AC_HELP_STRING([--disable-png], [disable PNG support @<:@default=enabled@:>@])],
200    [
201     if test "x${enableval}" = "xyes" ; then
202        want_png="yes"
203     else
204        want_png="no"
205     fi
206    ],
207    [want_png="yes"])
208
209 AC_MSG_CHECKING([whether to build with PNG support])
210 AC_MSG_RESULT([${want_png}])
211
212 if test "x${want_png}" = "xyes" ; then
213
214    PKG_CHECK_MODULES([PNG], [libpng14],
215       [have_libpng="yes"],
216       [
217        PKG_CHECK_MODULES([PNG], [libpng12],
218           [have_libpng="yes"],
219           [
220            PKG_CHECK_MODULES([PNG], [libpng10],
221               [have_libpng="yes"],
222               [
223                PKG_CHECK_MODULES([PNG], [libpng],
224                   [have_libpng="yes"],
225                   [have_libpng="no"])
226               ])
227           ])
228       ])
229
230    if ! test "x${have_libpng}" = "xyes" ; then
231       OPJ_CHECK_LIB([/usr],
232          [png.h],
233          [png],
234          [png_create_write_struct],
235          [have_libpng="yes"],
236          [have_libpng="no"])
237    fi
238
239    if ! test "x${have_libpng}" = "xyes" ; then
240       OPJ_CHECK_LIB([/usr/local],
241          [png.h],
242          [png],
243          [png_create_write_struct],
244          [have_libpng="yes"],
245          [have_libpng="no"])
246    fi
247
248    if ! test "x${have_libpng}" = "xyes" ; then
249       OPJ_CHECK_LIB([/opt],
250          [png.h],
251          [png],
252          [png_create_write_struct],
253          [have_libpng="yes"],
254          [have_libpng="no"])
255    fi
256
257    if test "x${have_libpng}" = "xno" ; then
258       AC_MSG_WARN([Can not find a usuable PNG library. Make sure that CPPFLAGS and LDFLAGS are correctly set.])
259    fi
260
261 fi
262
263 AC_MSG_CHECKING([whether PNG is available])
264 AC_MSG_RESULT([${have_libpng}])
265
266 if test "x${have_libpng}" = "xyes" ; then
267    AC_DEFINE(HAVE_LIBPNG, [1], [define to 1 if you have libpng])
268 fi
269
270 AM_CONDITIONAL([with_libpng], [test x${have_libpng} = "xyes"])
271
272 #libtiff
273
274 have_libtiff="no"
275
276 AC_ARG_ENABLE([tiff],
277    [AC_HELP_STRING([--disable-tiff], [disable TIFF support @<:@default=enabled@:>@])],
278    [
279     if test "x${enableval}" = "xyes" ; then
280        want_tiff="yes"
281     else
282        want_tiff="no"
283     fi
284    ],
285    [want_tiff="yes"])
286
287 AC_MSG_CHECKING([whether to build with TIFF support])
288 AC_MSG_RESULT([${want_tiff}])
289
290 if test "x${want_tiff}" = "xyes" ; then
291
292    OPJ_CHECK_LIB([/usr],
293       [tiff.h],
294       [tiff],
295       [TIFFOpen],
296       [have_libtiff="yes"],
297       [have_libtiff="no"])
298
299    if ! test "x${have_libtiff}" = "xyes" ; then
300       OPJ_CHECK_LIB([/usr/local],
301          [tiff.h],
302          [tiff],
303          [TIFFOpen],
304          [have_libtiff="yes"],
305          [have_libtiff="no"])
306    fi
307
308    if ! test "x${have_libtiff}" = "xyes" ; then
309       OPJ_CHECK_LIB([/opt],
310          [tiff.h],
311          [tiff],
312          [TIFFOpen],
313          [have_libtiff="yes"],
314          [have_libtiff="no"])
315    fi
316
317    if test "x${have_libtiff}" = "xno" ; then
318       AC_MSG_WARN([Can not find a usuable TIFF library. Make sure that CPPFLAGS and LDFLAGS are correctly set.])
319    fi
320 fi
321
322 AC_MSG_CHECKING([whether TIFF is available])
323 AC_MSG_RESULT([${have_libtiff}])
324
325 if test "x${have_libtiff}" = "xyes" ; then
326    AC_DEFINE(HAVE_LIBTIFF, [1], [define to 1 if you have libtiff])
327 fi
328
329 AM_CONDITIONAL([with_libtiff], [test "x${have_libtiff}" = "xyes"])
330
331 AC_ARG_VAR([TIFF_CFLAGS], [preprocessor flags for libtiff])
332 AC_SUBST(TIFF_CFLAGS)
333 AC_ARG_VAR([TIFF_LIBS], [linker flags for libtiff])
334 AC_SUBST(TIFF_LIBS)
335
336 # libcms2
337
338 lcms_output="no"
339
340 AC_ARG_ENABLE([lcms2],
341    [AC_HELP_STRING([--disable-lcms2], [disable LCMS-2 support @<:@default=enabled@:>@])],
342    [
343     if test "x${enableval}" = "xyes" ; then
344        want_lcms2="yes"
345     else
346        want_lcms2="no"
347     fi
348    ],
349    [want_lcms2="yes"])
350
351 AC_MSG_CHECKING([whether to build with LCMS-2 support])
352 AC_MSG_RESULT([${want_lcms2}])
353
354 if test "x${want_lcms2}" = "xyes" ; then
355    PKG_CHECK_MODULES([LCMS2], [lcms2],
356       [
357        have_lcms2="yes"
358        requirements="lcms2"
359       ],
360       [have_lcms2="no"])
361 fi
362
363 AC_MSG_CHECKING([whether LCMS-2 is available])
364 AC_MSG_RESULT([${have_lcms2}])
365
366 if test "x${have_lcms2}" = "xyes" ; then
367    AC_DEFINE(HAVE_LIBLCMS2, [1], [define to 1 if you have lcms version 2.x])
368    lcms_output="lcms version 2.x"
369 fi
370
371 # libcms1
372
373 AC_ARG_ENABLE([lcms1],
374    [AC_HELP_STRING([--disable-lcms1], [disable LCMS-1 support @<:@default=enabled@:>@])],
375    [
376     if test "x${enableval}" = "xyes" ; then
377        want_lcms1="yes"
378     else
379        want_lcms1="no"
380     fi
381    ],
382    [want_lcms1="yes"])
383
384 AC_MSG_CHECKING([whether to build with LCMS-1 support])
385 AC_MSG_RESULT([${want_lcms1}])
386
387 if test "x${have_lcms2}" = "xno" ; then
388
389    if test "x${want_lcms1}" = "xyes" ; then
390       PKG_CHECK_MODULES([LCMS1], [lcms1],
391          [
392           have_lcms1="yes"
393           requirements="lcms1"
394          ],
395          [PKG_CHECK_MODULES([LCMS1], [lcms],
396             [
397              have_lcms1="yes"
398              requirements="lcms"
399             ],
400             [have_lcms1="no"])])
401    fi
402
403    AC_MSG_CHECKING([whether LCMS-1 is available])
404    AC_MSG_RESULT([${have_lcms1}])
405
406    if test "x${have_lcms1}" = "xyes" ; then
407       AC_DEFINE(HAVE_LIBLCMS1, [1], [define to 1 if you have lcms version 1.x])
408       lcms_output="lcms version 1.x"
409    fi
410
411 fi
412
413
414
415 ### Checks for header files
416
417 ## FIXME: declarations must be fixed in source code. See autoconf manual
418 AC_HEADER_DIRENT
419
420
421 ### Checks for types
422
423
424 ### Checks for structures
425
426
427 ### Checks for compiler characteristics
428
429 AC_C_BIGENDIAN
430
431 #OPJ_COMPILER_FLAG([-Wall])
432 #OPJ_COMPILER_FLAG([-Wextra])
433 #OPJ_COMPILER_FLAG([-Wshadow])
434 #OPJ_COMPILER_FLAG([-Wpointer-arith])
435 OPJ_COMPILER_FLAG([-Wno-unused-result])
436
437 if test "x${want_debug}" = "xyes" ; then
438    OPJ_COMPILER_FLAG([-g])
439    OPJ_COMPILER_FLAG([-O0])
440 else
441    OPJ_COMPILER_FLAG([-O3])
442 fi
443
444
445 ### Checks for linker characteristics
446
447
448 ### Checks for library functions
449
450 AC_CONFIG_FILES([
451 Makefile
452 libopenjpeg1.pc
453 libopenjpeg/Makefile
454 jpwl/Makefile
455 codec/Makefile
456 mj2/Makefile
457 doc/Makefile
458 jp3d/Makefile
459 jp3d/libjp3dvm/Makefile
460 jp3d/codec/Makefile
461 ])
462
463 AC_OUTPUT
464
465 ### Summary
466
467 echo
468 echo
469 echo
470 echo "------------------------------------------------------------------------"
471 echo "$PACKAGE $VERSION"
472 echo "------------------------------------------------------------------------"
473 echo
474 echo
475 echo "Configuration Options Summary:"
476 echo
477 echo "  Debug...............: ${want_debug}"
478 echo
479 echo "  Optional support:"
480 echo "    libpng............: ${have_libpng}"
481 echo "    libtiff...........: ${have_libtiff}"
482 echo "    libcms............: ${lcms_output}"
483 echo
484 echo "  Documentation.......: ${opj_have_doxygen}"
485 echo "    Build.............: make doc"
486 echo
487 echo "  mj2.................: ${want_mj2}"
488 echo "  jpwl................: ${want_jpwl}"
489 echo "  jp3d................: ${want_jp3d}"
490 echo