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