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