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