Flutter Engine
The Flutter Engine
impeller
shader_archive
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:31
impeller::ShaderArchiveWriter::CreateMapping
std::shared_ptr< fml::Mapping > CreateMapping() const
Definition:
shader_archive_writer.cc:98
argv
char ** argv
Definition:
library.h:9
dart_profiler_symbols.output
output
Definition:
dart_profiler_symbols.py:51
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:242
fml::FilePermission::kReadWrite
@ kReadWrite
gn.bazel_build.output_path
output_path
Definition:
bazel_build.py:39
impeller
Definition:
texture.h:18
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
Generated on Sun Jun 23 2024 21:55:04 for Flutter Engine by
1.9.4