Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  clang_all.star   Sprache: unbekannt

 
Spracherkennung für: .star vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

# -*- bazel-starlark -*-
# Copyright 2023 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Siso configuration for clang."""

load("@builtin//path.star", "path")
load("@builtin//struct.star", "module")
load("./ar.star", "ar")
load("./config.star", "config")
load("./mac_sdk.star", "mac_sdk")
load("./win_sdk.star", "win_sdk")

def __filegroups(ctx):
    fg = {
        "third_party/libc++/src/include:headers": {
            "type": "glob",
            "includes": ["*"],
            # can't use "*.h", because c++ headers have no extension.
        },
        "third_party/libc++abi/src/include:headers": {
            "type": "glob",
            "includes": ["*.h"],
        },
        # vendor provided headers for libc++.
        "buildtools/third_party/libc++:headers": {
            "type": "glob",
            "includes": [
                "__*",
            ],
        },

        # toolchain root
        # :headers for compiling
        "third_party/llvm-build/Release+Asserts:headers": {
            "type": "glob",
            "includes": [
                "*.h",
                "*.modulemap",
                "bin/clang",
                "bin/clang++",
                "bin/clang-*",  # clang-cl, clang-<ver>
                "*_ignorelist.txt",
                # https://crbug.com/335997052
                "clang_rt.profile*.lib",
            ],
        },
        "third_party/cronet_android_mainline_clang/linux-amd64:headers": {
            "type": "glob",
            "includes": [
                "*.h",
                "*.modulemap",
                "bin/clang*",
            ],
        },
        "third_party/cronet_android_mainline_clang/linux-amd64:link": {
            "type": "glob",
            "includes": [
                "bin/clang*",
                "bin/ld.lld",
                "bin/lld",
                "bin/llvm-nm",
                "bin/llvm-objcopy",
                "bin/llvm-readelf",
                "bin/llvm-readobj",
                "bin/llvm-strip",
                "*.so",
                "*.so.*",
                "*.a",
            ],
        },
    }
    if win_sdk.enabled(ctx):
        fg.update(win_sdk.filegroups(ctx))
    if mac_sdk.enabled(ctx):
        fg.update(mac_sdk.filegroups(ctx))
    return fg

__input_deps = {
    # need this because we use
    # third_party/libc++/src/include:headers,
    # but scandeps doesn't scan `__config` file, which uses
    # `#include <__config_site>`
    # also need `__assertion_handler`. b/321171148
    "third_party/libc++/src/include": [
        "buildtools/third_party/libc++:headers",
    ],
    "third_party/llvm-build/Release+Asserts/bin/clang": [
        "build/config/unsafe_buffers_paths.txt",
        "build/config/warning_suppression.txt",
    ],
    "third_party/llvm-build/Release+Asserts/bin/clang++": [
        "build/config/unsafe_buffers_paths.txt",
        "build/config/warning_suppression.txt",
    ],
    "third_party/llvm-build/Release+Asserts/bin/clang-cl": [
        "build/config/unsafe_buffers_paths.txt",
        "build/config/warning_suppression.txt",
    ],
    "third_party/llvm-build/Release+Asserts/bin/clang-cl.exe": [
        "build/config/unsafe_buffers_paths.txt",
        "build/config/warning_suppression.txt",
    ],
    "third_party/llvm-build/Release+Asserts/bin/lld-link": [
        "build/config/c++/libc++.natvis",
        "build/win/as_invoker.manifest",
        "build/win/common_controls.manifest",
        "build/win/compatibility.manifest",
        "build/win/require_administrator.manifest",
        "build/win/segment_heap.manifest",
        "remoting/host/win/dpi_aware.manifest",
        "third_party/llvm-build/Release+Asserts/bin/lld",
        "tools/win/DebugVisualizers/blink.natvis",
        "tools/win/DebugVisualizers/chrome.natvis",
    ],
    "third_party/llvm-build/Release+Asserts/bin/lld-link.exe": [
        "build/config/c++/libc++.natvis",
        "build/win/as_invoker.manifest",
        "build/win/common_controls.manifest",
        "build/win/compatibility.manifest",
        "build/win/require_administrator.manifest",
        "build/win/segment_heap.manifest",
        "remoting/host/win/dpi_aware.manifest",
        "third_party/llvm-build/Release+Asserts/bin/lld.exe",
        "tools/win/DebugVisualizers/blink.natvis",
        "tools/win/DebugVisualizers/chrome.natvis",
    ],
    "build/toolchain/gcc_solink_wrapper.py": [
        "build/toolchain/whole_archive.py",
        "build/toolchain/wrapper_utils.py",
    ],
    "build/toolchain/gcc_solink_wrapper.py:link": [
        "build/toolchain/gcc_solink_wrapper.py",
        "build/toolchain/whole_archive.py",
        "build/toolchain/wrapper_utils.py",
    ],
    "build/toolchain/gcc_link_wrapper.py": [
        "build/toolchain/whole_archive.py",
        "build/toolchain/wrapper_utils.py",
    ],
    "build/toolchain/gcc_link_wrapper.py:link": [
        "build/toolchain/gcc_link_wrapper.py",
        "build/toolchain/whole_archive.py",
        "build/toolchain/wrapper_utils.py",
    ],
    "build/toolchain/apple/linker_driver.py:link": [
        "build/toolchain/apple/linker_driver.py",
        "build/toolchain/whole_archive.py",
    ],
    "build/toolchain/apple/solink_driver.py:link": [
        "build/toolchain/apple/linker_driver.py",
        "build/toolchain/apple/solink_driver.py",
        "build/toolchain/whole_archive.py",
    ],
}

