xref: /aosp_15_r20/external/mesa3d/src/nouveau/nil/meson.build (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker# Copyright © 2022 Collabora Ltd
2*61046927SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT
3*61046927SAndroid Build Coastguard Workerprog_cbindgen = find_program(
4*61046927SAndroid Build Coastguard Worker  'cbindgen',
5*61046927SAndroid Build Coastguard Worker  required : true,
6*61046927SAndroid Build Coastguard Worker  native : true,
7*61046927SAndroid Build Coastguard Worker  version : '>= 0.25'
8*61046927SAndroid Build Coastguard Worker)
9*61046927SAndroid Build Coastguard Worker
10*61046927SAndroid Build Coastguard Workerdep_paste = dependency('paste',
11*61046927SAndroid Build Coastguard Worker  version : '>= 1.0.14',
12*61046927SAndroid Build Coastguard Worker  fallback : ['paste', 'dep_paste'],
13*61046927SAndroid Build Coastguard Worker  required : true,
14*61046927SAndroid Build Coastguard Worker)
15*61046927SAndroid Build Coastguard Worker
16*61046927SAndroid Build Coastguard Worker_nil_format_table = custom_target(
17*61046927SAndroid Build Coastguard Worker  'nil_format_table',
18*61046927SAndroid Build Coastguard Worker  input : files('nil_format_table_gen.py', 'nil_formats.csv'),
19*61046927SAndroid Build Coastguard Worker  output : ['nil_format_table.h', 'nil_format_table.c'],
20*61046927SAndroid Build Coastguard Worker  depends: u_format_gen_h,
21*61046927SAndroid Build Coastguard Worker  command : [
22*61046927SAndroid Build Coastguard Worker    prog_python, '@INPUT0@', '--csv', '@INPUT1@',
23*61046927SAndroid Build Coastguard Worker    '--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@',
24*61046927SAndroid Build Coastguard Worker  ],
25*61046927SAndroid Build Coastguard Worker)
26*61046927SAndroid Build Coastguard Worker
27*61046927SAndroid Build Coastguard Worker_libnil_format_table = static_library(
28*61046927SAndroid Build Coastguard Worker  'libnil_format_table',
29*61046927SAndroid Build Coastguard Worker  _nil_format_table,
30*61046927SAndroid Build Coastguard Worker  include_directories : [inc_include, inc_src],
31*61046927SAndroid Build Coastguard Worker  dependencies : [idep_nvidia_headers, idep_mesautil],
32*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility: 'hidden',
33*61046927SAndroid Build Coastguard Worker)
34*61046927SAndroid Build Coastguard Worker
35*61046927SAndroid Build Coastguard Worker_libnil_deps = [
36*61046927SAndroid Build Coastguard Worker  dep_paste,
37*61046927SAndroid Build Coastguard Worker  idep_bitview_rs,
38*61046927SAndroid Build Coastguard Worker  idep_nvidia_headers_rs,
39*61046927SAndroid Build Coastguard Worker]
40*61046927SAndroid Build Coastguard Worker
41*61046927SAndroid Build Coastguard Worker_libnil_rust_args = [
42*61046927SAndroid Build Coastguard Worker  '-Aclippy::identity_op',
43*61046927SAndroid Build Coastguard Worker  '-Aclippy::len_zero',
44*61046927SAndroid Build Coastguard Worker  '-Aclippy::manual_range_contains',
45*61046927SAndroid Build Coastguard Worker  # normally this is a good one, but we use it where the "better" code is worse
46*61046927SAndroid Build Coastguard Worker  '-Aclippy::needless_range_loop',
47*61046927SAndroid Build Coastguard Worker  '-Aclippy::redundant_field_names',
48*61046927SAndroid Build Coastguard Worker  '-Aclippy::upper_case_acronyms',
49*61046927SAndroid Build Coastguard Worker  '-Aclippy::vec_box',
50*61046927SAndroid Build Coastguard Worker  '-Aclippy::write_with_newline',
51*61046927SAndroid Build Coastguard Worker  '-Anon_snake_case',
52*61046927SAndroid Build Coastguard Worker]
53*61046927SAndroid Build Coastguard Worker
54*61046927SAndroid Build Coastguard Worker_nil_bindings_rs = rust.bindgen(
55*61046927SAndroid Build Coastguard Worker  input: ['nil_bindings.h', _nil_format_table],
56*61046927SAndroid Build Coastguard Worker  output: 'nil_bindings.rs',
57*61046927SAndroid Build Coastguard Worker  c_args: [
58*61046927SAndroid Build Coastguard Worker    pre_args,
59*61046927SAndroid Build Coastguard Worker  ],
60*61046927SAndroid Build Coastguard Worker  include_directories : [inc_include, inc_src, include_directories('.')],
61*61046927SAndroid Build Coastguard Worker  args: [
62*61046927SAndroid Build Coastguard Worker    '--raw-line', '#![allow(non_camel_case_types)]',
63*61046927SAndroid Build Coastguard Worker    '--raw-line', '#![allow(non_snake_case)]',
64*61046927SAndroid Build Coastguard Worker    '--raw-line', '#![allow(non_upper_case_globals)]',
65*61046927SAndroid Build Coastguard Worker    '--allowlist-function', 'util_format_description',
66*61046927SAndroid Build Coastguard Worker    '--allowlist-function', 'util_format_get_blocksize',
67*61046927SAndroid Build Coastguard Worker    '--allowlist-function', 'util_format_is_compressed',
68*61046927SAndroid Build Coastguard Worker    '--allowlist-function', 'util_format_is_pure_integer',
69*61046927SAndroid Build Coastguard Worker    '--allowlist-function', 'util_format_is_srgb',
70*61046927SAndroid Build Coastguard Worker    '--allowlist-function', 'drm_format_mod_block_linear_2D',
71*61046927SAndroid Build Coastguard Worker    '--allowlist-function', 'drm_mod_is_nvidia',
72*61046927SAndroid Build Coastguard Worker    '--allowlist-type', 'nil_format_support_flags',
73*61046927SAndroid Build Coastguard Worker    '--allowlist-type', 'nv_device_info',
74*61046927SAndroid Build Coastguard Worker    '--allowlist-type', 'nv_device_type',
75*61046927SAndroid Build Coastguard Worker    '--allowlist-type', 'pipe_format',
76*61046927SAndroid Build Coastguard Worker    '--allowlist-type', 'pipe_swizzle',
77*61046927SAndroid Build Coastguard Worker    '--allowlist-var', 'nil_format_table',
78*61046927SAndroid Build Coastguard Worker    '--allowlist-var', 'drm_format_mod_invalid',
79*61046927SAndroid Build Coastguard Worker    '--allowlist-var', 'drm_format_mod_linear',
80*61046927SAndroid Build Coastguard Worker    '--no-prepend-enum-name',
81*61046927SAndroid Build Coastguard Worker  ],
82*61046927SAndroid Build Coastguard Worker  dependencies: _libnil_deps,
83*61046927SAndroid Build Coastguard Worker)
84*61046927SAndroid Build Coastguard Worker
85*61046927SAndroid Build Coastguard Worker_libnil_rs_bindings = static_library(
86*61046927SAndroid Build Coastguard Worker  'nil_rs_bindings',
87*61046927SAndroid Build Coastguard Worker  _nil_bindings_rs,
88*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility: 'hidden',
89*61046927SAndroid Build Coastguard Worker  rust_abi: 'rust',
90*61046927SAndroid Build Coastguard Worker)
91*61046927SAndroid Build Coastguard Worker
92*61046927SAndroid Build Coastguard Worker_libnil = static_library(
93*61046927SAndroid Build Coastguard Worker  'libnil',
94*61046927SAndroid Build Coastguard Worker  files('lib.rs'),
95*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility: 'hidden',
96*61046927SAndroid Build Coastguard Worker  rust_abi: 'c',
97*61046927SAndroid Build Coastguard Worker  rust_args: _libnil_rust_args,
98*61046927SAndroid Build Coastguard Worker  link_with: [_libnil_format_table, _libnil_rs_bindings],
99*61046927SAndroid Build Coastguard Worker  dependencies: _libnil_deps,
100*61046927SAndroid Build Coastguard Worker)
101*61046927SAndroid Build Coastguard Worker
102*61046927SAndroid Build Coastguard Worker_nil_h = custom_target(
103*61046927SAndroid Build Coastguard Worker  'nil_h',
104*61046927SAndroid Build Coastguard Worker  input : [files('cbindgen.toml'), 'lib.rs'],
105*61046927SAndroid Build Coastguard Worker  output : ['nil.h'],
106*61046927SAndroid Build Coastguard Worker  command : [
107*61046927SAndroid Build Coastguard Worker    prog_cbindgen, '-q', '--config', '@INPUT0@', '--lang', 'c',
108*61046927SAndroid Build Coastguard Worker    '--output', '@OUTPUT0@', '--depfile', '@DEPFILE@',
109*61046927SAndroid Build Coastguard Worker    '--', '@INPUT1@',
110*61046927SAndroid Build Coastguard Worker  ],
111*61046927SAndroid Build Coastguard Worker  depfile : 'nil.h.d',
112*61046927SAndroid Build Coastguard Worker)
113*61046927SAndroid Build Coastguard Worker
114*61046927SAndroid Build Coastguard Workeridep_nil = declare_dependency(
115*61046927SAndroid Build Coastguard Worker  include_directories : include_directories('.'),
116*61046927SAndroid Build Coastguard Worker  link_with : _libnil,
117*61046927SAndroid Build Coastguard Worker  sources : [_nil_h],
118*61046927SAndroid Build Coastguard Worker)
119