Ecore: Add autofoo magic for building XCB-based ecore_x.

NB: IF you are going to try this, build evas with
`--enable-software-xcb` AND build ecore with `--enable-ecore-x-xcb
--disable-ecore-evas-opengl-x11`.

NB: OpenGL does NOT work with the xcb stuff yet. E itself does NOT
work with this yet either (still have to commit those changes).



SVN revision: 61385
This commit is contained in:
Christopher Michael 2011-07-14 15:46:30 +00:00
parent 1039f57ad6
commit cfed4716f6
1 changed files with 183 additions and 9 deletions

View File

@ -141,6 +141,7 @@ want_ecore_x_xprint="yes"
want_ecore_x_xtest="yes"
want_ecore_x_cursor="yes"
want_ecore_x_input="yes"
want_ecore_x_dri="yes"
# ecore_evas modules
want_ecore_evas="yes"
@ -212,7 +213,7 @@ case "$host_os" in
want_ecore_evas_opengl_x11="yes"
want_ecore_evas_software_16_x11="yes"
want_ecore_evas_software_8_x11="yes"
want_ecore_evas_software_xcb="yes"
want_ecore_evas_software_xcb="no"
want_ecore_evas_software_sdl="yes"
want_ecore_evas_gl_sdl="yes"
want_ecore_evas_directfb="yes"
@ -638,20 +639,129 @@ AC_ARG_ENABLE(ecore-x-input,
@<:@default=detect@:>@])],
[want_ecore_x_input=$enableval])
AC_ARG_ENABLE(ecore-x-dri,
[AC_HELP_STRING([--disable-ecore-x-dri],
[disable the ecore_x support for DRI extension.
@<:@default=detect@:>@])],
[want_ecore_x_dri=$enableval])
AC_ARG_ENABLE(ecore-x-xcb,
[AC_HELP_STRING([--enable-ecore-x-xcb],
[enable the ecore_x module with XCB backend. @<:@default=disabled@:>@])],
[want_ecore_x_xcb=$enableval],
[want_ecore_x_xcb="no"])
[want_ecore_x_xcb=$enableval])
AC_MSG_CHECKING(whether ecore_x with XCB backend is to be built)
AC_MSG_RESULT($want_ecore_x_xcb)
if test "x$want_ecore_x_xcb" = "xyes" ; then
PKG_CHECK_MODULES(XCB, xcb xcb-icccm xcb-image xcb-keysyms pixman-1,
AC_MSG_CHECKING([keysym definitions])
KEYSYMDEFDIR=`$PKG_CONFIG --variable=includedir xproto`/X11
FILES="keysymdef.h XF86keysym.h Sunkeysym.h DECkeysym.h HPkeysym.h"
for i in $FILES; do
if test -f "$KEYSYMDEFDIR/$i"; then
KEYSYMDEFS="$KEYSYMDEFS $KEYSYMDEFDIR/$i"
elif test "x$i" = "xkeysymdef.h"; then
AC_MSG_ERROR([Cannot find keysymdef.h])
fi
done
AC_MSG_RESULT([$KEYSYMDEFS])
AC_SUBST(KEYSYMDEFS)
have_iconv="no"
AC_ARG_WITH([iconv-link],
AC_HELP_STRING([--with-iconv-link=ICONV_LINK], [explicitly specify an iconv link option]),
[
LIBS="$withval $LIBS"
have_iconv="yes"
])
AC_MSG_CHECKING(for explicit iconv link options)
if test "x${iconv_libs}" = "x" ; then
AC_MSG_RESULT([no explicit iconv link option])
else
AC_MSG_RESULT([$iconv_libs])
fi
if test "x${have_iconv}" = "xno" ; then
AC_CHECK_HEADERS([iconv.h], [have_iconv="yes"])
if test "x${have_iconv}" = "xyes" ; then
AC_MSG_CHECKING([whether iconv() is in libc])
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[
#include <stdlib.h>
#include <iconv.h>
]],
[[
iconv_t ic;
size_t count = iconv(ic, NULL, NULL, NULL, NULL);
]])],
[have_iconv="yes"],
[have_iconv="no"])
AC_MSG_RESULT([${have_iconv}])
fi
if test "x${have_iconv}" = "xno" ; then
AC_MSG_CHECKING([whether iconv() is in libiconv.a])
LIBS_save="${LIBS}"
LIBS="-liconv $LIBS"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[
#include <stdlib.h>
#include <iconv.h>
]],
[[
iconv_t ic;
size_t count;
count = iconv(ic, NULL, NULL, NULL, NULL);
]])],
[have_iconv="yes"],
[
have_iconv="no"
LIBS=${LIBS_save}
])
AC_MSG_RESULT([${have_iconv}])
fi
if test "x${have_iconv}" = "xno" ; then
AC_MSG_CHECKING([whether iconv() is in libiconv_plug.a])
LIBS_save="${LIBS}"
LIBS="-liconv_plug $LIBS"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[
#include <stdlib.h>
#include <iconv.h>
]],
[[
iconv_t ic;
size_t count = iconv(ic, NULL, NULL, NULL, NULL);
]])],
[have_iconv="yes"],
[
have_iconv="no"
LIBS=${LIBS_save}
])
AC_MSG_RESULT([${have_iconv}])
fi
if test "x${have_iconv}" = "xyes" ; then
AC_DEFINE([HAVE_ICONV], [1], [Set to 1 if iconv library is installed])
fi
fi
PKG_CHECK_MODULES(XCB, xcb xcb-shm xcb-icccm xcb-image xcb-keysyms pixman-1,
[ have_ecore_x_xcb="yes"
requirements_ecore_x="xcb xcb-icccm xcb-image xcb-keysyms pixman-1 ${requirements_ecore_x}" ],
requirements_ecore_x="xcb xcb-shm xcb-icccm xcb-image xcb-keysyms pixman-1 ${requirements_ecore_x}" ],
[ have_ecore_x_xcb="no" ])
if test "x$have_ecore_x_xcb" = "xyes" ; then
@ -700,9 +810,9 @@ if test "x$want_ecore_x_xcb" = "xyes" ; then
fi
if test "x$want_ecore_x_render" != "xno"; then
PKG_CHECK_MODULES(XCB_RENDER, xcb-render,
PKG_CHECK_MODULES(XCB_RENDER, xcb-render xcb-renderutil,
[ have_ecore_x_xcb_render="yes"
requirements_ecore_x="xcb-render ${requirements_ecore_x}"
requirements_ecore_x="xcb-render xcb-renderutil ${requirements_ecore_x}"
AC_DEFINE(ECORE_XCB_RENDER, 1, [Build support for XCB render]) ],
[ have_ecore_x_xcb_render="no" ])
else
@ -747,7 +857,7 @@ if test "x$want_ecore_x_xcb" = "xyes" ; then
PKG_CHECK_MODULES(XCB_XFIXES, xcb-xfixes,
[ have_ecore_x_xcb_xfixes="yes"
requirements_ecore_x="xcb-xfixes ${requirements_ecore_x}"
AC_DEFINE(ECORE_XCB_FIXES, 1, [Build support for XCB xfixes]) ],
AC_DEFINE(ECORE_XCB_XFIXES, 1, [Build support for XCB xfixes]) ],
[ have_ecore_x_xcb_xfixes="no" ])
else
have_ecore_x_xcb_xfixes="no"
@ -787,6 +897,41 @@ if test "x$want_ecore_x_xcb" = "xyes" ; then
AC_MSG_NOTICE("xtest extension explicitly disabled")
fi
# input extension disabled currently in xcb as xcb-input has some issues
want_ecore_x_input="no"
if test "x$want_ecore_x_input" != "xno"; then
PKG_CHECK_MODULES(XCB_XINPUT, xcb-xinput,
[ have_ecore_x_xcb_xinput="yes"
requirements_ecore_x="xcb-xinput ${requirements_ecore_x}"
AC_DEFINE(ECORE_XCB_XINPUT, 1, [Build support for XCB xinput]) ],
[ have_ecore_x_xcb_xinput="no" ])
else
have_ecore_x_xcb_xinput="no"
AC_MSG_NOTICE("xinput extension explicitly disabled")
fi
if test "x$want_ecore_x_cursor" != "xno"; then
PKG_CHECK_MODULES(XCB_CURSOR, xcb-render xcb-renderutil,
[ have_ecore_x_xcb_cursor="yes"
requirements_ecore_x="xcb-render xcb-renderutil ${requirements_ecore_x}"
AC_DEFINE(ECORE_XCB_CURSOR, 1, [Build support for XCB cursor]) ],
[ have_ecore_x_xcb_cursor="no" ])
else
have_ecore_x_xcb_cursor="no"
AC_MSG_NOTICE("cursor extension explicitly disabled")
fi
if test "x$want_ecore_x_dri" != "xno"; then
PKG_CHECK_MODULES(XCB_DRI, xcb-dri2,
[ have_ecore_x_xcb_dri="yes"
requirements_ecore_x="xcb-dri2 ${requirements_ecore_x}"
AC_DEFINE(ECORE_XCB_DRI, 1, [Build support for XCB dri/dri2]) ],
[ have_ecore_x_xcb_dri="no" ])
else
have_ecore_x_xcb_dri="no"
AC_MSG_NOTICE("dri extension explicitly disabled")
fi
AC_DEFINE(HAVE_ECORE_X_XCB, 1, [Defined to 1 if XCB is enabled.])
x_cflags=$XCB_CFLAGS
@ -1308,6 +1453,30 @@ ECORE_EVAS_CHECK_MODULE([opengl-x11],
[OpenGL Xlib],
[${have_ecore_x_xlib}])
have_ecore_evas_opengl_xlib="no"
have_ecore_evas_opengl_xcb="no"
if test "x${have_ecore_evas_opengl_x11}" = "xyes" -o "x${have_ecore_evas_opengl_x11}" = "xstatic" ; then
have_ecore_evas_opengl_xlib=`${PKG_CONFIG} --variable=Xlib evas-opengl-x11`
if test "x${have_ecore_evas_opengl_xlib}" = "xyes" -a "x${have_ecore_x}" = "xyes" ; then
AC_DEFINE(BUILD_ECORE_EVAS_OPENGL_XLIB, 1, [OpenGL Xlib rendering backend])
fi
# opengl does not work with xcb (yet)
have_ecore_evas_opengl_xcb=`${PKG_CONFIG} --variable=XCB evas-opengl-x11`
if test "x${have_ecore_evas_opengl_xcb}" = "xyes" -a "x${have_ecore_x}" = "xyes" ; then
PKG_CHECK_MODULES(XCB_X11, x11-xcb,
[ have_ecore_x_opengl_xcb="yes"
requirements_ecore_x="x11-xcb ${requirements_ecore_x}"
AC_DEFINE(BUILD_ECORE_X_OPENGL_XCB, 1, [Build support for XCB-based OpenGL])
AC_DEFINE(BUILD_ECORE_EVAS_OPENGL_XCB, 1, [OpenGL XCB rendering backend])
],
[ have_ecore_x_opengl_xcb="no" ])
else
have_ecore_x_opengl_xcb="no"
AC_MSG_NOTICE("XCB-based OpenGL explicitly disabled")
fi
fi
# ecore_evas_software_x11 16 bits
ECORE_EVAS_CHECK_MODULE([software-16-x11],
@ -1455,6 +1624,7 @@ doc/ecore.dox
doc/Makefile
doc/Doxyfile
src/Makefile
src/util/Makefile
src/bin/Makefile
src/lib/Makefile
src/lib/ecore/Makefile
@ -1600,7 +1770,11 @@ if test "x${have_ecore_evas}" = "xyes" ; then
else
echo " Software X11...............: $have_ecore_evas_software_x11"
fi
echo " OpenGL X11.................: $have_ecore_evas_opengl_x11"
if test "x${have_ecore_evas_opengl_x11}" = "xyes" ; then
echo " OpenGL X11.................: $have_ecore_evas_opengl_x11 (Xlib=${have_ecore_evas_opengl_xlib}) (XCB=${have_ecore_evas_opengl_xcb})"
else
echo " OpenGL X11.................: $have_ecore_evas_opengl_x11"
fi
echo " Software GDI...............: $have_ecore_evas_software_gdi"
echo " Software DirectDraw........: $have_ecore_evas_software_ddraw"
echo " Direct3D...................: $have_ecore_evas_direct3d"