mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-04 12:51:05 +01:00
This is the first draft of the implementation of [p6333](https://docs.carbon-lang.dev/proposals/p6333.html). The `build` subcommand shared logic with the `compile` and `link` subcommands, so I've moved some of the functionality in `compile` and `link` to shared `CompileDriver` and `LinkDriver` classes, respectively. This also required exposing the `CompileOptions` and `LinkOptions` subcommand structs for re-use. There's still some work to do on the proposal, most notably the package include automatic path resolution and import, and the refactors to `carbon compile`.
32 lines
975 B
C++
32 lines
975 B
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_DRIVER_H_
|
|
#define CARBON_TOOLCHAIN_DRIVER_LINK_DRIVER_H_
|
|
|
|
#include "llvm/TargetParser/Triple.h"
|
|
#include "toolchain/driver/clang_runner.h"
|
|
#include "toolchain/driver/driver_env.h"
|
|
#include "toolchain/driver/link_options.h"
|
|
|
|
namespace Carbon {
|
|
|
|
// Helper class to link object files into an output binary using `clang`. Used
|
|
// by the `build` and `link` subcommands.
|
|
class LinkDriver {
|
|
public:
|
|
explicit LinkDriver(LinkOptions* options);
|
|
|
|
// Link the input binaries to the output binary with the configuration
|
|
// specified in the `LinkOptions` provided at construction time.
|
|
auto Link(DriverEnv& driver_env) -> DriverResult;
|
|
|
|
private:
|
|
LinkOptions* options_;
|
|
};
|
|
|
|
} // namespace Carbon
|
|
|
|
#endif // CARBON_TOOLCHAIN_DRIVER_LINK_DRIVER_H_
|