| project( |
| 'libdisplay-info', |
| 'c', |
| version: '0.2.0-dev', |
| license: 'MIT', |
| meson_version: '>= 0.57.0', |
| default_options: [ |
| 'c_std=c11', |
| 'warning_level=3', |
| ], |
| ) |
| |
| version = meson.project_version().split('-')[0] |
| version_major = version.split('.')[0] |
| version_minor = version.split('.')[1] |
| assert(version_major == '0') |
| |
| dep_hwdata = dependency('hwdata', required: false, native: true) |
| if dep_hwdata.found() |
| hwdata_dir = dep_hwdata.get_variable(pkgconfig: 'pkgdatadir') |
| pnp_ids = files(hwdata_dir / 'pnp.ids') |
| else |
| pnp_ids = files('/usr/share/hwdata/pnp.ids') |
| endif |
| |
| gen_search_table = find_program('tool/gen-search-table.py') |
| pnp_id_table = custom_target( |
| 'pnp-id-table.c', |
| command: [ gen_search_table, pnp_ids, '@OUTPUT@', 'pnp_id_table' ], |
| output: 'pnp-id-table.c', |
| ) |
| |
| cc = meson.get_compiler('c') |
| |
| math = cc.find_library('m', required: false) |
| |
| add_project_arguments(['-D_POSIX_C_SOURCE=200809L'], language: 'c') |
| |
| add_project_arguments(cc.get_supported_arguments([ |
| '-Wundef', |
| '-Wmissing-prototypes', |
| '-Walloca', |
| '-Wdeclaration-after-statement', |
| '-Wconversion', |
| |
| '-Wno-unused-parameter', |
| '-Wno-missing-field-initializers', |
| |
| '-Werror=implicit', |
| ]), language: 'c') |
| |
| symbols_file = 'libdisplay-info.map' |
| symbols_flag = '-Wl,--version-script,@0@'.format(meson.current_source_dir() / symbols_file) |
| |
| di_lib = library( |
| 'display-info', |
| [ |
| 'cta.c', |
| 'cta-vic-table.c', |
| 'cvt.c', |
| 'displayid.c', |
| 'dmt-table.c', |
| 'edid.c', |
| 'gtf.c', |
| 'info.c', |
| 'log.c', |
| 'memory-stream.c', |
| pnp_id_table, |
| ], |
| include_directories: include_directories('include'), |
| dependencies: [math], |
| link_args: symbols_flag, |
| link_depends: symbols_file, |
| install: true, |
| version: version, |
| soversion: version_minor, |
| ) |
| |
| install_subdir( |
| 'include/libdisplay-info', |
| install_dir: get_option('includedir'), |
| ) |
| |
| pkgconfig = import('pkgconfig') |
| pkgconfig.generate( |
| di_lib, |
| filebase: 'libdisplay-info', |
| name: 'libdisplay-info', |
| url: 'https://gitlab.freedesktop.org/emersion/libdisplay-info', |
| description: 'EDID and DisplayID library', |
| ) |
| |
| di_dep = declare_dependency( |
| link_with: di_lib, |
| include_directories: include_directories('include'), |
| ) |
| |
| meson.override_dependency('libdisplay-info', di_dep) |
| |
| subdir('di-edid-decode') |
| subdir('test') |