Skip to main content
Glama
cxx_context.bzl1.92 kB
# Copyright (c) Meta Platforms, Inc. and affiliates. # # This source code is licensed under both the MIT license found in the # LICENSE-MIT file in the root directory of this source tree and the Apache # License, Version 2.0 found in the LICENSE-APACHE file in the root directory # of this source tree. load("@prelude//apple:apple_toolchain_types.bzl", "AppleToolchainInfo") load("@prelude//cxx:cxx_toolchain_types.bzl", "CxxPlatformInfo", "CxxToolchainInfo") # The functions below allow the Cxx rules to find toolchain providers # from different rule contexts. For example, the Cxx functions are # re-used by non-`cxx_` rules (e.g., the Apple rules) but the toolchain # setup on such rules might/would be different. # # The functions should be used throughout the Cxx rules to get # the required providers instead of going via the `_cxx_toolchain` # field of the `ctx`. # # In an ideal world, we would have been injecting all these from # the top level but as part of the transition to support # `apple_toolchain`, we want to make progress now. def get_cxx_platform_info(ctx: AnalysisContext) -> CxxPlatformInfo: apple_toolchain = getattr(ctx.attrs, "_apple_toolchain", None) if apple_toolchain: return apple_toolchain[AppleToolchainInfo].cxx_platform_info return ctx.attrs._cxx_toolchain[CxxPlatformInfo] def get_opt_cxx_toolchain_info(ctx: AnalysisContext) -> CxxToolchainInfo | None: apple_toolchain = getattr(ctx.attrs, "_apple_toolchain", None) if apple_toolchain: return apple_toolchain[AppleToolchainInfo].cxx_toolchain_info cxx_toolchain = getattr(ctx.attrs, "_cxx_toolchain", None) if cxx_toolchain: return cxx_toolchain.get(CxxToolchainInfo) return None def get_cxx_toolchain_info(ctx: AnalysisContext) -> CxxToolchainInfo: info = get_opt_cxx_toolchain_info(ctx) if not info: fail("no cxx toolchain info in this ctx") return info

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server