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