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