Don't disable wxGraphicsContext if Cairo not available under Mac

This breaks Mac build by default and shouldn't be done. In fact, Cairo
should be used only optionally under MSW and Mac, where it's not always
needed, so add a new configure option to request it.
This commit is contained in:
Vadim Zeitlin
2019-11-17 23:49:21 +01:00
parent bdee154c96
commit 91dc325ca9
2 changed files with 167 additions and 98 deletions

189
configure vendored
View File

@@ -1089,6 +1089,7 @@ with_gnomevfs
with_libnotify with_libnotify
with_opengl with_opengl
with_xtest with_xtest
with_cairo
with_dmalloc with_dmalloc
with_sdl with_sdl
with_regex with_regex
@@ -2341,6 +2342,7 @@ Optional Packages:
--with-libnotify use libnotify for notifications --with-libnotify use libnotify for notifications
--with-opengl use OpenGL (or Mesa) --with-opengl use OpenGL (or Mesa)
--with-xtest use XTest extension --with-xtest use XTest extension
--with-cairo use Cairo-based wxGraphicsContext implementation
--with-dmalloc use dmalloc library (http://dmalloc.com/) --with-dmalloc use dmalloc library (http://dmalloc.com/)
--with-sdl use SDL for audio on Unix --with-sdl use SDL for audio on Unix
--with-regex enable support for wxRegEx class --with-regex enable support for wxRegEx class
@@ -4061,6 +4063,7 @@ DEFAULT_wxUSE_DMALLOC=no
DEFAULT_wxUSE_LIBGNOMEVFS=no DEFAULT_wxUSE_LIBGNOMEVFS=no
DEFAULT_wxUSE_LIBMSPACK=no DEFAULT_wxUSE_LIBMSPACK=no
DEFAULT_wxUSE_LIBSDL=no DEFAULT_wxUSE_LIBSDL=no
DEFAULT_wxUSE_CAIRO=no
DEFAULT_wxUSE_ACCESSIBILITY=no DEFAULT_wxUSE_ACCESSIBILITY=no
DEFAULT_wxUSE_IPV6=no DEFAULT_wxUSE_IPV6=no
@@ -5046,6 +5049,42 @@ fi
eval "$wx_cv_use_xtest" eval "$wx_cv_use_xtest"
if test "$wxUSE_GTK" = 1 -o "$wxUSE_QT" = 1 -o "$wxUSE_X11" = 1; then
wx_needs_cairo_for_gc=1
fi
if test "$wx_needs_cairo_for_gc" != 1; then
withstring=
defaultval=$wxUSE_ALL_FEATURES
if test -z "$defaultval"; then
if test x"$withstring" = xwithout; then
defaultval=yes
else
defaultval=no
fi
fi
# Check whether --with-cairo was given.
if test "${with_cairo+set}" = set; then :
withval=$with_cairo;
if test "$withval" = yes; then
wx_cv_use_cairo='wxUSE_CAIRO=yes'
else
wx_cv_use_cairo='wxUSE_CAIRO=no'
fi
else
wx_cv_use_cairo='wxUSE_CAIRO=${'DEFAULT_wxUSE_CAIRO":-$defaultval}"
fi
eval "$wx_cv_use_cairo"
fi
fi fi
@@ -36890,60 +36929,11 @@ if test "$wxUSE_MAC" = 1; then
wxUSE_GRAPHICS_CONTEXT="yes" wxUSE_GRAPHICS_CONTEXT="yes"
fi fi
if test "$wxUSE_GRAPHICS_CONTEXT" = "yes"; then if test "$wx_needs_cairo_for_gc" = 1 -a "$wxUSE_GRAPHICS_CONTEXT" = "yes"; then
wx_has_graphics=0 wx_needs_cairo=1
if test "$wxUSE_MSW" = 1; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if GDI+ is available" >&5
$as_echo_n "checking if GDI+ is available... " >&6; }
if ${wx_cv_lib_gdiplus+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <windows.h>
#include <gdiplus.h>
int
main ()
{
using namespace Gdiplus;
;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
wx_cv_lib_gdiplus=yes
else
wx_cv_lib_gdiplus=no
fi fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test "$wxUSE_CAIRO" = "yes" -o "$wx_needs_cairo" = 1; then
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $wx_cv_lib_gdiplus" >&5
$as_echo "$wx_cv_lib_gdiplus" >&6; }
if test "$wx_cv_lib_gdiplus" = "yes"; then
wx_has_graphics=1
fi
elif test "$WXGTK1" = "1"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: wxGraphicsContext not supported with GTK +1" >&5
$as_echo "$as_me: WARNING: wxGraphicsContext not supported with GTK +1" >&2;}
elif test "$wxUSE_GTK" = 1 -o "$wxUSE_QT" = 1 -o "$wxUSE_X11" = 1 -o "$wxUSE_MAC" = 1; then
pkg_failed=no pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5
@@ -37003,24 +36993,24 @@ fi
# Put the nasty error message in config.log where it belongs # Put the nasty error message in config.log where it belongs
echo "$CAIRO_PKG_ERRORS" >&5 echo "$CAIRO_PKG_ERRORS" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cairo library not found" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "$as_me: WARNING: Cairo library not found" >&2;} $as_echo "no" >&6; }
elif test $pkg_failed = untried; then elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cairo library not found" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "$as_me: WARNING: Cairo library not found" >&2;} $as_echo "no" >&6; }
else else
CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS
CAIRO_LIBS=$pkg_cv_CAIRO_LIBS CAIRO_LIBS=$pkg_cv_CAIRO_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; } $as_echo "yes" >&6; }
wx_has_graphics=1 wx_has_cairo=1
fi fi
if test "$wx_has_graphics" = 1; then if test "$wx_has_cairo" = 1; then
save_LIBS="$LIBS" save_LIBS="$LIBS"
LIBS="$LIBS $CAIRO_LIBS" LIBS="$LIBS $CAIRO_LIBS"
for ac_func in cairo_push_group for ac_func in cairo_push_group
do : do :
ac_fn_c_check_func "$LINENO" "cairo_push_group" "ac_cv_func_cairo_push_group" ac_fn_c_check_func "$LINENO" "cairo_push_group" "ac_cv_func_cairo_push_group"
if test "x$ac_cv_func_cairo_push_group" = xyes; then : if test "x$ac_cv_func_cairo_push_group" = xyes; then :
@@ -37031,21 +37021,78 @@ _ACEOF
fi fi
done done
LIBS="$save_LIBS" LIBS="$save_LIBS"
if test "$ac_cv_func_cairo_push_group" = "no"; then if test "$ac_cv_func_cairo_push_group" = "no"; then
wx_has_graphics=0 wx_has_cairo=0
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cairo library is too old and misses cairo_push_group()" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cairo library is too old and misses cairo_push_group()" >&5
$as_echo "$as_me: WARNING: Cairo library is too old and misses cairo_push_group()" >&2;} $as_echo "$as_me: WARNING: Cairo library is too old and misses cairo_push_group()" >&2;}
else else
$as_echo "#define wxUSE_CAIRO 1" >>confdefs.h $as_echo "#define wxUSE_CAIRO 1" >>confdefs.h
if test "$wxUSE_GTK" != 1; then if test "$wxUSE_GTK" != 1; then
CPPFLAGS="$CAIRO_CFLAGS $CPPFLAGS" CPPFLAGS="$CAIRO_CFLAGS $CPPFLAGS"
GUI_TK_LIBRARY="$GUI_TK_LIBRARY $CAIRO_LIBS" GUI_TK_LIBRARY="$GUI_TK_LIBRARY $CAIRO_LIBS"
fi
fi fi
fi fi
fi
fi
if test "$wxUSE_GRAPHICS_CONTEXT" = "yes"; then
wx_has_graphics=0
if test "$wxUSE_MSW" = 1; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if GDI+ is available" >&5
$as_echo_n "checking if GDI+ is available... " >&6; }
if ${wx_cv_lib_gdiplus+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <windows.h>
#include <gdiplus.h>
int
main ()
{
using namespace Gdiplus;
;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
wx_cv_lib_gdiplus=yes
else
wx_cv_lib_gdiplus=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $wx_cv_lib_gdiplus" >&5
$as_echo "$wx_cv_lib_gdiplus" >&6; }
if test "$wx_cv_lib_gdiplus" = "yes"; then
wx_has_graphics=1
fi
elif test "$WXGTK1" = "1"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: wxGraphicsContext not supported with GTK +1" >&5
$as_echo "$as_me: WARNING: wxGraphicsContext not supported with GTK +1" >&2;}
elif test "$wx_needs_cairo_for_gc" = 1; then
wx_has_graphics=$wx_has_cairo
else else
wx_has_graphics=1 wx_has_graphics=1
fi fi

