xref: /aosp_15_r20/external/libva/meson.build (revision 54e60f844a168e9a219354de272cd517ee8cd4b7)
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