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