mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-29 11:55:01 +01:00
Note the purpose here is to make it simpler to add more subcommands, without adding a lot of things to Driver. This creates a copy of CodegenOptions, but it was double-registered at present which felt odd. It's also fairly small right now. If this becomes an issue, maybe we can look into using optional for delayed initialization, or just go back to straight sharing. --------- Co-authored-by: josh11b <15258583+josh11b@users.noreply.github.com>
44 lines
1.2 KiB
C++
44 lines
1.2 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_LINK_SUBCOMMAND_H_
|
|
#define CARBON_TOOLCHAIN_DRIVER_LINK_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 link subcommand.
|
|
//
|
|
// See the implementation of `Build` for documentation on members.
|
|
struct LinkOptions {
|
|
static const CommandLine::CommandInfo Info;
|
|
|
|
auto Build(CommandLine::CommandBuilder& b) -> void;
|
|
|
|
CodegenOptions codegen_options;
|
|
llvm::StringRef output_filename;
|
|
llvm::SmallVector<llvm::StringRef> object_filenames;
|
|
};
|
|
|
|
// Implements the link subcommand of the driver.
|
|
class LinkSubcommand : public DriverSubcommand {
|
|
public:
|
|
auto BuildOptions(CommandLine::CommandBuilder& b) { options_.Build(b); }
|
|
|
|
auto Run(DriverEnv& driver_env) -> DriverResult override;
|
|
|
|
private:
|
|
LinkOptions options_;
|
|
};
|
|
|
|
} // namespace Carbon
|
|
|
|
#endif // CARBON_TOOLCHAIN_DRIVER_LINK_SUBCOMMAND_H_
|