1# Copyright 2018 Rob Clark 2# Copyright 2019 Collabora, Ltd. 3# Copyright 2017 Intel Corporation 4# SPDX-License-Identifier: MIT 5 6dep_iokit = dependency('IOKit', required : false) 7 8libasahi_lib_files = files( 9 'agx_bo.c', 10 'agx_border.c', 11 'agx_device.c', 12 'agx_device_virtio.c', 13 'agx_linker.c', 14 'agx_bg_eot.c', 15 'agx_tilebuffer.c', 16 'agx_nir_lower_alpha.c', 17 'agx_nir_lower_gs.c', 18 'agx_nir_lower_ia.c', 19 'agx_nir_lower_msaa.c', 20 'agx_nir_lower_sample_intrinsics.c', 21 'agx_nir_lower_tess.c', 22 'agx_nir_lower_texture.c', 23 'agx_nir_lower_tilebuffer.c', 24 'agx_nir_lower_uvs.c', 25 'agx_nir_lower_vbo.c', 26 'agx_nir_prolog_epilog.c', 27 'agx_ppp.h', 28 'agx_scratch.c', 29 'agx_va.c', 30 'pool.c', 31) 32 33libasahi_decode_files = files( 34 'decode.c', 35) 36 37libagx_shader_files = files( 38 'shaders/libagx.h', 39 'shaders/compression.cl', 40 'shaders/draws.cl', 41 'shaders/draws.h', 42 'shaders/geometry.cl', 43 'shaders/geometry.h', 44 'shaders/query.cl', 45 'shaders/query.h', 46 'shaders/tessellation.cl', 47 'shaders/tessellator.cl', 48 'shaders/tessellator.h', 49 'shaders/texture.cl', 50 'shaders/helper.cl', 51) 52 53libasahi_decode = static_library( 54 'asahi_decode', 55 [libasahi_decode_files, agx_pack], 56 dependencies : [dep_valgrind, idep_mesautil], 57 c_args : [no_override_init_args], 58 gnu_symbol_visibility : 'hidden', 59 build_by_default : false, 60) 61 62libasahi_decode_shared = shared_library( 63 'asahi_decode', 64 [libasahi_decode_files, agx_pack], 65 dependencies : [dep_valgrind, idep_mesautil], 66 c_args : [no_override_init_args], 67 build_by_default : with_tools.contains('asahi'), 68) 69 70prepended_input_args = [] 71foreach input_arg : libagx_shader_files 72 prepended_input_args += ['--in', input_arg] 73endforeach 74libagx_shaders = custom_target( 75 'libagx_shaders.h', 76 input : libagx_shader_files, 77 output : 'libagx_shaders.h', 78 command : [ 79 prog_asahi_clc, '--prefix', 'libagx_shaders', 80 prepended_input_args, '-o', '@OUTPUT@', '--', 81 '-cl-std=cl2.0', '-D__OPENCL_VERSION__=200', 82 '-I' + join_paths(meson.current_source_dir(), '.'), 83 '-I' + join_paths(meson.current_source_dir(), '../../'), 84 '-I' + join_paths(meson.current_source_dir(), 'shaders'), 85 '-I' + join_paths(meson.current_build_dir(), '../genxml'), 86 ], 87 env: ['MESA_SHADER_CACHE_DISABLE=true'], 88 depends : [prog_asahi_clc, agx_pack], 89) 90 91libasahi_lib = static_library( 92 'asahi_lib', 93 [libasahi_lib_files, libagx_shaders, agx_pack, sha1_h], 94 include_directories : [inc_asahi, inc_virtio_gpu, inc_virtio_vdrm], 95 c_args : [no_override_init_args], 96 gnu_symbol_visibility : 'hidden', 97 link_with: [libasahi_decode, libvdrm], 98 dependencies: [dep_libdrm, dep_valgrind, idep_nir, idep_mesautil], 99 build_by_default : false, 100) 101 102if with_tests 103 test( 104 'libasahi_tests', 105 executable( 106 'libasahi_tests', 107 files( 108 'tests/test-packing.cpp', 109 'tests/test-tilebuffer.cpp', 110 ), 111 c_args : [c_msvc_compat_args, no_override_init_args], 112 gnu_symbol_visibility : 'hidden', 113 dependencies: [idep_gtest, idep_agx_pack, idep_mesautil], 114 link_with : [libasahi_lib, libasahi_layout], 115 ), 116 suite : ['asahi'], 117 protocol : 'gtest', 118 ) 119endif 120 121if dep_iokit.found() 122 libasahi_wrap = shared_library( 123 'wrap', 124 'wrap.c', 125 include_directories : [inc_src, inc_asahi], 126 dependencies : [idep_mesautil, dep_iokit], 127 c_args : [no_override_init_args, '-Wno-missing-prototypes'], 128 gnu_symbol_visibility : 'hidden', 129 build_by_default : with_tools.contains('asahi'), 130 link_with: libasahi_decode, 131 ) 132endif 133