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
25
26namespace cuttlefish {
27
29 public:
31 AndroidEfiLoaderEspBuilder(std::string image_path)
32 : image_path_(std::move(image_path)) {}
33
34 AndroidEfiLoaderEspBuilder& EfiLoaderPath(std::string efi_loader_path) &;
36
37 bool Build() const;
38
39 private:
40 const std::string image_path_;
41 std::string efi_loader_path_;
43};
44
45class LinuxEspBuilder final {
46 public:
47 LinuxEspBuilder() = delete;
48 LinuxEspBuilder(std::string image_path): 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): image_path_(std::move(image_path)) {}
75
76 FuchsiaEspBuilder& MultibootBinary(std::string multiboot) &;
77 FuchsiaEspBuilder& Zedboot(std::string zedboot) &;
79
80 bool Build() const;
81
82 private:
83 std::string DumpConfig() const;
84
85 const std::string image_path_;
86 std::string multiboot_bin_;
87 std::string zedboot_;
88 std::optional<Arch> arch_;
89};
90
91Result<void> MakeFatImage(const std::string& data_image, int data_image_mb,
92 int offset_num_mb);
93
94bool CanGenerateEsp(Arch arch);
95
96} // namespace cuttlefish
Definition: expected.h:86
AndroidEfiLoaderEspBuilder & Architecture(Arch arch) &
Definition: esp.cpp:365
Arch arch_
Definition: esp.h:42
bool Build() const
Definition: esp.cpp:371
AndroidEfiLoaderEspBuilder(std::string image_path)
Definition: esp.h:31
const std::string image_path_
Definition: esp.h:40
std::string efi_loader_path_
Definition: esp.h:41
AndroidEfiLoaderEspBuilder & EfiLoaderPath(std::string efi_loader_path) &
Definition: esp.cpp:359
Definition: esp.h:71
FuchsiaEspBuilder & MultibootBinary(std::string multiboot) &
Definition: esp.cpp:493
std::string DumpConfig() const
Definition: esp.cpp:544
FuchsiaEspBuilder & Zedboot(std::string zedboot) &
Definition: esp.cpp:498
FuchsiaEspBuilder(std::string image_path)
Definition: esp.h:74
std::string multiboot_bin_
Definition: esp.h:86
std::optional< Arch > arch_
Definition: esp.h:88
std::string zedboot_
Definition: esp.h:87
bool Build() const
Definition: esp.cpp:508
const std::string image_path_
Definition: esp.h:85
FuchsiaEspBuilder & Architecture(Arch arch) &
Definition: esp.cpp:503
Definition: esp.h:45
LinuxEspBuilder & Root(std::string root) &
Definition: esp.cpp:411
std::string DumpConfig() const
Definition: esp.cpp:469
LinuxEspBuilder & Initrd(std::string initrd) &
Definition: esp.cpp:421
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:48
std::string initrd_
Definition: esp.h:67
LinuxEspBuilder & Architecture(Arch arch) &
Definition: esp.cpp:426
LinuxEspBuilder & Argument(std::string key, std::string value) &
Definition: esp.cpp:401
std::optional< Arch > arch_
Definition: esp.h:68
LinuxEspBuilder & Kernel(std::string kernel) &
Definition: esp.cpp:416
std::vector< std::pair< std::string, std::string > > arguments_
Definition: esp.h:63
bool Build() const
Definition: esp.cpp:431
Definition: alloc_utils.cpp:23
bool CanGenerateEsp(Arch arch)
Definition: esp.cpp:156
Arch
Definition: architecture.h:23
Result< void > MakeFatImage(const std::string &data_image, int data_image_mb, int offset_num_mb)
Definition: esp.cpp:99
Definition: logging.h:464