Flutter Impeller
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
}
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
impeller
Definition:
allocation.cc:12
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 by
1.9.1