def __lld_link(ctx, cmd):
    # Replace thin archives with /start-lib ... /end-lib in rsp file.
    new_lines = []
    for line in str(cmd.rspfile_content).split("\n"):
        new_elems = []
        for elem in line.split(" "):
            # Parse only .lib files.
            if not elem.endswith(".lib"):
                new_elems.append(elem)
                continue

            # Parse files under the out dir.
            fname = ctx.fs.canonpath(elem)
            if not ctx.fs.exists(fname):
                new_elems.append(elem)
                continue

            # Check if the library is generated or not.
            # The source libs are not under the build dir.
            build_dir = ctx.fs.canonpath("./")
            if path.rel(build_dir, fname).startswith("../../"):
                new_elems.append(elem)
                continue

            ents = ar.entries(ctx, fname, build_dir)
            if not ents:
                new_elems.append(elem)
                continue

            new_elems.append("-start-lib")
            new_elems.extend(ents)
            new_elems.append("-end-lib")
        new_lines.append(" ".join(new_elems))

    ctx.actions.fix(rspfile_content = "\n".join(new_lines))

def __thin_archive(ctx, cmd):
    # TODO: This handler can be used despite remote linking?
    if not config.get(ctx, "remote-link"):
        return
    if "lld-link" in cmd.args[0]:
        if not "/llvmlibthin" in cmd.args:
            print("not thin archive")
            return
    else:
        # check command line to see "-T" and "-S".
        # rm -f obj/third_party/angle/libangle_common.a && "../../third_party/llvm-build/Release+Asserts/bin/llvm-ar" -T -S -r -c -D obj/third_party/angle/libangle_common.a @"obj/third_party/angle/libangle_common.a.rsp"
        if not ("-T" in cmd.args[-1] and "-S" in cmd.args[-1]):
            print("not thin archive without symbol table")
            return

    # create thin archive without symbol table by handler.
    rspfile_content = str(cmd.rspfile_content)
    inputs = []
    for line in rspfile_content.split("\n"):
        for fname in line.split(" "):
            inputs.append(ctx.fs.canonpath(fname))
    data = ar.create(ctx, path.dir(cmd.outputs[0]), inputs)
    ctx.actions.write(cmd.outputs[0], data)
    ctx.actions.exit(exit_status = 0)

__handlers = {
    "lld_link": __lld_link,
    "lld_thin_archive": __thin_archive,
}

clang_all = module(
    "clang_all",
    filegroups = __filegroups,
    input_deps = __input_deps,
    handlers = __handlers,
)

[Dauer der Verarbeitung: 0.31 Sekunden, vorverarbeitet 2026-08-28]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=476070
#Domains=661743