Skip to main content
Glama
compiler.bzl3.69 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//:paths.bzl", "paths") load(":cxx_toolchain_types.bzl", "DepTrackingMode") # TODO(T110378132): Added here for compat with v1, but this might make more # sense on the toolchain definition. def get_flags_for_reproducible_build(ctx: AnalysisContext, compiler_type: str) -> list[[str, cmd_args]]: """ Return flags needed to make compilations reproducible (e.g. avoiding embedding the working directory into debug info. """ flags = [] if compiler_type in ["clang_cl", "windows"]: flags.extend(["/Brepro", "/d2threads1"]) if compiler_type in ["clang", "clang_windows", "clang_cl"]: flags.extend(["-Xclang", "-fdebug-compilation-dir", "-Xclang", cmd_args(ctx.label.project_root)]) if compiler_type == "clang_windows": flags.append("-mno-incremental-linker-compatible") return flags def get_flags_for_colorful_output(compiler_type: str) -> list[str]: """ Return flags for enabling colorful diagnostic output. """ flags = [] if compiler_type in ["clang", "clang_windows", "clang_cl"]: # https://clang.llvm.org/docs/UsersManual.html flags.append("-fcolor-diagnostics") elif compiler_type == "gcc": # https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html flags.append("-fdiagnostics-color=always") return flags # These functions return two values: wrapper_args and compiler_args # wrapper_args -> the arguments used by the dep_file_processor to determine how to process the dep files # compiler_args -> args passed to the compiler when generating dependencies def cc_dep_files(actions: AnalysisActions, filename_base: str, _input_file: Artifact) -> (cmd_args, cmd_args): intermediary_dep_file = actions.declare_output( paths.join("__dep_files_intermediaries__", filename_base), ).as_output() return (cmd_args(intermediary_dep_file), cmd_args(["-MD", "-MF", intermediary_dep_file])) def tree_style_cc_dep_files( _actions: AnalysisActions, _filename_base: str, input_file: Artifact) -> (cmd_args, cmd_args): # If we use color diagnostics, then error messages come through in color, which messes up parsing of the # -H output in `show_headers_to_dep_file.py`. So make sure to pass -fno-color-diagnostics. return (cmd_args(input_file), cmd_args(["-H", "-fno-color-diagnostics"])) def windows_cc_dep_files( _actions: AnalysisActions, _filename_base: str, input_file: Artifact) -> (cmd_args, cmd_args): return (cmd_args(input_file), cmd_args(["/showIncludes"])) def get_headers_dep_files_flags_factory(dep_tracking_mode: DepTrackingMode) -> [typing.Callable, None]: if dep_tracking_mode.value == "makefile": return cc_dep_files if dep_tracking_mode.value == "show_includes": return windows_cc_dep_files if dep_tracking_mode.value == "show_headers": return tree_style_cc_dep_files return None def get_pic_flags(compiler_type: str) -> list[str]: if compiler_type in ["clang", "gcc"]: return ["-fPIC"] else: return [] def get_output_flags(compiler_type: str, output: Artifact) -> list[typing.Any]: if compiler_type in ["windows", "clang_cl", "windows_ml64"]: return [cmd_args(output.as_output(), format = "/Fo{}")] else: return ["-o", output.as_output()]

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