evas: add SSE3 support
[profile/ivi/evas.git] / configure.ac
1 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
2 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
3 m4_define([v_maj], [1])
4 m4_define([v_min], [0])
5 m4_define([v_mic], [999])
6 m4_define([v_rev], m4_esyscmd([(svnversion "${SVN_REPO_PATH:-.}" | grep -v export || 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-07])
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_cur], m4_eval(v_maj + v_min))
16 m4_define([lt_rev], v_mic)
17 m4_define([lt_age], v_min)
18 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
19 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
20
21 # rw_PROG_OBJC_WORKS
22 # Check whether the Objective C compiler works.
23 AC_DEFUN([rw_PROG_OBJC_WORKS],
24 [m4_ifdef([AC_PROG_OBJC], [AC_REQUIRE([AC_PROG_OBJC])dnl
25 AC_CACHE_CHECK([whether the Objective C compiler works],
26                [rw_cv_prog_objc_works],
27                [AC_LANG_PUSH([Objective C])
28                 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
29                                [rw_cv_prog_objc_works=yes],
30                                [rw_cv_prog_objc_works=no])
31                 AC_LANG_POP([Objective C])])], [rw_cv_prog_objc_works=no])
32 ])
33
34 AC_INIT([evas], [v_ver], [enlightenment-devel@lists.sourceforge.net])
35 AC_PREREQ([2.52])
36 AC_CONFIG_SRCDIR([configure.ac])
37 AC_CONFIG_MACRO_DIR([m4])
38
39 AC_CONFIG_HEADERS([config.h])
40 AH_TOP([
41 #ifndef EFL_CONFIG_H__
42 #define EFL_CONFIG_H__
43 ])
44 AH_BOTTOM([
45 #endif /* EFL_CONFIG_H__ */
46 ])
47
48 AM_INIT_AUTOMAKE([1.6 dist-bzip2])
49 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
50
51 AC_GNU_SOURCE
52
53 AC_LIBTOOL_WIN32_DLL
54 define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl
55 AC_PROG_LIBTOOL
56
57 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
58 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
59 m4_ifdef([v_rev], , [m4_define([v_rev], [0])])
60 m4_ifdef([v_rel], , [m4_define([v_rel], [])])
61 AC_DEFINE_UNQUOTED(VMAJ, [v_maj], [Major version])
62 AC_DEFINE_UNQUOTED(VMIN, [v_min], [Minor version])
63 AC_DEFINE_UNQUOTED(VMIC, [v_mic], [Micro version])
64 AC_DEFINE_UNQUOTED(VREV, [v_rev], [Revison])
65 version_info="lt_cur:lt_rev:lt_age"
66 release_info="v_rel"
67 AC_SUBST(version_info)
68 AC_SUBST(release_info)
69 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
70 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
71 VMAJ=v_maj
72 AC_SUBST(VMAJ)
73
74 ### Needed information
75
76 AC_CANONICAL_BUILD
77 AC_CANONICAL_HOST
78
79 case "$host_os" in
80    mingw32ce*)
81       MODULE_ARCH="$host_os-$host_cpu"
82       ;;
83    *)
84       MODULE_ARCH="$host_os-$host_cpu-v_maj.v_min.v_mic"
85       ;;
86 esac
87 AC_SUBST(MODULE_ARCH)
88 AC_DEFINE_UNQUOTED(MODULE_ARCH, "$MODULE_ARCH", "Module architecture")
89
90 want_fontconfig="auto"
91 want_fribidi="auto"
92 want_harfbuzz="auto"
93 want_pixman="no"
94 want_evas_cserve="yes"
95
96 want_evas_engine_buffer="yes"
97 want_evas_engine_software_xlib="no"
98 want_evas_engine_software_xcb="no"
99 want_evas_engine_software_gdi="no"
100 want_evas_engine_software_ddraw="no"
101 want_evas_engine_software_sdl="no"
102 want_evas_engine_software_8_x11="no"
103 want_evas_engine_software_16_x11="no"
104 want_evas_engine_software_16_ddraw="no"
105 want_evas_engine_software_16_wince="no"
106 want_evas_engine_software_16_sdl="no"
107 want_evas_engine_gl_xlib="no"
108 want_evas_engine_gl_xcb="no"
109 want_evas_engine_gl_sdl="no"
110 want_evas_engine_direct3d="no"
111 want_evas_engine_fb="no"
112 want_evas_engine_directfb="no"
113
114 want_evas_image_loader_edb="yes"
115 want_evas_image_loader_eet="yes"
116 want_evas_image_loader_gif="yes"
117 want_evas_image_loader_jpeg="yes"
118 want_evas_image_loader_pmaps="yes"
119 want_evas_image_loader_png="yes"
120 want_evas_image_loader_svg="yes"
121 want_evas_image_loader_tiff="yes"
122 want_evas_image_loader_xpm="yes"
123 want_evas_image_loader_bmp="yes"
124 want_evas_image_loader_tga="yes"
125 want_evas_image_loader_wbmp="yes"
126 want_evas_image_loader_ico="yes"
127 want_evas_image_loader_psd="yes"
128 want_evas_image_loader_generic="yes"
129
130 want_evas_font_loader_eet="yes"
131
132 case "$host_os" in
133    mingw32ce*)
134       want_fontconfig="no"
135       want_evas_engine_software_16_wince="yes"
136       want_evas_image_loader_edb="no"
137       want_evas_image_loader_gif="no"
138       want_evas_image_loader_svg="no"
139       want_evas_image_loader_tiff="no"
140       ;;
141    mingw*)
142       want_evas_engine_software_gdi="yes"
143       want_evas_engine_software_ddraw="yes"
144       want_evas_engine_direct3d="yes"
145       want_evas_engine_software_16_ddraw="yes"
146       want_evas_image_loader_edb="no"
147       want_evas_image_loader_svg="no"
148       ;;
149    darwin*)
150       want_evas_engine_software_xlib="auto"
151       ;;
152    *)
153       want_evas_engine_software_xlib="auto"
154       want_evas_engine_gl_xlib="auto"
155       want_evas_engine_software_xcb="no"
156       want_evas_engine_gl_xcb="no"
157       want_evas_engine_fb="auto"
158 ### no - not ready/usable/complete
159 #      want_evas_engine_software_8_x11="auto"
160 #      want_evas_engine_software_16_x11="auto"
161       ;;
162 esac
163
164 requirement_evas=""
165
166
167 ### Additional options to configure
168
169 # when used, that option makes configure script fails when
170 # a requirement is selected, but not met.
171 use_strict="no"
172 AC_ARG_ENABLE([strict],
173    AC_HELP_STRING([--enable-strict], [enable strict checking mode. @<:@default==disabled@:>@]),
174    [use_strict="yes"],
175    [use_strict="no"])
176
177 # Simple X11 build/link
178 AC_ARG_ENABLE([simple-x11],
179    AC_HELP_STRING([--enable-simple-x11], [enable simple x11 linking]),
180    [
181     if test "x${enableval}" = "xyes" ; then
182        want_evas_simple_x11="yes"
183     else
184        want_evas_simple_x11="no"
185     fi
186    ])
187
188
189 ### Checks for programs
190
191 m4_ifdef([AC_PROG_OBJC],
192    [
193     AC_PROG_OBJC
194     _AM_DEPENDENCIES(OBJC)
195    ],
196    [
197     dnl#AC_CHECK_TOOL([OBJC], [gcc])
198     dnl#AC_SUBST([OBJC])
199     dnl#AC_SUBST([OBJCFLAGS])
200    ])
201
202 rw_PROG_OBJC_WORKS
203
204 AC_PROG_CXX
205 AC_PROG_CC
206
207 # pkg-config
208 PKG_PROG_PKG_CONFIG
209
210 # Check whether pkg-config supports Requires.private
211 if $PKG_CONFIG --atleast-pkgconfig-version 0.22; then
212    pkgconfig_requires_private="Requires.private"
213 else
214    pkgconfig_requires_private="Requires"
215 fi
216 AC_SUBST(pkgconfig_requires_private)
217
218 # doxygen program for documentation building
219 EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"])
220
221
222 ### Checks for libraries
223
224 # Evil library for compilation on Windows CE
225
226 case "$host_os" in
227    mingw*)
228       PKG_CHECK_MODULES([EVIL], [evil])
229       AC_DEFINE(HAVE_EVIL, 1, [Set to 1 if evil package is installed])
230       requirement_evas="evil ${requirement_evas}"
231    ;;
232 esac
233
234 ## strong dependencies
235
236 # Eina
237 PKG_CHECK_MODULES([EINA], [eina >= 1.0.0])
238 CPPFLAGS_SAVE="$CPPFLAGS"
239 CPPFLAGS="$CPPFLAGS $EINA_CFLAGS"
240 AC_CHECK_SIZEOF(Eina_Unicode,, [#include <Eina.h>])
241 CPPFLAGS="$CPPFLAGS_SAVE"
242
243 # Freetype
244 PKG_CHECK_MODULES([FREETYPE], [freetype2 >= 9.3.0])
245
246 requirement_evas="freetype2 eina >= 1.0.0 ${requirement_evas}"
247
248 ## optional dependencies
249
250 # FontConfig
251 have_fontconfig="no"
252 AC_ARG_ENABLE([fontconfig],
253    AC_HELP_STRING([--disable-fontconfig],
254       [disable fontconfig for finding fonts. @<:@default=enabled@:>@]),
255    [
256     if test "x${enableval}" = "xyes" ; then
257        want_fontconfig="yes"
258     else
259        want_fontconfig="no"
260     fi
261    ])
262
263
264 if test "x${want_fontconfig}" = "xyes" -o "x${want_fontconfig}" = "xauto" ; then
265    PKG_CHECK_MODULES([FONTCONFIG],
266       [fontconfig >= 2.5.0],
267       [
268        have_fontconfig="yes"
269        AC_DEFINE(HAVE_FONTCONFIG, 1, [have fontconfig searching capabilities])
270        requirement_evas="fontconfig ${requirement_evas}"
271       ],
272       [
273        if test "x${want_fontconfig}" = "xyes" -a "x${use_strict}" = "xyes" ; then
274           AC_MSG_ERROR([Fontconfig not found (strict dependencies checking)])
275        fi
276       ])
277 fi
278
279 # linebreak
280 have_linebreak="no"
281 want_linebreak="yes"
282 AC_ARG_ENABLE([liblinebreak],
283    AC_HELP_STRING([--disable-liblinebreak],
284       [disable linking against liblinebreak. @<:@default=enabled@:>@]),
285    [
286     if test "x${enableval}" = "xyes" ; then
287        want_linebreak="yes"
288     else
289        want_linebreak="no"
290     fi
291    ])
292
293
294 AM_CONDITIONAL(EVAS_USE_LINEBREAK, test "x${want_linebreak}" = "xyes")
295 if test "x${want_linebreak}" = "xyes" ; then
296    have_linebreak="yes"
297    LINEBREAK_CFLAGS='-I$(top_srcdir)/src/static_deps/liblinebreak'
298    LINEBREAK_LIBS='$(top_builddir)/src/static_deps/liblinebreak/liblinebreak.la'
299    AC_SUBST(LINEBREAK_CFLAGS)
300    AC_SUBST(LINEBREAK_LIBS)
301    AC_DEFINE(HAVE_LINEBREAK, 1, [have liblinebreak support])
302 else
303    have_linebreak="no"
304 fi
305
306 # fribidi support
307 have_fribidi="no"
308 AC_ARG_ENABLE([fribidi],
309    AC_HELP_STRING([--disable-fribidi],
310       [disable bidirectional text support. @<:@default=enabled@:>@]),
311    [
312     if test "x${enableval}" = "xyes" ; then
313        want_fribidi="yes"
314     else
315        want_fribidi="no"
316     fi
317    ])
318
319 if test "x${want_fribidi}" = "xyes" -o "x${want_fribidi}" = "xauto" ; then
320    PKG_CHECK_MODULES([FRIBIDI],
321       [fribidi >= 0.19.2],
322       [
323        have_fribidi="yes"
324        AC_DEFINE(HAVE_FRIBIDI, 1, [have fribidi support])
325        requirement_evas="fribidi ${requirement_evas}"
326        CPPFLAGS_SAVE="$CPPFLAGS"
327        CPPFLAGS="$CPPFLAGS $FRIBIDI_CFLAGS"
328        AC_CHECK_SIZEOF(FriBidiChar,, [#include <fribidi/fribidi.h>])
329        CPPFLAGS="$CPPFLAGS_SAVE"
330       ],
331       [
332        if test "x$want_fribidi" = "xyes" -a "x$use_strict" = "xyes" ; then
333           AC_MSG_ERROR([Fribidi not found (strict dependencies checking)])
334        fi
335       ])
336 fi
337
338 if test "x${have_fribidi}" = "xno"; then
339   HAS_BIDI=0
340 fi
341
342 # harfbuzz support
343 have_harfbuzz="no"
344 have_harfbuzz_ft="no"
345 AC_ARG_ENABLE([harfbuzz],
346    AC_HELP_STRING([--disable-harfbuzz],
347       [disable complex text shaping and layouting support. @<:@default=enabled@:>@]),
348    [
349     if test "x${enableval}" = "xyes" ; then
350        want_harfbuzz="yes"
351     else
352        want_harfbuzz="no"
353     fi
354    ])
355
356 if test "x${want_harfbuzz}" = "xyes" -o "x${want_harfbuzz}" = "xauto" ; then
357    PKG_CHECK_MODULES([HARFBUZZ],
358       [harfbuzz >= 0.6.0],
359       [
360        have_harfbuzz="yes"
361        requirement_evas="harfbuzz ${requirement_evas}"
362       ],
363       [
364        if test "x$want_harfbuzz" = "xyes" -a "x$use_strict" = "xyes" ; then
365           AC_MSG_ERROR([Harfbuzz not found (strict dependencies checking)])
366        fi
367       ])
368    if test "x$have_harfbuzz" = "xyes" ; then
369
370       CPPFLAGS_SAVE="$CPPFLAGS"
371       CPPFLAGS="$CPPFLAGS $HARFBUZZ_CFLAGS $FREETYPE_CFLAGS"
372 # must have for usage with harfbuzz although harfbuzz may not have it.
373
374       AC_CHECK_HEADER(hb-ft.h,
375           [
376            have_harfbuzz_ft="yes"
377            #Depend on harfbuzz ft for harfbuzz support
378            AC_DEFINE(HAVE_HARFBUZZ, 1, [have harfbuzz support])
379           ],
380           [
381            if test "x$want_harfbuzz" = "xyes" -a "x$use_strict" = "xyes" ; then
382               AC_MSG_ERROR([Harfbuzz-ft not found (strict dependencies checking)])
383            fi
384            have_harfbuzz="no"
385           ])
386       CPPFLAGS="$CPPFLAGS_SAVE"
387    fi
388 fi
389
390 if test "x${have_harfbuzz}" = "xno"; then
391   HAS_HARFBUZZ=0
392 fi
393
394 # Pixman
395 have_pixman="no"
396 AC_ARG_ENABLE([pixman],
397    AC_HELP_STRING([--disable-pixman],
398       [disable pixman for software rendering. @<:@default=enabled@:>@]),
399    [
400     if test "x${enableval}" = "xyes" ; then
401        want_pixman="yes"
402     else
403        want_pixman="no"
404     fi
405    ])
406
407
408 if test "x${want_pixman}" = "xyes" -o "x${want_pixman}" = "xauto" ; then
409    PKG_CHECK_MODULES([PIXMAN],
410       [pixman-1],
411       [
412        have_pixman="yes"
413        AC_DEFINE(HAVE_PIXMAN, 1, [have pixman for rendering])
414        requirement_evas="pixman-1 ${requirement_evas}"
415       ],
416       [
417        if test "x${want_pixman}" = "xyes" -a "x${use_strict}" = "xyes" ; then
418           AC_MSG_ERROR([Pixman not found (strict dependencies checking)])
419        fi
420       ])
421 fi
422
423 ### Checks for header files
424 AC_HEADER_STDC
425 AC_CHECK_HEADERS([unistd.h stdint.h sys/param.h netinet/in.h])
426 EFL_CHECK_PATH_MAX
427
428
429 ### Checks for types
430 AC_CHECK_TYPES([struct sigaction], [], [],
431                [[#include <signal.h>]])
432
433
434 ### Checks for structures
435
436
437 ### Checks for compiler characteristics
438 AC_C_CONST
439 AC_C_BIGENDIAN
440 AM_PROG_CC_STDC
441 EFL_ATTRIBUTE_UNUSED
442 EFL_ATTRIBUTE_VECTOR
443
444 WIN32_CPPFLAGS=""
445 case "$host_os" in
446    mingw32ce*)
447       WIN32_CPPFLAGS="-D_WIN32_WCE=0x0420"
448       ;;
449    mingw*)
450       WIN32_CPPFLAGS="-D_WIN32_WINNT=0x0500"
451       ;;
452 esac
453 AC_SUBST(WIN32_CPPFLAGS)
454
455 WIN32_CFLAGS=""
456 AC_SUBST(WIN32_CFLAGS)
457
458
459 ### Checks for linker characteristics
460 lt_enable_auto_import=""
461 case "${host_os}" in
462    mingw*)
463       AC_DEFINE(EFL_EVAS_BUILD, 1, [Define to mention that evas is built])
464       lt_enable_auto_import="-Wl,--enable-auto-import"
465    ;;
466 esac
467 AC_SUBST(lt_enable_auto_import)
468
469
470 ### Checks for library functions
471
472 AC_ISC_POSIX
473 AC_CHECK_FUNCS([siglongjmp])
474
475 # alloca
476 AC_FUNC_ALLOCA
477
478 # fnmatch
479 EFL_CHECK_FNMATCH([], [AC_MSG_ERROR([Cannot find fnmatch()])])
480
481 # dlopen
482 dlopen_libs=""
483 case "$host_os" in
484   mingw32ce*)
485 # managed by evil
486     AC_DEFINE(HAVE_DLADDR)
487   ;;
488   mingw*)
489 # nothing on mingw platform
490   ;;
491   *)
492     AC_CHECK_FUNCS(dlopen, res=yes, res=no)
493     if test "x$res" = "xyes"; then
494       AC_CHECK_FUNCS(dladdr, AC_DEFINE(HAVE_DLADDR))
495     else
496       AC_CHECK_LIB(dl, dlopen, res=yes, res=no)
497       if test "x$res" = "xyes"; then
498         AC_CHECK_LIB(dl, dladdr, AC_DEFINE(HAVE_DLADDR))
499         dlopen_libs=-ldl
500       else
501         AC_MSG_ERROR(Cannot find dlopen)
502       fi
503     fi
504 esac
505 AC_SUBST(dlopen_libs)
506
507 SHM_OPEN_LINK=""
508 AC_MSG_CHECKING([whether shm_open() is present])
509 LIBS_save=${LIBS}
510 LIBS="${LIBS} -lrt"
511 AC_LINK_IFELSE(
512    [AC_LANG_PROGRAM(
513       [[
514 #include <sys/stat.h>
515 #include <sys/mman.h>
516 #include <fcntl.h>
517       ]],
518       [[
519 int fd;
520 fd = shm_open("/", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
521 shm_unlink("/");
522       ]])],
523    [
524     have_shm_open="yes"
525     AC_DEFINE(HAVE_SHM_OPEN, 1, [Have shm_open() call])
526     SHM_OPEN_LINK="-lrt"
527    ],
528    [have_shm_open="no"])
529 LIBS=${LIBS_save}
530 AC_MSG_RESULT([${have_shm_open}])
531 AC_SUBST(SHM_OPEN_LINK)
532
533 # (shm_open (for cache server)
534 AC_ARG_ENABLE([evas-cserve],
535    AC_HELP_STRING([--disable-evas-cserve],
536       [disable shared cache server support. @<:@default=enabled@:>@]),
537    [
538     if test "x${enableval}" = "xyes" ; then
539        want_evas_cserve="yes"
540     else
541        want_evas_cserve="no"
542     fi
543    ])
544 AC_MSG_CHECKING(whether to build shared cache server and support)
545 AC_MSG_RESULT(${want_evas_cserve})
546
547 if test "x${want_evas_cserve}" = "xyes" ; then
548    AC_MSG_CHECKING([whether shm_open() is present])
549    LIBS_save=${LIBS}
550    LIBS="${LIBS} -lrt"
551    AC_LINK_IFELSE(
552       [AC_LANG_PROGRAM(
553          [[
554 #include <sys/types.h>
555 #include <sys/mman.h>
556 #include <fcntl.h>
557          ]],
558          [[
559 int fd;
560 fd = shm_open("/", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
561 shm_unlink("/");
562          ]])],
563       [want_evas_cserve="yes"],
564       [want_evas_cserve="no"])
565    LIBS=${LIBS_save}
566    AC_MSG_RESULT([${want_evas_cserve}])
567 fi
568
569 if test "x${want_evas_cserve}" = "xyes" ; then
570   AC_DEFINE(EVAS_CSERVE, 1, [Shared caceh server.])
571 fi
572
573 AM_CONDITIONAL([EVAS_CSERVE], [test "x${want_evas_cserve}" = "xyes"])
574
575
576
577 #######################################
578 ## GL force flavor gles
579 gl_flavor_gles="no"
580 AC_MSG_CHECKING(whether to build GLES flavor of GL)
581 AC_ARG_ENABLE(gl-flavor-gles,
582   AC_HELP_STRING([--enable-gl-flavor-gles], [enable gles falvor of gl instead of standard]),
583   [
584       if test "x$enableval" = "xyes" ; then
585         AC_MSG_RESULT(yes)
586         gl_flavor_gles="yes"
587       else
588         AC_MSG_RESULT(no)
589         gl_flavor_gles="no"
590       fi
591   ], [
592       AC_MSG_RESULT(no)
593       gl_flavor_gles="no"
594   ]
595 )
596
597 #######################################
598 ## GLES variety sgx
599 gles_variety_sgx="no"
600 AC_MSG_CHECKING(whether to build GLES variety for SGX)
601 AC_ARG_ENABLE(gles-variety-sgx,
602   AC_HELP_STRING([--enable-gles-variety-sgx], [GLES variety SGX 3D unit]),
603   [
604       if test "x$enableval" = "xyes" ; then
605         AC_MSG_RESULT(yes)
606         AC_DEFINE(GLES_VARIETY_SGX, 1, [Imagination SGX GLES2 support])
607         gles_variety_sgx="yes"
608       else
609         AC_MSG_RESULT(no)
610         gles_variety_sgx="no"
611       fi
612   ], [
613       AC_MSG_RESULT(no)
614       gles_variety_sgx="no"
615   ]
616 )
617
618 #######################################
619 ## GLES variety s3c6410
620 gles_variety_s3c6410="no"
621 AC_MSG_CHECKING(whether to build GLES variety for s3c6410)
622 AC_ARG_ENABLE(gles-variety-s3c6410,
623   AC_HELP_STRING([--enable-gles-variety-s3c6410], [GLES variety s3c6410 3D unit]),
624   [
625       if test "x$enableval" = "xyes" ; then
626         AC_MSG_RESULT(yes)
627         AC_DEFINE(GLES_VARIETY_S3C6410, 1, [Samsung S3c6410 GLES2 support])
628         gles_variety_s3c6410="yes"
629       else
630         AC_MSG_RESULT(no)
631         gles_variety_s3c6410="no"
632       fi
633   ], [
634       AC_MSG_RESULT(no)
635       gles_variety_s3c6410="no"
636   ]
637 )
638
639 if test "x$gl_flavor_gles" = "xyes"; then
640   eng=""
641   if test "x$gles_variety_sgx" = "xyes"; then eng="x"$eng; fi
642   if test "x$gles_variety_s3c6410" = "xyes"; then eng="x"$eng; fi
643   if test "x$eng" = "xx"; then
644     eng=""
645   else
646      AC_MSG_ERROR(
647        [Please enable just 1 OpenGL-ES flavor. Choices are:
648           --enable-gles-variety-sgx (Most GL-ES2 GPUs with shader compiler)
649           --enable-gles-variety-s3c6410 (s3c6410 with offline shader compiler)
650         You will also need to enable the OpenGL engine for X11 with:
651           --enable-gl-xlib or --enable-gl-xcb
652        ])
653   fi
654 fi
655
656 #####################################################################
657 ## Engines
658
659 EVAS_CHECK_ENGINE([buffer], [${want_evas_engine_buffer}], [yes], [Buffer])
660
661 EVAS_CHECK_ENGINE([software-gdi], [${want_evas_engine_software_gdi}], [no], [Software GDI])
662
663 EVAS_CHECK_ENGINE([software-ddraw], [${want_evas_engine_software_ddraw}], [no], [Software DirectDraw])
664
665 EVAS_CHECK_ENGINE([direct3d], [${want_evas_engine_direct3d}], [no], [Direct3D])
666
667 EVAS_CHECK_ENGINE([software-sdl], [${want_evas_engine_software_sdl}], [no], [Software SDL])
668
669 EVAS_CHECK_ENGINE([gl-sdl], [${want_evas_engine_gl_sdl}], [no], [OpenGL SDL])
670
671 EVAS_CHECK_ENGINE([fb], [${want_evas_engine_fb}], [no], [Framebuffer])
672
673 EVAS_CHECK_ENGINE([directfb], [${want_evas_engine_directfb}], [no], [DirectFB])
674
675 EVAS_CHECK_ENGINE([software-8-x11], [${want_evas_engine_software_8_x11}], [no], [Software X11 8 bits grayscale])
676
677 EVAS_CHECK_ENGINE([software-16-x11], [${want_evas_engine_software_16_x11}], [no], [Software X11 16 bits])
678
679 EVAS_CHECK_ENGINE([software-16-ddraw], [${want_evas_engine_software_16_ddraw}], [no], [Software DirectDraw 16 bits])
680
681 EVAS_CHECK_ENGINE([software-16-wince], [${want_evas_engine_software_16_wince}], [no], [Software Windows CE 16 bits])
682
683 EVAS_CHECK_ENGINE([software-16-sdl], [${want_evas_engine_software_16_sdl}], [no], [Software SDL 16 bits])
684
685 # SDL primitive
686 sdl_primitive="no"
687
688 AC_ARG_ENABLE([sdl-primitive],
689    [AC_HELP_STRING([--enable-sdl-primitive], [])],
690    [sdl_primitive=${enableval}]
691 )
692 AC_MSG_CHECKING([whether to use SDL primitive when possible])
693 AC_MSG_RESULT([${sdl_primitive}])
694
695 if test "x${sdl_primitive}" = "xyes" ; then
696    AC_DEFINE([ENGINE_SDL_PRIMITIVE], [1], [Use SDL primitive when possible])
697 fi
698
699 # if software generic need to be build as part of libevas.so
700 have_static_software_generic="no"
701 AC_ARG_ENABLE([static-software-generic],
702    [AC_HELP_STRING([--enable-static-software-generic], [Build software generic engine as part of libevas])],
703    [have_static_software_generic=${enableval}]
704 )
705 AC_MSG_CHECKING([Whether to build software generic engine as part of libevas])
706 AC_MSG_RESULT([${have_static_software_generic}])
707
708 if test "x${have_static_module}" = "xyes" -a "x${have_static_software_generic}" = "xno"; then
709    AC_MSG_WARN([Forcing --enable-static-software-generic as engines must be compiled statically])
710    have_static_software_generic="yes"
711 fi
712
713 AM_CONDITIONAL(EVAS_STATIC_BUILD_SOFTWARE_GENERIC, test "x${have_static_software_generic}" = "xyes")
714 if test "x${have_static_software_generic}" = "xyes"; then
715    AC_DEFINE(EVAS_STATIC_BUILD_SOFTWARE_GENERIC, [1], [Build software generic engine as part of libevas])
716 fi
717
718
719 ######## Software Engine ########
720 have_evas_engine_software_x11="no"
721 have_evas_engine_software_xcb="no"
722 have_evas_engine_software_xlib="no"
723 build_software_xcb=
724
725 ## XCB Checks ##
726 want_xcb="no"
727 AC_MSG_CHECKING(whether to build Software XCB Engine)
728 AC_ARG_ENABLE(software-xcb,
729   AC_HELP_STRING([--enable-software-xcb], [enable Software XCB Engine. @<:@default=disabled@:>@]), [want_xcb=$enableval]
730 )
731 if test "x$want_xcb" != "xno" ; then
732   EVAS_CHECK_ENGINE([software-xcb], [${want_evas_engine_software_xcb}], [no], [Software XCB])
733   if test "x$have_evas_engine_software_xcb" != "xno" ; then
734     build_software_xcb="yes"
735     have_evas_engine_software_x11="yes"
736     AC_DEFINE_UNQUOTED(BUILD_ENGINE_SOFTWARE_X11, [1], [Build software X11 engine])
737     AC_DEFINE_UNQUOTED(BUILD_ENGINE_SOFTWARE_XCB, [1], [Build software XCB backend])
738   fi
739 else
740   AC_MSG_RESULT(no)
741   build_software_xcb="no"
742 fi
743
744 ## If we are not building XCB, then we can build XLib ##
745
746 if test "x$build_software_xcb" = "xno" ; then
747   EVAS_CHECK_ENGINE([software-xlib], [${want_evas_engine_software_xlib}], [no], [Software Xlib])
748   # if software_x11 is available, define everything needed for X11
749   if test "x$have_evas_engine_software_xlib" != "xno" ; then
750     have_evas_engine_software_x11="yes"
751     AC_DEFINE_UNQUOTED(BUILD_ENGINE_SOFTWARE_X11, [1], [Build software X11 engine])
752     AC_DEFINE_UNQUOTED(BUILD_ENGINE_SOFTWARE_XLIB, [1], [Build software Xlib backend])
753   fi
754 else
755   have_evas_engine_software_xlib="no"
756 fi
757
758 if test "x$have_evas_engine_software_xlib" = "xstatic" -o "x$have_evas_engine_software_xcb" = "xstatic"; then
759    AC_DEFINE_UNQUOTED(EVAS_STATIC_BUILD_SOFTWARE_X11, [1], [Build software X11 engine as part of libevas])
760 fi
761
762 AC_SUBST(have_evas_engine_software_xcb)
763 AC_SUBST(have_evas_engine_software_xlib)
764
765 AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_XLIB], [test "x${have_evas_engine_software_xlib}" != "xno"])
766 AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_XCB], [test "x${have_evas_engine_software_xcb}" != "xno"])
767 AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_X11], [test "x${have_evas_engine_software_x11}" != "xno"])
768
769 AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_X11], [test "x${have_evas_engine_software_xcb}" = "xstatic" -o "x${have_evas_engine_software_xlib}" = "xstatic"])
770 AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_XLIB], [test "x${have_evas_engine_software_xlib}" = "xstatic"])
771 AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_XCB], [test "x${have_evas_engine_software_xcb}" = "xstatic"])
772
773 AC_SUBST(have_evas_engine_software_x11)
774
775
776 ######## OpenGL Engine ########
777 have_evas_engine_gl_x11="no"
778 have_evas_engine_gl_xcb="no"
779 build_gl_xcb="no"
780
781 ## XCB Checks ##
782 want_gl_xcb="no"
783 AC_MSG_CHECKING(whether to build OpenGL XCB Engine)
784 AC_ARG_ENABLE(gl-xcb,
785   AC_HELP_STRING([--enable-gl-xcb], [enable OpenGL XCB Engine. @<:@default=disabled@:>@]), [want_gl_xcb=$enableval]
786 )
787 if test "x$want_gl_xcb" = "xyes" ; then
788   EVAS_CHECK_ENGINE([gl-xcb], [${want_evas_engine_gl_xcb}], [no], [OpenGL XCB])
789   if test "x$have_evas_engine_gl_xcb" != "xno" ; then
790     build_gl_xcb="yes"
791     have_evas_engine_gl_x11="yes"
792    AC_DEFINE(BUILD_ENGINE_GL_X11, [1], [Build GL X11 engine])
793    AC_DEFINE(BUILD_ENGINE_GL_XCB, [1], [Build GL Xcb backend])
794     if test "x$have_evas_engine_gl_xcb" = "xstatic" ; then
795       AC_DEFINE(EVAS_STATIC_BUILD_GL_X11, [1], [Build GL X11 engine as part of libevas])
796     fi
797   fi
798   AC_SUBST(have_evas_engine_gl_xcb)
799 else
800   AC_MSG_RESULT(no)
801   build_gl_xcb="no"
802 fi
803
804 ## If we are not building XCB, then we can build XLib ##
805
806 if test "x$build_gl_xcb" = "xno" ; then
807   EVAS_CHECK_ENGINE([gl-xlib], [${want_evas_engine_gl_xlib}], [no], [OpenGL XLib])
808   if test "x$have_evas_engine_gl_xlib" != "xno" ; then
809     have_evas_engine_gl_x11="yes"
810     AC_DEFINE_UNQUOTED(BUILD_ENGINE_GL_X11, [1], [Build OpenGL X11 engine])
811     AC_DEFINE_UNQUOTED(BUILD_ENGINE_GL_XLIB, [1], [Build OpenGL Xlib backend])
812     if test "x$have_evas_engine_gl_xlib" = "xstatic" ; then
813       AC_DEFINE_UNQUOTED(EVAS_STATIC_BUILD_GL_X11, [1], [Build OpenGL X11 engine as part of libevas])
814     fi
815   fi
816 else
817   have_evas_engine_gl_xlib="no"
818 fi
819 AC_SUBST(have_evas_engine_gl_xlib)
820
821 AM_CONDITIONAL([BUILD_ENGINE_GL_XLIB], [test "x${have_evas_engine_gl_xlib}" != "xno"])
822 AM_CONDITIONAL([BUILD_ENGINE_GL_XCB], [test "x${have_evas_engine_gl_xcb}" != "xno"])
823 AM_CONDITIONAL([BUILD_ENGINE_GL_X11], [test "x${have_evas_engine_gl_x11}" != "xno"])
824
825 AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_X11], [test "x${have_evas_engine_gl_xcb}" = "xstatic" -o "x${have_evas_engine_gl_xlib}" = "xstatic"])
826 AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_XLIB], [test "x${have_evas_engine_gl_xlib}" = "xstatic"])
827 AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_XCB], [test "x${have_evas_engine_gl_xcb}" = "xstatic"])
828
829 AC_SUBST(have_evas_engine_gl_x11)
830
831 # common gl
832 have_evas_engine_gl_common="no"
833 have_static_evas_engine_gl_common="no"
834 if test "x$have_evas_engine_gl_xlib" = "xyes" \
835    || test "x$have_evas_engine_gl_xcb" = "xyes" \
836    || test "x$have_evas_engine_gl_sdl" = "xyes"; then
837    have_evas_engine_gl_common="yes"
838 fi
839 if test "x$have_evas_engine_gl_xlib" = "xstatic" \
840    || test "x$have_evas_engine_gl_xcb" = "xstatic" \
841    || test "x$have_evas_engine_gl_sdl" = "xstatic"; then
842    have_evas_engine_gl_common="yes"
843    have_static_evas_engine_gl_common="yes"
844 fi
845
846 if test "x$have_evas_engine_gl_common" = "xyes"; then
847    evas_engine_gl_common_libs=""
848    AC_DEFINE(BUILD_ENGINE_GL_COMMON, [1], [Generic OpenGL Rendering Support])
849 fi
850
851 AC_SUBST([evas_engine_gl_common_libs])
852
853 AM_CONDITIONAL(BUILD_ENGINE_GL_COMMON, [test "x$have_evas_engine_gl_common" = "xyes"])
854
855 AM_CONDITIONAL(EVAS_STATIC_BUILD_GL_COMMON, test "x${have_static_evas_engine_gl_common}" = "xyes")
856 if test "x${have_static_evas_engine_gl_common}" = "xyes"; then
857    AC_DEFINE(EVAS_STATIC_BUILD_GL_COMMON, [1], [Build GL generic engine as part of libevas])
858 fi
859
860 # gl_sdl
861 if test "x$have_evas_engine_gl_sdl" = "xyes" || test "x$have_evas_engine_gl_sdl" = "xstatic" ; then
862    AC_CHECK_DECL(SDL_GL_CONTEXT_MAJOR_VERSION,
863       [AC_DEFINE(HAVE_SDL_GL_CONTEXT_VERSION, [1], [SDL_GL version attributes present])],,
864       [#include <SDL/SDL_video.h>])
865 fi
866
867 if test "x$gl_flavor_gles" = "xyes"; then
868    AC_CHECK_DECL(SDL_OPENGLES,
869       [AC_DEFINE(HAVE_SDL_FLAG_OPENGLES, [1], [SDL_OPENGLES flag is present])],,
870       [#include <SDL/SDL_video.h>])
871 fi
872
873 # if software 16 x11 is enabled - build software_16 (the generic 16bit
874 # engine). later enable it fb_16 or other "16" bit engines are enabled.
875 have_evas_engine_software_16="no"
876 if test "x$have_evas_engine_software_16_x11" = "xyes" -o "x$have_evas_engine_software_16_x11" = "xstatic"; then
877    have_evas_engine_software_16="yes"
878 fi
879 if test "x$have_evas_engine_software_16_sdl" = "xyes" -o "x$have_evas_engine_software_16_sdl" = "xstatic"; then
880    have_evas_engine_software_16="yes"
881 fi
882 if test "x$have_evas_engine_software_16_ddraw" = "xyes" -o "x$have_evas_engine_software_16_ddraw" = "xstatic"; then
883    have_evas_engine_software_16="yes"
884 fi
885 if test "x$have_evas_engine_software_16_wince" = "xyes" -o "x$have_evas_engine_software_16_wince" = "xstatic"; then
886    have_evas_engine_software_16="yes"
887 fi
888 AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_16, test "x$have_evas_engine_software_16" = "xyes")
889
890 # if software 16 need to be build as part of libevas.so
891 have_static_software_16="no"
892 AC_ARG_ENABLE([static-software-16],
893    [AC_HELP_STRING([--enable-static-software-16], [Build software 16 engine as part of libevas])],
894    [have_static_software_16=${enableval}]
895 )
896 AC_MSG_CHECKING([Whether to build software 16 engine as part of libevas])
897 AC_MSG_RESULT([${have_static_software_16}])
898
899 AM_CONDITIONAL(EVAS_STATIC_BUILD_SOFTWARE_16, test "x${have_static_software_16}" = "xyes")
900 if test "x${have_static_software_16}" = "xyes"; then
901    AC_DEFINE(EVAS_STATIC_BUILD_SOFTWARE_16, [1], [Build software 16 engine as part of libevas])
902 fi
903
904 # if software 8 x11 is enabled - build software_8 (the generic 8bit
905 # engine).
906 have_evas_engine_software_8="no"
907 if test "x$have_evas_engine_software_8_x11" = "xyes" -o "x$have_evas_engine_software_8_x11" = "xstatic"; then
908    have_evas_engine_software_8="yes"
909 fi
910 AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_8, test "x$have_evas_engine_software_8" = "xyes")
911
912 # if software 8 need to be build as part of libevas.so
913 have_static_software_8="no"
914 AC_ARG_ENABLE([static-software-8],
915    [AC_HELP_STRING([--enable-static-software-8], [Build software 8 engine as part of libevas])],
916    [have_static_software_8=${enableval}]
917 )
918 AC_MSG_CHECKING([Whether to build software 8 engine as part of libevas])
919 AC_MSG_RESULT([${have_static_software_8}])
920
921 AM_CONDITIONAL(EVAS_STATIC_BUILD_SOFTWARE_8, test "x${have_static_software_8}" = "xyes")
922 if test "x${have_static_software_8}" = "xyes"; then
923    AC_DEFINE(EVAS_STATIC_BUILD_SOFTWARE_8, [1], [Build software 8 engine as part of libevas])
924 fi
925
926 #####################################################################
927 ## Image loaders
928
929 EVAS_CHECK_IMAGE_LOADER([Edb], [${want_evas_image_loader_edb}])
930
931 EVAS_CHECK_IMAGE_LOADER([Eet], [${want_evas_image_loader_eet}])
932 EVAS_CHECK_FONT_LOADER([${want_evas_font_loader_eet}])
933
934 EVAS_CHECK_IMAGE_LOADER([Gif], [${want_evas_image_loader_gif}])
935
936 have_evas_image_saver_jpeg="no"
937 EVAS_CHECK_IMAGE_LOADER([Jpeg], [${want_evas_image_loader_jpeg}])
938
939 dnl Windows has no sigsetjmp function, nor equivalent.
940 dnl So we disable the jpeg saver.
941 dnl TODO: must find a workaround
942 case "$host_os" in
943    mingw*)
944       ;;
945    *)
946       if test "x${have_evas_image_loader_jpeg}" = "xyes" ; then
947          AC_DEFINE(EVAS_BUILD_SAVER_JPEG, [1], [Build JPEG saver])
948          have_evas_image_saver_jpeg="yes"
949       fi
950       ;;
951 esac
952 AM_CONDITIONAL([BUILD_SAVER_JPEG], [test "x${have_evas_image_saver_jpeg}" = "xyes"])
953
954 EVAS_CHECK_IMAGE_LOADER([PMAPS], [${want_evas_image_loader_pmaps}])
955
956 EVAS_CHECK_IMAGE_LOADER([PNG], [${want_evas_image_loader_png}])
957
958 EVAS_CHECK_IMAGE_LOADER([SVG], [${want_evas_image_loader_svg}])
959
960 EVAS_CHECK_IMAGE_LOADER([Tiff], [${want_evas_image_loader_tiff}])
961
962 EVAS_CHECK_IMAGE_LOADER([XPM], [${want_evas_image_loader_xpm}])
963
964 EVAS_CHECK_IMAGE_LOADER([BMP], [${want_evas_image_loader_bmp}])
965
966 EVAS_CHECK_IMAGE_LOADER([TGA], [${want_evas_image_loader_tga}])
967
968 EVAS_CHECK_IMAGE_LOADER([WBMP], [${want_evas_image_loader_wbmp}])
969
970 EVAS_CHECK_IMAGE_LOADER([ICO], [${want_evas_image_loader_ico}])
971
972 EVAS_CHECK_IMAGE_LOADER([PSD], [${want_evas_image_loader_psd}])
973
974 EVAS_CHECK_IMAGE_LOADER([GENERIC], [${want_evas_image_loader_generic}])
975
976 #####################################################################
977 ## Cpu based optimizations
978
979 #######################################
980 ## PTHREADS
981 pthread_cflags=""
982 pthread_libs=""
983 build_pthreads="no"
984 has_pthreads="no"
985 need_pthreads="no"
986 # basic pthread support
987 AC_CHECK_HEADER(pthread.h,
988   [
989    has_pthreads="yes"
990   ],
991   [
992    has_pthreads="no"
993   ]
994 )
995
996 # sched_getaffinity pthread_attr_setaffinity_np
997 AC_CHECK_HEADERS(pthread.h sched.h,
998   [
999     AC_CHECK_LIB(pthread, pthread_attr_setaffinity_np,
1000       [
1001         AC_CHECK_LIB(pthread, pthread_barrier_wait,
1002           [ build_pthreads="yes" ],
1003           [ build_pthreads="no" ]
1004         )
1005       ],
1006       [ build_pthreads="no" ]
1007     )
1008   ],
1009   [ build_pthreads="no" ]
1010 )
1011
1012 #######################################
1013 ## Pthread
1014 AC_MSG_CHECKING(whether to build pthread code)
1015 AC_ARG_ENABLE(pthreads,
1016   AC_HELP_STRING([--enable-pthreads], [enable threaded rendering]),
1017   [
1018     if test "x$enableval" = "xyes" ; then
1019       if test "x$build_pthreads" = "xyes"; then
1020         AC_MSG_RESULT(yes)
1021         AC_DEFINE(BUILD_PTHREAD, 1, [Build Threaded Rendering])
1022         build_pthreads="yes"
1023         need_pthreads="yes"
1024       else
1025         if "x$use_strict" = "xyes"; then
1026           AC_MSG_ERROR(pthreads headers or functions not found (strict dependencies checking))
1027         else
1028           AC_MSG_RESULT(no: pthread headers or functions not found)
1029         fi
1030       fi
1031     else
1032       AC_MSG_RESULT(no)
1033       build_pthreads="no"
1034     fi
1035   ],
1036   [
1037     AC_MSG_RESULT($build_pthreads)
1038     if test "x$build_pthreads" = "xyes" ; then
1039       AC_DEFINE(BUILD_PTHREAD, 1, [Build Threaded Rendering])
1040       need_pthreads="yes"
1041     fi
1042   ]
1043 )
1044
1045 #######################################
1046 ## Pipe Renderer
1047 build_pipe_render="no"
1048
1049 AC_MSG_CHECKING(whether to build Threaded Pipe Rendering support)
1050 AC_ARG_ENABLE(pipe-render,
1051   AC_HELP_STRING([--enable-pipe-render], [enable threaded pipe rendering support]),
1052   [ build_pipe_render=$enableval ]
1053 )
1054 AC_MSG_RESULT($build_pipe_render)
1055
1056 AC_MSG_CHECKING(whether we can build Threaded Pipe Rendering support)
1057 if test \( "x$build_pipe_render" = "xyes" -o "x$build_pipe_render" = "xauto" \); then
1058   AC_MSG_RESULT(yes)
1059   AC_DEFINE(BUILD_PIPE_RENDER, 1, [Build pipe render support])
1060   build_pipe_render="yes"
1061   need_pthreads="yes"
1062 else
1063   AC_MSG_RESULT(no)
1064   build_pipe_render="no"
1065 fi
1066
1067 #######################################
1068 ## Async Renderer
1069 build_async_render="no"
1070
1071 AC_MSG_CHECKING(whether to build Asynchronously Threaded Pipe Rendering support)
1072 AC_ARG_ENABLE(async-render,
1073  AC_HELP_STRING([--enable-async-render], [enable asynchronously threaded pipe rendering support]),
1074  [ build_async_render=$enableval ]
1075 )
1076 AC_MSG_RESULT($build_async_render)
1077
1078 AC_MSG_CHECKING(whether we can build Asynchronously Threaded Pipe Rendering support)
1079 if test \( "x$build_async_render" = "xyes" \); then
1080   AC_MSG_RESULT(yes)
1081   AC_DEFINE(EVAS_FRAME_QUEUING, 1, [Build async render support])
1082   build_async_render="yes"
1083   AC_DEFINE(BUILD_PIPE_RENDER, 1, [Build pipe render support])
1084   build_pipe_render="yes"
1085   need_pthreads="yes"
1086
1087   PKG_CHECK_MODULES([XEXT],
1088     [xext < 1.1.1],
1089     [ build_avoid_libXext_bug=yes ],
1090     [ build_avoid_libXext_bug=no ]
1091   )
1092   if test \( "x$build_avoid_libXext_bug" = "xyes" \); then
1093     AC_DEFINE(LIBXEXT_VERSION_LOW, 1, [To avoid bug on old libXext version])
1094   fi
1095 else
1096   AC_MSG_RESULT(no)
1097   build_async_render="no"
1098 fi
1099
1100 #######################################
1101 ## Async events
1102 build_async_events="auto"
1103 AC_MSG_CHECKING(whether to build Async Events support)
1104 AC_ARG_ENABLE(async-events,
1105   AC_HELP_STRING([--enable-async-events], [enable async events support]),
1106   [ build_async_events=$enableval ]
1107 )
1108 AC_MSG_RESULT($build_async_events)
1109
1110 AC_MSG_CHECKING(whether we can build Async Events support)
1111 if test "x$build_async_events" = "xyes" || test "x$build_async_events" = "xauto" ; then
1112   AC_MSG_RESULT(yes)
1113   AC_DEFINE(BUILD_ASYNC_EVENTS, 1, [Build async events support])
1114   build_async_events="yes"
1115 else
1116   AC_MSG_RESULT(no)
1117   build_async_events="no"
1118 fi
1119
1120 #######################################
1121 ## Async image preload
1122 build_async_preload="auto"
1123 AC_MSG_CHECKING(whether to build Async Image Preload support)
1124 AC_ARG_ENABLE(async-preload,
1125   AC_HELP_STRING([--enable-async-preload], [enable async image preloading support]),
1126   [ build_async_preload=$enableval ]
1127 )
1128 AC_MSG_RESULT($build_async_preload)
1129
1130 AC_MSG_CHECKING(whether we can build Async Image Preload support)
1131 if test \( "x$build_async_preload" = "xyes" -o "x$build_async_preload" = "xauto" \) -a "x$build_async_events" = "xyes"; then
1132   AC_MSG_RESULT(yes)
1133   AC_DEFINE(BUILD_ASYNC_PRELOAD, 1, [Build async image preload support])
1134   build_async_preload="yes"
1135   need_pthreads="yes"
1136 else
1137   AC_MSG_RESULT(no)
1138   build_async_preload="no"
1139 fi
1140
1141 #######################################
1142 ## Link with pthread if needed
1143 AC_MSG_CHECKING(whether we should link with pthread)
1144 if test "x$need_pthreads" = "xyes"; then
1145   AC_MSG_RESULT(yes)
1146   pthread_cflags=""
1147   pthread_libs="-lpthread"
1148 else
1149   AC_MSG_RESULT(no)
1150 fi
1151
1152 #######################################
1153 ## MMX
1154 build_cpu_mmx="no"
1155 case $host_cpu in
1156   i*86)
1157     build_cpu_mmx="yes"
1158     ;;
1159   x86_64)
1160     build_cpu_mmx="yes"
1161     ;;
1162   amd64)
1163     build_cpu_mmx="yes"
1164     ;;
1165 esac
1166 AC_MSG_CHECKING(whether to build mmx code)
1167 AC_ARG_ENABLE(cpu-mmx,
1168   AC_HELP_STRING([--enable-cpu-mmx], [enable mmx code]),
1169   [
1170       if test "x$enableval" = "xyes" ; then
1171         AC_MSG_RESULT(yes)
1172         AC_DEFINE(BUILD_MMX, 1, [Build MMX Code])
1173         build_cpu_mmx="yes"
1174       else
1175         AC_MSG_RESULT(no)
1176         build_cpu_mmx="no"
1177       fi
1178   ],
1179   [
1180     AC_MSG_RESULT($build_cpu_mmx)
1181     if test "x$build_cpu_mmx" = "xyes" ; then
1182       AC_DEFINE(BUILD_MMX, 1, [Build MMX Code])
1183     fi
1184   ]
1185 )
1186
1187 #######################################
1188 ## SSE
1189 build_cpu_sse="no"
1190 case $host_cpu in
1191   i*86)
1192     build_cpu_sse="yes"
1193     ;;
1194   x86_64)
1195     build_cpu_sse="yes"
1196     ;;
1197   amd64)
1198     build_cpu_sse="yes"
1199     ;;
1200 esac
1201 AC_MSG_CHECKING(whether to build sse code)
1202 AC_ARG_ENABLE(cpu-sse,
1203   AC_HELP_STRING([--enable-cpu-sse], [enable sse code]),
1204   [
1205       if test "x$enableval" = "xyes" ; then
1206         AC_MSG_RESULT(yes)
1207         AC_DEFINE(BUILD_SSE, 1, [Build SSE Code])
1208         build_cpu_sse="yes"
1209       else
1210         AC_MSG_RESULT(no)
1211         build_cpu_sse="no"
1212       fi
1213   ],
1214   [
1215     AC_MSG_RESULT($build_cpu_sse)
1216     if test "x$build_cpu_sse" = "xyes" ; then
1217       AC_DEFINE(BUILD_SSE, 1, [Build SSE Code])
1218     fi
1219   ]
1220 )
1221
1222 #######################################
1223 ## SSE3
1224 build_cpu_sse3="no"
1225 case $host_cpu in
1226   i*86)
1227     build_cpu_sse3="yes"
1228     ;;
1229   x86_64)
1230     build_cpu_sse3="yes"
1231     ;;
1232   amd64)
1233     build_cpu_sse3="yes"
1234     ;;
1235 esac
1236 AC_MSG_CHECKING(whether to build sse3 code)
1237 AC_ARG_ENABLE(cpu-sse3,
1238   AS_HELP_STRING([--enable-cpu-sse3],[enable sse3 code]),
1239   [
1240       if test "x$enableval" = "xyes" ; then
1241         AC_MSG_RESULT(yes)
1242         AC_DEFINE(BUILD_SSE3, 1, [Build SSE3 Code])
1243         build_cpu_sse3="yes"
1244       else
1245         AC_MSG_RESULT(no)
1246         build_cpu_sse3="no"
1247       fi
1248   ],
1249   [
1250     AC_MSG_RESULT($build_cpu_sse3)
1251     if test "x$build_cpu_sse3" = "xyes" ; then
1252       AC_DEFINE(BUILD_SSE3, 1, [Build SSE3 Code])
1253     fi
1254   ]
1255 )
1256
1257
1258 EVAS_SSE3_CFLAGS="-msse3 "
1259 if test "x$build_cpu_sse3" = "xyes" ; then
1260    CFLAGS="${CFLAGS} ${EVAS_SSE3_CFLAGS}"
1261 fi
1262
1263 AC_SUBST(CFLAGS)
1264
1265 #######################################
1266 ## ALTIVEC
1267 build_cpu_altivec="no"
1268 case $host_cpu in
1269   *power* | *ppc*)
1270     build_cpu_altivec="auto"
1271     ;;
1272 esac
1273 altivec_cflags=""
1274 AC_MSG_CHECKING(whether to build altivec code)
1275 AC_ARG_ENABLE(cpu-altivec,
1276   AC_HELP_STRING([--enable-cpu-altivec], [enable altivec code]),
1277   [ build_cpu_altivec=$enableval ],
1278   [
1279     if test ! "x$build_cpu_altivec" = "xauto"; then
1280       build_cpu_altivec="no"
1281     fi
1282   ]
1283 )
1284 AC_MSG_RESULT($build_cpu_altivec)
1285
1286 if test "x$build_cpu_altivec" = "xyes"; then
1287    AC_CHECK_HEADER(altivec.h,
1288      [
1289         AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code])
1290         AC_DEFINE(HAVE_ALTIVEC_H, 1, [Have altivec.h header file])
1291         build_cpu_altivec="yes"
1292      ],
1293      [
1294        save_CFLAGS=$CFLAGS
1295        save_CPPFLAGS=$CPPFLAGS
1296        CFLAGS=$CFLAGS" -maltivec"
1297        CPPFLAGS=$CPPFLAGS" -maltivec"
1298        unset ac_cv_header_altivec_h
1299        AC_CHECK_HEADER(altivec.h,
1300          [
1301             AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code])
1302             AC_DEFINE(HAVE_ALTIVEC_H, 1, [Have altivec.h header file])
1303             build_cpu_altivec="yes"
1304          ],
1305          [
1306             if test "x$build_cpu_altivec" = "xyes" -a "x$use_strict" = "xyes" ; then
1307               AC_MSG_ERROR(Altivec not found (strict dependencies checking))
1308             fi
1309             build_cpu_altivec="no"
1310          ]
1311        )
1312        CFLAGS=$save_CFLAGS
1313        CPPFLAGS=$save_CPPFLAGS
1314      ]
1315    )
1316 fi
1317
1318 if test "x$build_cpu_altivec" = "xyes"; then
1319    AC_MSG_CHECKING(whether to use altivec compiler flag)
1320    if test "x$GCC" = "xyes"; then
1321       if echo "int main(){return 0;}" | ${CPP} -faltivec - > /dev/null 2>&1; then
1322          altivec_cflags="-faltivec"
1323          AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code])
1324       elif echo "int main(){return 0;}" | ${CPP} -maltivec - > /dev/null 2>&1; then
1325          altivec_cflags="-maltivec"
1326          AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code])
1327       fi
1328    fi
1329   AC_MSG_RESULT($altivec_cflags)
1330    CFLAGS="$CFLAGS $altivec_cflags"
1331 fi
1332
1333 #######################################
1334 ## NEON
1335 build_cpu_neon="no"
1336 case $host_cpu in
1337   arm*)
1338     build_cpu_neon="yes"
1339     ;;
1340 esac
1341 AC_MSG_CHECKING(whether to build neon code)
1342 AC_ARG_ENABLE(cpu-neon,
1343   AC_HELP_STRING([--enable-cpu-neon], [build neon code, the code will be
1344           checked at run time to see if the CPU supports it]),
1345   [
1346      if test "x$enableval" = "xyes" ; then
1347        AC_TRY_COMPILE([],
1348         [asm volatile (".fpu neon\nvqadd.u8 d0, d1, d0\n")],
1349         [
1350           AC_MSG_RESULT(yes)
1351           AC_DEFINE(BUILD_NEON, 1, [Build NEON Code])
1352           build_cpu_neon="yes"
1353         ],[
1354           AC_MSG_RESULT(no)
1355           build_cpu_neon="no"
1356         ])
1357       else
1358         AC_MSG_RESULT(no)
1359         build_cpu_neon="no"
1360       fi
1361   ],
1362   [
1363     if test "x$build_cpu_neon" = "xyes" ; then
1364        AC_TRY_COMPILE([#include <arm_neon.h>],
1365         [asm volatile ("vqadd.u8 d0, d1, d0\n")],
1366         [
1367           AC_MSG_RESULT(yes)
1368           AC_DEFINE(BUILD_NEON, 1, [Build NEON Code])
1369           build_cpu_neon="yes"
1370         ],[
1371           AC_MSG_RESULT(no)
1372           build_cpu_neon="no"
1373         ])
1374     fi
1375   ]
1376 )
1377      
1378 #######################################
1379 ## C
1380 build_cpu_c="yes"
1381 AC_MSG_CHECKING(whether to build c code)
1382 AC_ARG_ENABLE(cpu-c,
1383   AC_HELP_STRING([--enable-cpu-c], [enable C code]),
1384   [
1385       if test "x$enableval" = "xyes" ; then
1386         AC_MSG_RESULT(yes)
1387         AC_DEFINE(BUILD_C, 1, [Build plain C code])
1388         build_cpu_c="yes"
1389       else
1390         AC_MSG_RESULT(no)
1391         build_cpu_c="no"
1392       fi
1393   ], [
1394       AC_MSG_RESULT($build_cpu_c)
1395       if test "x$build_cpu_c" = "xyes" ; then
1396         AC_DEFINE(BUILD_C, 1, [Build plain C code])
1397       fi
1398   ]
1399 )
1400
1401 #######################################
1402 ## MAGIC_DEBUG
1403 want_evas_magic_debug="yes"
1404 AC_MSG_CHECKING(whether to check magic for evas object)
1405 AC_ARG_ENABLE(evas-magic-debug,
1406   AC_HELP_STRING(
1407     [--disable-evas-magic-debug],
1408     [disable MAGIC_DEBUG check when people pass in wrong object type. [[default=enabled]]]
1409   ),
1410   [ want_evas_magic_debug="$enableval" ]
1411 )
1412 AC_MSG_RESULT($want_evas_magic_debug)
1413
1414 AM_CONDITIONAL(EVAS_MAGIC_DEBUG, test "x$want_evas_magic_debug" = "xyes")
1415 if test "x$want_evas_magic_debug" = "xyes"; then
1416   AC_DEFINE(EVAS_MAGIC_DEBUG, 1, [complain when people pass in wrong object types etc.])
1417 fi
1418
1419
1420 #######################################
1421 ## Word Caching
1422 want_word_cache="no"
1423 AC_MSG_CHECKING(whether to enable caching of rendered words)
1424 AC_ARG_ENABLE(word-cache,
1425   AC_HELP_STRING(
1426     [--enable-word-cache],
1427     [Enable experimental word caching to speed up rendering [[default=disabled]]]
1428   ),
1429   [ want_word_cache="$enableval" ]
1430 )
1431 AC_MSG_RESULT($want_word_cache)
1432
1433 AM_CONDITIONAL(WORD_CACHE, test "x$want_word_cache" = "xyes")
1434 if test "x$want_word_cache" = "xyes"; then
1435   AC_DEFINE(WORD_CACHE, 1, [Experimental word caching to speed up text rendering.])
1436 fi
1437
1438 #######################################
1439 ## Metric Caching
1440 want_metric_cache="no"
1441 AC_MSG_CHECKING(whether to enable caching of rendered metrics)
1442 AC_ARG_ENABLE(metric-cache,
1443   AC_HELP_STRING(
1444     [--enable-metric-cache],
1445     [Enable experimental metric caching to speed up rendering [[default=disabled]]]
1446   ),
1447   [ want_metric_cache="$enableval" ]
1448 )
1449 AC_MSG_RESULT($want_metric_cache)
1450
1451 AM_CONDITIONAL(METRIC_CACHE, test "x$want_metric_cache" = "xyes")
1452 if test "x$want_metric_cache" = "xyes"; then
1453   AC_DEFINE(METRIC_CACHE, 1, [Experimental metric caching to speed up text rendering.])
1454 fi
1455
1456
1457
1458 #####################################################################
1459 ## ARGB engine options
1460
1461 #######################################
1462 ## Nearest sampling scaler
1463 EVAS_CHECK_SCALER([scale-sample], [sampling scaler], [scaler_sample="yes"], [scaler_sample="no"])
1464 ## Smooth super and sub sampling scaler
1465 EVAS_CHECK_SCALER([scale-smooth], [smooth scaler], [scaler_smooth="yes"], [scaler_smooth="no"])
1466
1467 #######################################
1468 ## YUV -> ARGB converter
1469 conv_yuv="no"
1470 conv_yuv="yes"
1471 AC_MSG_CHECKING(whether to build yuv converter code)
1472 AC_ARG_ENABLE(convert-yuv,
1473   AC_HELP_STRING([--enable-convert-yuv], [enable yuv converter code]),
1474   [
1475       if test "x$enableval" = "xyes" ; then
1476         AC_MSG_RESULT(yes)
1477         AC_DEFINE(BUILD_CONVERT_YUV, 1, [YUV Converter Support])
1478         conv_yuv="yes"
1479       else
1480         AC_MSG_RESULT(no)
1481         conv_yuv="no"
1482       fi
1483   ], [
1484       AC_MSG_RESULT($conv_yuv)
1485       if test "x$conv_yuv" = "xyes" ; then
1486         AC_DEFINE(BUILD_CONVERT_YUV, 1, [YUV Converter Support])
1487       fi
1488   ]
1489 )
1490
1491 #####################################################################
1492 ## Output rendering features
1493
1494 #######################################
1495 ## Small dither mask instead of big one (lower quality)
1496 EVAS_CHECK_DITHER([small-dither-mask], [small dither mask], [conv_small_dither="yes"], [conv_small_dither="no"])
1497 ## Alternate Line dither mask instead of big one (lower quality - but fastest)
1498 EVAS_CHECK_DITHER([line-dither-mask], [line dither mask], [conv_line_dither="yes"], [conv_line_dither="no"])
1499 ## No dither mask at all for 16bpp
1500 EVAS_CHECK_DITHER([no-dither-mask], [conversion to 16bpp without dither mask], [conv_no_dither="yes"], [conv_no_dither="no"])
1501
1502 #######################################
1503 ## Convert to 8bpp RGB 332
1504 EVAS_CONVERT_COLOR(8, RGB, 332, [yes])
1505 ## Convert to 8bpp RGB 666
1506 EVAS_CONVERT_COLOR(8, RGB, 666, [yes])
1507 ## Convert to 8bpp RGB 232
1508 EVAS_CONVERT_COLOR(8, RGB, 232, [yes])
1509 ## Convert to 8bpp RGB 222
1510 EVAS_CONVERT_COLOR(8, RGB, 222, [yes])
1511 ## Convert to 8bpp RGB 221
1512 EVAS_CONVERT_COLOR(8, RGB, 221, [yes])
1513 ## Convert to 8bpp RGB 121
1514 EVAS_CONVERT_COLOR(8, RGB, 121, [yes])
1515 ## Convert to 8bpp RGB 111
1516 EVAS_CONVERT_COLOR(8, RGB, 111, [yes])
1517 ## Convert to 16bpp RGB 565
1518 EVAS_CONVERT_COLOR(16, RGB, 565)
1519 ## Convert to 16bpp BGR 565
1520 EVAS_CONVERT_COLOR(16, BGR, 565)
1521 ## Convert to 16bpp RGB 555
1522 EVAS_CONVERT_COLOR(16, RGB, 555)
1523 ## Convert to 16bpp RGB 444
1524 EVAS_CONVERT_COLOR(16, RGB, 444)
1525
1526 #######################################
1527 ## Convert to 16bpp RGB 565 (444 ipaq)
1528 conv_16_rgb_ipq="yes"
1529 AC_MSG_CHECKING(whether to build 16bpp 565 (444 ipaq) converter code)
1530 AC_ARG_ENABLE(convert-16-rgb-ipq,
1531   AC_HELP_STRING([--disable-convert-16-rgb-ipq], [disable 16bpp 565 (444 ipaq) converter code]),
1532   [
1533       if test "x$enableval" = "xyes" ; then
1534         AC_DEFINE(BUILD_CONVERT_16_RGB_454645, 1, [16bpp 565 (444 ipaq) Converter Support])
1535         conv_16_rgb_ipq="yes"
1536       else
1537         conv_16_rgb_ipq="no"
1538       fi
1539   ], [
1540       if test "x$conv_16_rgb_ipq" = "xyes" ; then
1541         AC_DEFINE(BUILD_CONVERT_16_RGB_454645, 1, [16bpp 565 (444 ipaq) Converter Support])
1542       fi
1543   ]
1544 )
1545 AC_MSG_RESULT($conv_16_rgb_ipq)
1546
1547 #######################################
1548 ## Convert to 16bpp RGB with rotation of 0
1549 EVAS_CONVERT_ROT(16, RGB, 0)
1550 ## Convert to 16bpp RGB with rotation of 180
1551 EVAS_CONVERT_ROT(16, RGB, 180)
1552 ## Convert to 16bpp RGB with rotation of 270
1553 EVAS_CONVERT_ROT(16, RGB, 270)
1554 ## Convert to 16bpp RGB with rotation of 90
1555 EVAS_CONVERT_ROT(16, RGB, 90)
1556
1557 #######################################
1558 ## Convert to 24bpp RGB 888
1559 EVAS_CONVERT_COLOR(24, RGB, 888)
1560 ## Convert to 24bpp BGR 888
1561 EVAS_CONVERT_COLOR(24, BGR, 888)
1562 ## Convert to 32bpp RGB 8888
1563 EVAS_CONVERT_COLOR(32, RGB, 8888)
1564 ## Convert to 32bpp RGBX 8888
1565 EVAS_CONVERT_COLOR(32, RGBX, 8888)
1566 ## Convert to 32bpp BGR 8888
1567 EVAS_CONVERT_COLOR(32, BGR, 8888)
1568 ## Convert to 32bpp BGRX 8888
1569 EVAS_CONVERT_COLOR(32, BGRX, 8888)
1570
1571 #######################################
1572 ## Convert to 24bpp RGB 666 (666 ezx)
1573 conv_24_rgb_ezx="yes"
1574 AC_MSG_CHECKING(whether to build 24bpp 666 (666 ezx) converter code)
1575 AC_ARG_ENABLE(convert-24-rgb-ezx,
1576   AC_HELP_STRING([--disable-convert-24-rgb-ezx], [disable 24bpp 666 (666 ezx) converter code]),
1577   [
1578       if test "x$enableval" = "xyes" ; then
1579         AC_DEFINE(BUILD_CONVERT_24_RGB_666, 1, [24bpp 666 (666 ezx) Converter Support])
1580         conv_24_rgb_ezx="yes"
1581       else
1582         conv_24_rgb_ezx="no"
1583       fi
1584   ], [
1585       if test "x$conv_24_rgb_ezx" = "xyes" ; then
1586         AC_DEFINE(BUILD_CONVERT_24_RGB_666, 1, [24bpp 666 (666 ezx) Converter Support])
1587       fi
1588   ]
1589 )
1590 AC_MSG_RESULT($conv_24_rgb_ezx)
1591
1592 #######################################
1593 ## Convert to 32bpp RGB 666 (666 ezx)
1594 conv_32_rgb_ezx="yes"
1595 AC_MSG_CHECKING(whether to build 32bpp 666 (666 ezx) converter code)
1596 AC_ARG_ENABLE(convert-32-rgb-ezx,
1597   AC_HELP_STRING([--disable-convert-32-rgb-ezx], [disable 32bpp 666 (666 ezx) converter code]),
1598   [
1599       if test "x$enableval" = "xyes" ; then
1600         AC_DEFINE(BUILD_CONVERT_32_RGB_666, 1, [32bpp 666 (666 ezx) Converter Support])
1601         conv_32_rgb_ezx="yes"
1602       else
1603         conv_32_rgb_ezx="no"
1604       fi
1605   ], [
1606       if test "x$conv_32_rgb_ezx" = "xyes" ; then
1607         AC_DEFINE(BUILD_CONVERT_32_RGB_666, 1, [32bpp 666 (666 ezx) Converter Support])
1608       fi
1609   ]
1610 )
1611 AC_MSG_RESULT($conv_32_rgb_ezx)
1612
1613 #######################################
1614 ## Convert to 32bpp RGB with rotation of 0
1615 EVAS_CONVERT_ROT(32, RGB, 0)
1616 ## Convert to 32bpp RGB with rotation of 180
1617 EVAS_CONVERT_ROT(32, RGB, 180)
1618 ## Convert to 32bpp RGB with rotation of 270
1619 EVAS_CONVERT_ROT(32, RGB, 270)
1620 ## Convert to 32bpp RGB with rotation of 90
1621 EVAS_CONVERT_ROT(32, RGB, 90)
1622
1623 #######################################
1624 ## Convert to 8bpp grayscale with 256 value, no palette
1625 EVAS_CONVERT_COLOR(8, GRY, 1)
1626 ## Convert to 8bpp grayscale with 16 value, no palette
1627 EVAS_CONVERT_COLOR(8, GRY, 16)
1628
1629 #######################################
1630 ## Convert to 8bpp grayscale, 64-palette
1631 conv_8_grayscale_64="yes"
1632 AC_MSG_CHECKING(whether to build 8bpp grayscale 64-palette converter code)
1633 AC_ARG_ENABLE(convert-8-grayscale-64,
1634   AC_HELP_STRING([--disable-convert-8-grayscale-64], [disable 8bpp grayscale 64-palette converter code]),
1635   [
1636      if test "x$enableval" = "xyes"; then
1637        AC_DEFINE(BUILD_CONVERT_8_GRAYSCALE_64, 1, [8bpp Grayscale 64-palette Converter Support])
1638        conv_8_grayscale_64="yes"
1639      else
1640        conv_8_grayscale_64="no"
1641      fi
1642   ], [
1643      if test "x$conv_8_grayscale_64" = "xyes"; then
1644        AC_DEFINE(BUILD_CONVERT_8_GRAYSCALE_64, 1, [32bpp Grayscale 64-palette Converter Support])
1645      fi
1646   ]
1647 )
1648 AC_MSG_RESULT($conv_8_grayscale_64)
1649
1650 ## valgrind
1651 want_valgrind="no"
1652 have_valgrind="no"
1653
1654 AC_MSG_CHECKING(whether to enable build with valgrind)
1655 AC_ARG_ENABLE(valgrind,
1656   AC_HELP_STRING([--enable-valgrind], [enable valgrind fixes to stop false reports]),
1657   [ want_valgrind=$enableval ]
1658 )
1659 AC_MSG_RESULT($want_valgrind)
1660
1661 if test x$want_valgrind = "xyes"; then
1662   PKG_CHECK_MODULES(VALGRIND, valgrind >= 2.4.0,
1663     [
1664       AC_DEFINE(HAVE_VALGRIND, 1, [Valgrind support])
1665       have_valgrind=yes
1666       requirement_evas="valgrind ${requirement_evas}"
1667     ],
1668     [
1669       if test "x$want_valgrind" = "xyes" -a "x$use_strict" = "xyes" ; then
1670         AC_MSG_ERROR([Valgrind not found (strict dependencies checking)])
1671       fi
1672     ]
1673   )
1674 fi
1675
1676 ## Examples
1677
1678 install_examples="yes"
1679 AC_ARG_ENABLE([install-examples],
1680    AC_HELP_STRING([--disable-install-examples],
1681                   [disable installing examples (compiled or just source).
1682                    @<:@default==enabled@:>@]),
1683    [
1684     if test "x${enableval}" = "xyes" ; then
1685        install_examples="yes"
1686     else
1687        install_examples="no"
1688     fi
1689    ],
1690    [install_examples="yes"])
1691 AM_CONDITIONAL([INSTALL_EXAMPLES], [test "x${install_examples}" = "xyes"])
1692
1693 build_examples="no"
1694 AC_ARG_ENABLE([build-examples],
1695    AC_HELP_STRING([--enable-build-examples],
1696                   [enable building examples (this requires extra denpendencies. if you don't have them installed yet, don't build with this option or it will fail. build again when you have it, overriding the previous installation). @<:@default==disabled@:>@]),
1697    [
1698     if test "x${enableval}" = "xyes" ; then
1699        build_examples="yes"
1700        # put in here the dependencies for Evas' examples. they are
1701        # meant to be 'real world' usage examples, thus one will be
1702        # using higher level libraries on these programs
1703        PKG_CHECK_MODULES([ECORE_EVAS], [ecore-evas ecore], [], [build_examples="no"])
1704        PKG_CHECK_MODULES([EDJE], [edje],
1705         [edje_cc=$($PKG_CONFIG --variable=prefix edje)/bin/edje_cc],
1706         [build_examples="no"])
1707        AC_SUBST(edje_cc)
1708     else
1709        build_examples="no"
1710     fi
1711    ],
1712    [build_examples="no"])
1713 AM_CONDITIONAL([BUILD_EXAMPLES], [test "x${build_examples}" = "xyes"])
1714
1715 ## Unit tests, coverage
1716
1717 EFL_CHECK_TESTS([enable_tests="yes"], [enable_tests="no"])
1718
1719 EFL_CHECK_COVERAGE([${enable_tests}], [enable_coverage="yes"], [enable_coverage="no"])
1720 EVAS_CFLAGS="${EVAS_CFLAGS} ${EFL_COVERAGE_CFLAGS}"
1721 EVAS_LIBS="${EVAS_LIBS} ${EFL_COVERAGE_LIBS}"
1722 if test "x$enable_coverage" = "xyes" ; then
1723    EVAS_CFLAGS="${EVAS_CFLAGS} ${EFL_DEBUG_CFLAGS}"
1724 fi
1725
1726 AC_SUBST(EVAS_CFLAGS)
1727 AC_SUBST(EVAS_LIBS)
1728
1729 #####################################################################
1730 ## Fill in flags
1731
1732 AC_SUBST(altivec_cflags)
1733 AC_SUBST(pthread_cflags)
1734 AC_SUBST(pthread_libs)
1735 AC_SUBST(requirement_evas)
1736
1737
1738 #####################################################################
1739 ## Output
1740
1741 AC_OUTPUT([
1742 Makefile
1743 evas-directfb.pc
1744 evas-fb.pc
1745 evas-opengl-x11.pc
1746 evas-opengl-sdl.pc
1747 evas-software-buffer.pc
1748 evas-software-x11.pc
1749 evas-software-8-x11.pc
1750 evas-software-16-x11.pc
1751 evas-software-gdi.pc
1752 evas-software-ddraw.pc
1753 evas-software-16-ddraw.pc
1754 evas-direct3d.pc
1755 evas-software-16-wince.pc
1756 evas-software-sdl.pc
1757 evas.pc
1758 doc/evas.dox
1759 doc/Makefile
1760 doc/Doxyfile
1761 src/Makefile
1762 src/bin/Makefile
1763 src/lib/Makefile
1764 src/lib/canvas/Makefile
1765 src/lib/file/Makefile
1766 src/lib/cache/Makefile
1767 src/lib/cserve/Makefile
1768 src/lib/engines/Makefile
1769 src/lib/engines/common/Makefile
1770 src/lib/engines/common/evas_op_add/Makefile
1771 src/lib/engines/common/evas_op_blend/Makefile
1772 src/lib/engines/common/evas_op_copy/Makefile
1773 src/lib/engines/common/evas_op_mask/Makefile
1774 src/lib/engines/common/evas_op_mul/Makefile
1775 src/lib/engines/common/evas_op_sub/Makefile
1776 src/lib/engines/common_8/Makefile
1777 src/lib/engines/common_16/Makefile
1778 src/modules/Makefile
1779 src/modules/engines/Makefile
1780 src/modules/engines/software_generic/Makefile
1781 src/modules/engines/software_gdi/Makefile
1782 src/modules/engines/software_ddraw/Makefile
1783 src/modules/engines/direct3d/Makefile
1784 src/modules/engines/software_16_wince/Makefile
1785 src/modules/engines/software_x11/Makefile
1786 src/modules/engines/fb/Makefile
1787 src/modules/engines/buffer/Makefile
1788 src/modules/engines/directfb/Makefile
1789 src/modules/engines/gl_common/Makefile
1790 src/modules/engines/gl_x11/Makefile
1791 src/modules/engines/gl_sdl/Makefile
1792 src/modules/engines/software_sdl/Makefile
1793 src/modules/engines/software_8/Makefile
1794 src/modules/engines/software_8_x11/Makefile
1795 src/modules/engines/software_16/Makefile
1796 src/modules/engines/software_16_x11/Makefile
1797 src/modules/engines/software_16_ddraw/Makefile
1798 src/modules/engines/software_16_sdl/Makefile
1799 src/modules/loaders/Makefile
1800 src/modules/loaders/edb/Makefile
1801 src/modules/loaders/eet/Makefile
1802 src/modules/loaders/gif/Makefile
1803 src/modules/loaders/jpeg/Makefile
1804 src/modules/loaders/png/Makefile
1805 src/modules/loaders/tiff/Makefile
1806 src/modules/loaders/xpm/Makefile
1807 src/modules/loaders/bmp/Makefile
1808 src/modules/loaders/ico/Makefile
1809 src/modules/loaders/tga/Makefile
1810 src/modules/loaders/svg/Makefile
1811 src/modules/loaders/pmaps/Makefile
1812 src/modules/loaders/wbmp/Makefile
1813 src/modules/loaders/psd/Makefile
1814 src/modules/loaders/generic/Makefile
1815 src/modules/savers/Makefile
1816 src/modules/savers/edb/Makefile
1817 src/modules/savers/eet/Makefile
1818 src/modules/savers/jpeg/Makefile
1819 src/modules/savers/png/Makefile
1820 src/modules/savers/tiff/Makefile
1821 src/static_deps/Makefile
1822 src/static_deps/liblinebreak/Makefile
1823 src/lib/include/Makefile
1824 src/examples/Makefile
1825 src/tests/Makefile
1826 README
1827 evas.spec
1828 ])
1829
1830 #####################################################################
1831 ## Sanity Checks
1832
1833 if test "x$build_pthreads" = "xno" ; then
1834   if test "x$build_async_render" = "xyes" ; then
1835     echo "ERROR: PThreads off, but async rendering on. Async rendering"
1836     echo "  needs thread support."
1837     exit 1
1838   fi
1839   if test "x$build_pipe_render" = "xyes" ; then
1840     echo "ERROR: PThreads off, but pipe rendering on. Pipe rendering"
1841     echo "  needs thread support."
1842     exit 1
1843   fi
1844 fi
1845
1846 if test "x${has_pthreads}" = "xno" ; then
1847   if test "x$build_async_preload" = "xyes" ; then
1848     echo "ERROR: PThreads off, but Async Preload on. Async Preload"
1849     echo "  needs thread support."
1850     exit 1
1851   fi
1852 fi
1853
1854 #####################################################################
1855 ## Info
1856
1857 echo
1858 echo
1859 echo
1860 echo "------------------------------------------------------------------------"
1861 echo "$PACKAGE $VERSION"
1862 echo "------------------------------------------------------------------------"
1863 echo
1864 echo "Configuration Options Summary:"
1865 echo
1866 echo "Engines:"
1867 echo "  Software Memory Buffer.....: $have_evas_engine_buffer"
1868 echo "  Software X11...............: $have_evas_engine_software_x11 (Xlib: $have_evas_engine_software_xlib) (XCB: $have_evas_engine_software_xcb)"
1869 echo $ECHO_N "  OpenGL X11.................: $have_evas_engine_gl_x11 (Xlib: $have_evas_engine_gl_xlib) (XCB: $have_evas_engine_gl_xcb) $ECHO_C"
1870 if test "x$have_evas_engine_gl_x11" = "xyes"; then
1871   echo "(GLES: $gl_flavor_gles) (SGX: $gles_variety_sgx) (s3c6410: $gles_variety_s3c6410)"
1872 else
1873   echo
1874 fi
1875 echo "  Software GDI...............: $have_evas_engine_software_gdi"
1876 echo "  Software DirectDraw........: $have_evas_engine_software_ddraw"
1877 echo "  Direct3d...................: $have_evas_engine_direct3d"
1878 echo "  Software SDL...............: $have_evas_engine_software_sdl (primitive: $sdl_primitive)"
1879 echo $ECHO_N "  OpenGL SDL.................: $have_evas_engine_gl_sdl $ECHO_C"
1880 if test "x$have_evas_engine_gl_sdl" = "xyes"; then
1881   echo "(GLES: $gl_flavor_gles) (SGX: $gles_variety_sgx) (s3c6410: $gles_variety_s3c6410)"
1882 else
1883   echo
1884 fi
1885 echo "  Software Framebuffer.......: $have_evas_engine_fb"
1886 echo "  DirectFB...................: $have_evas_engine_directfb"
1887 echo "  Software 8bit grayscale....: $have_evas_engine_software_8"
1888 # FIXME: kill software 16bit
1889 echo "  Software 16bit ............: $have_evas_engine_software_16"
1890 echo "  Software 16bit X11.........: $have_evas_engine_software_16_x11"
1891 echo "  Software 16bit Directdraw..: $have_evas_engine_software_16_ddraw"
1892 echo "  Software 16bit WinCE.......: $have_evas_engine_software_16_wince"
1893 echo "  Software 16bit SDL.........: $have_evas_engine_software_16_sdl (primitive: $sdl_primitive)"
1894 echo
1895 echo "Image Loaders:"
1896 echo "  BMP.....................: $have_evas_image_loader_bmp"
1897 echo "  EDB.....................: $have_evas_image_loader_edb"
1898 echo "  EET.....................: $have_evas_image_loader_eet"
1899 echo "  GENERIC.................: $have_evas_image_loader_generic"
1900 echo "  GIF.....................: $have_evas_image_loader_gif"
1901 echo "  ICO.....................: $have_evas_image_loader_ico"
1902 echo "  JPEG....................: $have_evas_image_loader_jpeg (region: $have_jpeg_region)"
1903 echo "  PMAPS...................: $have_evas_image_loader_pmaps"
1904 echo "  PNG.....................: $have_evas_image_loader_png"
1905 echo "  PSD.....................: $have_evas_image_loader_psd"
1906 echo "  SVG.....................: $have_evas_image_loader_svg"
1907 echo "  TGA.....................: $have_evas_image_loader_tga"
1908 echo "  TIFF....................: $have_evas_image_loader_tiff"
1909 echo "  WBMP....................: $have_evas_image_loader_wbmp"
1910 echo "  XPM.....................: $have_evas_image_loader_xpm"
1911 echo
1912 echo "Font Sourcing Systems:"
1913 echo "  EET.....................: $have_evas_font_loader_eet"
1914 echo
1915 echo "Font Searching Systems:"
1916 echo "  Fontconfig..............: $have_fontconfig"
1917 echo
1918 echo "Font Rendering Helpers:"
1919 echo "  Fribidi.................: $have_fribidi"
1920 echo "  Harfbuzz................: $have_harfbuzz"
1921 echo "  liblinebreak............: $have_linebreak"
1922 # FIXME: add non freetype2 font engine support
1923 # FIXME: make freetype2 optional
1924 echo
1925 echo "CPU Specific Extensions:"
1926 echo "  Fallback C Code.........: $build_cpu_c"
1927 echo "  MMX.....................: $build_cpu_mmx"
1928 echo "  SSE.....................: $build_cpu_sse"
1929 echo "  SSE3....................: $build_cpu_sse3"
1930 echo "  ALTIVEC.................: $build_cpu_altivec"
1931 echo "  NEON....................: $build_cpu_neon"
1932 echo "  Thread Support..........: $build_pthreads"
1933 echo
1934 echo "Features:"
1935 echo "  MAGIC_DEBUG.............: $want_evas_magic_debug"
1936 echo "  Cache Server............: $want_evas_cserve"
1937 echo
1938 dnl
1939 dnl ... DISABLED! some testing has shown that this seems to have some
1940 dnl nasty bugs on both x86 and arm (tegra2 dual core tested), so just
1941 dnl disabling this for now until it can be fixed
1942 dnl 
1943 echo "  Threaded Pipe Rendering.: $build_pipe_render"
1944 echo "  Async Pipe Rendering....: $build_async_render"
1945 echo "  Async Events............: $build_async_events"
1946 echo "  Async Image Preload.....: $build_async_preload"
1947 echo
1948 echo "  Word Cache..............: $want_word_cache"
1949 echo "  Metric Cache............: $want_metric_cache"
1950 echo
1951 echo "ARGB Software Engine Options:"
1952 echo "  Sampling Scaler.........: $scaler_sample"
1953 echo "  Smooth Scaler...........: $scaler_smooth"
1954 # FIXME: add an mmx scaler routine
1955 echo "  YUV Converter...........: $conv_yuv"
1956 # FIXME: add more YUV format and colorvariant support
1957 echo
1958 echo "ARGB Conversion Options:"
1959 echo "  Smaller Dither Mask.....: $conv_small_dither"
1960 echo "  Line Dither Mask........: $conv_line_dither"
1961 echo "  No Dither Mask for 16bpp: $conv_no_dither"
1962 echo "  8bpp RGB 332............: $conv_8_rgb_332"
1963 echo "  8bpp RGB 666............: $conv_8_rgb_666"
1964 echo "  8bpp RGB 232............: $conv_8_rgb_232"
1965 echo "  8bpp RGB 222............: $conv_8_rgb_222"
1966 echo "  8bpp RGB 221............: $conv_8_rgb_221"
1967 echo "  8bpp RGB 121............: $conv_8_rgb_121"
1968 echo "  8bpp RGB 111............: $conv_8_rgb_111"
1969 echo "  8bpp Grayscale (256)....: $conv_8_gry_1"
1970 echo "  8bpp Grayscale (16).....: $conv_8_gry_16"
1971 echo "  8bpp Grayscale 64-pal...: $conv_8_grayscale_64"
1972 # FIXME: add grayscale and B&W support to standard x converters
1973 echo "  16bpp RGB 565...........: $conv_16_rgb_565"
1974 echo "  16bpp BGR 565...........: $conv_16_bgr_565"
1975 echo "  16bpp RGB 555...........: $conv_16_rgb_555"
1976 echo "  16bpp RGB 444...........: $conv_16_rgb_444"
1977 echo "  16bpp RGB 565 (444 ipaq): $conv_16_rgb_ipq"
1978 # FIXME: add 555 (444 ipaq) support
1979 # FIXME: add 30bpp support
1980 # FIXME: add palletted support (ugh!)
1981 # FIXME: add 8bpp and below rotation
1982 echo "  16bpp Rotation 0........: $conv_16_rgb_rot_0"
1983 echo "  16bpp Rotation 90.......: $conv_16_rgb_rot_90"
1984 echo "  16bpp Rotation 180......: $conv_16_rgb_rot_180"
1985 echo "  16bpp Rotation 270......: $conv_16_rgb_rot_270"
1986 echo "  24bpp RGB 888...........: $conv_24_rgb_888"
1987 echo "  24bpp BGR 888...........: $conv_24_bgr_888"
1988 echo "  24bpp RGB 666 (666 ezx).: $conv_24_rgb_ezx"
1989 # FIXME: add 24bpp rotation
1990 echo "  32bpp RGB 8888..........: $conv_32_rgb_8888"
1991 echo "  32bpp RGBX 8888.........: $conv_32_rgbx_8888"
1992 echo "  32bpp BGR 8888..........: $conv_32_bgr_8888"
1993 echo "  32bpp BGRX 8888.........: $conv_32_bgrx_8888"
1994 echo "  32bpp RGB 666 (666 ezx).: $conv_32_rgb_ezx"
1995 echo "  32bpp Rotation 0........: $conv_32_rgb_rot_0"
1996 echo "  32bpp Rotation 90.......: $conv_32_rgb_rot_90"
1997 echo "  32bpp Rotation 180......: $conv_32_rgb_rot_180"
1998 echo "  32bpp Rotation 270......: $conv_32_rgb_rot_270"
1999 echo
2000 echo "Documentation.............: ${build_doc}"
2001 echo "Examples..................: install:${install_examples} build:${build_examples}"
2002 if test "x${enable_tests}" = "xyes" ; then
2003    echo "Tests.....................: ${enable_tests} (make check)"
2004 else
2005    echo "Tests.....................: ${enable_tests}"
2006 fi
2007 if test "x${enable_coverage}" = "xyes" ; then
2008    echo "Coverage..................: ${enable_coverage} (make coverage)"
2009 else
2010    echo "Coverage..................: ${enable_coverage}"
2011 fi
2012 echo
2013 echo "Compilation............: make (or gmake)"
2014 echo "  CPPFLAGS.............: $CPPFLAGS"
2015 echo "  CFLAGS...............: $CFLAGS"
2016 echo "  CXXFLAGS.............: $CXXFLAGS"
2017 echo "  LDFLAGS..............: $LDFLAGS"
2018 echo
2019 echo "Installation...........: make install (as root if needed, with 'su' or 'sudo')"
2020 echo "  prefix...............: $prefix"
2021 echo
2022 if test "x${have_static_module}" = "xyes" ; then
2023 echo -e "\0033\01331;31mWarning\0033\01331;0m: You are trying to link statically one or more modules to Evas."
2024 echo "         You must know what you are doing, or else you will have a lot of"
2025 echo "         problems. And Kenny will be killed."
2026 echo "         Think about that."
2027 echo
2028 fi