View File

@@ -335,6 +335,7 @@ DEFAULT_wxUSE_DMALLOC=no
DEFAULT_wxUSE_LIBGNOMEVFS=no DEFAULT_wxUSE_LIBGNOMEVFS=no
DEFAULT_wxUSE_LIBMSPACK=no DEFAULT_wxUSE_LIBMSPACK=no
DEFAULT_wxUSE_LIBSDL=no DEFAULT_wxUSE_LIBSDL=no
DEFAULT_wxUSE_CAIRO=no
dnl features disabled by default dnl features disabled by default
DEFAULT_wxUSE_ACCESSIBILITY=no DEFAULT_wxUSE_ACCESSIBILITY=no
@@ -551,6 +552,16 @@ WX_ARG_WITH(libnotify, [ --with-libnotify use libnotify for notifica
WX_ARG_WITH(opengl, [ --with-opengl use OpenGL (or Mesa)], wxUSE_OPENGL) WX_ARG_WITH(opengl, [ --with-opengl use OpenGL (or Mesa)], wxUSE_OPENGL)
WX_ARG_WITH(xtest, [ --with-xtest use XTest extension], wxUSE_XTEST) WX_ARG_WITH(xtest, [ --with-xtest use XTest extension], wxUSE_XTEST)
if test "$wxUSE_GTK" = 1 -o "$wxUSE_QT" = 1 -o "$wxUSE_X11" = 1; then
wx_needs_cairo_for_gc=1
fi
dnl If we do _not_ need Cairo anyhow, provide an option to request enabling it
dnl explicitly.
if test "$wx_needs_cairo_for_gc" != 1; then
WX_ARG_WITH(cairo, [ --with-cairo use Cairo-based wxGraphicsContext implementation], wxUSE_CAIRO)
fi
fi fi
dnl for GUI only dnl for GUI only
@@ -7508,6 +7519,42 @@ if test "$wxUSE_MAC" = 1; then
wxUSE_GRAPHICS_CONTEXT="yes" wxUSE_GRAPHICS_CONTEXT="yes"
fi fi
dnl We need to check for Cairo if explicitly requested under MSW or Mac or if
dnl we're going to use as the default wxGraphicsContext implementation with the
dnl target toolkit.
if test "$wx_needs_cairo_for_gc" = 1 -a "$wxUSE_GRAPHICS_CONTEXT" = "yes"; then
wx_needs_cairo=1
fi
if test "$wxUSE_CAIRO" = "yes" -o "$wx_needs_cairo" = 1; then
PKG_CHECK_MODULES(CAIRO, cairo,
[wx_has_cairo=1],
[AC_MSG_RESULT(no)]
)
if test "$wx_has_cairo" = 1; then
dnl Check that Cairo library is new enough: wxGraphicsContext
dnl won't compile without cairo_push_group() and
dnl cairo_pop_group_to_source() which are new in 1.2.
save_LIBS="$LIBS"
LIBS="$LIBS $CAIRO_LIBS"
AC_CHECK_FUNCS([cairo_push_group])
LIBS="$save_LIBS"
if test "$ac_cv_func_cairo_push_group" = "no"; then
wx_has_cairo=0
AC_MSG_WARN([Cairo library is too old and misses cairo_push_group()])
else
AC_DEFINE(wxUSE_CAIRO)
dnl We don't need to do this for wxGTK as we already get Cairo
dnl flags as part of GTK+ ones.
if test "$wxUSE_GTK" != 1; then
CPPFLAGS="$CAIRO_CFLAGS $CPPFLAGS"
GUI_TK_LIBRARY="$GUI_TK_LIBRARY $CAIRO_LIBS"
fi
fi
fi
fi
if test "$wxUSE_GRAPHICS_CONTEXT" = "yes"; then if test "$wxUSE_GRAPHICS_CONTEXT" = "yes"; then
wx_has_graphics=0 wx_has_graphics=0
if test "$wxUSE_MSW" = 1; then if test "$wxUSE_MSW" = 1; then
@@ -7533,33 +7580,8 @@ if test "$wxUSE_GRAPHICS_CONTEXT" = "yes"; then
fi fi
elif test "$WXGTK1" = "1"; then elif test "$WXGTK1" = "1"; then
AC_MSG_WARN([wxGraphicsContext not supported with GTK +1]) AC_MSG_WARN([wxGraphicsContext not supported with GTK +1])
elif test "$wxUSE_GTK" = 1 -o "$wxUSE_QT" = 1 -o "$wxUSE_X11" = 1 -o "$wxUSE_MAC" = 1; then elif test "$wx_needs_cairo_for_gc" = 1; then
PKG_CHECK_MODULES(CAIRO, cairo, wx_has_graphics=$wx_has_cairo
[wx_has_graphics=1],
[AC_MSG_WARN([Cairo library not found])]
)
if test "$wx_has_graphics" = 1; then
dnl Check that Cairo library is new enough: wxGraphicsContext
dnl won't compile without cairo_push_group() and
dnl cairo_pop_group_to_source() which are new in 1.2.
save_LIBS="$LIBS"
LIBS="$LIBS $CAIRO_LIBS"
AC_CHECK_FUNCS([cairo_push_group])
LIBS="$save_LIBS"
if test "$ac_cv_func_cairo_push_group" = "no"; then
wx_has_graphics=0
AC_MSG_WARN([Cairo library is too old and misses cairo_push_group()])
else
AC_DEFINE(wxUSE_CAIRO)
dnl We don't need to do this for wxGTK as we already get Cairo
dnl flags as part of GTK+ ones.
if test "$wxUSE_GTK" != 1; then
CPPFLAGS="$CAIRO_CFLAGS $CPPFLAGS"
GUI_TK_LIBRARY="$GUI_TK_LIBRARY $CAIRO_LIBS"
fi
fi
fi
else else
dnl assume it's ok, add more checks here if needed dnl assume it's ok, add more checks here if needed
wx_has_graphics=1 wx_has_graphics=1