1*54e60f84SAndroid Build Coastguard Worker# libva package version number, (as distinct from shared library version) 2*54e60f84SAndroid Build Coastguard Worker# XXX: we want the package version to remain at 1.0.x for VA-API 0.32.y 3*54e60f84SAndroid Build Coastguard Worker# 4*54e60f84SAndroid Build Coastguard Worker# - major version is automatically generated from VA-API major version 5*54e60f84SAndroid Build Coastguard Worker# - minor version is automatically generated from VA-API minor version 6*54e60f84SAndroid Build Coastguard Worker# - increment micro for any library release 7*54e60f84SAndroid Build Coastguard Worker# - reset micro version to zero when VA-API major or minor version is changed 8*54e60f84SAndroid Build Coastguard Workerproject( 9*54e60f84SAndroid Build Coastguard Worker 'libva', 'c', 10*54e60f84SAndroid Build Coastguard Worker version : '2.22.0', 11*54e60f84SAndroid Build Coastguard Worker meson_version : '>= 0.53.0', 12*54e60f84SAndroid Build Coastguard Worker default_options : [ 'warning_level=1', 13*54e60f84SAndroid Build Coastguard Worker 'buildtype=debugoptimized' ]) 14*54e60f84SAndroid Build Coastguard Worker 15*54e60f84SAndroid Build Coastguard Worker# VA-API version 16*54e60f84SAndroid Build Coastguard Worker# - increment major for any ABI change 17*54e60f84SAndroid Build Coastguard Worker# - increment minor for any interface change (e.g. new/modified function) 18*54e60f84SAndroid Build Coastguard Worker# - increment micro for any other change (new flag, new codec definition, etc.) 19*54e60f84SAndroid Build Coastguard Worker# - reset micro version to zero when minor version is incremented 20*54e60f84SAndroid Build Coastguard Worker# - reset minor version to zero when major version is incremented 21*54e60f84SAndroid Build Coastguard Workerva_api_major_version = 1 22*54e60f84SAndroid Build Coastguard Workerva_api_minor_version = 22 23*54e60f84SAndroid Build Coastguard Workerva_api_micro_version = 0 24*54e60f84SAndroid Build Coastguard Worker 25*54e60f84SAndroid Build Coastguard Workerva_api_version = '@0@.@1@.@2@'.format(va_api_major_version, 26*54e60f84SAndroid Build Coastguard Worker va_api_minor_version, 27*54e60f84SAndroid Build Coastguard Worker va_api_micro_version) 28*54e60f84SAndroid Build Coastguard Worker 29*54e60f84SAndroid Build Coastguard Workerversion_arr = meson.project_version().split('.') 30*54e60f84SAndroid Build Coastguard Workerlibva_major_version = version_arr[0] 31*54e60f84SAndroid Build Coastguard Workerlibva_minor_version = version_arr[1] 32*54e60f84SAndroid Build Coastguard Workerlibva_micro_version = version_arr[2] 33*54e60f84SAndroid Build Coastguard Workerlibva_version = '@0@.@1@.@2@'.format(libva_major_version, 34*54e60f84SAndroid Build Coastguard Worker libva_minor_version, 35*54e60f84SAndroid Build Coastguard Worker libva_micro_version) 36*54e60f84SAndroid Build Coastguard Workerif version_arr.length() == 4 37*54e60f84SAndroid Build Coastguard Worker libva_version = '@[email protected]@1@'.format(libva_version, version_arr[3]) 38*54e60f84SAndroid Build Coastguard Workerendif 39*54e60f84SAndroid Build Coastguard Worker 40*54e60f84SAndroid Build Coastguard Worker 41*54e60f84SAndroid Build Coastguard Worker# libva library version number (generated, do not change) 42*54e60f84SAndroid Build Coastguard Worker# XXX: we want the SONAME to remain at libva.so.1 for VA-API major == 0 43*54e60f84SAndroid Build Coastguard Worker# 44*54e60f84SAndroid Build Coastguard Worker# The library name is generated libva.<x>.<y>.0 where 45*54e60f84SAndroid Build Coastguard Worker# <x> = VA-API major version + 1 46*54e60f84SAndroid Build Coastguard Worker# <y> = 100 * VA-API minor version + VA-API micro version 47*54e60f84SAndroid Build Coastguard Worker# 48*54e60f84SAndroid Build Coastguard Worker# For example: 49*54e60f84SAndroid Build Coastguard Worker# VA-API 0.32.0 generates libva.so.1.3200.0 50*54e60f84SAndroid Build Coastguard Worker# VA-API 0.34.1 generates libva.so.1.3401.0 51*54e60f84SAndroid Build Coastguard Worker# VA-API 1.2.13 generates libva.so.2.213.0 52*54e60f84SAndroid Build Coastguard Workerlibva_interface_bias = va_api_major_version + 1 53*54e60f84SAndroid Build Coastguard Workerlibva_interface_age = 0 54*54e60f84SAndroid Build Coastguard Workerlibva_binary_age = 100 * va_api_minor_version + va_api_micro_version - libva_interface_age 55*54e60f84SAndroid Build Coastguard Worker 56*54e60f84SAndroid Build Coastguard Workerlibva_lt_current = 100 * va_api_minor_version + va_api_micro_version + libva_interface_bias 57*54e60f84SAndroid Build Coastguard Workerlibva_lt_revision = libva_interface_age 58*54e60f84SAndroid Build Coastguard Workerlibva_lt_age = libva_binary_age - libva_interface_age 59*54e60f84SAndroid Build Coastguard Worker 60*54e60f84SAndroid Build Coastguard Workerlibva_lt_current = libva_lt_current - libva_lt_age 61*54e60f84SAndroid Build Coastguard Worker 62*54e60f84SAndroid Build Coastguard Workerlibva_lt_version = '@0@.@1@.@2@'.format(libva_lt_current, 63*54e60f84SAndroid Build Coastguard Worker libva_lt_age, 64*54e60f84SAndroid Build Coastguard Worker libva_lt_revision) 65*54e60f84SAndroid Build Coastguard Worker 66*54e60f84SAndroid Build Coastguard Workersysconfdir = join_paths(get_option('prefix'), get_option('sysconfdir')) 67*54e60f84SAndroid Build Coastguard Worker 68*54e60f84SAndroid Build Coastguard Workerdriverdir = get_option('driverdir') 69*54e60f84SAndroid Build Coastguard Workerif driverdir == '' 70*54e60f84SAndroid Build Coastguard Worker # "libdir" on Windows is essentially only for static and import libraries, 71*54e60f84SAndroid Build Coastguard Worker # while "bindir" is the actual runtime directory - containing both 72*54e60f84SAndroid Build Coastguard Worker # executable and dynamic libraries. During install meson uses correct install 73*54e60f84SAndroid Build Coastguard Worker # location depending on the type of library, requiring zero user intervention 74*54e60f84SAndroid Build Coastguard Worker # in the common case. 75*54e60f84SAndroid Build Coastguard Worker if host_machine.system() == 'windows' 76*54e60f84SAndroid Build Coastguard Worker driverdir = join_paths(get_option('prefix'), get_option('bindir')) 77*54e60f84SAndroid Build Coastguard Worker else 78*54e60f84SAndroid Build Coastguard Worker driverdir = join_paths(get_option('prefix'), get_option('libdir'), 'dri') 79*54e60f84SAndroid Build Coastguard Worker endif 80*54e60f84SAndroid Build Coastguard Workerendif 81*54e60f84SAndroid Build Coastguard Worker 82*54e60f84SAndroid Build Coastguard Workerconfiginc = include_directories('.') 83*54e60f84SAndroid Build Coastguard Worker 84*54e60f84SAndroid Build Coastguard Workercc = meson.get_compiler('c') 85*54e60f84SAndroid Build Coastguard Workerdl_dep = cc.find_library('dl', required : false) 86*54e60f84SAndroid Build Coastguard Worker 87*54e60f84SAndroid Build Coastguard WorkerWITH_DRM = not get_option('disable_drm') and (host_machine.system() != 'windows') 88*54e60f84SAndroid Build Coastguard Workerlibdrm_dep = dependency('libdrm', version : '>= 2.4.75', required : (host_machine.system() != 'windows')) 89*54e60f84SAndroid Build Coastguard Worker 90*54e60f84SAndroid Build Coastguard WorkerWITH_X11 = false 91*54e60f84SAndroid Build Coastguard Workerif get_option('with_x11') != 'no' 92*54e60f84SAndroid Build Coastguard Worker x11_dep = dependency('x11', required : get_option('with_x11') == 'yes') 93*54e60f84SAndroid Build Coastguard Worker xext_dep = dependency('xext', required : get_option('with_x11') == 'yes') 94*54e60f84SAndroid Build Coastguard Worker xfixes_dep = dependency('xfixes', required : get_option('with_x11') == 'yes') 95*54e60f84SAndroid Build Coastguard Worker 96*54e60f84SAndroid Build Coastguard Worker WITH_X11 = (x11_dep.found() and xext_dep.found() and xfixes_dep.found()) 97*54e60f84SAndroid Build Coastguard Worker 98*54e60f84SAndroid Build Coastguard Worker x11_xcb_dep = dependency('x11-xcb', required : get_option('with_x11') == 'yes') 99*54e60f84SAndroid Build Coastguard Worker xcb_dep = dependency('xcb', required : get_option('with_x11') == 'yes') 100*54e60f84SAndroid Build Coastguard Worker xcb_dri3_dep = dependency('xcb-dri3', required : get_option('with_x11') == 'yes') 101*54e60f84SAndroid Build Coastguard Worker WITH_X11 = (WITH_X11 and x11_xcb_dep.found() and xcb_dep.found() and xcb_dri3_dep.found()) 102*54e60f84SAndroid Build Coastguard Workerendif 103*54e60f84SAndroid Build Coastguard Worker 104*54e60f84SAndroid Build Coastguard Workerif not WITH_X11 and get_option('with_glx') == 'yes' 105*54e60f84SAndroid Build Coastguard Worker error('VA/GLX explicitly enabled, but VA/X11 isn\'t built') 106*54e60f84SAndroid Build Coastguard Workerendif 107*54e60f84SAndroid Build Coastguard Worker 108*54e60f84SAndroid Build Coastguard WorkerWITH_GLX = false 109*54e60f84SAndroid Build Coastguard Workerif WITH_X11 and get_option('with_glx') != 'no' 110*54e60f84SAndroid Build Coastguard Worker gl_dep = dependency('gl', required : get_option('with_glx') == 'yes') 111*54e60f84SAndroid Build Coastguard Worker WITH_GLX = gl_dep.found() 112*54e60f84SAndroid Build Coastguard Workerendif 113*54e60f84SAndroid Build Coastguard Worker 114*54e60f84SAndroid Build Coastguard WorkerWITH_WAYLAND = false 115*54e60f84SAndroid Build Coastguard Workerif get_option('with_wayland') != 'no' 116*54e60f84SAndroid Build Coastguard Worker wayland_dep = dependency('wayland-client', version : '>= 1.11.0', 117*54e60f84SAndroid Build Coastguard Worker required : get_option('with_wayland') == 'yes') 118*54e60f84SAndroid Build Coastguard Worker wayland_scanner_dep = dependency('wayland-scanner', version : '>= 1.15', 119*54e60f84SAndroid Build Coastguard Worker required : get_option('with_wayland') == 'yes', 120*54e60f84SAndroid Build Coastguard Worker native : true) 121*54e60f84SAndroid Build Coastguard Worker if wayland_scanner_dep.found() 122*54e60f84SAndroid Build Coastguard Worker wl_scanner = find_program(wayland_scanner_dep.get_variable(pkgconfig: 'wayland_scanner')) 123*54e60f84SAndroid Build Coastguard Worker endif 124*54e60f84SAndroid Build Coastguard Worker WITH_WAYLAND = wayland_dep.found() and wayland_scanner_dep.found() 125*54e60f84SAndroid Build Coastguard Workerendif 126*54e60f84SAndroid Build Coastguard Worker 127*54e60f84SAndroid Build Coastguard WorkerWITH_WIN32 = false 128*54e60f84SAndroid Build Coastguard Workerlibwin32_dep = [] 129*54e60f84SAndroid Build Coastguard Workerif get_option('with_win32') != 'no' 130*54e60f84SAndroid Build Coastguard Worker WITH_WIN32 = (host_machine.system() == 'windows') 131*54e60f84SAndroid Build Coastguard Workerendif 132*54e60f84SAndroid Build Coastguard Worker 133*54e60f84SAndroid Build Coastguard Workerif (not WITH_DRM and not WITH_X11 and not WITH_WAYLAND and not WITH_WIN32) 134*54e60f84SAndroid Build Coastguard Worker error('Please install at least one backend dev files (DRM, X11, Wayland, WIN32)') 135*54e60f84SAndroid Build Coastguard Workerendif 136*54e60f84SAndroid Build Coastguard Worker 137*54e60f84SAndroid Build Coastguard Workerc_args = [] 138*54e60f84SAndroid Build Coastguard Workerif get_option('with_legacy').contains('emgd') 139*54e60f84SAndroid Build Coastguard Worker c_args += ['-DHAVE_EMGD'] 140*54e60f84SAndroid Build Coastguard Workerelif get_option('with_legacy').contains('nvctrl') 141*54e60f84SAndroid Build Coastguard Worker c_args += ['-DHAVE_NVCTRL'] 142*54e60f84SAndroid Build Coastguard Workerelif get_option('with_legacy').contains('fglrx') 143*54e60f84SAndroid Build Coastguard Worker c_args += ['-DHAVE_FGLRX'] 144*54e60f84SAndroid Build Coastguard Workerendif 145*54e60f84SAndroid Build Coastguard Worker 146*54e60f84SAndroid Build Coastguard Workerif cc.has_function('secure_getenv') 147*54e60f84SAndroid Build Coastguard Worker c_args += ['-DHAVE_SECURE_GETENV'] 148*54e60f84SAndroid Build Coastguard Workerendif 149*54e60f84SAndroid Build Coastguard Worker 150*54e60f84SAndroid Build Coastguard Workeradd_project_arguments(c_args, language: ['c']) 151*54e60f84SAndroid Build Coastguard Worker 152*54e60f84SAndroid Build Coastguard Workersubdir('va') 153*54e60f84SAndroid Build Coastguard Workersubdir('pkgconfig') 154*54e60f84SAndroid Build Coastguard Worker 155*54e60f84SAndroid Build Coastguard Workerdoxygen = find_program('doxygen', required: false) 156*54e60f84SAndroid Build Coastguard Worker 157*54e60f84SAndroid Build Coastguard Workerif get_option('enable_docs') and doxygen.found() 158*54e60f84SAndroid Build Coastguard Worker subdir('doc') 159*54e60f84SAndroid Build Coastguard Workerendif 160*54e60f84SAndroid Build Coastguard Worker 161