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