1a4e54154Smrgproject('fontconfig', 'c', 2ae02b298Smrg version: '2.15.0', 3ae02b298Smrg meson_version : '>= 0.60.0', 4a4e54154Smrg default_options: [ 'buildtype=debugoptimized'], 5a4e54154Smrg) 6a4e54154Smrg 7a4e54154Smrgfc_version = meson.project_version() 8a4e54154Smrgversion_arr = fc_version.split('.') 9a4e54154Smrgfc_version_major = version_arr[0].to_int() 10a4e54154Smrgfc_version_minor = version_arr[1].to_int() 11a4e54154Smrgfc_version_micro = version_arr[2].to_int() 12a4e54154Smrg 13a4e54154Smrg# Try and maintain compatibility with the previous libtool versioning 14a4e54154Smrg# (this is a bit of a hack, but it should work fine for our case where 15a4e54154Smrg# API is added, in which case LT_AGE and LIBT_CURRENT are both increased) 16a4e54154Smrgsoversion = fc_version_major - 1 17a4e54154Smrgcurversion = fc_version_minor - 1 18a4e54154Smrglibversion = '@0@.@1@.0'.format(soversion, curversion) 19a4e54154Smrgdefversion = '@0@.@1@'.format(curversion, fc_version_micro) 20a4e54154Smrgosxversion = curversion + 1 21a4e54154Smrg 22a4e54154Smrgfreetype_req = '>= 21.0.15' 23a4e54154Smrgfreetype_req_cmake = '>= 2.8.1' 24a4e54154Smrg 25a4e54154Smrgcc = meson.get_compiler('c') 26a4e54154Smrg 27a4e54154Smrg 28a4e54154Smrgfreetype_dep = dependency('freetype2', method: 'pkg-config', version: freetype_req, required: false) 29a4e54154Smrg 30a4e54154Smrg# Give another shot using CMake 31a4e54154Smrgif not freetype_dep.found() 32a4e54154Smrg freetype_dep = dependency('freetype', method: 'cmake', version: freetype_req_cmake, 331cc69409Smrg fallback: ['freetype2', 'freetype_dep'], default_options: 'werror=false') 34a4e54154Smrgendif 35a4e54154Smrg 36eceda581Smrg# Linking expat should not be so difficult... see: https://github.com/mesonbuild/meson/issues/10516 37eceda581Smrgexpat_dep = dependency('expat', required: false) 38eceda581Smrgif not expat_dep.found() 39eceda581Smrg expat_dep = cc.find_library('expat', required : false) 40eceda581Smrg if not expat_dep.found() 41eceda581Smrg expat_dep = dependency('expat', method: 'system', fallback: ['expat', 'expat_dep']) 42eceda581Smrg endif 43eceda581Smrgendif 44a4e54154Smrg 45a4e54154Smrgi18n = import('i18n') 46a4e54154Smrgpkgmod = import('pkgconfig') 47a4e54154Smrgpython3 = import('python').find_installation() 48a4e54154Smrg 49a4e54154Smrgcheck_headers = [ 50a4e54154Smrg ['dirent.h'], 51a4e54154Smrg ['fcntl.h'], 52a4e54154Smrg ['stdlib.h'], 53a4e54154Smrg ['string.h'], 54a4e54154Smrg ['unistd.h'], 55a4e54154Smrg ['sys/statvfs.h'], 56a4e54154Smrg ['sys/vfs.h'], 57a4e54154Smrg ['sys/statfs.h'], 58a4e54154Smrg ['sys/param.h'], 59a4e54154Smrg ['sys/mount.h'], 60a4e54154Smrg] 61a4e54154Smrg 62a4e54154Smrgcheck_funcs = [ 63a4e54154Smrg ['link'], 64a4e54154Smrg ['mkstemp'], 65a4e54154Smrg ['mkostemp'], 66a4e54154Smrg ['_mktemp_s'], 67a4e54154Smrg ['mkdtemp'], 68a4e54154Smrg ['getopt'], 69a4e54154Smrg ['getopt_long'], 70a4e54154Smrg ['getprogname'], 71a4e54154Smrg ['getexecname'], 72a4e54154Smrg ['rand'], 73a4e54154Smrg ['random'], 74a4e54154Smrg ['lrand48'], 75a4e54154Smrg ['random_r'], 76a4e54154Smrg ['rand_r'], 77a4e54154Smrg ['readlink'], 78a4e54154Smrg ['fstatvfs'], 79a4e54154Smrg ['fstatfs'], 80a4e54154Smrg ['lstat'], 81a4e54154Smrg ['mmap'], 82a4e54154Smrg ['vprintf'], 83a4e54154Smrg] 84a4e54154Smrg 85a4e54154Smrgcheck_freetype_funcs = [ 86a4e54154Smrg ['FT_Get_BDF_Property', {'dependencies': freetype_dep}], 87a4e54154Smrg ['FT_Get_PS_Font_Info', {'dependencies': freetype_dep}], 88a4e54154Smrg ['FT_Has_PS_Glyph_Names', {'dependencies': freetype_dep}], 89a4e54154Smrg ['FT_Get_X11_Font_Format', {'dependencies': freetype_dep}], 90a4e54154Smrg ['FT_Done_MM_Var', {'dependencies': freetype_dep}], 91a4e54154Smrg] 92a4e54154Smrg 93a4e54154Smrgcheck_header_symbols = [ 94a4e54154Smrg ['posix_fadvise', 'fcntl.h'] 95a4e54154Smrg] 96a4e54154Smrg 97a4e54154Smrgcheck_struct_members = [ 98a4e54154Smrg ['struct statvfs', 'f_basetype', ['sys/statvfs.h']], 99a4e54154Smrg ['struct statvfs', 'f_fstypename', ['sys/statvfs.']], 100a4e54154Smrg ['struct statfs', 'f_flags', []], 101a4e54154Smrg ['struct statfs', 'f_fstypename', []], 102a4e54154Smrg ['struct dirent', 'd_type', ['sys/types.h', 'dirent.h']], 103a4e54154Smrg] 104a4e54154Smrg 105a4e54154Smrgcheck_sizeofs = [ 106a4e54154Smrg ['void *', {'conf-name': 'SIZEOF_VOID_P'}], 107a4e54154Smrg] 108a4e54154Smrg 109a4e54154Smrgcheck_alignofs = [ 110a4e54154Smrg ['void *', {'conf-name': 'ALIGNOF_VOID_P'}], 111a4e54154Smrg ['double'], 112a4e54154Smrg] 113a4e54154Smrg 114a4e54154Smrgadd_project_arguments('-DHAVE_CONFIG_H', language: 'c') 115a4e54154Smrg 116a4e54154Smrgc_args = [] 117a4e54154Smrg 118a4e54154Smrgconf = configuration_data() 119a4e54154Smrgdeps = [freetype_dep, expat_dep] 120a4e54154Smrgincbase = include_directories('.') 121a4e54154Smrg 122a4e54154Smrg# We cannot try compiling against an internal dependency 123a4e54154Smrgif freetype_dep.type_name() == 'internal' 124a4e54154Smrg foreach func: check_freetype_funcs 125a4e54154Smrg name = func[0] 126a4e54154Smrg conf.set('HAVE_@0@'.format(name.to_upper()), 1) 127a4e54154Smrg endforeach 128a4e54154Smrgelse 129a4e54154Smrg check_funcs += check_freetype_funcs 130a4e54154Smrgendif 131a4e54154Smrg 132a4e54154Smrgforeach check : check_headers 133a4e54154Smrg name = check[0] 134a4e54154Smrg 135a4e54154Smrg if cc.has_header(name) 136a4e54154Smrg conf.set('HAVE_@0@'.format(name.to_upper().underscorify()), 1) 137a4e54154Smrg endif 138a4e54154Smrgendforeach 139a4e54154Smrg 140a4e54154Smrgforeach check : check_funcs 141a4e54154Smrg name = check[0] 142a4e54154Smrg opts = check.length() > 1 ? check[1] : {} 143a4e54154Smrg extra_deps = opts.get('dependencies', []) 144a4e54154Smrg 145a4e54154Smrg if cc.has_function(name, dependencies: extra_deps) 146a4e54154Smrg conf.set('HAVE_@0@'.format(name.to_upper()), 1) 147a4e54154Smrg endif 148a4e54154Smrgendforeach 149a4e54154Smrg 150a4e54154Smrgforeach check : check_header_symbols 151a4e54154Smrg name = check[0] 152a4e54154Smrg header = check[1] 153a4e54154Smrg 154a4e54154Smrg if cc.has_header_symbol(header, name) 155a4e54154Smrg conf.set('HAVE_@0@'.format(name.to_upper()), 1) 156a4e54154Smrg endif 157a4e54154Smrgendforeach 158a4e54154Smrg 159a4e54154Smrgforeach check : check_struct_members 160a4e54154Smrg struct_name = check[0] 161a4e54154Smrg member_name = check[1] 162a4e54154Smrg headers = check[2] 163a4e54154Smrg 164a4e54154Smrg prefix = '' 165a4e54154Smrg 166a4e54154Smrg foreach header : headers 167a4e54154Smrg prefix += '#include <@0@>\n'.format(header) 168a4e54154Smrg endforeach 169a4e54154Smrg 170a4e54154Smrg if cc.has_member(struct_name, member_name, prefix: prefix) 171a4e54154Smrg conf.set('HAVE_@0@_@1@'.format(struct_name, member_name).to_upper().underscorify(), 1) 172a4e54154Smrg endif 173a4e54154Smrgendforeach 174a4e54154Smrg 175a4e54154Smrgforeach check : check_sizeofs 176a4e54154Smrg type = check[0] 177a4e54154Smrg opts = check.length() > 1 ? check[1] : {} 178a4e54154Smrg 179a4e54154Smrg conf_name = opts.get('conf-name', 'SIZEOF_@0@'.format(type.to_upper())) 180a4e54154Smrg 181a4e54154Smrg conf.set(conf_name, cc.sizeof(type)) 182a4e54154Smrgendforeach 183a4e54154Smrg 184a4e54154Smrgforeach check : check_alignofs 185a4e54154Smrg type = check[0] 186a4e54154Smrg opts = check.length() > 1 ? check[1] : {} 187a4e54154Smrg 188a4e54154Smrg conf_name = opts.get('conf-name', 'ALIGNOF_@0@'.format(type.to_upper())) 189a4e54154Smrg 190a4e54154Smrg conf.set(conf_name, cc.alignment(type)) 191a4e54154Smrgendforeach 192a4e54154Smrg 193a4e54154Smrgif cc.compiles(files('meson-cc-tests/flexible-array-member-test.c')) 194a4e54154Smrg conf.set('FLEXIBLE_ARRAY_MEMBER', true) 195a4e54154Smrgelse 196a4e54154Smrg conf.set('FLEXIBLE_ARRAY_MEMBER', 1) 197a4e54154Smrgendif 198a4e54154Smrg 199a4e54154Smrgif cc.links(files('meson-cc-tests/stdatomic-primitives-test.c'), name: 'stdatomic.h atomics') 200a4e54154Smrg conf.set('HAVE_STDATOMIC_PRIMITIVES', 1) 201a4e54154Smrgendif 202a4e54154Smrg 203a4e54154Smrgif cc.links(files('meson-cc-tests/intel-atomic-primitives-test.c'), name: 'Intel atomics') 204a4e54154Smrg conf.set('HAVE_INTEL_ATOMIC_PRIMITIVES', 1) 205a4e54154Smrgendif 206a4e54154Smrg 207a4e54154Smrgif cc.links(files('meson-cc-tests/solaris-atomic-operations.c'), name: 'Solaris atomic ops') 208a4e54154Smrg conf.set('HAVE_SOLARIS_ATOMIC_OPS', 1) 209a4e54154Smrgendif 210a4e54154Smrg 211a4e54154Smrg 212ae02b298Smrg# Check iconv support 213ae02b298Smrgiconv_dep = [] 214ae02b298Smrgfound_iconv = 0 215ae02b298Smrgif host_machine.system() != 'windows' 216ae02b298Smrg iconv_dep = dependency('iconv', required: get_option('iconv')) 217ae02b298Smrg found_iconv = iconv_dep.found().to_int() 218ae02b298Smrgelse 219ae02b298Smrg if get_option('iconv').enabled() 220ae02b298Smrg warning('-Diconv was set but this is not functional on Windows.') 221ae02b298Smrg endif 222ae02b298Smrgendif 223ae02b298Smrgconf.set('USE_ICONV', found_iconv) 224ae02b298Smrgdeps += [iconv_dep] 225ae02b298Smrg 226a4e54154Smrgprefix = get_option('prefix') 227a4e54154Smrg 228a4e54154Smrgfonts_conf = configuration_data() 229a4e54154Smrg 230eceda581Smrgdefault_fonts_dirs = get_option('default-fonts-dirs') 231eceda581Smrgif default_fonts_dirs == ['yes'] 232eceda581Smrg if host_machine.system() == 'windows' 233eceda581Smrg fc_fonts_paths = ['WINDOWSFONTDIR', 'WINDOWSUSERFONTDIR'] 234eceda581Smrg elif host_machine.system() == 'darwin' 235eceda581Smrg fc_fonts_paths = ['/System/Library/Fonts', '/Library/Fonts', '~/Library/Fonts', '/System/Library/Assets/com_apple_MobileAsset_Font3', '/System/Library/Assets/com_apple_MobileAsset_Font4'] 236a4e54154Smrg else 237eceda581Smrg fc_fonts_paths = ['/usr/share/fonts', '/usr/local/share/fonts'] 238a4e54154Smrg endif 239eceda581Smrgelse 240eceda581Smrg fc_fonts_paths = default_fonts_dirs 241a4e54154Smrgendif 242a4e54154Smrgxml_path = '' 243a4e54154Smrgescaped_xml_path = '' 244eceda581Smrgforeach p : fc_fonts_paths 245a4e54154Smrg s = '\t<dir>' + p + '</dir>\n' 246a4e54154Smrg xml_path += s 247a4e54154Smrg # No substitution method for string 248a4e54154Smrg s = '\\t<dir>' + p + '</dir>\\n' 249a4e54154Smrg escaped_xml_path += s 250a4e54154Smrgendforeach 251a4e54154Smrgconf.set_quoted('FC_DEFAULT_FONTS', escaped_xml_path) 252a4e54154Smrgfonts_conf.set('FC_DEFAULT_FONTS', xml_path) 253a4e54154Smrg 254eceda581Smrg# Add more fonts if available. By default, add only the directories 255eceda581Smrg# with outline fonts; those with bitmaps can be added as desired in 256eceda581Smrg# local.conf or ~/.fonts.conf 257eceda581Smrgfc_add_fonts = [] 258eceda581Smrgadditional_fonts_dirs = get_option('additional-fonts-dirs') 259eceda581Smrgif additional_fonts_dirs == ['yes'] 260eceda581Smrg fs = import('fs') 261eceda581Smrg foreach dir : ['/usr/X11R6/lib/X11', '/usr/X11/lib/X11', '/usr/lib/X11'] 262eceda581Smrg if fs.is_dir(dir / 'fonts') 263eceda581Smrg fc_add_fonts += [dir / 'fonts'] 264eceda581Smrg endif 265eceda581Smrg endforeach 266eceda581Smrgelif additional_fonts_dirs == ['no'] 267eceda581Smrg # nothing to do 268eceda581Smrgelse 269eceda581Smrg fc_add_fonts = additional_fonts_dirs 270eceda581Smrgendif 271eceda581Smrgxml_path = '' 272eceda581Smrgescaped_xml_path = '' 273eceda581Smrgforeach p : fc_add_fonts 274eceda581Smrg s = '\t<dir>' + p + '</dir>\n' 275eceda581Smrg xml_path += s 276eceda581Smrg # No substitution method for string 277eceda581Smrg s = '\\t<dir>' + p + '</dir>\\n' 278eceda581Smrg escaped_xml_path += s 279eceda581Smrgendforeach 280eceda581Smrgconf.set_quoted('FC_FONTPATH', escaped_xml_path) 281eceda581Smrgfonts_conf.set('FC_FONTPATH', xml_path) 282a4e54154Smrg 283eceda581Smrgfc_cachedir = get_option('cache-dir') 284eceda581Smrgif fc_cachedir in ['yes', 'no', 'default'] 285eceda581Smrg if host_machine.system() == 'windows' 286eceda581Smrg fc_cachedir = 'LOCAL_APPDATA_FONTCONFIG_CACHE' 287eceda581Smrg else 288eceda581Smrg fc_cachedir = join_paths(prefix, get_option('localstatedir'), 'cache', meson.project_name()) 289eceda581Smrg endif 290eceda581Smrgendif 291eceda581Smrg 292eceda581Smrgif host_machine.system() != 'windows' 293eceda581Smrg thread_dep = dependency('threads') 294eceda581Smrg conf.set('HAVE_PTHREAD', 1) 295eceda581Smrg deps += [thread_dep] 296eceda581Smrgendif 297eceda581Smrg 298eceda581Smrgfc_templatedir = get_option('template-dir') 299eceda581Smrgif fc_templatedir in ['default', 'yes', 'no'] 300eceda581Smrg fc_templatedir = prefix / get_option('datadir') / 'fontconfig/conf.avail' 301eceda581Smrgendif 302eceda581Smrg 303eceda581Smrgfc_baseconfigdir = get_option('baseconfig-dir') 304eceda581Smrgif fc_baseconfigdir in ['default', 'yes', 'no'] 305ae02b298Smrg fc_baseconfigdir = prefix / get_option('sysconfdir') / 'fonts' 306eceda581Smrgendif 307eceda581Smrg 308eceda581Smrgfc_configdir = get_option('config-dir') 309eceda581Smrgif fc_configdir in ['default', 'yes', 'no'] 310eceda581Smrg fc_configdir = fc_baseconfigdir / 'conf.d' 311eceda581Smrgendif 312eceda581Smrg 313eceda581Smrgfc_xmldir = get_option('xml-dir') 314eceda581Smrgif fc_xmldir in ['default', 'yes', 'no'] 315eceda581Smrg fc_xmldir = prefix / get_option('datadir') / 'xml/fontconfig' 316eceda581Smrgendif 317a4e54154Smrg 318a4e54154Smrgconf.set_quoted('CONFIGDIR', fc_configdir) 319a4e54154Smrgconf.set_quoted('FC_CACHEDIR', fc_cachedir) 320a4e54154Smrgconf.set_quoted('FC_TEMPLATEDIR', fc_templatedir) 321a4e54154Smrgconf.set_quoted('FONTCONFIG_PATH', fc_baseconfigdir) 322a4e54154Smrgconf.set_quoted('FC_FONTPATH', '') 323a4e54154Smrg 324a4e54154Smrgfonts_conf.set('FC_FONTPATH', '') 325a4e54154Smrgfonts_conf.set('FC_CACHEDIR', fc_cachedir) 326a4e54154Smrgfonts_conf.set('CONFIGDIR', fc_configdir) 327a4e54154Smrg# strip off fc_baseconfigdir prefix if that is the prefix 328a4e54154Smrgif fc_configdir.startswith(fc_baseconfigdir + '/') 329a4e54154Smrg fonts_conf.set('CONFIGDIR', fc_configdir.split(fc_baseconfigdir + '/')[1]) 330a4e54154Smrgendif 331a4e54154Smrg 3321cc69409Smrggperf = find_program('gperf', required: false) 3331cc69409Smrggperf_len_type = '' 334a4e54154Smrg 3351cc69409Smrgif gperf.found() 336a4e54154Smrg gperf_test_format = ''' 337a4e54154Smrg #include <string.h> 338a4e54154Smrg const char * in_word_set(const char *, @0@); 339a4e54154Smrg @1@ 340a4e54154Smrg ''' 3411cc69409Smrg gperf_snippet = run_command(gperf, '-L', 'ANSI-C', files('meson-cc-tests/gperf.txt'), 342ae02b298Smrg check: true).stdout() 343a4e54154Smrg 3441cc69409Smrg foreach type : ['size_t', 'unsigned'] 3451cc69409Smrg if cc.compiles(gperf_test_format.format(type, gperf_snippet)) 3461cc69409Smrg gperf_len_type = type 3471cc69409Smrg break 348a4e54154Smrg endif 3491cc69409Smrg endforeach 3501cc69409Smrg 3511cc69409Smrg if gperf_len_type == '' 3521cc69409Smrg error('unable to determine gperf len type') 353a4e54154Smrg endif 3541cc69409Smrgelse 3551cc69409Smrg # Fallback to subproject 3561cc69409Smrg gperf = find_program('gperf') 3571cc69409Smrg # assume if we are compiling from the wrap, the size is just size_t 3581cc69409Smrg gperf_len_type = 'size_t' 359a4e54154Smrgendif 360a4e54154Smrg 361a4e54154Smrgmessage('gperf len type is @0@'.format(gperf_len_type)) 362a4e54154Smrg 363a4e54154Smrgconf.set('FC_GPERF_SIZE_T', gperf_len_type, 364ae02b298Smrg description : 'The type of gperf "len" parameter') 365a4e54154Smrg 366a4e54154Smrgconf.set('_GNU_SOURCE', true) 367a4e54154Smrg 368a4e54154Smrgconf.set_quoted('GETTEXT_PACKAGE', meson.project_name()) 369a4e54154Smrg 370a4e54154Smrgincsrc = include_directories('src') 371a4e54154Smrg 372a4e54154Smrg# We assume stdint.h is available 373a4e54154Smrgforeach t : ['uint64_t', 'int32_t', 'uintptr_t', 'intptr_t'] 374a4e54154Smrg if not cc.has_type(t, prefix: '#include <stdint.h>') 375a4e54154Smrg error('Sanity check failed: type @0@ not provided via stdint.h'.format(t)) 376a4e54154Smrg endif 377a4e54154Smrgendforeach 378a4e54154Smrg 379a4e54154Smrgfcstdint_h = configure_file( 380a4e54154Smrg input: 'src/fcstdint.h.in', 381a4e54154Smrg output: 'fcstdint.h', 382a4e54154Smrg copy: true) 383a4e54154Smrg 384a4e54154Smrgmakealias = files('src/makealias.py')[0] 385a4e54154Smrg 386a4e54154Smrgalias_headers = custom_target('alias_headers', 387ae02b298Smrg output: ['fcalias.h', 'fcaliastail.h'], 388ae02b298Smrg input: ['fontconfig/fontconfig.h', 'src/fcdeprecate.h', 'fontconfig/fcprivate.h'], 389ae02b298Smrg command: [python3, makealias, join_paths(meson.current_source_dir(), 'src'), '@OUTPUT@', '@INPUT@'], 390ae02b298Smrg ) 391a4e54154Smrg 392a4e54154Smrgft_alias_headers = custom_target('ft_alias_headers', 393ae02b298Smrg output: ['fcftalias.h', 'fcftaliastail.h'], 394ae02b298Smrg input: ['fontconfig/fcfreetype.h'], 395ae02b298Smrg command: [python3, makealias, join_paths(meson.current_source_dir(), 'src'), '@OUTPUT@', '@INPUT@'] 396ae02b298Smrg ) 397a4e54154Smrg 398a4e54154Smrgtools_man_pages = [] 399a4e54154Smrg 400a4e54154Smrg# Do not reorder 401a4e54154Smrgsubdir('fc-case') 402a4e54154Smrgsubdir('fc-lang') 403a4e54154Smrgsubdir('src') 404a4e54154Smrg 405a4e54154Smrgif not get_option('tools').disabled() 406a4e54154Smrg subdir('fc-cache') 407a4e54154Smrg subdir('fc-cat') 408a4e54154Smrg subdir('fc-conflist') 409a4e54154Smrg subdir('fc-list') 410a4e54154Smrg subdir('fc-match') 411a4e54154Smrg subdir('fc-pattern') 412a4e54154Smrg subdir('fc-query') 413a4e54154Smrg subdir('fc-scan') 414a4e54154Smrg subdir('fc-validate') 415a4e54154Smrgendif 416a4e54154Smrg 417a4e54154Smrgif not get_option('tests').disabled() 418a4e54154Smrg subdir('test') 419a4e54154Smrgendif 420a4e54154Smrg 421a4e54154Smrgsubdir('conf.d') 422a4e54154Smrgsubdir('its') 423a4e54154Smrg 424a4e54154Smrg# xgettext is optional (on Windows for instance) 425a4e54154Smrgif find_program('xgettext', required : get_option('nls')).found() 426a4e54154Smrg subdir('po') 427a4e54154Smrg subdir('po-conf') 428a4e54154Smrgendif 429a4e54154Smrg 430a4e54154Smrgif not get_option('doc').disabled() 431a4e54154Smrg subdir('doc') 432a4e54154Smrgendif 433a4e54154Smrg 434a4e54154Smrgconfigure_file(output: 'config.h', configuration: conf) 435a4e54154Smrg 436a4e54154Smrgconfigure_file(output: 'fonts.conf', 437ae02b298Smrg input: 'fonts.conf.in', 438ae02b298Smrg configuration: fonts_conf, 439ae02b298Smrg install_dir: fc_baseconfigdir, 440ae02b298Smrg install: true) 441a4e54154Smrg 442a4e54154Smrginstall_data('fonts.dtd', 443ae02b298Smrg install_dir: join_paths(get_option('prefix'), get_option('datadir'), 'xml/fontconfig') 444ae02b298Smrg ) 445a4e54154Smrg 446a4e54154Smrgfc_headers = [ 447a4e54154Smrg 'fontconfig/fontconfig.h', 448a4e54154Smrg 'fontconfig/fcfreetype.h', 449a4e54154Smrg 'fontconfig/fcprivate.h', 450a4e54154Smrg] 451a4e54154Smrg 452a4e54154Smrginstall_headers(fc_headers, subdir: meson.project_name()) 453a4e54154Smrg 454a4e54154Smrg# Summary 455a4e54154Smrgdoc_targets = get_variable('doc_targets', []) 456a4e54154Smrg 457a4e54154Smrgsummary({ 458ae02b298Smrg 'Documentation': (doc_targets.length() > 0 ? doc_targets : false), 459ae02b298Smrg 'NLS': not get_option('nls').disabled(), 460ae02b298Smrg 'Tests': not get_option('tests').disabled(), 461ae02b298Smrg 'Tools': not get_option('tools').disabled(), 462ae02b298Smrg 'iconv': found_iconv == 1, 463ae02b298Smrg}, section: 'General', bool_yn: true, list_sep: ', ') 464eceda581Smrgsummary({ 465ae02b298Smrg 'Hinting': preferred_hinting, 466ae02b298Smrg 'Font directories': fc_fonts_paths, 467ae02b298Smrg 'Additional font directories': fc_add_fonts, 468ae02b298Smrg}, section: 'Defaults', bool_yn: true, list_sep: ', ') 469eceda581Smrgsummary({ 470ae02b298Smrg 'Cache directory': fc_cachedir, 471ae02b298Smrg 'Template directory': fc_templatedir, 472ae02b298Smrg 'Base config directory': fc_baseconfigdir, 473ae02b298Smrg 'Config directory': fc_configdir, 474ae02b298Smrg 'XML directory': fc_xmldir, 475ae02b298Smrg}, section: 'Paths', bool_yn: true, list_sep: ', ') 476