Files
carbon-lang/toolchain/driver/build_runtimes_subcommand.h
T
Chandler Carruth 65f35ad98e Add support for forcing a rebuild of runtimes (#6537)
This is useful during development, testing, and will also be useful for
a more bazel-integrated build step.

Also clean up the path management when creating runtimes:

- Teach the main runtimes code to handle making a relative path absolute
- Separate out methods for _creating_ a runtimes tree vs. opening an
existing one. Teach the creation path to create intervening directories
as needed. This provides a more useful and less surprising set of
behaviors.

Last but not least, also clean up a bunch of comments in the runtimes
cache code to talk generically about components -- these APIs are no
longer specific to the resource directory.
2025-12-31 01:59:19 +00:00

48 lines
1.4 KiB
C++

// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
// Exceptions. See /LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#ifndef CARBON_TOOLCHAIN_DRIVER_BUILD_RUNTIMES_SUBCOMMAND_H_
#define CARBON_TOOLCHAIN_DRIVER_BUILD_RUNTIMES_SUBCOMMAND_H_
#include "common/command_line.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "toolchain/driver/codegen_options.h"
#include "toolchain/driver/driver_env.h"
#include "toolchain/driver/driver_subcommand.h"
namespace Carbon {
// Options for the `build_runtimes` subcommand.
//
// See the implementation of `Build` for documentation on members.
struct BuildRuntimesOptions {
auto Build(CommandLine::CommandBuilder& b) -> void;
CodegenOptions codegen_options;
llvm::StringRef directory;
bool force;
};
// Implements the link subcommand of the driver.
class BuildRuntimesSubcommand : public DriverSubcommand {
public:
explicit BuildRuntimesSubcommand();
auto BuildOptions(CommandLine::CommandBuilder& b) -> void override {
options_.Build(b);
}
auto Run(DriverEnv& driver_env) -> DriverResult override;
private:
auto RunInternal(DriverEnv& driver_env) -> ErrorOr<std::filesystem::path>;
BuildRuntimesOptions options_;
};
} // namespace Carbon
#endif // CARBON_TOOLCHAIN_DRIVER_BUILD_RUNTIMES_SUBCOMMAND_H_