1*61c4878aSAndroid Build Coastguard Worker# Copyright 2022 The Pigweed Authors 2*61c4878aSAndroid Build Coastguard Worker# 3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not 4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of 5*61c4878aSAndroid Build Coastguard Worker# the License at 6*61c4878aSAndroid Build Coastguard Worker# 7*61c4878aSAndroid Build Coastguard Worker# https://www.apache.org/licenses/LICENSE-2.0 8*61c4878aSAndroid Build Coastguard Worker# 9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under 13*61c4878aSAndroid Build Coastguard Worker# the License. 14*61c4878aSAndroid Build Coastguard Worker 15*61c4878aSAndroid Build Coastguard Workerload("@bazel_skylib//rules:copy_file.bzl", "copy_file") 16*61c4878aSAndroid Build Coastguard Workerload("@rules_python//python:defs.bzl", "py_library") 17*61c4878aSAndroid Build Coastguard Workerload("//pw_build:python.bzl", "pw_py_test") 18*61c4878aSAndroid Build Coastguard Worker 19*61c4878aSAndroid Build Coastguard Workerpackage(default_visibility = ["//visibility:public"]) 20*61c4878aSAndroid Build Coastguard Worker 21*61c4878aSAndroid Build Coastguard Worker# Path to the `llvm-symbolizer` binary for the toolchain being 22*61c4878aSAndroid Build Coastguard Worker# decoded. 23*61c4878aSAndroid Build Coastguard Worker# 24*61c4878aSAndroid Build Coastguard Worker# This should be overriden for toolchains which don't use 25*61c4878aSAndroid Build Coastguard Worker# `@llvm-toolchain`. 26*61c4878aSAndroid Build Coastguard Workerlabel_flag( 27*61c4878aSAndroid Build Coastguard Worker name = "llvm-symbolizer", 28*61c4878aSAndroid Build Coastguard Worker build_setting_default = "@llvm_toolchain//:bin/llvm-symbolizer", 29*61c4878aSAndroid Build Coastguard Worker) 30*61c4878aSAndroid Build Coastguard Worker 31*61c4878aSAndroid Build Coastguard Worker# Symlink the `llvm-symbolizer` binary (whose path may be different 32*61c4878aSAndroid Build Coastguard Worker# based on the label flag above) into a common location. 33*61c4878aSAndroid Build Coastguard Workercopy_file( 34*61c4878aSAndroid Build Coastguard Worker name = "llvm-symbolizer-symlink", 35*61c4878aSAndroid Build Coastguard Worker src = ":llvm-symbolizer", 36*61c4878aSAndroid Build Coastguard Worker out = "llvm-symbolizer-copy", 37*61c4878aSAndroid Build Coastguard Worker allow_symlink = True, 38*61c4878aSAndroid Build Coastguard Worker is_executable = True, 39*61c4878aSAndroid Build Coastguard Worker) 40*61c4878aSAndroid Build Coastguard Worker 41*61c4878aSAndroid Build Coastguard Workerpy_library( 42*61c4878aSAndroid Build Coastguard Worker name = "pw_symbolizer", 43*61c4878aSAndroid Build Coastguard Worker srcs = [ 44*61c4878aSAndroid Build Coastguard Worker "pw_symbolizer/__init__.py", 45*61c4878aSAndroid Build Coastguard Worker "pw_symbolizer/llvm_symbolizer.py", 46*61c4878aSAndroid Build Coastguard Worker "pw_symbolizer/symbolizer.py", 47*61c4878aSAndroid Build Coastguard Worker ], 48*61c4878aSAndroid Build Coastguard Worker data = [":llvm-symbolizer-symlink"], 49*61c4878aSAndroid Build Coastguard Worker imports = ["."], 50*61c4878aSAndroid Build Coastguard Worker deps = ["@rules_python//python/runfiles"], 51*61c4878aSAndroid Build Coastguard Worker) 52*61c4878aSAndroid Build Coastguard Worker 53*61c4878aSAndroid Build Coastguard Workerpw_py_test( 54*61c4878aSAndroid Build Coastguard Worker name = "symbolizer_test", 55*61c4878aSAndroid Build Coastguard Worker size = "small", 56*61c4878aSAndroid Build Coastguard Worker srcs = ["symbolizer_test.py"], 57*61c4878aSAndroid Build Coastguard Worker deps = [":pw_symbolizer"], 58*61c4878aSAndroid Build Coastguard Worker) 59*61c4878aSAndroid Build Coastguard Worker 60*61c4878aSAndroid Build Coastguard Worker# This test attempts to run subprocesses directly in the source tree, which is 61*61c4878aSAndroid Build Coastguard Worker# incompatible with sandboxing. 62*61c4878aSAndroid Build Coastguard Worker# TODO: b/241307309 - Update this test to work with bazel. 63*61c4878aSAndroid Build Coastguard Workerfilegroup( 64*61c4878aSAndroid Build Coastguard Worker name = "llvm_symbolizer_test", 65*61c4878aSAndroid Build Coastguard Worker # size = "small", 66*61c4878aSAndroid Build Coastguard Worker srcs = [ 67*61c4878aSAndroid Build Coastguard Worker "llvm_symbolizer_test.py", 68*61c4878aSAndroid Build Coastguard Worker "symbolizer_test.cc", 69*61c4878aSAndroid Build Coastguard Worker ], 70*61c4878aSAndroid Build Coastguard Worker # deps = [":pw_symbolizer"], 71*61c4878aSAndroid Build Coastguard Worker) 72