// Copyright (C) 2018 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package {
    default_team: "trendy_team_native_tools_libraries",
    default_applicable_licenses: ["Android-Apache-2.0"],
}

python_library_host {
    name: "python-symbol",
    srcs: [
        "symbol.py",
    ],
}

python_test_host {
    name: "python-symbol_test",
    main: "symbol.py",
    // Would be nice to use the library above, but as it's single-source
    // this doesn't work.
    srcs: ["symbol.py"],
    test_config: "symbol-tests.xml",
    test_suites: ["general-tests"],
}

python_test_host {
    name: "python-stack_core_test",
    main: "stack_core.py",
    srcs: [
        "example_crashes.py",
        "stack_core.py",
    ],
    data: [
        ":llvm-tools",
    ],
    libs: ["python-symbol"],
    test_options: {
        unit_test: true,
    },
}

python_test_host {
    name: "add3prf_test",
    srcs: [
        "add3prf.py",
        "add3prf_test.py",
    ],
    libs: [
        "pyfakefs",
    ],
}

python_test_host {
    name: "gdbclient_test",
    srcs: [
        "gdbclient.py",
        "gdbclient_test.py",
    ],
    libs: [
        "adb_py",
        "gdbrunner",
    ],
    test_options: {
        unit_test: true,
    },
    version: {
        py3: {
            embedded_launcher: true,
        },
    },
}
