Android-cuttlefish cvd tool
esp.h
Go to the documentation of this file.
1//
2// Copyright (C) 2022 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16#pragma once
17
18#include <optional>
19#include <string>
20#include <utility>
21#include <vector>
22
24
25namespace cuttlefish {
26
28 public:
30 AndroidEfiLoaderEspBuilder(std::string image_path)
31 : image_path_(std::move(image_path)) {}
32
33 AndroidEfiLoaderEspBuilder& EfiLoaderPath(std::string efi_loader_path) &;
35
36 bool Build() const;
37
38 private:
39 const std::string image_path_;
40 std::string efi_loader_path_;
42};
43
44class LinuxEspBuilder final {
45 public:
46 LinuxEspBuilder() = delete;
47 LinuxEspBuilder(std::string image_path)
48 : image_path_(std::move(image_path)) {}
49
50 LinuxEspBuilder& Argument(std::string key, std::string value) &;
51 LinuxEspBuilder& Argument(std::string value) &;
52 LinuxEspBuilder& Root(std::string root) &;
53 LinuxEspBuilder& Kernel(std::string kernel) &;
54 LinuxEspBuilder& Initrd(std::string initrd) &;
56
57 bool Build() const;
58
59 private:
60 std::string DumpConfig() const;
61
62 const std::string image_path_;
63 std::vector<std::pair<std::string, std::string>> arguments_;
64 std::vector<std::string> single_arguments_;
65 std::string root_;
66 std::string kernel_;
67 std::string initrd_;
68 std::optional<Arch> arch_;
69};
70
72 public:
74 FuchsiaEspBuilder(std::string image_path)
75 : image_path_(std::move(image_path)) {}
76
77 FuchsiaEspBuilder& MultibootBinary(std::string multiboot) &;
78 FuchsiaEspBuilder& Zedboot(std::string zedboot) &;
80
81 bool Build() const;
82
83 private:
84 std::string DumpConfig() const;
85
86 const std::string image_path_;
87 std::string multiboot_bin_;
88 std::string zedboot_;
89 std::optional<Arch> arch_;
90};
91
92bool CanGenerateGrubEsp(Arch arch);
93
94} // namespace cuttlefish
AndroidEfiLoaderEspBuilder & Architecture(Arch arch) &
Definition: esp.cpp:187
Arch arch_
Definition: esp.h:41
bool Build() const
Definition: esp.cpp:193
AndroidEfiLoaderEspBuilder(std::string image_path)
Definition: esp.h:30
const std::string image_path_
Definition: esp.h:39
std::string efi_loader_path_
Definition: esp.h:40
AndroidEfiLoaderEspBuilder & EfiLoaderPath(std::string efi_loader_path) &
Definition: esp.cpp:181
Definition: esp.h:71
FuchsiaEspBuilder & MultibootBinary(std::string multiboot) &
Definition: esp.cpp:312
std::string DumpConfig() const
Definition: esp.cpp:364
FuchsiaEspBuilder & Zedboot(std::string zedboot) &
Definition: esp.cpp:317
FuchsiaEspBuilder(std::string image_path)
Definition: esp.h:74
std::string multiboot_bin_
Definition: esp.h:87
std::optional< Arch > arch_
Definition: esp.h:89
std::string zedboot_
Definition: esp.h:88
bool Build() const
Definition: esp.cpp:327
const std::string image_path_
Definition: esp.h:86
FuchsiaEspBuilder & Architecture(Arch arch) &
Definition: esp.cpp:322
Definition: esp.h:44
LinuxEspBuilder & Root(std::string root) &
Definition: esp.cpp:230
std::string DumpConfig() const
Definition: esp.cpp:288
LinuxEspBuilder & Initrd(std::string initrd) &
Definition: esp.cpp:240
const std::string image_path_
Definition: esp.h:62
std::string kernel_
Definition: esp.h:66
std::vector< std::string > single_arguments_
Definition: esp.h:64
std::string root_
Definition: esp.h:65
LinuxEspBuilder(std::string image_path)
Definition: esp.h:47
std::string initrd_
Definition: esp.h:67
LinuxEspBuilder & Architecture(Arch arch) &
Definition: esp.cpp:245
LinuxEspBuilder & Argument(std::string key, std::string value) &
Definition: esp.cpp:219
std::optional< Arch > arch_
Definition: esp.h:68
LinuxEspBuilder & Kernel(std::string kernel) &
Definition: esp.cpp:235
std::vector< std::pair< std::string, std::string > > arguments_
Definition: esp.h:63
bool Build() const
Definition: esp.cpp:250
#define key
Definition: dict.c:55
Definition: alloc_driver.h:20
Arch
Definition: host_info.h:23
bool CanGenerateGrubEsp(Arch arch)
Definition: esp.cpp:89
Definition: logging.h:464