• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1project(
2	'libdisplay-info',
3	'c',
4	version: '0.2.0',
5	license: 'MIT',
6	meson_version: '>= 0.57.0',
7	default_options: [
8		'c_std=c11',
9		'warning_level=3',
10		'wrap_mode=nodownload',
11	],
12)
13
14version = meson.project_version().split('-')[0]
15version_major = version.split('.')[0]
16version_minor = version.split('.')[1]
17assert(version_major == '0')
18
19dep_hwdata = dependency('hwdata', required: false, native: true)
20if dep_hwdata.found()
21	hwdata_dir = dep_hwdata.get_variable(pkgconfig: 'pkgdatadir')
22	pnp_ids = files(hwdata_dir / 'pnp.ids')
23else
24	pnp_ids = files('/usr/share/hwdata/pnp.ids')
25endif
26
27gen_search_table = find_program('tool/gen-search-table.py')
28pnp_id_table = custom_target(
29	'pnp-id-table.c',
30	command: [ gen_search_table, pnp_ids, '@OUTPUT@', 'pnp_id_table' ],
31	output: 'pnp-id-table.c',
32)
33
34cc = meson.get_compiler('c')
35
36math = cc.find_library('m', required: false)
37
38add_project_arguments(['-D_POSIX_C_SOURCE=200809L'], language: 'c')
39
40add_project_arguments(cc.get_supported_arguments([
41	'-Wundef',
42	'-Wmissing-prototypes',
43	'-Walloca',
44	'-Wdeclaration-after-statement',
45	'-Wconversion',
46
47	'-Wno-unused-parameter',
48	'-Wno-missing-field-initializers',
49
50	'-Werror=implicit',
51]), language: 'c')
52
53symbols_file = 'libdisplay-info.map'
54symbols_flag = '-Wl,--version-script,@0@'.format(meson.current_source_dir() / symbols_file)
55
56di_lib = library(
57	'display-info',
58	[
59		'cta.c',
60		'cta-vic-table.c',
61		'cvt.c',
62		'displayid.c',
63		'dmt-table.c',
64		'edid.c',
65		'gtf.c',
66		'info.c',
67		'log.c',
68		'memory-stream.c',
69		pnp_id_table,
70	],
71	include_directories: include_directories('include'),
72	dependencies: [math],
73	link_args: symbols_flag,
74	link_depends: symbols_file,
75	install: true,
76	version: version,
77	soversion: version_minor,
78)
79
80install_subdir(
81	'include/libdisplay-info',
82	install_dir: get_option('includedir'),
83)
84
85pkgconfig = import('pkgconfig')
86pkgconfig.generate(
87	di_lib,
88	filebase: 'libdisplay-info',
89	name: 'libdisplay-info',
90	url: 'https://gitlab.freedesktop.org/emersion/libdisplay-info',
91	description: 'EDID and DisplayID library',
92)
93
94di_dep = declare_dependency(
95	link_with: di_lib,
96	include_directories: include_directories('include'),
97)
98
99meson.override_dependency('libdisplay-info', di_dep)
100
101subdir('di-edid-decode')
102subdir('test')
103