1# Copyright © 2017 Intel Corporation 2# 3# Permission is hereby granted, free of charge, to any person obtaining a copy 4# of this software and associated documentation files (the "Software"), to deal 5# in the Software without restriction, including without limitation the rights 6# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7# copies of the Software, and to permit persons to whom the Software is 8# furnished to do so, subject to the following conditions: 9# 10# The above copyright notice and this permission notice shall be included in 11# all copies or substantial portions of the Software. 12# 13# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19# SOFTWARE. 20 21vtn_gather_types_c = custom_target( 22 'vtn_gather_types.c', 23 input : files('vtn_gather_types_c.py', 'spirv.core.grammar.json'), 24 output : 'vtn_gather_types.c', 25 command : [prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@'], 26) 27 28spirv_info_c = custom_target( 29 'spirv_info.c', 30 input : files('spirv_info_c.py', 'spirv.core.grammar.json'), 31 output : 'spirv_info.c', 32 command : [prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@'], 33) 34 35vtn_generator_ids_h = custom_target( 36 'vtn_generator_ids.h', 37 input : files('vtn_generator_ids_h.py', 'spir-v.xml'), 38 output : 'vtn_generator_ids.h', 39 command : [prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@'], 40) 41 42files_libvtn = files( 43 'GLSL.ext.AMD.h', 44 'GLSL.std.450.h', 45 'OpenCL.std.h', 46 'gl_spirv.c', 47 'nir_spirv.h', 48 'spirv.h', 49 'spirv_info.h', 50 'spirv_to_nir.c', 51 'vtn_alu.c', 52 'vtn_amd.c', 53 'vtn_cfg.c', 54 'vtn_cmat.c', 55 'vtn_glsl450.c', 56 'vtn_opencl.c', 57 'vtn_private.h', 58 'vtn_structured_cfg.c', 59 'vtn_subgroup.c', 60 'vtn_variables.c', 61) 62 63libvtn = static_library( 64 'vtn', 65 [files_libvtn, 66 spirv_info_c, 67 vtn_gather_types_c, 68 vtn_generator_ids_h, 69 ], 70 include_directories : [inc_include, inc_src, inc_mapi, inc_mesa], 71 c_args : [c_msvc_compat_args, no_override_init_args], 72 gnu_symbol_visibility : 'hidden', 73 dependencies : [idep_nir, dep_valgrind], 74 build_by_default : false, 75) 76 77idep_vtn = declare_dependency( 78 dependencies : [idep_nir, idep_mesautil], 79 link_with : libvtn, 80) 81 82spirv2nir = executable( 83 'spirv2nir', 84 files('spirv2nir.c') + [ 85 vtn_generator_ids_h, 86 ], 87 dependencies : [dep_m, idep_vtn, idep_mesautil], 88 include_directories : [inc_include, inc_src], 89 c_args : [c_msvc_compat_args, no_override_init_args], 90 gnu_symbol_visibility : 'hidden', 91 build_by_default : with_tools.contains('nir'), 92 install : with_tools.contains('nir'), 93) 94 95if with_tests 96 test( 97 'spirv_tests', 98 executable( 99 'spirv_tests', 100 files( 101 'tests/helpers.h', 102 'tests/avail_vis.cpp', 103 'tests/volatile.cpp', 104 'tests/control_flow_tests.cpp', 105 ), 106 c_args : [c_msvc_compat_args, no_override_init_args], 107 gnu_symbol_visibility : 'hidden', 108 include_directories : [inc_include, inc_src], 109 dependencies : [idep_vtn, dep_thread, idep_gtest, idep_nir, idep_mesautil], 110 ), 111 suite : ['compiler', 'spirv'], 112 protocol : 'gtest', 113 ) 114endif 115