diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /python/mozbuild/mozbuild/compilation/codecomplete.py | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'python/mozbuild/mozbuild/compilation/codecomplete.py')
-rw-r--r-- | python/mozbuild/mozbuild/compilation/codecomplete.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/python/mozbuild/mozbuild/compilation/codecomplete.py b/python/mozbuild/mozbuild/compilation/codecomplete.py new file mode 100644 index 0000000000..b5a466b729 --- /dev/null +++ b/python/mozbuild/mozbuild/compilation/codecomplete.py @@ -0,0 +1,55 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at http://mozilla.org/MPL/2.0/. + +# This modules provides functionality for dealing with code completion. + +from mach.decorators import Command, CommandArgument + +from mozbuild.shellutil import quote as shell_quote +from mozbuild.shellutil import split as shell_split + + +# Instropection commands. + + +@Command( + "compileflags", + category="devenv", + description="Display the compilation flags for a given source file", +) +@CommandArgument( + "what", default=None, help="Source file to display compilation flags for" +) +def compileflags(command_context, what): + from mozbuild.compilation import util + from mozbuild.util import resolve_target_to_make + + if not util.check_top_objdir(command_context.topobjdir): + return 1 + + path_arg = command_context._wrap_path_argument(what) + + make_dir, make_target = resolve_target_to_make( + command_context.topobjdir, path_arg.relpath() + ) + + if make_dir is None and make_target is None: + return 1 + + build_vars = util.get_build_vars(make_dir, command_context) + + if what.endswith(".c"): + cc = "CC" + name = "COMPILE_CFLAGS" + else: + cc = "CXX" + name = "COMPILE_CXXFLAGS" + + if name not in build_vars: + return + + # Drop the first flag since that is the pathname of the compiler. + flags = (shell_split(build_vars[cc]) + shell_split(build_vars[name]))[1:] + + print(" ".join(shell_quote(arg) for arg in util.sanitize_cflags(flags))) |