1# Copyright (c) 2021 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14import("//build/ohos.gni") 15import("//third_party/vk-gl-cts/vk_gl_cts.gni") 16 17config("deqp_spirvtool_opt_config") { 18 cflags_cc = deqp_common_cflags_cc 19 defines = deqp_common_defines 20 defines += [ 21 "SPIRV_CHECK_CONTEXT", 22 "SPIRV_COLOR_TERMINAL", 23 "SPIRV_LINUX", 24 "SPIRV_TIMER_ENABLED", 25 ] 26} 27 28config("spv_headers_public_config") { 29 include_dirs = [ "include" ] 30} 31 32config("spvtools_include_gen_dirs") { 33 include_dirs = [ "$target_gen_dir" ] 34} 35 36config("spvtools_internal_config") { 37 include_dirs = [ 38 ".", 39 "//third_party/spirv-headers/include", 40 ] 41 42 configs = [ 43 ":spv_headers_public_config", 44 ":spvtools_include_gen_dirs", 45 ] 46 47 cflags = [] 48 if (is_clang) { 49 cflags += [ 50 "-Wno-implicit-fallthrough", 51 "-Wno-newline-eof", 52 "-Wno-unreachable-code-break", 53 "-Wno-unreachable-code-return", 54 ] 55 } else if (!is_win) { 56 # Work around a false-positive on a Skia GCC 10 builder. 57 cflags += [ "-Wno-format-truncation" ] 58 } else { 59 # Make MSVC report the correct value for __cplusplus 60 cflags += [ "/Zc:__cplusplus" ] 61 } 62 63 if (!is_win) { 64 cflags += [ "-std=c++17" ] 65 } else { 66 cflags += [ "/std:c++17" ] 67 } 68} 69 70ohos_source_set("deqp_spirvtool_opt_source") { 71 sources = [ 72 "//third_party/spirv-tools/include/spirv-tools/instrument.hpp", 73 "//third_party/spirv-tools/include/spirv-tools/libspirv.h", 74 "//third_party/spirv-tools/include/spirv-tools/libspirv.hpp", 75 "//third_party/spirv-tools/include/spirv-tools/linker.hpp", 76 "//third_party/spirv-tools/include/spirv-tools/optimizer.hpp", 77 "//third_party/spirv-tools/source/opt/aggressive_dead_code_elim_pass.cpp", 78 "//third_party/spirv-tools/source/opt/aggressive_dead_code_elim_pass.h", 79 "//third_party/spirv-tools/source/opt/amd_ext_to_khr.cpp", 80 "//third_party/spirv-tools/source/opt/amd_ext_to_khr.h", 81 "//third_party/spirv-tools/source/opt/analyze_live_input_pass.cpp", 82 "//third_party/spirv-tools/source/opt/analyze_live_input_pass.h", 83 "//third_party/spirv-tools/source/opt/basic_block.cpp", 84 "//third_party/spirv-tools/source/opt/basic_block.h", 85 "//third_party/spirv-tools/source/opt/block_merge_pass.cpp", 86 "//third_party/spirv-tools/source/opt/block_merge_pass.h", 87 "//third_party/spirv-tools/source/opt/block_merge_util.cpp", 88 "//third_party/spirv-tools/source/opt/block_merge_util.h", 89 "//third_party/spirv-tools/source/opt/build_module.cpp", 90 "//third_party/spirv-tools/source/opt/build_module.h", 91 "//third_party/spirv-tools/source/opt/ccp_pass.cpp", 92 "//third_party/spirv-tools/source/opt/ccp_pass.h", 93 "//third_party/spirv-tools/source/opt/cfg.cpp", 94 "//third_party/spirv-tools/source/opt/cfg.h", 95 "//third_party/spirv-tools/source/opt/cfg_cleanup_pass.cpp", 96 "//third_party/spirv-tools/source/opt/cfg_cleanup_pass.h", 97 "//third_party/spirv-tools/source/opt/code_sink.cpp", 98 "//third_party/spirv-tools/source/opt/code_sink.h", 99 "//third_party/spirv-tools/source/opt/combine_access_chains.cpp", 100 "//third_party/spirv-tools/source/opt/combine_access_chains.h", 101 "//third_party/spirv-tools/source/opt/compact_ids_pass.cpp", 102 "//third_party/spirv-tools/source/opt/compact_ids_pass.h", 103 "//third_party/spirv-tools/source/opt/composite.cpp", 104 "//third_party/spirv-tools/source/opt/composite.h", 105 "//third_party/spirv-tools/source/opt/const_folding_rules.cpp", 106 "//third_party/spirv-tools/source/opt/const_folding_rules.h", 107 "//third_party/spirv-tools/source/opt/constants.cpp", 108 "//third_party/spirv-tools/source/opt/constants.h", 109 "//third_party/spirv-tools/source/opt/control_dependence.cpp", 110 "//third_party/spirv-tools/source/opt/control_dependence.h", 111 "//third_party/spirv-tools/source/opt/convert_to_half_pass.cpp", 112 "//third_party/spirv-tools/source/opt/convert_to_half_pass.h", 113 "//third_party/spirv-tools/source/opt/convert_to_sampled_image_pass.cpp", 114 "//third_party/spirv-tools/source/opt/convert_to_sampled_image_pass.h", 115 "//third_party/spirv-tools/source/opt/copy_prop_arrays.cpp", 116 "//third_party/spirv-tools/source/opt/copy_prop_arrays.h", 117 "//third_party/spirv-tools/source/opt/dataflow.cpp", 118 "//third_party/spirv-tools/source/opt/dataflow.h", 119 "//third_party/spirv-tools/source/opt/dead_branch_elim_pass.cpp", 120 "//third_party/spirv-tools/source/opt/dead_branch_elim_pass.h", 121 "//third_party/spirv-tools/source/opt/dead_insert_elim_pass.cpp", 122 "//third_party/spirv-tools/source/opt/dead_insert_elim_pass.h", 123 "//third_party/spirv-tools/source/opt/dead_variable_elimination.cpp", 124 "//third_party/spirv-tools/source/opt/dead_variable_elimination.h", 125 "//third_party/spirv-tools/source/opt/debug_info_manager.cpp", 126 "//third_party/spirv-tools/source/opt/debug_info_manager.h", 127 "//third_party/spirv-tools/source/opt/decoration_manager.cpp", 128 "//third_party/spirv-tools/source/opt/decoration_manager.h", 129 "//third_party/spirv-tools/source/opt/def_use_manager.cpp", 130 "//third_party/spirv-tools/source/opt/def_use_manager.h", 131 "//third_party/spirv-tools/source/opt/desc_sroa.cpp", 132 "//third_party/spirv-tools/source/opt/desc_sroa.h", 133 "//third_party/spirv-tools/source/opt/desc_sroa_util.cpp", 134 "//third_party/spirv-tools/source/opt/desc_sroa_util.h", 135 "//third_party/spirv-tools/source/opt/dominator_analysis.cpp", 136 "//third_party/spirv-tools/source/opt/dominator_analysis.h", 137 "//third_party/spirv-tools/source/opt/dominator_tree.cpp", 138 "//third_party/spirv-tools/source/opt/dominator_tree.h", 139 "//third_party/spirv-tools/source/opt/eliminate_dead_constant_pass.cpp", 140 "//third_party/spirv-tools/source/opt/eliminate_dead_constant_pass.h", 141 "//third_party/spirv-tools/source/opt/eliminate_dead_functions_pass.cpp", 142 "//third_party/spirv-tools/source/opt/eliminate_dead_functions_pass.h", 143 "//third_party/spirv-tools/source/opt/eliminate_dead_functions_util.cpp", 144 "//third_party/spirv-tools/source/opt/eliminate_dead_functions_util.h", 145 "//third_party/spirv-tools/source/opt/eliminate_dead_io_components_pass.cpp", 146 "//third_party/spirv-tools/source/opt/eliminate_dead_io_components_pass.h", 147 "//third_party/spirv-tools/source/opt/eliminate_dead_members_pass.cpp", 148 "//third_party/spirv-tools/source/opt/eliminate_dead_members_pass.h", 149 "//third_party/spirv-tools/source/opt/eliminate_dead_output_stores_pass.cpp", 150 "//third_party/spirv-tools/source/opt/eliminate_dead_output_stores_pass.h", 151 "//third_party/spirv-tools/source/opt/empty_pass.h", 152 "//third_party/spirv-tools/source/opt/feature_manager.cpp", 153 "//third_party/spirv-tools/source/opt/feature_manager.h", 154 "//third_party/spirv-tools/source/opt/fix_func_call_arguments.cpp", 155 "//third_party/spirv-tools/source/opt/fix_func_call_arguments.h", 156 "//third_party/spirv-tools/source/opt/fix_storage_class.cpp", 157 "//third_party/spirv-tools/source/opt/fix_storage_class.h", 158 "//third_party/spirv-tools/source/opt/flatten_decoration_pass.cpp", 159 "//third_party/spirv-tools/source/opt/flatten_decoration_pass.h", 160 "//third_party/spirv-tools/source/opt/fold.cpp", 161 "//third_party/spirv-tools/source/opt/fold.h", 162 "//third_party/spirv-tools/source/opt/fold_spec_constant_op_and_composite_pass.cpp", 163 "//third_party/spirv-tools/source/opt/fold_spec_constant_op_and_composite_pass.h", 164 "//third_party/spirv-tools/source/opt/folding_rules.cpp", 165 "//third_party/spirv-tools/source/opt/folding_rules.h", 166 "//third_party/spirv-tools/source/opt/freeze_spec_constant_value_pass.cpp", 167 "//third_party/spirv-tools/source/opt/freeze_spec_constant_value_pass.h", 168 "//third_party/spirv-tools/source/opt/function.cpp", 169 "//third_party/spirv-tools/source/opt/function.h", 170 "//third_party/spirv-tools/source/opt/graphics_robust_access_pass.cpp", 171 "//third_party/spirv-tools/source/opt/graphics_robust_access_pass.h", 172 "//third_party/spirv-tools/source/opt/if_conversion.cpp", 173 "//third_party/spirv-tools/source/opt/if_conversion.h", 174 "//third_party/spirv-tools/source/opt/inline_exhaustive_pass.cpp", 175 "//third_party/spirv-tools/source/opt/inline_exhaustive_pass.h", 176 "//third_party/spirv-tools/source/opt/inline_opaque_pass.cpp", 177 "//third_party/spirv-tools/source/opt/inline_opaque_pass.h", 178 "//third_party/spirv-tools/source/opt/inline_pass.cpp", 179 "//third_party/spirv-tools/source/opt/inline_pass.h", 180 "//third_party/spirv-tools/source/opt/inst_bindless_check_pass.cpp", 181 "//third_party/spirv-tools/source/opt/inst_bindless_check_pass.h", 182 "//third_party/spirv-tools/source/opt/inst_buff_addr_check_pass.cpp", 183 "//third_party/spirv-tools/source/opt/inst_buff_addr_check_pass.h", 184 "//third_party/spirv-tools/source/opt/inst_debug_printf_pass.cpp", 185 "//third_party/spirv-tools/source/opt/inst_debug_printf_pass.h", 186 "//third_party/spirv-tools/source/opt/instruction.cpp", 187 "//third_party/spirv-tools/source/opt/instruction.h", 188 "//third_party/spirv-tools/source/opt/instruction_list.cpp", 189 "//third_party/spirv-tools/source/opt/instruction_list.h", 190 "//third_party/spirv-tools/source/opt/instrument_pass.cpp", 191 "//third_party/spirv-tools/source/opt/instrument_pass.h", 192 "//third_party/spirv-tools/source/opt/interface_var_sroa.cpp", 193 "//third_party/spirv-tools/source/opt/interface_var_sroa.h", 194 "//third_party/spirv-tools/source/opt/interp_fixup_pass.cpp", 195 "//third_party/spirv-tools/source/opt/interp_fixup_pass.h", 196 "//third_party/spirv-tools/source/opt/invocation_interlock_placement_pass.cpp", 197 "//third_party/spirv-tools/source/opt/invocation_interlock_placement_pass.h", 198 "//third_party/spirv-tools/source/opt/ir_builder.h", 199 "//third_party/spirv-tools/source/opt/ir_context.cpp", 200 "//third_party/spirv-tools/source/opt/ir_context.h", 201 "//third_party/spirv-tools/source/opt/ir_loader.cpp", 202 "//third_party/spirv-tools/source/opt/ir_loader.h", 203 "//third_party/spirv-tools/source/opt/iterator.h", 204 "//third_party/spirv-tools/source/opt/licm_pass.cpp", 205 "//third_party/spirv-tools/source/opt/licm_pass.h", 206 "//third_party/spirv-tools/source/opt/liveness.cpp", 207 "//third_party/spirv-tools/source/opt/liveness.h", 208 "//third_party/spirv-tools/source/opt/local_access_chain_convert_pass.cpp", 209 "//third_party/spirv-tools/source/opt/local_access_chain_convert_pass.h", 210 "//third_party/spirv-tools/source/opt/local_redundancy_elimination.cpp", 211 "//third_party/spirv-tools/source/opt/local_redundancy_elimination.h", 212 "//third_party/spirv-tools/source/opt/local_single_block_elim_pass.cpp", 213 "//third_party/spirv-tools/source/opt/local_single_block_elim_pass.h", 214 "//third_party/spirv-tools/source/opt/local_single_store_elim_pass.cpp", 215 "//third_party/spirv-tools/source/opt/local_single_store_elim_pass.h", 216 "//third_party/spirv-tools/source/opt/log.h", 217 "//third_party/spirv-tools/source/opt/loop_dependence.cpp", 218 "//third_party/spirv-tools/source/opt/loop_dependence.h", 219 "//third_party/spirv-tools/source/opt/loop_dependence_helpers.cpp", 220 "//third_party/spirv-tools/source/opt/loop_descriptor.cpp", 221 "//third_party/spirv-tools/source/opt/loop_descriptor.h", 222 "//third_party/spirv-tools/source/opt/loop_fission.cpp", 223 "//third_party/spirv-tools/source/opt/loop_fission.h", 224 "//third_party/spirv-tools/source/opt/loop_fusion.cpp", 225 "//third_party/spirv-tools/source/opt/loop_fusion.h", 226 "//third_party/spirv-tools/source/opt/loop_fusion_pass.cpp", 227 "//third_party/spirv-tools/source/opt/loop_fusion_pass.h", 228 "//third_party/spirv-tools/source/opt/loop_peeling.cpp", 229 "//third_party/spirv-tools/source/opt/loop_peeling.h", 230 "//third_party/spirv-tools/source/opt/loop_unroller.cpp", 231 "//third_party/spirv-tools/source/opt/loop_unroller.h", 232 "//third_party/spirv-tools/source/opt/loop_unswitch_pass.cpp", 233 "//third_party/spirv-tools/source/opt/loop_unswitch_pass.h", 234 "//third_party/spirv-tools/source/opt/loop_utils.cpp", 235 "//third_party/spirv-tools/source/opt/loop_utils.h", 236 "//third_party/spirv-tools/source/opt/mem_pass.cpp", 237 "//third_party/spirv-tools/source/opt/mem_pass.h", 238 "//third_party/spirv-tools/source/opt/merge_return_pass.cpp", 239 "//third_party/spirv-tools/source/opt/merge_return_pass.h", 240 "//third_party/spirv-tools/source/opt/module.cpp", 241 "//third_party/spirv-tools/source/opt/module.h", 242 "//third_party/spirv-tools/source/opt/null_pass.h", 243 "//third_party/spirv-tools/source/opt/optimizer.cpp", 244 "//third_party/spirv-tools/source/opt/pass.cpp", 245 "//third_party/spirv-tools/source/opt/pass.h", 246 "//third_party/spirv-tools/source/opt/pass_manager.cpp", 247 "//third_party/spirv-tools/source/opt/pass_manager.h", 248 "//third_party/spirv-tools/source/opt/passes.h", 249 "//third_party/spirv-tools/source/opt/private_to_local_pass.cpp", 250 "//third_party/spirv-tools/source/opt/private_to_local_pass.h", 251 "//third_party/spirv-tools/source/opt/propagator.cpp", 252 "//third_party/spirv-tools/source/opt/propagator.h", 253 "//third_party/spirv-tools/source/opt/reduce_load_size.cpp", 254 "//third_party/spirv-tools/source/opt/reduce_load_size.h", 255 "//third_party/spirv-tools/source/opt/redundancy_elimination.cpp", 256 "//third_party/spirv-tools/source/opt/redundancy_elimination.h", 257 "//third_party/spirv-tools/source/opt/reflect.h", 258 "//third_party/spirv-tools/source/opt/register_pressure.cpp", 259 "//third_party/spirv-tools/source/opt/register_pressure.h", 260 "//third_party/spirv-tools/source/opt/relax_float_ops_pass.cpp", 261 "//third_party/spirv-tools/source/opt/relax_float_ops_pass.h", 262 "//third_party/spirv-tools/source/opt/remove_dontinline_pass.cpp", 263 "//third_party/spirv-tools/source/opt/remove_dontinline_pass.h", 264 "//third_party/spirv-tools/source/opt/remove_duplicates_pass.cpp", 265 "//third_party/spirv-tools/source/opt/remove_duplicates_pass.h", 266 "//third_party/spirv-tools/source/opt/remove_unused_interface_variables_pass.cpp", 267 "//third_party/spirv-tools/source/opt/remove_unused_interface_variables_pass.h", 268 "//third_party/spirv-tools/source/opt/replace_desc_array_access_using_var_index.cpp", 269 "//third_party/spirv-tools/source/opt/replace_desc_array_access_using_var_index.h", 270 "//third_party/spirv-tools/source/opt/replace_invalid_opc.cpp", 271 "//third_party/spirv-tools/source/opt/replace_invalid_opc.h", 272 "//third_party/spirv-tools/source/opt/scalar_analysis.cpp", 273 "//third_party/spirv-tools/source/opt/scalar_analysis.h", 274 "//third_party/spirv-tools/source/opt/scalar_analysis_nodes.h", 275 "//third_party/spirv-tools/source/opt/scalar_analysis_simplification.cpp", 276 "//third_party/spirv-tools/source/opt/scalar_replacement_pass.cpp", 277 "//third_party/spirv-tools/source/opt/scalar_replacement_pass.h", 278 "//third_party/spirv-tools/source/opt/set_spec_constant_default_value_pass.cpp", 279 "//third_party/spirv-tools/source/opt/set_spec_constant_default_value_pass.h", 280 "//third_party/spirv-tools/source/opt/simplification_pass.cpp", 281 "//third_party/spirv-tools/source/opt/simplification_pass.h", 282 "//third_party/spirv-tools/source/opt/spread_volatile_semantics.cpp", 283 "//third_party/spirv-tools/source/opt/spread_volatile_semantics.h", 284 "//third_party/spirv-tools/source/opt/ssa_rewrite_pass.cpp", 285 "//third_party/spirv-tools/source/opt/ssa_rewrite_pass.h", 286 "//third_party/spirv-tools/source/opt/strength_reduction_pass.cpp", 287 "//third_party/spirv-tools/source/opt/strength_reduction_pass.h", 288 "//third_party/spirv-tools/source/opt/strip_debug_info_pass.cpp", 289 "//third_party/spirv-tools/source/opt/strip_debug_info_pass.h", 290 "//third_party/spirv-tools/source/opt/strip_nonsemantic_info_pass.cpp", 291 "//third_party/spirv-tools/source/opt/strip_nonsemantic_info_pass.h", 292 "//third_party/spirv-tools/source/opt/struct_cfg_analysis.cpp", 293 "//third_party/spirv-tools/source/opt/struct_cfg_analysis.h", 294 "//third_party/spirv-tools/source/opt/switch_descriptorset_pass.cpp", 295 "//third_party/spirv-tools/source/opt/switch_descriptorset_pass.h", 296 "//third_party/spirv-tools/source/opt/tree_iterator.h", 297 "//third_party/spirv-tools/source/opt/trim_capabilities_pass.cpp", 298 "//third_party/spirv-tools/source/opt/trim_capabilities_pass.h", 299 "//third_party/spirv-tools/source/opt/type_manager.cpp", 300 "//third_party/spirv-tools/source/opt/type_manager.h", 301 "//third_party/spirv-tools/source/opt/types.cpp", 302 "//third_party/spirv-tools/source/opt/types.h", 303 "//third_party/spirv-tools/source/opt/unify_const_pass.cpp", 304 "//third_party/spirv-tools/source/opt/unify_const_pass.h", 305 "//third_party/spirv-tools/source/opt/upgrade_memory_model.cpp", 306 "//third_party/spirv-tools/source/opt/upgrade_memory_model.h", 307 "//third_party/spirv-tools/source/opt/value_number_table.cpp", 308 "//third_party/spirv-tools/source/opt/value_number_table.h", 309 "//third_party/spirv-tools/source/opt/vector_dce.cpp", 310 "//third_party/spirv-tools/source/opt/vector_dce.h", 311 "//third_party/spirv-tools/source/opt/workaround1209.cpp", 312 "//third_party/spirv-tools/source/opt/workaround1209.h", 313 "//third_party/spirv-tools/source/opt/wrap_opkill.cpp", 314 "//third_party/spirv-tools/source/opt/wrap_opkill.h", 315 "//third_party/spirv-tools/source/util/timer.cpp", 316 "//third_party/spirv-tools/source/util/timer.h", 317 ] 318 319 include_dirs = deqp_common_include_dirs 320 include_dirs += [ 321 "//third_party/spirv-tools", 322 "//third_party/vk-gl-cts/build/external/spirv-tools/spirv-tools", 323 "//third_party/spirv-headers/include", 324 "//third_party/spirv-headers/include/spirv/unified1", 325 "//third_party/spirv-tools/include", 326 "//third_party/spirv-tools/source/opt", 327 "//third_party/spirv-tools/source/util", 328 ] 329 330 if (build_with_chromium) { 331 configs -= [ "//build/config/compiler:chromium_code" ] 332 configs += [ "//build/config/compiler:no_chromium_code" ] 333 } 334 335 configs = [ ":deqp_spirvtool_opt_config" ] 336 configs += [ ":spv_headers_public_config" ] 337 configs += [ ":spvtools_internal_config" ] 338} 339 340ohos_static_library("libdeqp_spirvtools-opt") { 341 deps = [ 342 ":deqp_spirvtool_opt_source", 343 "//third_party/spirv-tools:libdeqp_spirvtools", 344 ] 345 part_name = "graphic_2d" 346 subsystem_name = "graphic" 347} 348