Bug 1305145 - Move --enable-system-pixman and --enable-system-cairo to Python configure.
MozReview-Commit-ID: wETmNhaStR
--- a/build/moz.configure/old.configure
+++ b/build/moz.configure/old.configure
@@ -222,19 +222,17 @@ def old_configure_options(*options):
'--enable-signmar',
'--enable-simulator',
'--enable-small-chunk-size',
'--enable-startup-notification',
'--enable-startupcache',
'--enable-stdcxx-compat',
'--enable-strip',
'--enable-synth-pico',
- '--enable-system-cairo',
'--enable-system-extension-dirs',
- '--enable-system-pixman',
'--enable-system-sqlite',
'--enable-tasktracer',
'--enable-thread-sanitizer',
'--enable-trace-logging',
'--enable-ui-locale',
'--enable-universalchardet',
'--enable-updater',
'--enable-url-classifier',
--- a/old-configure.in
+++ b/old-configure.in
@@ -53,17 +53,16 @@ NSS_VERSION=3
dnl Set the minimum version of toolkit libs used by mozilla
dnl ========================================================
GLIB_VERSION=2.22
# 2_26 is the earliest version we can set GLIB_VERSION_MIN_REQUIRED.
# The macro won't be used when compiling with earlier versions anyway.
GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26
GIO_VERSION=2.22
-CAIRO_VERSION=1.10
GTK2_VERSION=2.18.0
GTK3_VERSION=3.4.0
GDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_4
WINDRES_VERSION=2.14.90
W32API_VERSION=3.14
GNOMEUI_VERSION=2.2.0
GCONF_VERSION=1.2.1
STARTUP_NOTIFICATION_VERSION=0.8
@@ -3844,23 +3843,16 @@ for extension in $MOZ_EXTENSIONS; do
AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
fi
done
if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
fi
-if test -n "$MOZ_TREE_FREETYPE"; then
- MOZ_ENABLE_CAIRO_FT=1
- FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
- CAIRO_FT_CFLAGS="-I$_topsrcdir/modules/freetype2/include"
- AC_SUBST_LIST(CAIRO_FT_CFLAGS)
-fi
-
AC_CHECK_PROGS(WGET, wget, "")
AC_SUBST(WGET)
dnl ========================================================
dnl Maintenance Service
dnl ========================================================
MOZ_ARG_ENABLE_BOOL(maintenance-service,
@@ -5152,156 +5144,65 @@ if test "$USE_FC_FREETYPE"; then
_SAVE_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
[AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
CPPFLAGS="$_SAVE_CPPFLAGS"
fi
fi
-dnl ========================================================
-dnl Check for pixman and cairo
-dnl ========================================================
-
-MOZ_TREE_CAIRO=1
-MOZ_ARG_ENABLE_BOOL(system-cairo,
-[ --enable-system-cairo Use system cairo (located with pkgconfig)],
-MOZ_TREE_CAIRO=,
-MOZ_TREE_CAIRO=1 )
-
-MOZ_TREE_PIXMAN=1
-MOZ_ARG_ENABLE_BOOL(system-pixman,
-[ --enable-system-pixman Use system pixman (located with pkgconfig)],
-MOZ_TREE_PIXMAN=,
-MOZ_TREE_PIXMAN=force,
-MOZ_TREE_PIXMAN=1 )
-
-# System cairo depends on system pixman
-if test "$MOZ_TREE_PIXMAN" = "force"; then
- if test -z "$MOZ_TREE_CAIRO"; then
- AC_MSG_ERROR([--disable-system-pixman is incompatible with --enable-system-cairo.])
- else
- MOZ_TREE_PIXMAN=1
- fi
-elif test -z "$MOZ_TREE_CAIRO"; then
- MOZ_TREE_PIXMAN=
-fi
-
-if test "$MOZ_TREE_PIXMAN"; then
- AC_DEFINE(MOZ_TREE_PIXMAN)
-else
- PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.19.2)
-fi
-
if test "$MOZ_TREE_CAIRO"; then
- MOZ_CAIRO_CFLAGS="-I${DIST}/include/cairo"
- AC_DEFINE(MOZ_TREE_CAIRO)
-
- if test "$OS_ARCH" = "WINNT"; then
- # For now we assume that we will have a uint64_t available through
- # one of the above headers or mozstdint.h.
- AC_DEFINE(HAVE_UINT64_T)
- fi
-
- # Define macros for cairo-features.h
- TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
if test "$MOZ_X11"; then
XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
fi
- if test "$_HAVE_FREETYPE2"; then
- FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
- MOZ_ENABLE_CAIRO_FT=1
- CAIRO_FT_CFLAGS="$FT2_CFLAGS"
- fi
case "$MOZ_WIDGET_TOOLKIT" in
- cocoa | uikit)
- QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
- QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
- QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
- ;;
windows)
- WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
- WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
- WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
- WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
- MOZ_ENABLE_D2D_SURFACE=1
- MOZ_ENABLE_DWRITE_FONT=1
-
if test "$COMPILE_ENVIRONMENT"; then
MOZ_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
- dnl D3D10 Layers depend on D2D Surfaces.
- if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
- MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
- fi
+ dnl D3D10 Layers depend on D2D Surfaces, which
+ dnl is present on windows.
+ MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
fi
;;
esac
- if test "$USE_FC_FREETYPE"; then
- FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
- fi
- AC_SUBST(MOZ_ENABLE_CAIRO_FT)
- AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
- AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
AC_SUBST(PS_SURFACE_FEATURE)
- AC_SUBST(SVG_SURFACE_FEATURE)
AC_SUBST(XLIB_SURFACE_FEATURE)
AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
- AC_SUBST(QUARTZ_SURFACE_FEATURE)
- AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
- AC_SUBST(WIN32_SURFACE_FEATURE)
- AC_SUBST(OS2_SURFACE_FEATURE)
- AC_SUBST(DIRECTFB_SURFACE_FEATURE)
- AC_SUBST(FT_FONT_FEATURE)
- AC_SUBST(FC_FONT_FEATURE)
- AC_SUBST(WIN32_FONT_FEATURE)
- AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
- AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
- AC_SUBST(QUARTZ_FONT_FEATURE)
- AC_SUBST(PNG_FUNCTIONS_FEATURE)
- AC_SUBST(QT_SURFACE_FEATURE)
- AC_SUBST(TEE_SURFACE_FEATURE)
if test "$MOZ_X11"; then
MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
fi
- CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
else
- PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION)
- MOZ_CAIRO_CFLAGS="$CAIRO_CFLAGS"
- MOZ_CAIRO_LIBS="$CAIRO_LIBS"
- PKG_CHECK_MODULES(CAIRO_TEE, cairo-tee >= $CAIRO_VERSION)
if test "$MOZ_X11"; then
- PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
+ PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= 1.10)
MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_LIBS"
MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
fi
fi
case "$MOZ_WIDGET_TOOLKIT" in
android|gonk)
TK_CFLAGS="$MOZ_CAIRO_CFLAGS $MOZ_PIXMAN_CFLAGS"
TK_LIBS="$MOZ_CAIRO_LIBS $MOZ_PIXMAN_LIBS"
;;
esac
-AC_SUBST(MOZ_TREE_CAIRO)
AC_SUBST_LIST(MOZ_CAIRO_CFLAGS)
AC_SUBST_LIST(MOZ_CAIRO_LIBS)
AC_SUBST_LIST(MOZ_CAIRO_OSLIBS)
-AC_SUBST(MOZ_TREE_PIXMAN)
dnl ========================================================
dnl disable xul
dnl ========================================================
MOZ_ARG_DISABLE_BOOL(xul,
[ --disable-xul Disable XUL],
MOZ_XUL= )
if test "$MOZ_XUL"; then
--- a/toolkit/moz.configure
+++ b/toolkit/moz.configure
@@ -821,16 +821,150 @@ def skia_includes(skia, skia_gpu):
'/gfx/skia/skia/include/gpu',
'/gfx/skia/skia/include/utils',
]
return includes
set_config('SKIA_INCLUDES', skia_includes)
+# Check for pixman and cairo
+# ========================================================
+option('--enable-system-cairo', help='Use system cairo (located with pkgconfig)')
+
+# System cairo depends on system pixman
+imply_option('--enable-system-pixman',
+ depends('--enable-system-cairo')(lambda v: v or None))
+
+option('--enable-system-pixman', help='Use system pixman (located with pkgconfig)')
+
+system_pixman = depends_if('--enable-system-pixman')(lambda _: True)
+
+pixman_info = pkg_check_modules('MOZ_PIXMAN', 'pixman-1 >= 0.19.2',
+ when=system_pixman)
+
+add_old_configure_assignment('MOZ_PIXMAN_CFLAGS',
+ delayed_getattr(pixman_info, 'cflags'))
+add_old_configure_assignment('MOZ_PIXMAN_LIBS',
+ delayed_getattr(pixman_info, 'libs'))
+
+tree_pixman = depends(system_pixman)(lambda v: not bool(v) or None)
+set_define('MOZ_TREE_PIXMAN', tree_pixman)
+set_config('MOZ_TREE_PIXMAN', tree_pixman)
+
+system_cairo = depends_if('--enable-system-cairo')(lambda _: True)
+tree_cairo = depends(system_cairo)(lambda v: not bool(v) or None)
+set_define('MOZ_TREE_CAIRO', tree_cairo)
+set_config('MOZ_TREE_CAIRO', tree_cairo)
+add_old_configure_assignment('MOZ_TREE_CAIRO', tree_cairo)
+
+cairo_info = pkg_check_modules('CAIRO', 'cairo >= 1.10', when=system_cairo)
+pkg_check_modules('CAIRO_TEE', 'cairo-tee >= 1.10', when=system_cairo)
+
+@depends(check_build_environment, cairo_info)
+def cairo_cflags(build_env, cairo_info):
+ if cairo_info:
+ return cairo_info.cflags
+ return ('-I%s/include/cairo' % build_env.dist,)
+
+add_old_configure_assignment('MOZ_CAIRO_CFLAGS', cairo_cflags)
+add_old_configure_assignment('MOZ_CAIRO_LIBS',
+ delayed_getattr(cairo_info, 'libs'))
+
+@depends(tree_cairo, freetype2_info, tree_freetype, ft2_info)
+def cairo_ft_cflags(tree_cairo, freetype2, tree_freetype, ft2_info):
+ if tree_cairo and freetype2 or tree_freetype:
+ return ft2_info.cflags
+
+set_config('MOZ_ENABLE_CAIRO_FT', depends_if(cairo_ft_cflags)(lambda _: True))
+set_config('CAIRO_FT_CFLAGS', cairo_ft_cflags)
+
+@depends(tree_cairo, toolkit)
+def tree_cairo_and_windows(tree_cairo, toolkit):
+ if tree_cairo and toolkit == 'windows':
+ return True
+
+set_config('MOZ_ENABLE_DWRITE_FONT', tree_cairo_and_windows)
+set_config('MOZ_ENABLE_D3D_SURFACE', tree_cairo_and_windows)
+
+@depends_when(target, when=tree_cairo)
+def have_uint64_t(target):
+ # For now we assume that we will have a uint64_t available through
+ # one of the above headers or mozstdint.h.
+ if target.os == 'WINNT':
+ return True
+
+set_define('HAVE_UINT64_T', have_uint64_t)
+
+@template
+def set_cairo_feature_defines(detected_features):
+ cairo_features = set([
+ 'D2D_SURFACE',
+ 'DIRECTFB_SURFACE',
+ 'DWRITE_FONT',
+ 'FC_FONT',
+ 'FT_FONT',
+ 'OS2_SURFACE',
+ 'PNG_FUNCTIONS',
+ 'QT_SURFACE',
+ 'QUARTZ_FONT',
+ 'QUARTZ_IMAGE_SURFACE',
+ 'QUARTZ_SURFACE',
+ 'SVG_SURFACE',
+ 'TEE_SURFACE',
+ 'WIN32_FONT',
+ 'WIN32_SURFACE',
+ ])
+ # These features don't follow the pattern, and have config
+ # names that diverge from their defines.
+ feature_prefixes = {
+ 'DWRITE_FONT': 'WIN32',
+ 'D2D_SURFACE': 'WIN32',
+ }
+
+ @depends_if(detected_features)
+ def feature_values(detected_features):
+ difference = set(detected_features) - cairo_features
+ if difference:
+ die("Attempted to define the following unknown cairo_features: %s. "
+ "Please add them to cairo_features.", difference)
+ return namespace(**{name: '#define CAIRO_HAS_%s 1' % name if name in detected_features else ''
+ for name in cairo_features})
+
+ for name in cairo_features:
+ config_var = '%s_FEATURE' % name
+ if name in feature_prefixes:
+ config_var = '%s_%s_FEATURE' % (feature_prefixes[name], name)
+ set_config(config_var, delayed_getattr(feature_values, name))
+
+@depends_when(target, toolkit, fc_freetype, freetype2_info, tree_freetype,
+ when=tree_cairo)
+def cairo_features(target, toolkit, fc_freetype, freetype2, tree_freetype):
+ features = []
+ # Define macros for cairo-features.h
+ features.append('TEE_SURFACE')
+
+ if freetype2 or tree_freetype:
+ features.append('FT_FONT')
+ if fc_freetype:
+ features.append('FC_FONT')
+
+ if toolkit in ('cocoa', 'uikit'):
+ features.append('QUARTZ_SURFACE')
+ features.append('QUARTZ_IMAGE_SURFACE')
+ features.append('QUARTZ_FONT')
+ elif toolkit == 'windows':
+ features.append('D2D_SURFACE')
+ features.append('DWRITE_FONT')
+ features.append('WIN32_FONT')
+ features.append('WIN32_SURFACE')
+ return tuple(features)
+
+set_cairo_feature_defines(cairo_features)
+
# Support various fuzzing options
# ==============================================================
option('--enable-libfuzzer', help='Enable libfuzzer support')
@depends('--enable-libfuzzer')
def enable_libfuzzer(value):
if value:
return True