evas: add common SSE3 blending functions/macro
[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 EFL_ATTRIBUTE_ALWAYS_INLINE
444
445 WIN32_CPPFLAGS=""
446 case "$host_os" in
447    mingw32ce*)
448       WIN32_CPPFLAGS="-D_WIN32_WCE=0x0420"
449       ;;
450    mingw*)
451       WIN32_CPPFLAGS="-D_WIN32_WINNT=0x0500"
452       ;;
453 esac
454 AC_SUBST(WIN32_CPPFLAGS)
455
456 WIN32_CFLAGS=""
457 AC_SUBST(WIN32_CFLAGS)
458
459
460 ### Checks for linker characteristics
461 lt_enable_auto_import=""
462 case "${host_os}" in
463    mingw*)
464       AC_DEFINE(EFL_EVAS_BUILD, 1, [Define to mention that evas is built])
465       lt_enable_auto_import="-Wl,--enable-auto-import"
466    ;;
467 esac
468 AC_SUBST(lt_enable_auto_import)
469
470
471 ### Checks for library functions
472
473 AC_ISC_POSIX
474 AC_CHECK_FUNCS([siglongjmp])
475
476 # alloca
477 AC_FUNC_ALLOCA
478
479 # fnmatch
480 EFL_CHECK_FNMATCH([], [AC_MSG_ERROR([Cannot find fnmatch()])])
481
482 # dlopen
483 dlopen_libs=""
484 case "$host_os" in
485   mingw32ce*)
486 # managed by evil
487     AC_DEFINE(HAVE_DLADDR)
488   ;;
489   mingw*)
490 # nothing on mingw platform
491   ;;
492   *)
493     AC_CHECK_FUNCS(dlopen, res=yes, res=no)
494     if test "x$res" = "xyes"; then
495       AC_CHECK_FUNCS(dladdr, AC_DEFINE(HAVE_DLADDR))
496     else
497       AC_CHECK_LIB(dl, dlopen, res=yes, res=no)
498       if test "x$res" = "xyes"; then
499         AC_CHECK_LIB(dl, dladdr, AC_DEFINE(HAVE_DLADDR))
500         dlopen_libs=-ldl
501       else
502         AC_MSG_ERROR(Cannot find dlopen)
503       fi
504     fi
505 esac
506 AC_SUBST(dlopen_libs)
507
508 SHM_OPEN_LINK=""
509 AC_MSG_CHECKING([whether shm_open() is present])
510 LIBS_save=${LIBS}
511 LIBS="${LIBS} -lrt"
512 AC_LINK_IFELSE(
513    [AC_LANG_PROGRAM(
514       [[
515 #include <sys/stat.h>
516 #include <sys/mman.h>
517 #include <fcntl.h>
518       ]],
519       [[
520 int fd;
521 fd = shm_open("/", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
522 shm_unlink("/");
523       ]])],
524    [
525     have_shm_open="yes"
526     AC_DEFINE(HAVE_SHM_OPEN, 1, [Have shm_open() call])
527     SHM_OPEN_LINK="-lrt"
528    ],
529    [have_shm_open="no"])
530 LIBS=${LIBS_save}
531 AC_MSG_RESULT([${have_shm_open}])
532 AC_SUBST(SHM_OPEN_LINK)
533
534 # (shm_open (for cache server)
535 AC_ARG_ENABLE([evas-cserve],
536    AC_HELP_STRING([--disable-evas-cserve],
537       [disable shared cache server support. @<:@default=enabled@:>@]),
538    [
539     if test "x${enableval}" = "xyes" ; then
540        want_evas_cserve="yes"
541     else
542        want_evas_cserve="no"
543     fi
544    ])
545 AC_MSG_CHECKING(whether to build shared cache server and support)
546 AC_MSG_RESULT(${want_evas_cserve})
547
548 if test "x${want_evas_cserve}" = "xyes" ; then
549    AC_MSG_CHECKING([whether shm_open() is present])
550    LIBS_save=${LIBS}
551    LIBS="${LIBS} -lrt"
552    AC_LINK_IFELSE(
553       [AC_LANG_PROGRAM(
554          [[
555 #include <sys/types.h>
556 #include <sys/mman.h>
557 #include <fcntl.h>
558          ]],
559          [[
560 int fd;
561 fd = shm_open("/", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
562 shm_unlink("/");
563          ]])],
564       [want_evas_cserve="yes"],
565       [want_evas_cserve="no"])
566    LIBS=${LIBS_save}
567    AC_MSG_RESULT([${want_evas_cserve}])
568 fi
569
570 if test "x${want_evas_cserve}" = "xyes" ; then
571   AC_DEFINE(EVAS_CSERVE, 1, [Shared caceh server.])
572 fi
573
574 AM_CONDITIONAL([EVAS_CSERVE], [test "x${want_evas_cserve}" = "xyes"])
575
576
577
578 #######################################
579 ## GL force flavor gles
580 gl_flavor_gles="no"
581 AC_MSG_CHECKING(whether to build GLES flavor of GL)
582 AC_ARG_ENABLE(gl-flavor-gles,
583   AC_HELP_STRING([--enable-gl-flavor-gles], [enable gles falvor of gl instead of standard]),
584   [
585       if test "x$enableval" = "xyes" ; then
586         AC_MSG_RESULT(yes)
587         gl_flavor_gles="yes"
588       else
589         AC_MSG_RESULT(no)
590         gl_flavor_gles="no"
591       fi
592   ], [
593       AC_MSG_RESULT(no)
594       gl_flavor_gles="no"
595   ]
596 )
597
598 #######################################
599 ## GLES variety sgx
600 gles_variety_sgx="no"
601 AC_MSG_CHECKING(whether to build GLES variety for SGX)
602 AC_ARG_ENABLE(gles-variety-sgx,
603   AC_HELP_STRING([--enable-gles-variety-sgx], [GLES variety SGX 3D unit]),
604   [
605       if test "x$enableval" = "xyes" ; then
606         AC_MSG_RESULT(yes)
607         AC_DEFINE(GLES_VARIETY_SGX, 1, [Imagination SGX GLES2 support])
608         gles_variety_sgx="yes"
609       else
610         AC_MSG_RESULT(no)
611         gles_variety_sgx="no"
612       fi
613   ], [
614       AC_MSG_RESULT(no)
615       gles_variety_sgx="no"
616   ]
617 )
618
619 #######################################
620 ## GLES variety s3c6410
621 gles_variety_s3c6410="no"
622 AC_MSG_CHECKING(whether to build GLES variety for s3c6410)
623 AC_ARG_ENABLE(gles-variety-s3c6410,
624   AC_HELP_STRING([--enable-gles-variety-s3c6410], [GLES variety s3c6410 3D unit]),
625   [
626       if test "x$enableval" = "xyes" ; then
627         AC_MSG_RESULT(yes)
628         AC_DEFINE(GLES_VARIETY_S3C6410, 1, [Samsung S3c6410 GLES2 support])
629         gles_variety_s3c6410="yes"
630       else
631         AC_MSG_RESULT(no)
632         gles_variety_s3c6410="no"
633       fi
634   ], [
635       AC_MSG_RESULT(no)
636       gles_variety_s3c6410="no"
637   ]
638 )
639
640 if test "x$gl_flavor_gles" = "xyes"; then
641   eng=""
642   if test "x$gles_variety_sgx" = "xyes"; then eng="x"$eng; fi
643   if test "x$gles_variety_s3c6410" = "xyes"; then eng="x"$eng; fi
644   if test "x$eng" = "xx"; then
645     eng=""
646   else
647      AC_MSG_ERROR(
648        [Please enable just 1 OpenGL-ES flavor. Choices are:
649           --enable-gles-variety-sgx (Most GL-ES2 GPUs with shader compiler)
650           --enable-gles-variety-s3c6410 (s3c6410 with offline shader compiler)
651         You will also need to enable the OpenGL engine for X11 with:
652           --enable-gl-xlib or --enable-gl-xcb
653        ])
654   fi
655 fi
656
657 #####################################################################
658 ## Engines
659
660 EVAS_CHECK_ENGINE([buffer], [${want_evas_engine_buffer}], [yes], [Buffer])
661
662 EVAS_CHECK_ENGINE([software-gdi], [${want_evas_engine_software_gdi}], [no], [Software GDI])
663
664 EVAS_CHECK_ENGINE([software-ddraw], [${want_evas_engine_software_ddraw}], [no], [Software DirectDraw])
665
666 EVAS_CHECK_ENGINE([direct3d], [${want_evas_engine_direct3d}], [no], [Direct3D])
667
668 EVAS_CHECK_ENGINE([software-sdl], [${want_evas_engine_software_sdl}], [no], [Software SDL])
669
670 EVAS_CHECK_ENGINE([gl-sdl], [${want_evas_engine_gl_sdl}], [no], [OpenGL SDL])
671
672 EVAS_CHECK_ENGINE([fb], [${want_evas_engine_fb}], [no], [Framebuffer])
673
674 EVAS_CHECK_ENGINE([directfb], [${want_evas_engine_directfb}], [no], [DirectFB])
675
676 EVAS_CHECK_ENGINE([software-8-x11], [${want_evas_engine_software_8_x11}], [no], [Software X11 8 bits grayscale])
677
678 EVAS_CHECK_ENGINE([software-16-x11], [${want_evas_engine_software_16_x11}], [no], [Software X11 16 bits])
679
680 EVAS_CHECK_ENGINE([software-16-ddraw], [${want_evas_engine_software_16_ddraw}], [no], [Software DirectDraw 16 bits])
681
682 EVAS_CHECK_ENGINE([software-16-wince], [${want_evas_engine_software_16_wince}], [no], [Software Windows CE 16 bits])
683
684 EVAS_CHECK_ENGINE([software-16-sdl], [${want_evas_engine_software_16_sdl}], [no], [Software SDL 16 bits])
685
686 # SDL primitive
687 sdl_primitive="no"
688
689 AC_ARG_ENABLE([sdl-primitive],
690    [AC_HELP_STRING([--enable-sdl-primitive], [])],
691    [sdl_primitive=${enableval}]
692 )
693 AC_MSG_CHECKING([whether to use SDL primitive when possible])
694 AC_MSG_RESULT([${sdl_primitive}])
695
696 if test "x${sdl_primitive}" = "xyes" ; then
697    AC_DEFINE([ENGINE_SDL_PRIMITIVE], [1], [Use SDL primitive when possible])
698 fi
699
700 # if software generic need to be build as part of libevas.so
701 have_static_software_generic="no"
702 AC_ARG_ENABLE([static-software-generic],
703    [AC_HELP_STRING([--enable-static-software-generic], [Build software generic engine as part of libevas])],
704    [have_static_software_generic=${enableval}]
705 )
706 AC_MSG_CHECKING([Whether to build software generic engine as part of libevas])
707 AC_MSG_RESULT([${have_static_software_generic}])
708
709 if test "x${have_static_module}" = "xyes" -a "x${have_static_software_generic}" = "xno"; then
710    AC_MSG_WARN([Forcing --enable-static-software-generic as engines must be compiled statically])
711    have_static_software_generic="yes"
712 fi
713
714 AM_CONDITIONAL(EVAS_STATIC_BUILD_SOFTWARE_GENERIC, test "x${have_static_software_generic}" = "xyes")
715 if test "x${have_static_software_generic}" = "xyes"; then
716    AC_DEFINE(EVAS_STATIC_BUILD_SOFTWARE_GENERIC, [1], [Build software generic engine as part of libevas])
717 fi
718
719
720 ######## Software Engine ########
721 have_evas_engine_software_x11="no"
722 have_evas_engine_software_xcb="no"
723 have_evas_engine_software_xlib="no"
724 build_software_xcb=
725
726 ## XCB Checks ##
727 want_xcb="no"
728 AC_MSG_CHECKING(whether to build Software XCB Engine)
729 AC_ARG_ENABLE(software-xcb,
730   AC_HELP_STRING([--enable-software-xcb], [enable Software XCB Engine. @<:@default=disabled@:>@]), [want_xcb=$enableval]
731 )
732 if test "x$want_xcb" != "xno" ; then
733   EVAS_CHECK_ENGINE([software-xcb], [${want_evas_engine_software_xcb}], [no], [Software XCB])
734   if test "x$have_evas_engine_software_xcb" != "xno" ; then
735     build_software_xcb="yes"
736     have_evas_engine_software_x11="yes"
737     AC_DEFINE_UNQUOTED(BUILD_ENGINE_SOFTWARE_X11, [1], [Build software X11 engine])
738     AC_DEFINE_UNQUOTED(BUILD_ENGINE_SOFTWARE_XCB, [1], [Build software XCB backend])
739   fi
740 else
741   AC_MSG_RESULT(no)
742   build_software_xcb="no"
743 fi
744
745 ## If we are not building XCB, then we can build XLib ##
746
747 if test "x$build_software_xcb" = "xno" ; then
748   EVAS_CHECK_ENGINE([software-xlib], [${want_evas_engine_software_xlib}], [no], [Software Xlib])
749   # if software_x11 is available, define everything needed for X11
750   if test "x$have_evas_engine_software_xlib" != "xno" ; then
751     have_evas_engine_software_x11="yes"
752     AC_DEFINE_UNQUOTED(BUILD_ENGINE_SOFTWARE_X11, [1], [Build software X11 engine])
753     AC_DEFINE_UNQUOTED(BUILD_ENGINE_SOFTWARE_XLIB, [1], [Build software Xlib backend])
754   fi
755 else
756   have_evas_engine_software_xlib="no"
757 fi
758
759 if test "x$have_evas_engine_software_xlib" = "xstatic" -o "x$have_evas_engine_software_xcb" = "xstatic"; then
760    AC_DEFINE_UNQUOTED(EVAS_STATIC_BUILD_SOFTWARE_X11, [1], [Build software X11 engine as part of libevas])
761 fi
762
763 AC_SUBST(have_evas_engine_software_xcb)
764 AC_SUBST(have_evas_engine_software_xlib)
765
766 AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_XLIB], [test "x${have_evas_engine_software_xlib}" != "xno"])
767 AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_XCB], [test "x${have_evas_engine_software_xcb}" != "xno"])
768 AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_X11], [test "x${have_evas_engine_software_x11}" != "xno"])
769
770 AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_X11], [test "x${have_evas_engine_software_xcb}" = "xstatic" -o "x${have_evas_engine_software_xlib}" = "xstatic"])
771 AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_XLIB], [test "x${have_evas_engine_software_xlib}" = "xstatic"])
772 AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_XCB], [test "x${have_evas_engine_software_xcb}" = "xstatic"])
773
774 AC_SUBST(have_evas_engine_software_x11)
775
776
777 ######## OpenGL Engine ########
778 have_evas_engine_gl_x11="no"
779 have_evas_engine_gl_xcb="no"
780 build_gl_xcb="no"
781
782 ## XCB Checks ##
783 want_gl_xcb="no"
784 AC_MSG_CHECKING(whether to build OpenGL XCB Engine)
785 AC_ARG_ENABLE(gl-xcb,
786   AC_HELP_STRING([--enable-gl-xcb], [enable OpenGL XCB Engine. @<:@default=disabled@:>@]), [want_gl_xcb=$enableval]
787 )
788 if test "x$want_gl_xcb" = "xyes" ; then
789   EVAS_CHECK_ENGINE([gl-xcb], [${want_evas_engine_gl_xcb}], [no], [OpenGL XCB])
790   if test "x$have_evas_engine_gl_xcb" != "xno" ; then
791     build_gl_xcb="yes"
792     have_evas_engine_gl_x11="yes"
793    AC_DEFINE(BUILD_ENGINE_GL_X11, [1], [Build GL X11 engine])
794    AC_DEFINE(BUILD_ENGINE_GL_XCB, [1], [Build GL Xcb backend])
795     if test "x$have_evas_engine_gl_xcb" = "xstatic" ; then
796       AC_DEFINE(EVAS_STATIC_BUILD_GL_X11, [1], [Build GL X11 engine as part of libevas])
797     fi
798   fi
799   AC_SUBST(have_evas_engine_gl_xcb)
800 else
801   AC_MSG_RESULT(no)
802   build_gl_xcb="no"
803 fi
804
805 ## If we are not building XCB, then we can build XLib ##
806
807 if test "x$build_gl_xcb" = "xno" ; then
808   EVAS_CHECK_ENGINE([gl-xlib], [${want_evas_engine_gl_xlib}], [no], [OpenGL XLib])
809   if test "x$have_evas_engine_gl_xlib" != "xno" ; then
810     have_evas_engine_gl_x11="yes"
811     AC_DEFINE_UNQUOTED(BUILD_ENGINE_GL_X11, [1], [Build OpenGL X11 engine])
812     AC_DEFINE_UNQUOTED(BUILD_ENGINE_GL_XLIB, [1], [Build OpenGL Xlib backend])
813     if test "x$have_evas_engine_gl_xlib" = "xstatic" ; then
814       AC_DEFINE_UNQUOTED(EVAS_STATIC_BUILD_GL_X11, [1], [Build OpenGL X11 engine as part of libevas])
815     fi
816   fi
817 else
818   have_evas_engine_gl_xlib="no"
819 fi
820 AC_SUBST(have_evas_engine_gl_xlib)
821
822 AM_CONDITIONAL([BUILD_ENGINE_GL_XLIB], [test "x${have_evas_engine_gl_xlib}" != "xno"])
823 AM_CONDITIONAL([BUILD_ENGINE_GL_XCB], [test "x${have_evas_engine_gl_xcb}" != "xno"])
824 AM_CONDITIONAL([BUILD_ENGINE_GL_X11], [test "x${have_evas_engine_gl_x11}" != "xno"])
825
826 AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_X11], [test "x${have_evas_engine_gl_xcb}" = "xstatic" -o "x${have_evas_engine_gl_xlib}" = "xstatic"])
827 AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_XLIB], [test "x${have_evas_engine_gl_xlib}" = "xstatic"])
828 AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_XCB], [test "x${have_evas_engine_gl_xcb}" = "xstatic"])
829
830 AC_SUBST(have_evas_engine_gl_x11)
831
832 # common gl
833 have_evas_engine_gl_common="no"
834 have_static_evas_engine_gl_common="no"
835 if test "x$have_evas_engine_gl_xlib" = "xyes" \
836    || test "x$have_evas_engine_gl_xcb" = "xyes" \
837    || test "x$have_evas_engine_gl_sdl" = "xyes"; then
838    have_evas_engine_gl_common="yes"
839 fi
840 if test "x$have_evas_engine_gl_xlib" = "xstatic" \
841    || test "x$have_evas_engine_gl_xcb" = "xstatic" \
842    || test "x$have_evas_engine_gl_sdl" = "xstatic"; then
843    have_evas_engine_gl_common="yes"
844    have_static_evas_engine_gl_common="yes"
845 fi
846
847 if test "x$have_evas_engine_gl_common" = "xyes"; then
848    evas_engine_gl_common_libs=""
849    AC_DEFINE(BUILD_ENGINE_GL_COMMON, [1], [Generic OpenGL Rendering Support])
850 fi
851
852 AC_SUBST([evas_engine_gl_common_libs])
853
854 AM_CONDITIONAL(BUILD_ENGINE_GL_COMMON, [test "x$have_evas_engine_gl_common" = "xyes"])
855
856 AM_CONDITIONAL(EVAS_STATIC_BUILD_GL_COMMON, test "x${have_static_evas_engine_gl_common}" = "xyes")
857 if test "x${have_static_evas_engine_gl_common}" = "xyes"; then
858    AC_DEFINE(EVAS_STATIC_BUILD_GL_COMMON, [1], [Build GL generic engine as part of libevas])
859 fi
860
861 # gl_sdl
862 if test "x$have_evas_engine_gl_sdl" = "xyes" || test "x$have_evas_engine_gl_sdl" = "xstatic" ; then
863    AC_CHECK_DECL(SDL_GL_CONTEXT_MAJOR_VERSION,
864       [AC_DEFINE(HAVE_SDL_GL_CONTEXT_VERSION, [1], [SDL_GL version attributes present])],,
865       [#include <SDL/SDL_video.h>])
866 fi
867
868 if test "x$gl_flavor_gles" = "xyes"; then
869    AC_CHECK_DECL(SDL_OPENGLES,
870       [AC_DEFINE(HAVE_SDL_FLAG_OPENGLES, [1], [SDL_OPENGLES flag is present])],,
871       [#include <SDL/SDL_video.h>])
872 fi
873
874 # if software 16 x11 is enabled - build software_16 (the generic 16bit
875 # engine). later enable it fb_16 or other "16" bit engines are enabled.
876 have_evas_engine_software_16="no"
877 if test "x$have_evas_engine_software_16_x11" = "xyes" -o "x$have_evas_engine_software_16_x11" = "xstatic"; then
878    have_evas_engine_software_16="yes"
879 fi
880 if test "x$have_evas_engine_software_16_sdl" = "xyes" -o "x$have_evas_engine_software_16_sdl" = "xstatic"; then
881    have_evas_engine_software_16="yes"
882 fi
883 if test "x$have_evas_engine_software_16_ddraw" = "xyes" -o "x$have_evas_engine_software_16_ddraw" = "xstatic"; then
884    have_evas_engine_software_16="yes"
885 fi
886 if test "x$have_evas_engine_software_16_wince" = "xyes" -o "x$have_evas_engine_software_16_wince" = "xstatic"; then
887    have_evas_engine_software_16="yes"
888 fi
889 AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_16, test "x$have_evas_engine_software_16" = "xyes")
890
891 # if software 16 need to be build as part of libevas.so
892 have_static_software_16="no"
893 AC_ARG_ENABLE([static-software-16],
894    [AC_HELP_STRING([--enable-static-software-16], [Build software 16 engine as part of libevas])],
895    [have_static_software_16=${enableval}]
896 )
897 AC_MSG_CHECKING([Whether to build software 16 engine as part of libevas])
898 AC_MSG_RESULT([${have_static_software_16}])
899
900 AM_CONDITIONAL(EVAS_STATIC_BUILD_SOFTWARE_16, test "x${have_static_software_16}" = "xyes")
901 if test "x${have_static_software_16}" = "xyes"; then
902    AC_DEFINE(EVAS_STATIC_BUILD_SOFTWARE_16, [1], [Build software 16 engine as part of libevas])
903 fi
904
905 # if software 8 x11 is enabled - build software_8 (the generic 8bit
906 # engine).
907 have_evas_engine_software_8="no"
908 if test "x$have_evas_engine_software_8_x11" = "xyes" -o "x$have_evas_engine_software_8_x11" = "xstatic"; then
909    have_evas_engine_software_8="yes"
910 fi
911 AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_8, test "x$have_evas_engine_software_8" = "xyes")
912
913 # if software 8 need to be build as part of libevas.so
914 have_static_software_8="no"
915 AC_ARG_ENABLE([static-software-8],
916    [AC_HELP_STRING([--enable-static-software-8], [Build software 8 engine as part of libevas])],
917    [have_static_software_8=${enableval}]
918 )
919 AC_MSG_CHECKING([Whether to build software 8 engine as part of libevas])
920 AC_MSG_RESULT([${have_static_software_8}])
921
922 AM_CONDITIONAL(EVAS_STATIC_BUILD_SOFTWARE_8, test "x${have_static_software_8}" = "xyes")
923 if test "x${have_static_software_8}" = "xyes"; then
924    AC_DEFINE(EVAS_STATIC_BUILD_SOFTWARE_8, [1], [Build software 8 engine as part of libevas])
925 fi
926
927 #####################################################################
928 ## Image loaders
929
930 EVAS_CHECK_IMAGE_LOADER([Edb], [${want_evas_image_loader_edb}])
931
932 EVAS_CHECK_IMAGE_LOADER([Eet], [${want_evas_image_loader_eet}])
933 EVAS_CHECK_FONT_LOADER([${want_evas_font_loader_eet}])
934
935 EVAS_CHECK_IMAGE_LOADER([Gif], [${want_evas_image_loader_gif}])
936
937 have_evas_image_saver_jpeg="no"
938 EVAS_CHECK_IMAGE_LOADER([Jpeg], [${want_evas_image_loader_jpeg}])
939
940 dnl Windows has no sigsetjmp function, nor equivalent.
941 dnl So we disable the jpeg saver.
942 dnl TODO: must find a workaround
943 case "$host_os" in
944    mingw*)
945       ;;
946    *)
947       if test "x${have_evas_image_loader_jpeg}" = "xyes" ; then
948          AC_DEFINE(EVAS_BUILD_SAVER_JPEG, [1], [Build JPEG saver])
949          have_evas_image_saver_jpeg="yes"
950       fi
951       ;;
952 esac
953 AM_CONDITIONAL([BUILD_SAVER_JPEG], [test "x${have_evas_image_saver_jpeg}" = "xyes"])
954
955 EVAS_CHECK_IMAGE_LOADER([PMAPS], [${want_evas_image_loader_pmaps}])
956
957 EVAS_CHECK_IMAGE_LOADER([PNG], [${want_evas_image_loader_png}])
958
959 EVAS_CHECK_IMAGE_LOADER([SVG], [${want_evas_image_loader_svg}])
960
961 EVAS_CHECK_IMAGE_LOADER([Tiff], [${want_evas_image_loader_tiff}])
962
963 EVAS_CHECK_IMAGE_LOADER([XPM], [${want_evas_image_loader_xpm}])
964
965 EVAS_CHECK_IMAGE_LOADER([BMP], [${want_evas_image_loader_bmp}])
966
967 EVAS_CHECK_IMAGE_LOADER([TGA], [${want_evas_image_loader_tga}])
968
969 EVAS_CHECK_IMAGE_LOADER([WBMP], [${want_evas_image_loader_wbmp}])
970
971 EVAS_CHECK_IMAGE_LOADER([ICO], [${want_evas_image_loader_ico}])
972
973 EVAS_CHECK_IMAGE_LOADER([PSD], [${want_evas_image_loader_psd}])
974
975 EVAS_CHECK_IMAGE_LOADER([GENERIC], [${want_evas_image_loader_generic}])
976
977 #####################################################################
978 ## Cpu based optimizations
979
980 #######################################
981 ## PTHREADS
982 pthread_cflags=""
983 pthread_libs=""
984 build_pthreads="no"
985 has_pthreads="no"
986 need_pthreads="no"
987 # basic pthread support
988 AC_CHECK_HEADER(pthread.h,
989   [
990    has_pthreads="yes"
991   ],
992   [
993    has_pthreads="no"
994   ]
995 )
996
997 # sched_getaffinity pthread_attr_setaffinity_np
998 AC_CHECK_HEADERS(pthread.h sched.h,
999   [
1000     AC_CHECK_LIB(pthread, pthread_attr_setaffinity_np,
1001       [
1002         AC_CHECK_LIB(pthread, pthread_barrier_wait,
1003           [ build_pthreads="yes" ],
1004           [ build_pthreads="no" ]
1005         )
1006       ],
1007       [ build_pthreads="no" ]
1008     )
1009   ],
1010   [ build_pthreads="no" ]
1011 )
1012
1013 #######################################
1014 ## Pthread
1015 AC_MSG_CHECKING(whether to build pthread code)
1016 AC_ARG_ENABLE(pthreads,
1017   AC_HELP_STRING([--enable-pthreads], [enable threaded rendering]),
1018   [
1019     if test "x$enableval" = "xyes" ; then
1020       if test "x$build_pthreads" = "xyes"; then
1021         AC_MSG_RESULT(yes)
1022         AC_DEFINE(BUILD_PTHREAD, 1, [Build Threaded Rendering])
1023         build_pthreads="yes"
1024         need_pthreads="yes"
1025       else
1026         if "x$use_strict" = "xyes"; then
1027           AC_MSG_ERROR(pthreads headers or functions not found (strict dependencies checking))
1028         else
1029           AC_MSG_RESULT(no: pthread headers or functions not found)
1030         fi
1031       fi
1032     else
1033       AC_MSG_RESULT(no)
1034       build_pthreads="no"
1035     fi
1036   ],
1037   [
1038     AC_MSG_RESULT($build_pthreads)
1039     if test "x$build_pthreads" = "xyes" ; then
1040       AC_DEFINE(BUILD_PTHREAD, 1, [Build Threaded Rendering])
1041       need_pthreads="yes"
1042     fi
1043   ]
1044 )
1045
1046 #######################################
1047 ## Pipe Renderer
1048 build_pipe_render="no"
1049
1050 AC_MSG_CHECKING(whether to build Threaded Pipe Rendering support)
1051 AC_ARG_ENABLE(pipe-render,
1052   AC_HELP_STRING([--enable-pipe-render], [enable threaded pipe rendering support]),
1053   [ build_pipe_render=$enableval ]
1054 )
1055 AC_MSG_RESULT($build_pipe_render)
1056
1057 AC_MSG_CHECKING(whether we can build Threaded Pipe Rendering support)
1058 if test \( "x$build_pipe_render" = "xyes" -o "x$build_pipe_render" = "xauto" \); then
1059   AC_MSG_RESULT(yes)
1060   AC_DEFINE(BUILD_PIPE_RENDER, 1, [Build pipe render support])
1061   build_pipe_render="yes"
1062   need_pthreads="yes"
1063 else
1064   AC_MSG_RESULT(no)
1065   build_pipe_render="no"
1066 fi
1067
1068 #######################################
1069 ## Async Renderer
1070 build_async_render="no"
1071
1072 AC_MSG_CHECKING(whether to build Asynchronously Threaded Pipe Rendering support)
1073 AC_ARG_ENABLE(async-render,
1074  AC_HELP_STRING([--enable-async-render], [enable asynchronously threaded pipe rendering support]),
1075  [ build_async_render=$enableval ]
1076 )
1077 AC_MSG_RESULT($build_async_render)
1078
1079 AC_MSG_CHECKING(whether we can build Asynchronously Threaded Pipe Rendering support)
1080 if test \( "x$build_async_render" = "xyes" \); then
1081   AC_MSG_RESULT(yes)
1082   AC_DEFINE(EVAS_FRAME_QUEUING, 1, [Build async render support])
1083   build_async_render="yes"
1084   AC_DEFINE(BUILD_PIPE_RENDER, 1, [Build pipe render support])
1085   build_pipe_render="yes"
1086   need_pthreads="yes"
1087
1088   PKG_CHECK_MODULES([XEXT],
1089     [xext < 1.1.1],
1090     [ build_avoid_libXext_bug=yes ],
1091     [ build_avoid_libXext_bug=no ]
1092   )
1093   if test \( "x$build_avoid_libXext_bug" = "xyes" \); then
1094     AC_DEFINE(LIBXEXT_VERSION_LOW, 1, [To avoid bug on old libXext version])
1095   fi
1096 else
1097   AC_MSG_RESULT(no)
1098   build_async_render="no"
1099 fi
1100
1101 #######################################
1102 ## Async events
1103 build_async_events="auto"
1104 AC_MSG_CHECKING(whether to build Async Events support)
1105 AC_ARG_ENABLE(async-events,
1106   AC_HELP_STRING([--enable-async-events], [enable async events support]),
1107   [ build_async_events=$enableval ]
1108 )
1109 AC_MSG_RESULT($build_async_events)
1110
1111 AC_MSG_CHECKING(whether we can build Async Events support)
1112 if test "x$build_async_events" = "xyes" || test "x$build_async_events" = "xauto" ; then
1113   AC_MSG_RESULT(yes)
1114   AC_DEFINE(BUILD_ASYNC_EVENTS, 1, [Build async events support])
1115   build_async_events="yes"
1116 else
1117   AC_MSG_RESULT(no)
1118   build_async_events="no"
1119 fi
1120
1121 #######################################
1122 ## Async image preload
1123 build_async_preload="auto"
1124 AC_MSG_CHECKING(whether to build Async Image Preload support)
1125 AC_ARG_ENABLE(async-preload,
1126   AC_HELP_STRING([--enable-async-preload], [enable async image preloading support]),
1127   [ build_async_preload=$enableval ]
1128 )
1129 AC_MSG_RESULT($build_async_preload)
1130
1131 AC_MSG_CHECKING(whether we can build Async Image Preload support)
1132 if test \( "x$build_async_preload" = "xyes" -o "x$build_async_preload" = "xauto" \) -a "x$build_async_events" = "xyes"; then
1133   AC_MSG_RESULT(yes)
1134   AC_DEFINE(BUILD_ASYNC_PRELOAD, 1, [Build async image preload support])
1135   build_async_preload="yes"
1136   need_pthreads="yes"
1137 else
1138   AC_MSG_RESULT(no)
1139   build_async_preload="no"
1140 fi
1141
1142 #######################################
1143 ## Link with pthread if needed
1144 AC_MSG_CHECKING(whether we should link with pthread)
1145 if test "x$need_pthreads" = "xyes"; then
1146   AC_MSG_RESULT(yes)
1147   pthread_cflags=""
1148   pthread_libs="-lpthread"
1149 else
1150   AC_MSG_RESULT(no)
1151 fi
1152
1153 #######################################
1154 ## MMX
1155 build_cpu_mmx="no"
1156 case $host_cpu in
1157   i*86)
1158     build_cpu_mmx="yes"
1159     ;;
1160   x86_64)
1161     build_cpu_mmx="yes"
1162     ;;
1163   amd64)
1164     build_cpu_mmx="yes"
1165     ;;
1166 esac
1167 AC_MSG_CHECKING(whether to build mmx code)
1168 AC_ARG_ENABLE(cpu-mmx,
1169   AC_HELP_STRING([--enable-cpu-mmx], [enable mmx code]),
1170   [
1171       if test "x$enableval" = "xyes" ; then
1172         AC_MSG_RESULT(yes)
1173         AC_DEFINE(BUILD_MMX, 1, [Build MMX Code])
1174         build_cpu_mmx="yes"
1175       else
1176         AC_MSG_RESULT(no)
1177         build_cpu_mmx="no"
1178       fi
1179   ],
1180   [
1181     AC_MSG_RESULT($build_cpu_mmx)
1182     if test "x$build_cpu_mmx" = "xyes" ; then
1183       AC_DEFINE(BUILD_MMX, 1, [Build MMX Code])
1184     fi
1185   ]
1186 )
1187
1188 #######################################
1189 ## SSE
1190 build_cpu_sse="no"
1191 case $host_cpu in
1192   i*86)
1193     build_cpu_sse="yes"
1194     ;;
1195   x86_64)
1196     build_cpu_sse="yes"
1197     ;;
1198   amd64)
1199     build_cpu_sse="yes"
1200     ;;
1201 esac
1202 AC_MSG_CHECKING(whether to build sse code)
1203 AC_ARG_ENABLE(cpu-sse,
1204   AC_HELP_STRING([--enable-cpu-sse], [enable sse code]),
1205   [
1206       if test "x$enableval" = "xyes" ; then
1207         AC_MSG_RESULT(yes)
1208         AC_DEFINE(BUILD_SSE, 1, [Build SSE Code])
1209         build_cpu_sse="yes"
1210       else
1211         AC_MSG_RESULT(no)
1212         build_cpu_sse="no"
1213       fi
1214   ],
1215   [
1216     AC_MSG_RESULT($build_cpu_sse)
1217     if test "x$build_cpu_sse" = "xyes" ; then
1218       AC_DEFINE(BUILD_SSE, 1, [Build SSE Code])
1219     fi
1220   ]
1221 )
1222
1223 #######################################
1224 ## SSE3
1225 build_cpu_sse3="no"
1226 case $host_cpu in
1227   i*86)
1228     build_cpu_sse3="yes"
1229     ;;
1230   x86_64)
1231     build_cpu_sse3="yes"
1232     ;;
1233   amd64)
1234     build_cpu_sse3="yes"
1235     ;;
1236 esac
1237 AC_MSG_CHECKING(whether to build sse3 code)
1238 AC_ARG_ENABLE(cpu-sse3,
1239   AS_HELP_STRING([--enable-cpu-sse3],[enable sse3 code]),
1240   [
1241       if test "x$enableval" = "xyes" ; then
1242         AC_MSG_RESULT(yes)
1243         AC_DEFINE(BUILD_SSE3, 1, [Build SSE3 Code])
1244         build_cpu_sse3="yes"
1245       else
1246         AC_MSG_RESULT(no)
1247         build_cpu_sse3="no"
1248       fi
1249   ],
1250   [
1251     AC_MSG_RESULT($build_cpu_sse3)
1252     if test "x$build_cpu_sse3" = "xyes" ; then
1253       AC_DEFINE(BUILD_SSE3, 1, [Build SSE3 Code])
1254     fi
1255   ]
1256 )
1257
1258
1259 EVAS_SSE3_CFLAGS="-msse3 "
1260 if test "x$build_cpu_sse3" = "xyes" ; then
1261    CFLAGS="${CFLAGS} ${EVAS_SSE3_CFLAGS}"
1262 fi
1263
1264 AC_SUBST(CFLAGS)
1265
1266 #######################################
1267 ## ALTIVEC
1268 build_cpu_altivec="no"
1269 case $host_cpu in
1270   *power* | *ppc*)
1271     build_cpu_altivec="auto"
1272     ;;
1273 esac
1274 altivec_cflags=""
1275 AC_MSG_CHECKING(whether to build altivec code)
1276 AC_ARG_ENABLE(cpu-altivec,
1277   AC_HELP_STRING([--enable-cpu-altivec], [enable altivec code]),
1278   [ build_cpu_altivec=$enableval ],
1279   [
1280     if test ! "x$build_cpu_altivec" = "xauto"; then
1281       build_cpu_altivec="no"
1282     fi
1283   ]
1284 )
1285 AC_MSG_RESULT($build_cpu_altivec)
1286
1287 if test "x$build_cpu_altivec" = "xyes"; then
1288    AC_CHECK_HEADER(altivec.h,
1289      [
1290         AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code])
1291         AC_DEFINE(HAVE_ALTIVEC_H, 1, [Have altivec.h header file])
1292         build_cpu_altivec="yes"
1293      ],
1294      [
1295        save_CFLAGS=$CFLAGS
1296        save_CPPFLAGS=$CPPFLAGS
1297        CFLAGS=$CFLAGS" -maltivec"
1298        CPPFLAGS=$CPPFLAGS" -maltivec"
1299        unset ac_cv_header_altivec_h
1300        AC_CHECK_HEADER(altivec.h,
1301          [
1302             AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code])
1303             AC_DEFINE(HAVE_ALTIVEC_H, 1, [Have altivec.h header file])
1304             build_cpu_altivec="yes"
1305          ],
1306          [
1307             if test "x$build_cpu_altivec" = "xyes" -a "x$use_strict" = "xyes" ; then
1308               AC_MSG_ERROR(Altivec not found (strict dependencies checking))
1309             fi
1310             build_cpu_altivec="no"
1311          ]
1312        )
1313        CFLAGS=$save_CFLAGS
1314        CPPFLAGS=$save_CPPFLAGS
1315      ]
1316    )
1317 fi
1318
1319 if test "x$build_cpu_altivec" = "xyes"; then
1320    AC_MSG_CHECKING(whether to use altivec compiler flag)
1321    if test "x$GCC" = "xyes"; then
1322       if echo "int main(){return 0;}" | ${CPP} -faltivec - > /dev/null 2>&1; then
1323          altivec_cflags="-faltivec"
1324          AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code])
1325       elif echo "int main(){return 0;}" | ${CPP} -maltivec - > /dev/null 2>&1; then
1326          altivec_cflags="-maltivec"
1327          AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code])
1328       fi
1329    fi
1330   AC_MSG_RESULT($altivec_cflags)
1331    CFLAGS="$CFLAGS $altivec_cflags"
1332 fi
1333
1334 #######################################
1335 ## NEON
1336 build_cpu_neon="no"
1337 case $host_cpu in
1338   arm*)
1339     build_cpu_neon="yes"
1340     ;;
1341 esac
1342 AC_MSG_CHECKING(whether to build neon code)
1343 AC_ARG_ENABLE(cpu-neon,
1344   AC_HELP_STRING([--enable-cpu-neon], [build neon code, the code will be
1345           checked at run time to see if the CPU supports it]),
1346   [
1347      if test "x$enableval" = "xyes" ; then
1348        AC_TRY_COMPILE([],
1349         [asm volatile (".fpu neon\nvqadd.u8 d0, d1, d0\n")],
1350         [
1351           AC_MSG_RESULT(yes)
1352           AC_DEFINE(BUILD_NEON, 1, [Build NEON Code])
1353           build_cpu_neon="yes"
1354         ],[
1355           AC_MSG_RESULT(no)
1356           build_cpu_neon="no"
1357         ])
1358       else
1359         AC_MSG_RESULT(no)
1360         build_cpu_neon="no"
1361       fi
1362   ],
1363   [
1364     if test "x$build_cpu_neon" = "xyes" ; then
1365        AC_TRY_COMPILE([#include <arm_neon.h>],
1366         [asm volatile ("vqadd.u8 d0, d1, d0\n")],
1367         [
1368           AC_MSG_RESULT(yes)
1369           AC_DEFINE(BUILD_NEON, 1, [Build NEON Code])
1370           build_cpu_neon="yes"
1371         ],[
1372           AC_MSG_RESULT(no)
1373           build_cpu_neon="no"
1374         ])
1375     fi
1376   ]
1377 )
1378      
1379 #######################################
1380 ## C
1381 build_cpu_c="yes"
1382 AC_MSG_CHECKING(whether to build c code)
1383 AC_ARG_ENABLE(cpu-c,
1384   AC_HELP_STRING([--enable-cpu-c], [enable C code]),
1385   [
1386       if test "x$enableval" = "xyes" ; then
1387         AC_MSG_RESULT(yes)
1388         AC_DEFINE(BUILD_C, 1, [Build plain C code])
1389         build_cpu_c="yes"
1390       else
1391         AC_MSG_RESULT(no)
1392         build_cpu_c="no"
1393       fi
1394   ], [
1395       AC_MSG_RESULT($build_cpu_c)
1396       if test "x$build_cpu_c" = "xyes" ; then
1397         AC_DEFINE(BUILD_C, 1, [Build plain C code])
1398       fi
1399   ]
1400 )
1401
1402 #######################################
1403 ## MAGIC_DEBUG
1404 want_evas_magic_debug="yes"
1405 AC_MSG_CHECKING(whether to check magic for evas object)
1406 AC_ARG_ENABLE(evas-magic-debug,
1407   AC_HELP_STRING(
1408     [--disable-evas-magic-debug],
1409     [disable MAGIC_DEBUG check when people pass in wrong object type. [[default=enabled]]]
1410   ),
1411   [ want_evas_magic_debug="$enableval" ]
1412 )
1413 AC_MSG_RESULT($want_evas_magic_debug)
1414
1415 AM_CONDITIONAL(EVAS_MAGIC_DEBUG, test "x$want_evas_magic_debug" = "xyes")
1416 if test "x$want_evas_magic_debug" = "xyes"; then
1417   AC_DEFINE(EVAS_MAGIC_DEBUG, 1, [complain when people pass in wrong object types etc.])
1418 fi
1419
1420
1421 #######################################
1422 ## Word Caching
1423 want_word_cache="no"
1424 AC_MSG_CHECKING(whether to enable caching of rendered words)
1425 AC_ARG_ENABLE(word-cache,
1426   AC_HELP_STRING(
1427     [--enable-word-cache],
1428     [Enable experimental word caching to speed up rendering [[default=disabled]]]
1429   ),
1430   [ want_word_cache="$enableval" ]
1431 )
1432 AC_MSG_RESULT($want_word_cache)
1433
1434 AM_CONDITIONAL(WORD_CACHE, test "x$want_word_cache" = "xyes")
1435 if test "x$want_word_cache" = "xyes"; then
1436   AC_DEFINE(WORD_CACHE, 1, [Experimental word caching to speed up text rendering.])
1437 fi
1438
1439 #######################################
1440 ## Metric Caching
1441 want_metric_cache="no"
1442 AC_MSG_CHECKING(whether to enable caching of rendered metrics)
1443 AC_ARG_ENABLE(metric-cache,
1444   AC_HELP_STRING(
1445     [--enable-metric-cache],
1446     [Enable experimental metric caching to speed up rendering [[default=disabled]]]
1447   ),
1448   [ want_metric_cache="$enableval" ]
1449 )
1450 AC_MSG_RESULT($want_metric_cache)
1451
1452 AM_CONDITIONAL(METRIC_CACHE, test "x$want_metric_cache" = "xyes")
1453 if test "x$want_metric_cache" = "xyes"; then
1454   AC_DEFINE(METRIC_CACHE, 1, [Experimental metric caching to speed up text rendering.])
1455 fi
1456
1457
1458
1459 #####################################################################
1460 ## ARGB engine options
1461
1462 #######################################
1463 ## Nearest sampling scaler
1464 EVAS_CHECK_SCALER([scale-sample], [sampling scaler], [scaler_sample="yes"], [scaler_sample="no"])
1465 ## Smooth super and sub sampling scaler
1466 EVAS_CHECK_SCALER([scale-smooth], [smooth scaler], [scaler_smooth="yes"], [scaler_smooth="no"])
1467
1468 #######################################
1469 ## YUV -> ARGB converter
1470 conv_yuv="no"
1471 conv_yuv="yes"
1472 AC_MSG_CHECKING(whether to build yuv converter code)
1473 AC_ARG_ENABLE(convert-yuv,
1474   AC_HELP_STRING([--enable-convert-yuv], [enable yuv converter code]),
1475   [
1476       if test "x$enableval" = "xyes" ; then
1477         AC_MSG_RESULT(yes)
1478         AC_DEFINE(BUILD_CONVERT_YUV, 1, [YUV Converter Support])
1479         conv_yuv="yes"
1480       else
1481         AC_MSG_RESULT(no)
1482         conv_yuv="no"
1483       fi
1484   ], [
1485       AC_MSG_RESULT($conv_yuv)
1486       if test "x$conv_yuv" = "xyes" ; then
1487         AC_DEFINE(BUILD_CONVERT_YUV, 1, [YUV Converter Support])
1488       fi
1489   ]
1490 )
1491
1492 #####################################################################
1493 ## Output rendering features
1494
1495 #######################################
1496 ## Small dither mask instead of big one (lower quality)
1497 EVAS_CHECK_DITHER([small-dither-mask], [small dither mask], [conv_small_dither="yes"], [conv_small_dither="no"])
1498 ## Alternate Line dither mask instead of big one (lower quality - but fastest)
1499 EVAS_CHECK_DITHER([line-dither-mask], [line dither mask], [conv_line_dither="yes"], [conv_line_dither="no"])
1500 ## No dither mask at all for 16bpp
1501 EVAS_CHECK_DITHER([no-dither-mask], [conversion to 16bpp without dither mask], [conv_no_dither="yes"], [conv_no_dither="no"])
1502
1503 #######################################
1504 ## Convert to 8bpp RGB 332
1505 EVAS_CONVERT_COLOR(8, RGB, 332, [yes])
1506 ## Convert to 8bpp RGB 666
1507 EVAS_CONVERT_COLOR(8, RGB, 666, [yes])
1508 ## Convert to 8bpp RGB 232
1509 EVAS_CONVERT_COLOR(8, RGB, 232, [yes])
1510 ## Convert to 8bpp RGB 222
1511 EVAS_CONVERT_COLOR(8, RGB, 222, [yes])
1512 ## Convert to 8bpp RGB 221
1513 EVAS_CONVERT_COLOR(8, RGB, 221, [yes])
1514 ## Convert to 8bpp RGB 121
1515 EVAS_CONVERT_COLOR(8, RGB, 121, [yes])
1516 ## Convert to 8bpp RGB 111
1517 EVAS_CONVERT_COLOR(8, RGB, 111, [yes])
1518 ## Convert to 16bpp RGB 565
1519 EVAS_CONVERT_COLOR(16, RGB, 565)
1520 ## Convert to 16bpp BGR 565
1521 EVAS_CONVERT_COLOR(16, BGR, 565)
1522 ## Convert to 16bpp RGB 555
1523 EVAS_CONVERT_COLOR(16, RGB, 555)
1524 ## Convert to 16bpp RGB 444
1525 EVAS_CONVERT_COLOR(16, RGB, 444)
1526
1527 #######################################
1528 ## Convert to 16bpp RGB 565 (444 ipaq)
1529 conv_16_rgb_ipq="yes"
1530 AC_MSG_CHECKING(whether to build 16bpp 565 (444 ipaq) converter code)
1531 AC_ARG_ENABLE(convert-16-rgb-ipq,
1532   AC_HELP_STRING([--disable-convert-16-rgb-ipq], [disable 16bpp 565 (444 ipaq) converter code]),
1533   [
1534       if test "x$enableval" = "xyes" ; then
1535         AC_DEFINE(BUILD_CONVERT_16_RGB_454645, 1, [16bpp 565 (444 ipaq) Converter Support])
1536         conv_16_rgb_ipq="yes"
1537       else
1538         conv_16_rgb_ipq="no"
1539       fi
1540   ], [
1541       if test "x$conv_16_rgb_ipq" = "xyes" ; then
1542         AC_DEFINE(BUILD_CONVERT_16_RGB_454645, 1, [16bpp 565 (444 ipaq) Converter Support])
1543       fi
1544   ]
1545 )
1546 AC_MSG_RESULT($conv_16_rgb_ipq)
1547
1548 #######################################
1549 ## Convert to 16bpp RGB with rotation of 0
1550 EVAS_CONVERT_ROT(16, RGB, 0)
1551 ## Convert to 16bpp RGB with rotation of 180
1552 EVAS_CONVERT_ROT(16, RGB, 180)
1553 ## Convert to 16bpp RGB with rotation of 270
1554 EVAS_CONVERT_ROT(16, RGB, 270)
1555 ## Convert to 16bpp RGB with rotation of 90
1556 EVAS_CONVERT_ROT(16, RGB, 90)
1557
1558 #######################################
1559 ## Convert to 24bpp RGB 888
1560 EVAS_CONVERT_COLOR(24, RGB, 888)
1561 ## Convert to 24bpp BGR 888
1562 EVAS_CONVERT_COLOR(24, BGR, 888)
1563 ## Convert to 32bpp RGB 8888
1564 EVAS_CONVERT_COLOR(32, RGB, 8888)
1565 ## Convert to 32bpp RGBX 8888
1566 EVAS_CONVERT_COLOR(32, RGBX, 8888)
1567 ## Convert to 32bpp BGR 8888
1568 EVAS_CONVERT_COLOR(32, BGR, 8888)
1569 ## Convert to 32bpp BGRX 8888
1570 EVAS_CONVERT_COLOR(32, BGRX, 8888)
1571
1572 #######################################
1573 ## Convert to 24bpp RGB 666 (666 ezx)
1574 conv_24_rgb_ezx="yes"
1575 AC_MSG_CHECKING(whether to build 24bpp 666 (666 ezx) converter code)
1576 AC_ARG_ENABLE(convert-24-rgb-ezx,
1577   AC_HELP_STRING([--disable-convert-24-rgb-ezx], [disable 24bpp 666 (666 ezx) converter code]),
1578   [
1579       if test "x$enableval" = "xyes" ; then
1580         AC_DEFINE(BUILD_CONVERT_24_RGB_666, 1, [24bpp 666 (666 ezx) Converter Support])
1581         conv_24_rgb_ezx="yes"
1582       else
1583         conv_24_rgb_ezx="no"
1584       fi
1585   ], [
1586       if test "x$conv_24_rgb_ezx" = "xyes" ; then
1587         AC_DEFINE(BUILD_CONVERT_24_RGB_666, 1, [24bpp 666 (666 ezx) Converter Support])
1588       fi
1589   ]
1590 )
1591 AC_MSG_RESULT($conv_24_rgb_ezx)
1592
1593 #######################################
1594 ## Convert to 32bpp RGB 666 (666 ezx)
1595 conv_32_rgb_ezx="yes"
1596 AC_MSG_CHECKING(whether to build 32bpp 666 (666 ezx) converter code)
1597 AC_ARG_ENABLE(convert-32-rgb-ezx,
1598   AC_HELP_STRING([--disable-convert-32-rgb-ezx], [disable 32bpp 666 (666 ezx) converter code]),
1599   [
1600       if test "x$enableval" = "xyes" ; then
1601         AC_DEFINE(BUILD_CONVERT_32_RGB_666, 1, [32bpp 666 (666 ezx) Converter Support])
1602         conv_32_rgb_ezx="yes"
1603       else
1604         conv_32_rgb_ezx="no"
1605       fi
1606   ], [
1607       if test "x$conv_32_rgb_ezx" = "xyes" ; then
1608         AC_DEFINE(BUILD_CONVERT_32_RGB_666, 1, [32bpp 666 (666 ezx) Converter Support])
1609       fi
1610   ]
1611 )
1612 AC_MSG_RESULT($conv_32_rgb_ezx)
1613
1614 #######################################
1615 ## Convert to 32bpp RGB with rotation of 0
1616 EVAS_CONVERT_ROT(32, RGB, 0)
1617 ## Convert to 32bpp RGB with rotation of 180
1618 EVAS_CONVERT_ROT(32, RGB, 180)
1619 ## Convert to 32bpp RGB with rotation of 270
1620 EVAS_CONVERT_ROT(32, RGB, 270)
1621 ## Convert to 32bpp RGB with rotation of 90
1622 EVAS_CONVERT_ROT(32, RGB, 90)
1623
1624 #######################################
1625 ## Convert to 8bpp grayscale with 256 value, no palette
1626 EVAS_CONVERT_COLOR(8, GRY, 1)
1627 ## Convert to 8bpp grayscale with 16 value, no palette
1628 EVAS_CONVERT_COLOR(8, GRY, 16)
1629
1630 #######################################
1631 ## Convert to 8bpp grayscale, 64-palette
1632 conv_8_grayscale_64="yes"
1633 AC_MSG_CHECKING(whether to build 8bpp grayscale 64-palette converter code)
1634 AC_ARG_ENABLE(convert-8-grayscale-64,
1635   AC_HELP_STRING([--disable-convert-8-grayscale-64], [disable 8bpp grayscale 64-palette converter code]),
1636   [
1637      if test "x$enableval" = "xyes"; then
1638        AC_DEFINE(BUILD_CONVERT_8_GRAYSCALE_64, 1, [8bpp Grayscale 64-palette Converter Support])
1639        conv_8_grayscale_64="yes"
1640      else
1641        conv_8_grayscale_64="no"
1642      fi
1643   ], [
1644      if test "x$conv_8_grayscale_64" = "xyes"; then
1645        AC_DEFINE(BUILD_CONVERT_8_GRAYSCALE_64, 1, [32bpp Grayscale 64-palette Converter Support])
1646      fi
1647   ]
1648 )
1649 AC_MSG_RESULT($conv_8_grayscale_64)
1650
1651 ## valgrind
1652 want_valgrind="no"
1653 have_valgrind="no"
1654
1655 AC_MSG_CHECKING(whether to enable build with valgrind)
1656 AC_ARG_ENABLE(valgrind,
1657   AC_HELP_STRING([--enable-valgrind], [enable valgrind fixes to stop false reports]),
1658   [ want_valgrind=$enableval ]
1659 )
1660 AC_MSG_RESULT($want_valgrind)
1661
1662 if test x$want_valgrind = "xyes"; then
1663   PKG_CHECK_MODULES(VALGRIND, valgrind >= 2.4.0,
1664     [
1665       AC_DEFINE(HAVE_VALGRIND, 1, [Valgrind support])
1666       have_valgrind=yes
1667       requirement_evas="valgrind ${requirement_evas}"
1668     ],
1669     [
1670       if test "x$want_valgrind" = "xyes" -a "x$use_strict" = "xyes" ; then
1671         AC_MSG_ERROR([Valgrind not found (strict dependencies checking)])
1672       fi
1673     ]
1674   )
1675 fi
1676
1677 ## Examples
1678
1679 install_examples="yes"
1680 AC_ARG_ENABLE([install-examples],
1681    AC_HELP_STRING([--disable-install-examples],
1682                   [disable installing examples (compiled or just source).
1683                    @<:@default==enabled@:>@]),
1684    [
1685     if test "x${enableval}" = "xyes" ; then
1686        install_examples="yes"
1687     else
1688        install_examples="no"
1689     fi
1690    ],
1691    [install_examples="yes"])
1692 AM_CONDITIONAL([INSTALL_EXAMPLES], [test "x${install_examples}" = "xyes"])
1693
1694 build_examples="no"
1695 AC_ARG_ENABLE([build-examples],
1696    AC_HELP_STRING([--enable-build-examples],
1697                   [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@:>@]),
1698    [
1699     if test "x${enableval}" = "xyes" ; then
1700        build_examples="yes"
1701        # put in here the dependencies for Evas' examples. they are
1702        # meant to be 'real world' usage examples, thus one will be
1703        # using higher level libraries on these programs
1704        PKG_CHECK_MODULES([ECORE_EVAS], [ecore-evas ecore], [], [build_examples="no"])
1705        PKG_CHECK_MODULES([EDJE], [edje],
1706         [edje_cc=$($PKG_CONFIG --variable=prefix edje)/bin/edje_cc],
1707         [build_examples="no"])
1708        AC_SUBST(edje_cc)
1709     else
1710        build_examples="no"
1711     fi
1712    ],
1713    [build_examples="no"])
1714 AM_CONDITIONAL([BUILD_EXAMPLES], [test "x${build_examples}" = "xyes"])
1715
1716 ## Unit tests, coverage
1717
1718 EFL_CHECK_TESTS([enable_tests="yes"], [enable_tests="no"])
1719
1720 EFL_CHECK_COVERAGE([${enable_tests}], [enable_coverage="yes"], [enable_coverage="no"])
1721 EVAS_CFLAGS="${EVAS_CFLAGS} ${EFL_COVERAGE_CFLAGS}"
1722 EVAS_LIBS="${EVAS_LIBS} ${EFL_COVERAGE_LIBS}"
1723 if test "x$enable_coverage" = "xyes" ; then
1724    EVAS_CFLAGS="${EVAS_CFLAGS} ${EFL_DEBUG_CFLAGS}"
1725 fi
1726
1727 AC_SUBST(EVAS_CFLAGS)
1728 AC_SUBST(EVAS_LIBS)
1729
1730 #####################################################################
1731 ## Fill in flags
1732
1733 AC_SUBST(altivec_cflags)
1734 AC_SUBST(pthread_cflags)
1735 AC_SUBST(pthread_libs)
1736 AC_SUBST(requirement_evas)
1737
1738
1739 #####################################################################
1740 ## Output
1741
1742 AC_OUTPUT([
1743 Makefile
1744 evas-directfb.pc
1745 evas-fb.pc
1746 evas-opengl-x11.pc
1747 evas-opengl-sdl.pc
1748 evas-software-buffer.pc
1749 evas-software-x11.pc
1750 evas-software-8-x11.pc
1751 evas-software-16-x11.pc
1752 evas-software-gdi.pc
1753 evas-software-ddraw.pc
1754 evas-software-16-ddraw.pc
1755 evas-direct3d.pc
1756 evas-software-16-wince.pc
1757 evas-software-sdl.pc
1758 evas.pc
1759 doc/evas.dox
1760 doc/Makefile
1761 doc/Doxyfile
1762 src/Makefile
1763 src/bin/Makefile
1764 src/lib/Makefile
1765 src/lib/canvas/Makefile
1766 src/lib/file/Makefile
1767 src/lib/cache/Makefile
1768 src/lib/cserve/Makefile
1769 src/lib/engines/Makefile
1770 src/lib/engines/common/Makefile
1771 src/lib/engines/common/evas_op_add/Makefile
1772 src/lib/engines/common/evas_op_blend/Makefile
1773 src/lib/engines/common/evas_op_copy/Makefile
1774 src/lib/engines/common/evas_op_mask/Makefile
1775 src/lib/engines/common/evas_op_mul/Makefile
1776 src/lib/engines/common/evas_op_sub/Makefile
1777 src/lib/engines/common_8/Makefile
1778 src/lib/engines/common_16/Makefile
1779 src/modules/Makefile
1780 src/modules/engines/Makefile
1781 src/modules/engines/software_generic/Makefile
1782 src/modules/engines/software_gdi/Makefile
1783 src/modules/engines/software_ddraw/Makefile
1784 src/modules/engines/direct3d/Makefile
1785 src/modules/engines/software_16_wince/Makefile
1786 src/modules/engines/software_x11/Makefile
1787 src/modules/engines/fb/Makefile
1788 src/modules/engines/buffer/Makefile
1789 src/modules/engines/directfb/Makefile
1790 src/modules/engines/gl_common/Makefile
1791 src/modules/engines/gl_x11/Makefile
1792 src/modules/engines/gl_sdl/Makefile
1793 src/modules/engines/software_sdl/Makefile
1794 src/modules/engines/software_8/Makefile
1795 src/modules/engines/software_8_x11/Makefile
1796 src/modules/engines/software_16/Makefile
1797 src/modules/engines/software_16_x11/Makefile
1798 src/modules/engines/software_16_ddraw/Makefile
1799 src/modules/engines/software_16_sdl/Makefile
1800 src/modules/loaders/Makefile
1801 src/modules/loaders/edb/Makefile
1802 src/modules/loaders/eet/Makefile
1803 src/modules/loaders/gif/Makefile
1804 src/modules/loaders/jpeg/Makefile
1805 src/modules/loaders/png/Makefile
1806 src/modules/loaders/tiff/Makefile
1807 src/modules/loaders/xpm/Makefile
1808 src/modules/loaders/bmp/Makefile
1809 src/modules/loaders/ico/Makefile
1810 src/modules/loaders/tga/Makefile
1811 src/modules/loaders/svg/Makefile
1812 src/modules/loaders/pmaps/Makefile
1813 src/modules/loaders/wbmp/Makefile
1814 src/modules/loaders/psd/Makefile
1815 src/modules/loaders/generic/Makefile
1816 src/modules/savers/Makefile
1817 src/modules/savers/edb/Makefile
1818 src/modules/savers/eet/Makefile
1819 src/modules/savers/jpeg/Makefile
1820 src/modules/savers/png/Makefile
1821 src/modules/savers/tiff/Makefile
1822 src/static_deps/Makefile
1823 src/static_deps/liblinebreak/Makefile
1824 src/lib/include/Makefile
1825 src/examples/Makefile
1826 src/tests/Makefile
1827 README
1828 evas.spec
1829 ])
1830
1831 #####################################################################
1832 ## Sanity Checks
1833
1834 if test "x$build_pthreads" = "xno" ; then
1835   if test "x$build_async_render" = "xyes" ; then
1836     echo "ERROR: PThreads off, but async rendering on. Async rendering"
1837     echo "  needs thread support."
1838     exit 1
1839   fi
1840   if test "x$build_pipe_render" = "xyes" ; then
1841     echo "ERROR: PThreads off, but pipe rendering on. Pipe rendering"
1842     echo "  needs thread support."
1843     exit 1
1844   fi
1845 fi
1846
1847 if test "x${has_pthreads}" = "xno" ; then
1848   if test "x$build_async_preload" = "xyes" ; then
1849     echo "ERROR: PThreads off, but Async Preload on. Async Preload"
1850     echo "  needs thread support."
1851     exit 1
1852   fi
1853 fi
1854
1855 #####################################################################
1856 ## Info
1857
1858 echo
1859 echo
1860 echo
1861 echo "------------------------------------------------------------------------"
1862 echo "$PACKAGE $VERSION"
1863 echo "------------------------------------------------------------------------"
1864 echo
1865 echo "Configuration Options Summary:"
1866 echo
1867 echo "Engines:"
1868 echo "  Software Memory Buffer.....: $have_evas_engine_buffer"
1869 echo "  Software X11...............: $have_evas_engine_software_x11 (Xlib: $have_evas_engine_software_xlib) (XCB: $have_evas_engine_software_xcb)"
1870 echo $ECHO_N "  OpenGL X11.................: $have_evas_engine_gl_x11 (Xlib: $have_evas_engine_gl_xlib) (XCB: $have_evas_engine_gl_xcb) $ECHO_C"
1871 if test "x$have_evas_engine_gl_x11" = "xyes"; then
1872   echo "(GLES: $gl_flavor_gles) (SGX: $gles_variety_sgx) (s3c6410: $gles_variety_s3c6410)"
1873 else
1874   echo
1875 fi
1876 echo "  Software GDI...............: $have_evas_engine_software_gdi"
1877 echo "  Software DirectDraw........: $have_evas_engine_software_ddraw"
1878 echo "  Direct3d...................: $have_evas_engine_direct3d"
1879 echo "  Software SDL...............: $have_evas_engine_software_sdl (primitive: $sdl_primitive)"
1880 echo $ECHO_N "  OpenGL SDL.................: $have_evas_engine_gl_sdl $ECHO_C"
1881 if test "x$have_evas_engine_gl_sdl" = "xyes"; then
1882   echo "(GLES: $gl_flavor_gles) (SGX: $gles_variety_sgx) (s3c6410: $gles_variety_s3c6410)"
1883 else
1884   echo
1885 fi
1886 echo "  Software Framebuffer.......: $have_evas_engine_fb"
1887 echo "  DirectFB...................: $have_evas_engine_directfb"
1888 echo "  Software 8bit grayscale....: $have_evas_engine_software_8"
1889 # FIXME: kill software 16bit
1890 echo "  Software 16bit ............: $have_evas_engine_software_16"
1891 echo "  Software 16bit X11.........: $have_evas_engine_software_16_x11"
1892 echo "  Software 16bit Directdraw..: $have_evas_engine_software_16_ddraw"
1893 echo "  Software 16bit WinCE.......: $have_evas_engine_software_16_wince"
1894 echo "  Software 16bit SDL.........: $have_evas_engine_software_16_sdl (primitive: $sdl_primitive)"
1895 echo
1896 echo "Image Loaders:"
1897 echo "  BMP.....................: $have_evas_image_loader_bmp"
1898 echo "  EDB.....................: $have_evas_image_loader_edb"
1899 echo "  EET.....................: $have_evas_image_loader_eet"
1900 echo "  GENERIC.................: $have_evas_image_loader_generic"
1901 echo "  GIF.....................: $have_evas_image_loader_gif"
1902 echo "  ICO.....................: $have_evas_image_loader_ico"
1903 echo "  JPEG....................: $have_evas_image_loader_jpeg (region: $have_jpeg_region)"
1904 echo "  PMAPS...................: $have_evas_image_loader_pmaps"
1905 echo "  PNG.....................: $have_evas_image_loader_png"
1906 echo "  PSD.....................: $have_evas_image_loader_psd"
1907 echo "  SVG.....................: $have_evas_image_loader_svg"
1908 echo "  TGA.....................: $have_evas_image_loader_tga"
1909 echo "  TIFF....................: $have_evas_image_loader_tiff"
1910 echo "  WBMP....................: $have_evas_image_loader_wbmp"
1911 echo "  XPM.....................: $have_evas_image_loader_xpm"
1912 echo
1913 echo "Font Sourcing Systems:"
1914 echo "  EET.....................: $have_evas_font_loader_eet"
1915 echo
1916 echo "Font Searching Systems:"
1917 echo "  Fontconfig..............: $have_fontconfig"
1918 echo
1919 echo "Font Rendering Helpers:"
1920 echo "  Fribidi.................: $have_fribidi"
1921 echo "  Harfbuzz................: $have_harfbuzz"
1922 echo "  liblinebreak............: $have_linebreak"
1923 # FIXME: add non freetype2 font engine support
1924 # FIXME: make freetype2 optional
1925 echo
1926 echo "CPU Specific Extensions:"
1927 echo "  Fallback C Code.........: $build_cpu_c"
1928 echo "  MMX.....................: $build_cpu_mmx"
1929 echo "  SSE.....................: $build_cpu_sse"
1930 echo "  SSE3....................: $build_cpu_sse3"
1931 echo "  ALTIVEC.................: $build_cpu_altivec"
1932 echo "  NEON....................: $build_cpu_neon"
1933 echo "  Thread Support..........: $build_pthreads"
1934 echo
1935 echo "Features:"
1936 echo "  MAGIC_DEBUG.............: $want_evas_magic_debug"
1937 echo "  Cache Server............: $want_evas_cserve"
1938 echo
1939 dnl
1940 dnl ... DISABLED! some testing has shown that this seems to have some
1941 dnl nasty bugs on both x86 and arm (tegra2 dual core tested), so just
1942 dnl disabling this for now until it can be fixed
1943 dnl 
1944 echo "  Threaded Pipe Rendering.: $build_pipe_render"
1945 echo "  Async Pipe Rendering....: $build_async_render"
1946 echo "  Async Events............: $build_async_events"
1947 echo "  Async Image Preload.....: $build_async_preload"
1948 echo
1949 echo "  Word Cache..............: $want_word_cache"
1950 echo "  Metric Cache............: $want_metric_cache"
1951 echo
1952 echo "ARGB Software Engine Options:"
1953 echo "  Sampling Scaler.........: $scaler_sample"
1954 echo "  Smooth Scaler...........: $scaler_smooth"
1955 # FIXME: add an mmx scaler routine
1956 echo "  YUV Converter...........: $conv_yuv"
1957 # FIXME: add more YUV format and colorvariant support
1958 echo
1959 echo "ARGB Conversion Options:"
1960 echo "  Smaller Dither Mask.....: $conv_small_dither"
1961 echo "  Line Dither Mask........: $conv_line_dither"
1962 echo "  No Dither Mask for 16bpp: $conv_no_dither"
1963 echo "  8bpp RGB 332............: $conv_8_rgb_332"
1964 echo "  8bpp RGB 666............: $conv_8_rgb_666"
1965 echo "  8bpp RGB 232............: $conv_8_rgb_232"
1966 echo "  8bpp RGB 222............: $conv_8_rgb_222"
1967 echo "  8bpp RGB 221............: $conv_8_rgb_221"
1968 echo "  8bpp RGB 121............: $conv_8_rgb_121"
1969 echo "  8bpp RGB 111............: $conv_8_rgb_111"
1970 echo "  8bpp Grayscale (256)....: $conv_8_gry_1"
1971 echo "  8bpp Grayscale (16).....: $conv_8_gry_16"
1972 echo "  8bpp Grayscale 64-pal...: $conv_8_grayscale_64"
1973 # FIXME: add grayscale and B&W support to standard x converters
1974 echo "  16bpp RGB 565...........: $conv_16_rgb_565"
1975 echo "  16bpp BGR 565...........: $conv_16_bgr_565"
1976 echo "  16bpp RGB 555...........: $conv_16_rgb_555"
1977 echo "  16bpp RGB 444...........: $conv_16_rgb_444"
1978 echo "  16bpp RGB 565 (444 ipaq): $conv_16_rgb_ipq"
1979 # FIXME: add 555 (444 ipaq) support
1980 # FIXME: add 30bpp support
1981 # FIXME: add palletted support (ugh!)
1982 # FIXME: add 8bpp and below rotation
1983 echo "  16bpp Rotation 0........: $conv_16_rgb_rot_0"
1984 echo "  16bpp Rotation 90.......: $conv_16_rgb_rot_90"
1985 echo "  16bpp Rotation 180......: $conv_16_rgb_rot_180"
1986 echo "  16bpp Rotation 270......: $conv_16_rgb_rot_270"
1987 echo "  24bpp RGB 888...........: $conv_24_rgb_888"
1988 echo "  24bpp BGR 888...........: $conv_24_bgr_888"
1989 echo "  24bpp RGB 666 (666 ezx).: $conv_24_rgb_ezx"
1990 # FIXME: add 24bpp rotation
1991 echo "  32bpp RGB 8888..........: $conv_32_rgb_8888"
1992 echo "  32bpp RGBX 8888.........: $conv_32_rgbx_8888"
1993 echo "  32bpp BGR 8888..........: $conv_32_bgr_8888"
1994 echo "  32bpp BGRX 8888.........: $conv_32_bgrx_8888"
1995 echo "  32bpp RGB 666 (666 ezx).: $conv_32_rgb_ezx"
1996 echo "  32bpp Rotation 0........: $conv_32_rgb_rot_0"
1997 echo "  32bpp Rotation 90.......: $conv_32_rgb_rot_90"
1998 echo "  32bpp Rotation 180......: $conv_32_rgb_rot_180"
1999 echo "  32bpp Rotation 270......: $conv_32_rgb_rot_270"
2000 echo
2001 echo "Documentation.............: ${build_doc}"
2002 echo "Examples..................: install:${install_examples} build:${build_examples}"
2003 if test "x${enable_tests}" = "xyes" ; then
2004    echo "Tests.....................: ${enable_tests} (make check)"
2005 else
2006    echo "Tests.....................: ${enable_tests}"
2007 fi
2008 if test "x${enable_coverage}" = "xyes" ; then
2009    echo "Coverage..................: ${enable_coverage} (make coverage)"
2010 else
2011    echo "Coverage..................: ${enable_coverage}"
2012 fi
2013 echo
2014 echo "Compilation............: make (or gmake)"
2015 echo "  CPPFLAGS.............: $CPPFLAGS"
2016 echo "  CFLAGS...............: $CFLAGS"
2017 echo "  CXXFLAGS.............: $CXXFLAGS"
2018 echo "  LDFLAGS..............: $LDFLAGS"
2019 echo
2020 echo "Installation...........: make install (as root if needed, with 'su' or 'sudo')"
2021 echo "  prefix...............: $prefix"
2022 echo
2023 if test "x${have_static_module}" = "xyes" ; then
2024 echo -e "\0033\01331;31mWarning\0033\01331;0m: You are trying to link statically one or more modules to Evas."
2025 echo "         You must know what you are doing, or else you will have a lot of"
2026 echo "         problems. And Kenny will be killed."
2027 echo "         Think about that."
2028 echo
2029 fi