Commit 25fedea4 authored by Matthias Clasen's avatar Matthias Clasen

Merge branch 'optional-dependencies' into 'master'

Make dependencies to fontconfig and freetype optional and explicit.

See merge request !239
parents fc9c3c36 f91c203b
Pipeline #214692 passed with stages
in 2 minutes and 6 seconds
......@@ -270,16 +270,24 @@ endif
pango_deps += harfbuzz_dep
# Only use FontConfig fallback when required or requested
fontconfig_required = (host_system != 'windows' and host_system != 'darwin') or get_option('use_fontconfig')
fontconfig_dep = dependency('fontconfig', version: fontconfig_req_version, required: false)
fontconfig_option = get_option('fontconfig')
fontconfig_sys_required = (host_system != 'windows' and host_system != 'darwin')
if fontconfig_sys_required and fontconfig_option.disabled()
error('Fontconfig is required on this platform (pass -Dfontconfig=enabled or -Dfontconfig=auto)')
fontconfig_required = fontconfig_sys_required or fontconfig_option.enabled()
fontconfig_dep = dependency('fontconfig', version: fontconfig_req_version, required: fontconfig_option)
if fontconfig_dep.found()
fontconfig_pc = 'fontconfig'
if cc.get_id() == 'msvc' and cc.has_header('fontconfig/fontconfig.h')
# Look for the Visual Studio-style import library if FontConfig's .pc file cannot be
# found on Visual Studio
fontconfig_dep = cc.find_library('fontconfig', required: false)
fontconfig_dep = cc.find_library('fontconfig', required: fontconfig_option)
if fontconfig_dep.found()
fontconfig_lib = '-lfontconfig'
......@@ -312,7 +320,7 @@ message('fontconfig has FcWeightFromOpenTypeDouble: ' + res)
# The first version of freetype with a pkg-config file is 2.1.5
# We require both fontconfig and freetype if we are to have either.
freetype_dep = dependency('freetype2', required: false)
freetype_dep = dependency('freetype2', required: get_option('freetype'))
if freetype_dep.found()
freetype2_pc = 'freetype2'
......@@ -320,7 +328,7 @@ else
if cc.get_id() == 'msvc' and cc.has_header('ft2build.h')
foreach ft2_lib: ['freetype', 'freetypemt']
if not freetype_dep.found()
freetype_dep = cc.find_library(ft2_lib, required: false)
freetype_dep = cc.find_library(ft2_lib, required: get_option('freetype'))
if freetype_dep.found()
freetype2_lib = '-l@0@'.format(ft2_lib)
......@@ -330,7 +338,7 @@ else
if fontconfig_required and not freetype_dep.found()
freetype_dep = dependency('freetype2', required: false,
freetype_dep = dependency('freetype2', required: get_option('freetype'),
fallback: ['freetype2', 'freetype_dep'])
......@@ -10,10 +10,10 @@ option('install-tests',
description : 'Install tests',
type: 'boolean',
value: 'false')
description : 'Force using FontConfig where it is optional, on Windows and macOS. This is ignored on platforms where it is required',
type: 'boolean',
value: 'false')
description : 'Build with FontConfig support. Passing \'auto\' or \'disabled\' disables fontconfig where it is optional, i.e. on Windows and macOS. Passing \'disabled\' on platforms where fontconfig is required results in error.',
type: 'feature',
value: 'auto')
type : 'feature',
value : 'disabled',
......@@ -30,3 +30,7 @@ option('xft',
type : 'feature',
value : 'auto',
description : 'Build with xft support')
type : 'feature',
value : 'auto',
description : 'Build with freetype support')
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment