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