On Tue, 8 Jan 2013 16:49:52 -0200 Gustavo Sverzut Barbieri <barbi...@profusion.mobi> wrote:
> On Mon, Jan 7, 2013 at 8:53 PM, Joel Klinghed <the...@spawned.biz> > wrote: > > > On Mon, 7 Jan 2013 20:39:26 -0200 > > Gustavo Sverzut Barbieri <barbi...@profusion.mobi> wrote: > > > > > Hi Joel, > > > > > > This looks fine, one last question: why are these needed? > > > > > > =================================================================== > > > --- src/Makefile_Ecore_Evas.am (revision 82364) > > > +++ src/Makefile_Ecore_Evas.am (working copy) > > > @@ -74,7 +74,8 @@ > > > -I$(top_srcdir)/src/lib/ecore_x \ > > > -I$(top_builddir)/src/lib/ecore_x \ > > > -I$(top_srcdir)/src/modules/evas/engines/software_x11 \ > > > --I$(top_srcdir)/src/modules/evas/engines/gl_x11 > > > +-I$(top_srcdir)/src/modules/evas/engines/gl_x11 \ > > > +@ECORE_X_CFLAGS@ > > > modules_ecore_evas_engines_x_module_la_LIBADD = \ > > > lib/ecore_evas/libecore_evas.la \ > > > lib/ecore_x/libecore_x.la > > > > Without this I get: > > > > In file included from > > modules/ecore_evas/engines/x/ecore_evas_x.c:22: > > ../src/modules/evas/engines/gl_x11/Evas_Engine_GL_X11.h:4:10: > > fatal error: 'X11/Xlib.h' file not found > > > > I assume this is the one you found. > > > > ok, this was fixed today by raster. You can drop this from your > patch :-) > > > > Index: src/Makefile_Ecore_Imf.am > > > =================================================================== > > > --- src/Makefile_Ecore_Imf.am (revision 82364) > > > +++ src/Makefile_Ecore_Imf.am (working copy) > > > @@ -155,7 +155,8 @@ > > > -I$(top_builddir)/src/lib/ecore_x \ > > > -I$(top_srcdir)/src/lib/ecore_imf \ > > > @ECORE_IMF_CFLAGS@ \ > > > -@EFL_COV_CFLAGS@ > > > +@EFL_COV_CFLAGS@ \ > > > +@ECORE_X_CFLAGS@ > > > modules_ecore_immodules_xim_xim_la_LIBADD = \ > > > lib/ecore_imf/libecore_imf.la \ > > > lib/ecore_x/libecore_x.la \ > > > > Without this I get: > > modules/ecore/immodules/xim/ecore_imf_xim.c:10:10: fatal error: > > 'X11/Xlib.h' file not found > > > > this is really needed, but we shouldn't use ECORE_X_CFLAGS. > > Rather we need to find out XIM requirements and do another > CFLAGS/LIBS pair. > > >From what it seems to be: > #include <X11/Xlib.h> > #include <X11/Xlocale.h> > #include <X11/Xutil.h> > > The symbols seems to be all in libX11.so > > Would you do this? > > If I'm not asking enough, a last desire would be: could you please add > support for Xlib .pc files? :-) > Damn you for getting me to do this ;) Changelog from the last patch: * Removed ECORE_X_CFLAGS from evas_ecore_x * Split out ecore_imf_xim to do its own check * Fixed problem with xcb:s makekeys, no rule for $(top_builddir)/src/utils/ecore/makekeys$(EXEEXT) exists so make used an implicit rule (ignoring any cflags of course) * Fixed gl_x11 engine to build with either Xlib or XCB (xcb flags were missing) * Added EFL_FIND_X and replace any used of AC_PATH_X{,TRA}. First looks for Xorg pkg-config files then if those arn't found it falls back to old AC_PATH_X. Also generalized common header and lib checks. Could probably use some polishing (the AC_CACHE_VAL cruft especially) but this is what I have time for tonight. /Joel Klinghed
Index: m4/evas_check_engine.m4 =================================================================== --- m4/evas_check_engine.m4 (revision 82421) +++ m4/evas_check_engine.m4 (working copy) @@ -4,44 +4,16 @@ AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_XLIB], [ -have_dep="no" -evas_engine_[]$1[]_cflags="" -evas_engine_[]$1[]_libs="" - -AC_PATH_X -AC_PATH_XTRA - -AC_CHECK_HEADER([X11/X.h], [have_dep="yes"]) - -if test "x${have_dep}" = "xyes" ; then - AC_CHECK_LIB([X11], [XCreateImage], [have_dep="yes"], [have_dep="no"]) -fi - -if test "x${have_dep}" = "xyes" ; then - AC_CHECK_LIB([Xext], [XShmCreateImage], [have_dep="yes"], [have_dep="no"]) -fi - -if test "x${have_dep}" = "xyes" ; then - if test "x$2" = "xyes" ; then - x_libs="${x_libs} -lX11 -lXext" - else - x_dir=${x_dir:-/usr/X11R6} - x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}} - x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext" - fi - evas_engine_[]$1[]_cflags="${x_cflags}" - evas_engine_[]$1[]_libs="${x_libs}" -fi - -if test "x$3" = "xstatic" && test "x${have_dep}" = "xyes" ; then - requirements_libs_evas="${evas_engine_[]$1[]_libs} ${requirements_libs_evas}" -fi - -AC_SUBST([evas_engine_$1_cflags]) -AC_SUBST([evas_engine_$1_libs]) - -AS_IF([test "x${have_dep}" = "xyes"], [$4], [$5]) - +EFL_FIND_X(evas_engine_[]$1, + [X11/X.h], [X11 XCreateImage Xext XShmCreateImage], + [ + if test "x$3" = "xstatic"; then + requirements_libs_evas="$evas_engine_[]$1[]_libs $requirements_libs_evas" + fi + ifelse([$4], , :, [$4]) + ],[ + ifelse([$5], , :, [$5]) + ]) ]) dnl use: EVAS_CHECK_ENGINE_DEP_GL_XLIB(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) @@ -49,16 +21,19 @@ AC_DEFUN([EVAS_CHECK_ENGINE_DEP_GL_XLIB], [ -evas_engine_[]$1[]_cflags="" -evas_engine_[]$1[]_libs="" +EFL_FIND_X(evas_engine_[]$1, + [X11/Xlib.h X11/Xatom.h X11/Xutil.h X11/extensions/Xrender.h X11/Xresource.h], + [X11 XCreateColormap Xrender XRenderCreatePicture], + [ + CFLAGS_save="$CFLAGS" + CFLAGS="$evas_engine_[]$1[]_cflags $CFLAGS" + CPPFLAGS_save="$CPPFLAGS" + CPPFLAGS="$evas_engine_[]$1[]_cflags $CPPFLAGS" -AC_PATH_X -AC_PATH_XTRA - -AC_CHECK_HEADER([GL/gl.h], - [have_dep="yes"], - [have_dep="no"], - [ + AC_CHECK_HEADER([GL/gl.h], + [have_dep="yes"], + [have_dep="no"], + [ #include <GL/gl.h> #include <GL/glext.h> #include <GL/glx.h> @@ -67,72 +42,52 @@ #include <X11/Xutil.h> #include <X11/extensions/Xrender.h> #include <X11/Xresource.h> - ]) + ]) -gl_pt_lib=""; -have_gl_pt="no" + gl_pt_lib="" + have_gl_pt="no" -AC_MSG_CHECKING([whether pthread_create() is supported]) -CFLAGS_save="${CFLAGS}" -CFLAGS="${CFLAGS} -pthread" -LIBS_save="${LIBS}" -LIBS="${LIBS} -pthread" -AC_LINK_IFELSE( - [AC_LANG_PROGRAM([[ + AC_MSG_CHECKING([whether pthread_create() is supported]) + CFLAGS_pt_save="$CFLAGS" + CFLAGS="$CFLAGS -pthread" + LIBS_pt_save="$LIBS" + LIBS="$LIBS -pthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[ #include <pthread.h> - ]], - [[ + ]], + [[ pthread_create(NULL, NULL, NULL, NULL); - ]])], - [have_gl_pt="yes"], - [have_gl_pt="no"]) -CFLAGS=${CFLAGS_save} -LIBS=${LIBS_save} -AC_MSG_RESULT([${have_gl_pt}]) + ]])], + [have_gl_pt="yes"], + [have_gl_pt="no"]) + CFLAGS=$CFLAGS_pt_save + LIBS=$LIBS_pt_save + AC_MSG_RESULT([$have_gl_pt]) -if test "x$have_gl_pt" = "xyes" ; then - gl_pt_lib=" -pthread" -fi + if test "x$have_gl_pt" = "xyes" ; then + gl_pt_lib=" -pthread" + fi -if test "x${have_dep}" = "xyes" ; then - AC_CHECK_LIB([X11], [XCreateColormap], [have_dep="yes"], [have_dep="no"]) -fi + if test "x$have_dep" = "xyes"; then + LIBS_save="$LIBS" + LIBS="$LIBS $evas_engine_[]$1[]_libs" + AC_CHECK_LIB([GL], [glXCreateContext], [have_dep="yes"], [have_dep="no"], [-lm $gl_pt_lib]) + LIBS="$LIBS_save" + fi -if test "x${have_dep}" = "xyes" ; then - AC_CHECK_LIB([Xrender], [XRenderCreatePicture], [have_dep="yes"], [have_dep="no"]) -fi + if test "x${gl_flavor_gles}" = "xyes" ; then + have_dep=no + fi -if test "x${have_dep}" = "xyes" ; then - AC_CHECK_LIB([GL], [glXCreateContext], [have_dep="yes"], [have_dep="no"], [-lX11 -lXext -lXrender -lm $gl_pt_lib]) -fi - -if test "x${gl_flavor_gles}" = "xyes" ; then - have_dep=no -fi - -if test "x${have_dep}" = "xyes" ; then - if test "x$2" = "xyes" ; then - x_libs="${x_libs} -lX11 -lXext -lXrender" - else - x_dir=${x_dir:-/usr/X11R6} - x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}} - x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext -lXrender" - fi - evas_engine_[]$1[]_cflags="-I/usr/include ${x_cflags}" - evas_engine_[]$1[]_libs="${x_libs} -lGL $gl_pt_lib" - evas_engine_gl_common_libs="-lGL $gl_pt_lib" -else - if test "x$2" = "xyes" ; then - x_libs="${x_libs} -lX11 -lXext -lXrender" - else - x_dir=${x_dir:-/usr/X11R6} - x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}} - x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext -lXrender" - fi - AC_CHECK_HEADER([GLES2/gl2.h], - [have_egl="yes"], - [have_egl="no"], - [ + if test "x$have_dep" = "xyes" ; then + evas_engine_[]$1[]_libs="$evas_engine_[]$1[]_libs -lGL $gl_pt_lib" + evas_engine_gl_common_libs="$evas_engine_[]$1[]_libdirs -lGL $gl_pt_lib" + else + AC_CHECK_HEADER([GLES2/gl2.h], + [have_egl="yes"], + [have_egl="no"], + [ #include <GLES2/gl2.h> #include <GLES2/gl2ext.h> #include <EGL/egl.h> @@ -141,29 +96,30 @@ #include <X11/Xutil.h> #include <X11/extensions/Xrender.h> #include <X11/Xresource.h> - ]) - if test "x${have_egl}" = "xyes" ; then - AC_CHECK_LIB(GLESv2, glTexImage2D, [have_glesv2="yes"], , -lEGL ${x_libs} -lm $gl_pt_lib) - if test "x${have_glesv2}" = "xyes" ; then - evas_engine_[]$1[]_cflags="${x_cflags}" - evas_engine_[]$1[]_libs="${x_libs} -lGLESv2 -lEGL -lm $gl_pt_lib" - evas_engine_gl_common_libs="-lGLESv2 -lm $gl_pt_lib" - have_dep="yes" - AC_DEFINE(GL_GLES, 1, [GLSL runtime shader GLES2 support]) - gles_variety_sgx="yes" + ]) + if test "x${have_egl}" = "xyes" ; then + AC_CHECK_LIB(GLESv2, glTexImage2D, [have_glesv2="yes"], , -lEGL -lm $gl_pt_lib) + if test "x${have_glesv2}" = "xyes" ; then + evas_engine_[]$1[]_libs="$evas_engine_[]$1[]_libs -lGLESv2 -lEGL -lm $gl_pt_lib" + evas_engine_gl_common_libs="$evas_engine_[]$1[]_libdirs -lGLESv2 -lm $gl_pt_lib" + have_dep="yes" + AC_DEFINE(GL_GLES, 1, [GLSL runtime shader GLES2 support]) + gles_variety_sgx="yes" + fi fi - fi -fi + fi -if test "x$3" = "xstatic" && test "x${have_dep}" = "xyes" ; then - requirements_libs_evas="${evas_engine_[]$1[]_libs} ${requirements_libs_evas}" -fi + CPPFLAGS="$CPPFLAGS_save" + CFLAGS="$CFLAGS_save" -AC_SUBST([evas_engine_$1_cflags]) -AC_SUBST([evas_engine_$1_libs]) + if test "x$3" = "xstatic" && test "x${have_dep}" = "xyes" ; then + requirements_libs_evas="$evas_engine_[]$1[]_libs $requirements_libs_evas" + fi -AS_IF([test "x${have_dep}" = "xyes"], [$4], [$5]) - + AS_IF([test "x${have_dep}" = "xyes"], [$4], [$5]) + ],[ + ifelse([$5], , :, [$5]) + ]) ]) dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_XCB(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) @@ -208,133 +164,120 @@ [ requirement="" -have_dep="no" -evas_engine_[]$1[]_cflags="" -evas_engine_[]$1[]_libs="" -AC_PATH_X -AC_PATH_XTRA - -AC_CHECK_HEADER([GL/gl.h], - [have_dep="yes"], - [have_dep="no"], - [ +EFL_FIND_X(evas_engine_[]$1, [GL/gl.h], + [X11 XCreateColormap Xrender XRenderCreatePicture], + [ + CFLAGS_save="$CFLAGS" + CFLAGS="$CFLAGS $evas_engine_[]$1[]_cflags" + CPPFLAGS_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $evas_engine_[]$1[]_cflags" + AC_CHECK_HEADER([GL/glext.h], + [have_dep="yes"], + [have_dep="no"], + [ #include <GL/gl.h> #include <GL/glext.h> #include <GL/glx.h> - ]) + ]) + CPPFLAGS=$CPPFLAGS_save + CFLAGS=$CFLAGS_save -gl_pt_lib=""; -have_gl_pt="no" + gl_pt_lib=""; + have_gl_pt="no" -AC_MSG_CHECKING([whether pthread_create() is supported]) -CFLAGS_save="${CFLAGS}" -CFLAGS="${CFLAGS} -pthread" -LIBS_save="${LIBS}" -LIBS="${LIBS} -pthread" -AC_LINK_IFELSE( - [AC_LANG_PROGRAM([[ + AC_MSG_CHECKING([whether pthread_create() is supported]) + CFLAGS_save="${CFLAGS}" + CFLAGS="${CFLAGS} -pthread" + LIBS_save="${LIBS}" + LIBS="${LIBS} -pthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[ #include <pthread.h> - ]], - [[ + ]], + [[ pthread_create(NULL, NULL, NULL, NULL); - ]])], - [have_gl_pt="yes"], - [have_gl_pt="no"]) -CFLAGS=${CFLAGS_save} -LIBS=${LIBS_save} -AC_MSG_RESULT([${have_gl_pt}]) + ]])], + [have_gl_pt="yes"], + [have_gl_pt="no"]) + CFLAGS=${CFLAGS_save} + LIBS=${LIBS_save} + AC_MSG_RESULT([${have_gl_pt}]) -if test "x$have_gl_pt" = "xyes" ; then - gl_pt_lib=" -pthread" -fi + if test "x$have_gl_pt" = "xyes" ; then + gl_pt_lib=" -pthread" + fi -if test "x${have_dep}" = "xyes" ; then - AC_CHECK_LIB([X11], [XCreateColormap], [have_dep="yes"], [have_dep="no"]) -fi + if test "x$have_dep" = "xyes" ; then + LIBS_save="$LIBS" + LIBS="$LIBS $evas_engine_[]$1[]_libs" + AC_CHECK_LIB([GL], [glXCreateContext], [have_dep="yes"], [have_dep="no"], [-lm $gl_pt_lib]) + LIBS="$LIBS_save" + fi + ],[ + have_dep=no + ]) -if test "x${have_dep}" = "xyes" ; then - AC_CHECK_LIB([Xrender], [XRenderCreatePicture], [have_dep="yes"], [have_dep="no"]) -fi - -if test "x${have_dep}" = "xyes" ; then - AC_CHECK_LIB([GL], [glXCreateContext], [have_dep="yes"], [have_dep="no"], -lX11 -lXext -lXrender -lm $gl_pt_lib) -fi - PKG_CHECK_EXISTS([x11-xcb xcb xcb-glx xcb-render xcb-renderutil], - [ + [ have_dep="yes" requirement="x11-xcb xcb xcb-glx xcb-render xcb-renderutil" - ], - [have_dep="no"]) + ], + [have_dep="no"]) if test "x${have_dep}" = "xyes" ; then - if test "x$3" = "xstatic" ; then - requirements_pc_evas="${requirement} ${requirements_pc_evas}" - requirements_pc_deps_evas="${requirement} ${requirements_pc_deps_evas}" - else - PKG_CHECK_MODULES([XCB_GL], [${requirement}]) - evas_engine_[]$1[]_cflags="${XCB_CFLAGS}" - evas_engine_[]$1[]_libs="${XCB_LIBS}" - fi + if test "x$3" = "xstatic" ; then + requirements_pc_evas="${requirement} ${requirements_pc_evas}" + requirements_pc_deps_evas="${requirement} ${requirements_pc_deps_evas}" + else + PKG_CHECK_MODULES([XCB_GL], [${requirement}]) + fi fi -evas_engine_[]$1[]_cflags="${XCB_GL_CFLAGS}" -evas_engine_[]$1[]_libs="${XCB_GL_LIBS}" - if test "x$gl_flavor_gles" = "xyes" ; then have_dep=no fi if test "x${have_dep}" = "xyes" ; then - if test "x$2" = "xyes" ; then - x_libs="${x_libs} -lX11 -lXext -lXrender" - else - x_dir=${x_dir:-/usr/X11R6} - x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}} - x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext -lXrender" - fi - evas_engine_[]$1[]_cflags="-I/usr/include ${XCB_GL_CFLAGS} ${x_cflags}" - evas_engine_[]$1[]_libs="${XCB_GL_LIBS} ${x_libs} -lGL $gl_pt_lib" - evas_engine_gl_common_libs="-lGL $gl_pt_lib" + evas_engine_[]$1[]_cflags="$evas_engine_[]$1[]_cflags $XCB_GL_CFLAGS" + evas_engine_[]$1[]_libs="$evas_engine_[]$1[]_libs $XCB_GL_LIBS -lGL $gl_pt_lib" + evas_engine_gl_common_libs="$evas_engine_[]$1[]_libdirs -lGL $gl_pt_lib" else - if test "x$2" = "xyes" ; then - x_libs="${x_libs} -lX11 -lXext -lXrender" - else - x_dir=${x_dir:-/usr/X11R6} - x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}} - x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext -lXrender" - fi - AC_CHECK_HEADER([GLES2/gl2.h], - [have_egl="yes"], - [have_egl="no"], - [ + CFLAGS_save="$CFLAGS" + CFLAGS="$CFLAGS $evas_engine_[]$1[]_cflags" + CPPFLAGS_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $evas_engine_[]$1[]_cflags" + AC_CHECK_HEADER([GLES2/gl2.h], + [have_egl="yes"], + [have_egl="no"], + [ #include <GLES2/gl2.h> #include <GLES2/gl2ext.h> #include <EGL/egl.h> - ]) - if test "x${have_egl}" = "xyes" ; then - AC_CHECK_LIB(GLESv2, glTexImage2D, [have_glesv2="yes"], , -lEGL ${x_libs} -lm $gl_pt_lib) - if test "x${have_glesv2}" = "xyes" ; then - evas_engine_[]$1[]_cflags="${XCB_GL_CFLAGS} ${x_cflags}" - evas_engine_[]$1[]_libs="${XCB_GL_LIBS} ${x_libs} -lGLESv2 -lEGL -lm $gl_pt_lib" - evas_engine_gl_common_libs="-lGLESv2 -lm $gl_pt_lib" - have_dep="yes" - AC_DEFINE(GLES_VARIETY_SGX, 1, [Imagination SGX GLES2 support]) - gles_variety_sgx="yes" - fi - fi + ]) + CPPFLAGS=$CPPFLAGS_save + CFLAGS=$CFLAGS_save + if test "x${have_egl}" = "xyes" ; then + LIBS_save="$LIBS" + LIBS="$LIBS $evas_engine_[]$1[]_libs" + AC_CHECK_LIB(GLESv2, glTexImage2D, [have_glesv2="yes"], , -lEGL -lm $gl_pt_lib) + if test "x${have_glesv2}" = "xyes" ; then + evas_engine_[]$1[]_cflags="$evas_engine_[]$1[]_cflags $XCB_GL_CFLAGS" + evas_engine_[]$1[]_libs="$evas_engine_[]$1[]_libs $XCB_GL_LIBS -lGLESv2 -lEGL -lm $gl_pt_lib" + evas_engine_gl_common_libs="$evas_engine_[]$1[]_libdirs -lGLESv2 -lm $gl_pt_lib" + have_dep="yes" + AC_DEFINE(GLES_VARIETY_SGX, 1, [Imagination SGX GLES2 support]) + gles_variety_sgx="yes" + fi + fi fi if test "x$3" = "xstatic" && test "x${have_dep}" = "xyes" ; then - requirements_libs_evas="${evas_engine_[]$1[]_libs} ${requirements_libs_evas}" - requirements_pc_evas="${requirement} ${requirements_pc_evas}" - requirements_pc_deps_evas="${requirement} ${requirements_pc_deps_evas}" + requirements_libs_evas="${evas_engine_[]$1[]_libs} ${requirements_libs_evas}" + requirements_pc_evas="${requirement} ${requirements_pc_evas}" + requirements_pc_deps_evas="${requirement} ${requirements_pc_deps_evas}" fi -AC_SUBST([evas_engine_$1_cflags]) -AC_SUBST([evas_engine_$1_libs]) - AS_IF([test "x${have_dep}" = "xyes"], [$4], [$5]) ]) Index: m4/ecore_check_c_extension.m4 =================================================================== --- m4/ecore_check_c_extension.m4 (revision 82421) +++ m4/ecore_check_c_extension.m4 (working copy) @@ -4,13 +4,15 @@ pushdef([UP], translit([$1], [a-z], [A-Z]))dnl SAVE_CFLAGS=$CFLAGS - CFLAGS="$x_cflags ${x_includes:+-I${x_includes}}" + CFLAGS="$CFLAGS $ECORE_X_XLIB_cflags" AC_CHECK_HEADER(X11/extensions/$2, [ + SAVE_LIBS=$LIBS + LIBS="$LIBS $ECORE_X_XLIB_libs" AC_CHECK_LIB($3, $4, [AC_DEFINE(ECORE_[]UP, 1, [Build support for $1])], - [AC_MSG_ERROR([Missing support for X extension: $1])], - [$x_libs]) + [AC_MSG_ERROR([Missing support for X extension: $1])]) + LIBS=$SAVE_LIBS ], [AC_MSG_ERROR([Missing X11/extensions/$2])], [ #include <X11/Xlib.h> ] Index: m4/efl_find_x.m4 =================================================================== --- m4/efl_find_x.m4 (revision 0) +++ m4/efl_find_x.m4 (working copy) @@ -0,0 +1,193 @@ +# efl_find.x.m4 - Macros to locate X11. -*- Autoconf -*- +# EFL_FIND_X(VARIABLE-PREFIX, [headers = "X11/Xlib.h"], +# [libs-and-functions = "X11 XOpenDisplay"], +# [action-if-found], [action-if-not-found]) +# checks for X11 using, in order: +# 1) Xorg pkg-config files (using enviroment variables EFL_X11_CFLAGS +# and EFL_X11_LIBS if set, but only if x11.pc exists) +# 2) command line options: --x-includes=dir, --x-libraries=dir +# assume there is an X11 in the given directories +# 3) XMKMF environment variable if set +# 4) xmkmf executable if found +# 5) list of "standard" directories +# +# 2-5 is handled by A_PATH_X +# +# If a X11 is found, [action-if-success] is run and VARIABLE_cflags and +# VARIABLE_libs and VARIABLE_libdirs are defined and substituted. +# VARIABLE_libs will contain all of the libs listed in libs-and-functions. +# VARIABLE_libdirs will contain all -Lpath:s found in VARIABLE_libs +# +# headers is a list of headers to look for. libs-and-functions is a list of +# library and function pairs to look for. +# Each lib and function is checked in pairs, example: +# EFL_FIND_X([EVAS_X11], [X11/X.h], [X11 XCreateImage Xext XShmCreateImage]) +# will look for XCreateImage in X11 and XShmCreateImage in Xext and include +# both -lX11 and -lXext in VARIABLE_libs +# +# action-if-found is only called if X11, all headers, all libraries and +# all functions are found. +# You can call EFL_FIND_X multiple times with different lists of headers, libs +# and functions. + +AC_DEFUN([EFL_FIND_X], +[ + # Must print something as AC_CACHE_VAL writes (cached) if the value is cached + AC_MSG_CHECKING([how to find X]) + efl_x11_need_result=1 + AC_CACHE_VAL(efl_cv_x11_cache, + [ + # this is ugly and breaks that AC_CACHE_VAL may not have side effects + # but I can't think of a better way right now + efl_x11_need_result=0 + PKG_CHECK_EXISTS([x11], + [ + AC_MSG_RESULT([use pkg-config]) + PKG_CHECK_MODULES([EFL_X11],[x11], + [ + efl_cv_have_x11=yes + efl_cv_x11_pkgconf=yes + efl_cv_x11_cflags=$EFL_X11_CFLAGS + efl_cv_x11_libs_pre=$EFL_X11_LIBS + efl_cv_x11_libs_post= + ]) + ], + [ + AC_MSG_RESULT([use xmkmf]) + # Fallback to old AC_PATH_XTRA + AC_PATH_X + AC_PATH_XTRA + if test "$no_x" = yes; then + efl_cv_have_x11=no + else + efl_cv_have_x11=yes + efl_cv_x11_pkgconf=no + efl_cv_x11_cflags=$X_CFLAGS + efl_cv_x11_libs_pre="$X_PRE_LIBS $X_LIBS" + efl_cv_x11_libs_post=$X_EXTRA_LIBS + fi + ]) + # Record where we found X for the cache. + if test "x$efl_cv_have_x11" = "xno"; then + efl_cv_x11_cache="efl_cv_have_x11=no" + else + efl_cv_x11_cache="efl_cv_have_x11=yes\ + efl_cv_x11_pkgconf='$efl_cv_x11_pkgconf'\ + efl_cv_x11_cflags='$efl_cv_x11_cflags'\ + efl_cv_x11_libs_pre='$efl_cv_x11_libs_pre'\ + efl_cv_x11_libs_post='$efl_cv_x11_libs_post'" + fi + ]) + if test "x$efl_x11_need_result" = "x1"; then + AC_MSG_RESULT([already found]) + fi + eval "$efl_cv_x11_cache" + + if test "x$efl_cv_have_x11" = "xyes"; then + ELF_X11_CFLAGS_save="$CFLAGS" + ELF_X11_CPPFLAGS_save="$CPPFLAGS" + CFLAGS="$CFLAGS $efl_cv_x11_cflags" + CPPFLAGS="$CPPFLAGS $efl_cv_x11_cflags" + efl_x11_found_all=1 + for efl_x11_header in ifelse([$2], , "X11/Xlib.h", [$2]); do + AC_CHECK_HEADER([$efl_x11_header],,[ + efl_x11_found_all=0 + break]) + done + CPPFLAGS="$ELF_X11_CPPFLAGS_save" + CFLAGS="$ELF_X11_CFLAGS_save" + + if test "x$efl_x11_found_all" = "x1"; then + EFL_X11_LIBS_save="$LIBS" + if test "x$efl_cv_x11_pkgconf" = "xyes"; then + efl_x11_modules="x11" + efl_x11_lib="" + for efl_x11_lib_function in ifelse([$3], , "X11 XOpenDisplay", [$3]); do + if test -z "$efl_x11_lib"; then + efl_x11_lib="$efl_x11_lib_function" + case $efl_x11_lib in + X11) + ;; + Xss) + efl_x11_modules="$efl_x11_modules xscrnsaver" + ;; + *) + efl_x11_lib=`echo $efl_x11_lib | tr '[A-Z]' '[a-z]'` + efl_x11_modules="$efl_x11_modules $efl_x11_lib" + ;; + esac + else + efl_x11_lib= + fi + done + + PKG_CHECK_EXISTS([$efl_x11_modules], + [ + PKG_CHECK_MODULES([$1],[$efl_x11_modules], + [ + efl_x11_cflags=$[]$1[]_CFLAGS + efl_x11_libs=$[]$1[]_LIBS + + LIBS="$LIBS $[]$1[]_LIBS" + efl_x11_lib="" + for efl_x11_lib_function in ifelse([$3], , "X11 XOpenDisplay", [$3]); do + if test -z "$efl_x11_lib"; then + efl_x11_lib="$efl_x11_lib_function" + else + # This is a ugly way of using AC_CHECK_FUNC with different + # LIBS + eval "unset ac_cv_func_$efl_x11_lib_function" + AC_CHECK_FUNC([$efl_x11_lib_function],, + [ + efl_x11_found_all=0 + break]) + efl_x11_lib= + fi + done + ]) + ],[efl_x11_found_all=0]) + else + LIBS="$LIBS $efl_cv_x11_libs_pre" + efl_x11_libs="$efl_cv_x11_libs_pre" + efl_x11_lib="" + for efl_x11_lib_function in ifelse([$3], , "X11 XOpenDisplay", [$3]); do + if test -z "$efl_x11_lib"; then + efl_x11_lib="$efl_x11_lib_function" + else + AC_CHECK_LIB([$efl_x11_lib], [$efl_x11_lib_function],,[ + efl_x11_found_all=0 + break],["$efl_cv_x11_libs_post"]) + efl_x11_libs="$efl_x11_libs -l$efl_x11_lib" + efl_x11_lib= + fi + done + if test -n "$efl_cv_x11_libs_post"; then + efl_x11_libs="$efl_x11_libs $efl_cv_x11_libs_post" + fi + fi + LIBS="$EFL_X11_LIBS_save" + fi + fi + + if test "x$efl_x11_found_all" = "x1"; then + efl_x11_libdirs="" + for efl_x11_option in "$efl_x11_libs"; do + case $efl_x11_option in + -L*) + efl_x11_libdirs="$efl_x11_libdirs $efl_x11_option" + ;; + *) + ;; + esac + done + + AC_SUBST([$1][_cflags],[$efl_cv_x11_cflags]) + AC_SUBST([$1][_libs],[$efl_x11_libs]) + AC_SUBST([$1][_libdirs],[$efl_x11_libdirs]) + + ifelse([$4], , :, [$4]) + else + ifelse([$5], , :, [$5]) + fi +]) + Index: src/Makefile_Ecore_X.am =================================================================== --- src/Makefile_Ecore_X.am (revision 82421) +++ src/Makefile_Ecore_X.am (working copy) @@ -131,7 +131,7 @@ BUILT_SOURCES += \ $(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table.h -$(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table.h: $(KEYSYMDEFS) $(top_builddir)/src/utils/ecore/makekeys$(EXEEXT) +$(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table.h: $(KEYSYMDEFS) utils/ecore/makekeys$(EXEEXT) $(top_builddir)/src/utils/ecore/makekeys $(KEYSYMDEFS) > $(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table_h mv -f $(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table_h $(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table.h endif @@ -141,6 +141,7 @@ noinst_PROGRAMS += utils/ecore/makekeys utils_ecore_makekeys_SOURCES = utils/ecore/makekeys.c +utils_ecore_makekeys_CFLAGS = @ECORE_X_CFLAGS@ endif EXTRA_DIST += utils/ecore/mkks.sh Index: src/Makefile_Ecore_Imf.am =================================================================== --- src/Makefile_Ecore_Imf.am (revision 82421) +++ src/Makefile_Ecore_Imf.am (working copy) @@ -159,6 +159,7 @@ -I$(top_builddir)/src/lib/ecore_x \ -I$(top_srcdir)/src/lib/ecore_imf \ @ECORE_IMF_CFLAGS@ \ +@ecore_imf_xim_cflags@ \ @EFL_COV_CFLAGS@ modules_ecore_immodules_xim_xim_la_LIBADD = \ lib/ecore_imf/libecore_imf.la \ @@ -166,6 +167,7 @@ lib/ecore/libecore.la \ lib/eo/libeo.la \ lib/eina/libeina.la \ +@ecore_imf_xim_libs@ \ @EFL_COV_LIBS@ modules_ecore_immodules_xim_xim_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@ modules_ecore_immodules_xim_xim_la_LIBTOOLFLAGS = --tag=disable-static Index: src/Makefile_Evas.am =================================================================== --- src/Makefile_Evas.am (revision 82421) +++ src/Makefile_Evas.am (working copy) @@ -553,6 +553,9 @@ -I$(top_srcdir)/src/lib/evas/cserve2 \ -DEFL_EVAS_BUILD \ @EVAS_CFLAGS@ +if BUILD_ENGINE_GL_X11 +modules_evas_engines_gl_common_libevas_engine_gl_common_la_CPPFLAGS += @evas_engine_gl_xlib_cflags@ @evas_engine_gl_xcb_cflags@ +endif modules_evas_engines_gl_common_libevas_engine_gl_common_la_LIBADD = \ lib/eet/libeet.la \ lib/evas/libevas.la @@ -653,9 +656,9 @@ lib_evas_libevas_la_SOURCES += $(GL_X11_SOURCES) lib_evas_libevas_la_CPPFLAGS += \ -I$(top_srcdir)/src/modules/evas/engines/gl_common \ -@evas_engine_gl_xlib_cflags@ +@evas_engine_gl_xlib_cflags@ @evas_engine_gl_xcb_cflags@ lib_evas_libevas_la_LIBADD += \ -@evas_engine_gl_xlib_libs@ +@evas_engine_gl_xlib_libs@ @evas_engine_gl_xcb_libs@ else engineglx11pkgdir = $(libdir)/evas/modules/engines/gl_x11/$(MODULE_ARCH) engineglx11pkg_LTLIBRARIES = modules/evas/engines/gl_x11/module.la @@ -670,6 +673,7 @@ -I$(top_srcdir)/src/lib/evas/cserve2 \ -I$(top_srcdir)/src/modules/evas/engines/gl_common \ @evas_engine_gl_xlib_cflags@ \ +@evas_engine_gl_xcb_cflags@ \ @EVAS_CFLAGS@ modules_evas_engines_gl_x11_module_la_LIBADD = if ! EVAS_STATIC_BUILD_GL_COMMON @@ -679,7 +683,8 @@ modules_evas_engines_gl_x11_module_la_LIBADD += \ lib/eet/libeet.la \ lib/evas/libevas.la \ -@evas_engine_gl_xlib_libs@ +@evas_engine_gl_xlib_libs@ \ +@evas_engine_gl_xcb_libs@ modules_evas_engines_gl_x11_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@ modules_evas_engines_gl_x11_module_la_LIBTOOLFLAGS = --tag=disable-static endif Index: configure.ac =================================================================== --- configure.ac (revision 82421) +++ configure.ac (working copy) @@ -2595,9 +2595,6 @@ EFL_INTERNAL_DEPEND_PKG([ECORE_X], [eina]) ## Xlib -if test "x${want_x11_xlib}" = "xyes" ; then - AC_PATH_XTRA -fi ## XCB @@ -2643,21 +2640,6 @@ fi ## Xlib -use_Xcursor="no" -if test "x${want_x11_xlib}" = "xyes" ; then - CFLAGS_save="${CFLAGS}" - CFLAGS="$x_cflags $x_includes" - AC_CHECK_HEADER([X11/Xcursor/Xcursor.h], - [use_Xcursor="yes"], - [use_Xcursor="no"], - [#include <X11/Xlib.h>]) - CFLAGS="$CFLAGS_save" - - if test "${use_Xcursor}" = "no"; then - AC_MSG_ERROR([Xcursor is missing]) - fi -fi - if test "x${want_x11_xcb}" = "xyes" ; then KEYSYMDEFDIR=`$PKG_CONFIG --variable=includedir xproto`/X11 FILES="keysymdef.h XF86keysym.h Sunkeysym.h DECkeysym.h HPkeysym.h" @@ -2685,17 +2667,17 @@ ## Xlib if test "x${want_x11_xlib}" = "xyes"; then - AC_CHECK_LIB([Xcursor], - [XcursorImageLoadCursor], - [ + EFL_FIND_X(ECORE_X_XLIB, + [X11/Xlib.h X11/Xcursor/Xcursor.h], + [X11 XOpenDisplay Xcursor XcursorImageLoadCursor], + [ use_Xcursor="yes" AC_DEFINE([ECORE_XCURSOR], 1, [Build support for Xcursor]) - Xcursor_libs="-lXcursor" - ], - [use_Xcursor="no"], - [$x_libs -lXrender]) - EFL_ADD_LIBS([ECORE_X], [${Xcursor_libs}]) - EFL_ADD_CFLAGS([ECORE_X], [$x_cflags $x_includes]) + EFL_ADD_LIBS([ECORE_X], [$ECORE_X_XLIB_libs]) + EFL_ADD_CFLAGS([ECORE_X], [$ECORE_X_XLIB_cflags]) + ],[ + AC_MSG_ERROR([Xcursor is missing]) + ]) fi if test "x${want_x11_xlib}" = "xyes" ; then @@ -2848,8 +2830,14 @@ have_ecore_imf_xim="no" if test "x${want_xim}" = "xyes" && test "x${want_ecore_imf_xim}" = "xyes" ; then - have_ecore_imf_xim="yes" - AC_DEFINE([ENABLE_XIM], [1], [Enable X Input Method]) + + EFL_FIND_X(ecore_imf_xim, + [X11/Xlib.h], + [X11 XOpenIM], + [ + have_ecore_imf_xim=yes + AC_DEFINE([ENABLE_XIM], [1], [Enable X Input Method]) + ]) fi AM_CONDITIONAL([BUILD_ECORE_IMF_XIM], [test "x${have_ecore_imf_xim}" = "xyes"])
------------------------------------------------------------------------------ Master Java SE, Java EE, Eclipse, Spring, Hibernate, JavaScript, jQuery and much more. Keep your Java skills current with LearnJavaNow - 200+ hours of step-by-step video tutorials by Java experts. SALE $49.99 this month only -- learn more at: http://p.sf.net/sfu/learnmore_122612
_______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel