d6753794fd6320203aad4c94c1446d5fdfc9d758
[framework/uifw/eet.git] / configure.ac
1 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
2 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
3 m4_define([v_maj], [1])
4 m4_define([v_min], [3])
5 m4_define([v_mic], [1])
6 m4_define([v_rev], m4_esyscmd([(svnversion . | grep -v exported || echo 0) | awk -F : '{printf("%s\n", $1);}' | tr -d ' :MSP\n']))
7 m4_if(v_rev, [0], [m4_define([v_rev], m4_esyscmd([git log 2> /dev/null | (grep -m1 git-svn-id || echo 0) | sed -e 's/.*@\([0-9]*\).*/\1/' | tr -d '\n']))])
8 ##--   When released, remove the dnl on the below line
9 dnl m4_undefine([v_rev])
10 ##--   When doing snapshots - change soname. remove dnl on below line
11 dnl m4_define([relname], [ver-pre-svn-05])
12 dnl m4_define([v_rel], [-release relname])
13 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
14 m4_ifdef([v_rev], [m4_define([v_ver], [v_maj.v_min.v_mic.v_rev])], [m4_define([v_ver], [v_maj.v_min.v_mic])])
15 m4_define([lt_rev], m4_eval(v_maj + v_min))
16 m4_define([lt_cur], v_mic)
17 m4_define([lt_age], v_min)
18 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
19 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
20
21 AC_INIT([eet], [v_ver], [enlightenment-devel@lists.sourceforge.net])
22 AC_PREREQ([2.52])
23 AC_CONFIG_SRCDIR([configure.ac])
24 AC_CONFIG_MACRO_DIR([m4])
25 AC_CANONICAL_BUILD
26 AC_CANONICAL_HOST
27 AC_ISC_POSIX
28
29 AM_INIT_AUTOMAKE([1.6 dist-bzip2])
30 AM_CONFIG_HEADER([config.h])
31 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
32
33 AC_LIBTOOL_WIN32_DLL
34 define([AC_LIBTOOL_LANG_CXX_CONFIG], [:])dnl
35 define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl
36 AC_PROG_LIBTOOL
37
38 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
39 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
40 m4_ifdef([v_rev], , [m4_define([v_rev], [0])])
41 m4_ifdef([v_rel], , [m4_define([v_rel], [])])
42 AC_DEFINE_UNQUOTED(VMAJ, [v_maj], [Major version])
43 AC_DEFINE_UNQUOTED(VMIN, [v_min], [Minor version])
44 AC_DEFINE_UNQUOTED(VMIC, [v_mic], [Micro version])
45 AC_DEFINE_UNQUOTED(VREV, [v_rev], [Revison])
46 version_info="lt_rev:lt_cur:lt_age"
47 release_info="v_rel"
48 AC_SUBST(version_info)
49 AC_SUBST(release_info)
50 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
51 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
52
53
54 ### Default options with respect to host
55
56 case "$host_os" in
57    mingw*)
58       want_gnutls="no"
59       want_openssl="no"
60       want_cipher="no"
61       want_signature="no"
62       ;;
63    *)
64       want_gnutls="auto"
65       want_openssl="auto"
66       want_cipher="yes"
67       want_signature="yes"
68       ;;
69 esac
70
71 requirement_eet=""
72
73
74 ### Additional options to configure
75
76 # Amalgamation
77
78 AC_ARG_ENABLE([amalgamation],
79    [AC_HELP_STRING([--enable-amalgamation], [enable generation of one single file with all source code in it, helps compiler optimizations.])],
80    [if test "x${enableval}" = "xyes"; then
81        do_amalgamation="yes"
82     else
83        do_amalgamation="no"
84     fi
85    ],
86    [do_amalgamation="no"]
87 )
88 AM_CONDITIONAL(EET_AMALGAMATION, test "x${do_amalgamation}" = "xyes")
89
90 EFL_ENABLE_BIN([eet])
91
92 # Old eet file format support
93
94 old_eet_file_format="yes"
95 AC_ARG_ENABLE(old-eet-file-format,
96    [AC_HELP_STRING(
97       [--disable-old-eet-file-format],
98       [disable old eet file format support. [[default=enabled]]]
99     )],
100    [old_eet_file_format=$enableval]
101 )
102 AC_MSG_CHECKING([whether to support old eet file format])
103 AC_MSG_RESULT([${old_eet_file_format}])
104
105 if test "x${old_eet_file_format}" = "xyes" ; then
106    AC_DEFINE(EET_OLD_EET_FILE_FORMAT, 1, [support old eet file format])
107 else
108    AC_DEFINE(EET_OLD_EET_FILE_FORMAT, 0, [support old eet file format])
109 fi
110
111 # Gnutls support
112
113 AC_ARG_ENABLE([gnutls],
114    [AC_HELP_STRING([--disable-gnutls], [disable gnutls eet support])],
115    [want_gnutls=$enableval]
116 )
117 AC_MSG_CHECKING([whether to use Gnutls])
118 AC_MSG_RESULT([${want_gnutls}])
119
120 # Specific GNUTLS improvement
121
122 new_gnutls_api="yes"
123 AC_ARG_ENABLE(new-gnutls-api,
124    [AC_HELP_STRING(
125       [--disable-new-gnutls-api],
126       [enable use of gnutls_x509_crt_verify_hash. [[default=enable]]]
127     )],
128    [new_gnutls_api=$enableval]
129 )
130 AC_MSG_CHECKING([whether to use gnutls_x509_crt_verify_hash])
131 AC_MSG_RESULT([${new_gnutls_api}])
132
133 if test "x${new_gnutls_api}" = "xyes" ; then
134    AC_CHECK_LIB(gnutls, gnutls_x509_crt_verify_hash,
135                 [ new_gnutls_api="yes" ],
136                 [ new_gnutls_api="no" ]
137                 )
138
139    if test "x${new_gnutls_api}" = "xyes"; then
140       AC_DEFINE(EET_USE_NEW_GNUTLS_API, 1, [use gnutls_x509_crt_verify_hash])
141    fi
142 fi
143
144 # Openssl support
145
146 AC_ARG_ENABLE([openssl],
147    [AC_HELP_STRING([--disable-openssl], [disable openssl eet support])],
148    [want_openssl=$enableval]
149 )
150 AC_MSG_CHECKING([whether to use OpenSSL])
151 AC_MSG_RESULT([${want_openssl}])
152
153 # Cryptography support
154
155 AC_ARG_ENABLE([cipher],
156    [AC_HELP_STRING([--disable-cipher], [disable cipher support for eet API])],
157    [want_cipher=$enableval]
158 )
159 AC_MSG_CHECKING([whether to use cipher])
160 AC_MSG_RESULT([${want_cipher}])
161
162 AC_ARG_ENABLE([signature],
163    [AC_HELP_STRING([--disable-signature], [disable signature file support for eet])],
164    [want_signature=$enableval]
165 )
166 AC_MSG_CHECKING([whether to use signature])
167 AC_MSG_RESULT([${want_signature}])
168
169 # Assert or fail.
170 prefer_assert="no"
171 AC_ARG_ENABLE([assert],
172    [AC_HELP_STRING([--enable-assert], [enable assert, [[default=disabled]]])],
173    [prefer_assert=$enableval]
174 )
175
176 # Examples
177
178 AC_ARG_ENABLE([install-examples],
179    [AC_HELP_STRING([--disable-install-examples],
180        [disable installing examples (compiled or just source). @<:@default==enabled@:>@])],
181    [
182     if test "x${enableval}" = "xyes" ; then
183        install_examples="yes"
184     else
185        install_examples="no"
186     fi
187    ],
188    [install_examples="yes"])
189 AM_CONDITIONAL([INSTALL_EXAMPLES], [test "x${install_examples}" = "xyes"])
190
191 AC_ARG_ENABLE([build-examples],
192    [AC_HELP_STRING([--enable-build-examples],
193        [enable building examples. @<:@default==disabled@:>@])],
194    [
195     if test "x${enableval}" = "xyes" ; then
196        build_examples="yes"
197     else
198        build_examples="no"
199     fi
200    ],
201    [build_examples="no"])
202 AM_CONDITIONAL([BUILD_EXAMPLES], [test "x${build_examples}" = "xyes"])
203
204 # Unit tests, coverage and benchmarking
205
206 EFL_CHECK_TESTS([enable_tests="yes"], [enable_tests="no"])
207 EFL_CHECK_COVERAGE([${enable_tests}], [enable_coverage="yes"], [enable_coverage="no"])
208
209 if test "x${prefer_assert}" = "xno"; then
210    DEBUG_CFLAGS="-DNDEBUG"
211 else
212 # use debug symbols and set DEBUG if coverage support is enabled
213    DEBUG_CFLAGS="${EFL_DEBUG_CFLAGS}"
214 fi
215 AC_SUBST(DEBUG_CFLAGS)
216
217
218 ### Checks for programs
219 AC_PROG_CC
220
221 # pkg-config
222 PKG_PROG_PKG_CONFIG
223
224 # Check whether pkg-config supports Requires.private
225 if $PKG_CONFIG --atleast-pkgconfig-version 0.22; then
226    pkgconfig_requires_private="Requires.private"
227 else
228    pkgconfig_requires_private="Requires"
229 fi
230 AC_SUBST(pkgconfig_requires_private)
231
232
233 # doxygen program for documentation building
234
235 EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"])
236
237 ### Checks for libraries
238
239 # Evil library for compilation on Windows
240
241 EFL_EET_BUILD=""
242 case "$host_os" in
243    mingw*)
244       PKG_CHECK_MODULES([EVIL], [evil])
245       AC_DEFINE(HAVE_EVIL, 1, [Set to 1 if Evil library is installed])
246       requirement_eet="evil ${requirement_eet}"
247       EFL_EET_BUILD="-DEFL_EET_BUILD"
248    ;;
249 esac
250 AC_SUBST(EFL_EET_BUILD)
251
252 EET_LIBS=""
253 case "$host_os" in
254    mingw32ce*)
255       EET_LIBS="-lws2"
256       ;;
257    mingw*)
258       EET_LIBS="-lws2_32"
259       ;;
260 esac
261 AC_SUBST(EET_LIBS)
262
263 # Eina library
264
265 PKG_CHECK_MODULES(EINA, [eina-0])
266 requirement_eet="eina-0 ${requirement_eet}"
267
268 # Gnutls library
269 have_gnutls="no"
270 if test "x${want_gnutls}" = "xyes" -o "x${want_gnutls}" = "xauto" ; then
271    PKG_CHECK_MODULES(GNUTLS, [gnutls >= 1.7.6],
272       [
273        have_gnutls="yes"
274        want_openssl="no"
275        AC_DEFINE(HAVE_GNUTLS, 1, [Have Gnutls support])
276        requirement_eet="gnutls ${requirement_eet}"
277       ],
278       [have_gnutls="no"])
279    if test "x${have_gnutls}" = "xyes" ; then
280       AC_PATH_GENERIC([libgcrypt], [], [have_gnutls="yes"], [have_gnutls="no"])
281       if test "x${have_gnutls}" = "xyes" ; then
282          GNUTLS_CFLAGS="${GNUTLS_CFLAGS} ${LIBGCRYPT_CFLAGS}"
283          GNUTLS_LIBS="${GNUTLS_LIBS} ${LIBGCRYPT_LIBS}"
284       fi
285    fi
286 fi
287
288 # Openssl library
289 have_openssl="no"
290 if test "x${want_openssl}" = "xyes" -o "x${want_openssl}" = "xauto" ; then
291    PKG_CHECK_MODULES(OPENSSL, openssl,
292       [
293        have_openssl="yes"
294        AC_DEFINE(HAVE_OPENSSL, 1, [Have Openssl support])
295        requirement_eet="openssl ${requirement_eet}"
296       ],
297       [have_openssl="no"])
298 fi
299
300 have_cipher="no"
301 if test "x${have_gnutls}" = "xyes" -a "x${want_cipher}" = "xyes" ; then
302    have_cipher="yes"
303    AC_DEFINE(HAVE_CIPHER, 1, [Have cipher support built in eet])
304 elif test "x${have_openssl}" = "xyes" -a "x${want_cipher}" = "xyes" ; then
305    have_cipher="yes"
306    AC_DEFINE(HAVE_CIPHER, 1, [Have cipher support built in eet])
307 fi
308
309 AC_MSG_CHECKING(whether to activate cipher support in eet)
310 AC_MSG_RESULT(${have_cipher})
311
312 have_signature="no"
313 if test "x${have_gnutls}" = "xyes" -a "x${want_signature}" = "xyes" ; then
314    have_signature="yes"
315    AC_DEFINE(HAVE_SIGNATURE, 1, [Have signature support for eet file])
316 elif test "x${have_openssl}" = "xyes" -a "x${want_signature}" = "xyes" ; then
317    have_signature="yes"
318    AC_DEFINE(HAVE_SIGNATURE, 1, [Have signature support for eet file])
319 fi
320
321 AC_MSG_CHECKING(whether to activate signature support in eet)
322 AC_MSG_RESULT(${have_signature})
323
324 # pthread library
325
326 EFL_CHECK_PTHREAD(["no"], [have_pthread="yes"], [have_pthread="no"])
327
328
329 ### Checks for header files
330
331 AC_CHECK_HEADER([zlib.h],
332    [dummy="yes"],
333    [AC_MSG_ERROR("Cannot find zlib.h. Make sure your CFLAGS environment variable contains include lines for the location of this file")])
334
335 AC_CHECK_HEADER([jpeglib.h],
336    [dummy="yes"],
337    [AC_MSG_ERROR("Cannot find jpeglib.h. Make sure your CFLAGS environment variable contains include lines for the location of this file")])
338
339 AC_CHECK_HEADERS(netinet/in.h)
340
341
342 ### Checks for types
343
344
345 ### Checks for structures
346
347
348 ### Checks for compiler characteristics
349 AM_PROG_CC_C_O
350 AC_C_CONST
351 AC_C_INLINE
352 AC_PROG_CC_STDC
353 AC_C___ATTRIBUTE__
354
355 # Check whether the null pointer is zero on this arch
356 AC_TRY_RUN(
357    [
358 #include <stdlib.h>
359 int main (int argc, char **argv) {
360   void *foo = NULL;
361   int bar = (int)foo;
362   return (int)foo;
363 }
364    ],
365    [have_null="yes"],
366    [have_null="no"],
367    [
368     AC_MSG_WARN([Cannot check when cross-compiling -- assuming null is okay])
369     have_null="yes"
370    ])
371 AC_MSG_CHECKING([value of the null pointer])
372 AC_MSG_RESULT([${have_null}])
373
374 if test ! "x${have_null}" = "xyes" ; then
375    AC_MSG_WARN([Your system is a bit too funny, eet might not work properly])
376 fi
377
378 # These are needed for fmemopen/open_memstream
379 AC_DEFINE(_GNU_SOURCE, , [Enable GNU extensions])
380
381 EET_CPPFLAGS=""
382 EET_CFLAGS=""
383 case "$host_os" in
384    mingw32ce*)
385       EET_CPPFLAGS="-D_WIN32_WCE=0x0420"
386       ;;
387    mingw*)
388       EET_CPPFLAGS="-D_WIN32_WINNT=0x0501"
389       ;;
390 esac
391 AC_SUBST(EET_CPPFLAGS)
392 AC_SUBST(EET_CFLAGS)
393
394
395 ### Checks for linker characteristics
396
397 # use --enable-auto-import on Windows
398
399 lt_enable_auto_import=""
400 case "$host_os" in
401    mingw*)
402       lt_enable_auto_import="-Wl,--enable-auto-import"
403       ;;
404 esac
405 AC_SUBST(lt_enable_auto_import)
406
407 # use --as-needed if supported
408
409 LDFLAGS_SAVE=${LDFLAGS}
410 LDFLAGS="${LDFLAGS} -Wl,--as-needed"
411
412 AC_LINK_IFELSE(
413    [AC_LANG_PROGRAM([[]], [])],
414    [ld_as_needed="-Wl,--as-needed"],
415    [ld_as_needed=""]
416 )
417
418 LDFLAGS=${LDFLAGS_SAVE}
419 AC_SUBST(ld_as_needed)
420
421
422 ### Checks for library functions
423 AC_FUNC_ALLOCA
424
425 AC_CHECK_FUNCS(fmemopen open_memstream realpath)
426
427 EFL_CHECK_FNMATCH([], [AC_MSG_ERROR([Cannot find fnmatch()])])
428
429
430 AC_SUBST(requirement_eet)
431
432 AC_OUTPUT([
433 Makefile
434 eet.pc
435 doc/Makefile
436 doc/eet.dox
437 src/Makefile
438 src/lib/Makefile
439 src/bin/Makefile
440 src/tests/Makefile
441 src/examples/Makefile
442 README
443 eet.spec
444 ])
445
446
447 #####################################################################
448 ## Info
449
450 echo
451 echo
452 echo
453 echo "------------------------------------------------------------------------"
454 echo "$PACKAGE_NAME $PACKAGE_VERSION"
455 echo "------------------------------------------------------------------------"
456 echo
457 echo "Configuration Options Summary:"
458 echo
459 echo "  Amalgamation.........: ${do_amalgamation}"
460 echo "  Gnutls...............: ${have_gnutls}"
461 echo "  Openssl..............: ${have_openssl}"
462 echo "    Cipher support.....: ${have_cipher}"
463 echo "    Signature..........: ${have_signature}"
464 echo "  Thread Support.......: ${have_pthread}"
465 echo
466 echo "  Old eet file format..: ${old_eet_file_format}"
467 echo
468 echo "  Tests................: ${enable_tests}"
469 echo "  Coverage.............: ${enable_coverage}"
470 echo
471 echo "  Build eet............: $have_eet"
472 echo
473 echo "  Documentation........: ${build_doc}"
474 if test "x${build_doc}" = "xyes" ; then
475    echo "    Building...........: make doc"
476 fi
477 echo "  Examples.............: ${build_examples}"
478 if test "x${build_examples}" = "xyes" ; then
479    echo "    Install............: ${install_examples}"
480 fi
481 echo
482 echo "Compilation............: make (or gmake)"
483 echo "  CPPFLAGS.............: $CPPFLAGS"
484 echo "  CFLAGS...............: $CFLAGS"
485 echo "  LDFLAGS..............: $LDFLAGS"
486 echo
487 echo "Installation...........: make install (as root if needed, with 'su' or 'sudo')"
488 echo "  prefix...............: $prefix"
489 echo