Flutter Engine
Loading...
Searching...
No Matches
shader_archive_main.cc
Go to the documentation of this file.
1
// Copyright 2013 The Flutter Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#include <filesystem>
6
#include <iostream>
7
8
#include "
flutter/fml/command_line.h
"
9
#include "
impeller/shader_archive/shader_archive_writer.h
"
10
11
namespace
impeller
{
12
13
bool
Main
(
const
fml::CommandLine
& command_line) {
14
ShaderArchiveWriter
writer;
15
16
std::string output;
17
if
(!command_line.
GetOptionValue
(
"output"
, &output)) {
18
std::cerr <<
"Output path not specified."
<< std::endl;
19
return
false
;
20
}
21
22
for
(
const
auto
&
input
: command_line.
GetOptionValues
(
"input"
)) {
23
if
(!writer.
AddShaderAtPath
(std::string{input})) {
24
std::cerr <<
"Could not add shader at path: "
<<
input
<< std::endl;
25
return
false
;
26
}
27
}
28
29
auto
archive = writer.
CreateMapping
();
30
if
(!archive) {
31
std::cerr <<
"Could not create shader archive."
<< std::endl;
32
return
false
;
33
}
34
35
auto
current_directory =
36
fml::OpenDirectory
(std::filesystem::current_path().
string
().c_str(),
37
false
,
fml::FilePermission::kReadWrite
);
38
auto
output_path =
39
std::filesystem::absolute(std::filesystem::current_path() / output);
40
if
(!
fml::WriteAtomically
(current_directory, output_path.string().c_str(),
41
*archive)) {
42
std::cerr <<
"Could not write shader archive to path "
<< output
43
<< std::endl;
44
return
false
;
45
}
46
47
return
true
;
48
}
49
50
}
// namespace impeller
51
52
int
main
(
int
argc,
char
const
*
argv
[]) {
53
return
impeller::Main
(
fml::CommandLineFromPlatformOrArgcArgv
(argc,
argv
))
54
? EXIT_SUCCESS
55
: EXIT_FAILURE;
56
}
fml::CommandLine
Definition
command_line.h:56
fml::CommandLine::GetOptionValues
std::vector< std::string_view > GetOptionValues(std::string_view name) const
Definition
command_line.cc:61
fml::CommandLine::GetOptionValue
bool GetOptionValue(std::string_view name, std::string *value) const
Definition
command_line.cc:51
impeller::ShaderArchiveWriter
Definition
shader_archive_writer.h:17
impeller::ShaderArchiveWriter::AddShaderAtPath
bool AddShaderAtPath(const std::string &path)
Definition
shader_archive_writer.cc:36
impeller::ShaderArchiveWriter::CreateMapping
std::shared_ptr< fml::Mapping > CreateMapping() const
Definition
shader_archive_writer.cc:107
input
static int input(yyscan_t yyscanner)
command_line.h
argv
char ** argv
Definition
library.h:9
fml::WriteAtomically
bool WriteAtomically(const fml::UniqueFD &base_directory, const char *file_name, const Mapping &mapping)
Definition
file_posix.cc:191
fml::OpenDirectory
fml::UniqueFD OpenDirectory(const char *path, bool create_if_necessary, FilePermission permission)
Definition
file_posix.cc:97
fml::CommandLineFromPlatformOrArgcArgv
CommandLine CommandLineFromPlatformOrArgcArgv(int argc, const char *const *argv)
Definition
command_line.h:240
fml::FilePermission::kReadWrite
@ kReadWrite
impeller
Definition
texture.h:16
impeller::Main
bool Main(const fml::CommandLine &command_line)
Definition
shader_archive_main.cc:13
main
int main(int argc, char const *argv[])
Definition
shader_archive_main.cc:52
shader_archive_writer.h
impeller
shader_archive
shader_archive_main.cc
Generated on Thu Nov 6 2025 16:11:24 for Flutter Engine by
1.9.8