blob: 6a159eab327ae91fd203781ccf8a3139ec5c89cf [file]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "gn/output_file.h"
#include "gn/filesystem_utils.h"
#include "gn/source_file.h"
OutputFile::OutputFile(const BuildSettings* build_settings,
const SourceFile& source_file) {
value_ =
StringAtom(RebasePath(source_file.value(), build_settings->build_dir(),
build_settings->root_path_utf8()));
}
SourceFile OutputFile::AsSourceFile(const BuildSettings* build_settings) const {
std::string_view val = value();
DCHECK(!val.empty());
DCHECK(val.back() != '/');
std::string path = build_settings->build_dir().value();
path.append(val);
return SourceFile(std::move(path));
}
SourceDir OutputFile::AsSourceDir(const BuildSettings* build_settings) const {
std::string_view val = value();
if (!val.empty()) {
// Empty means the root build dir. Otherwise, we expect it to end in a
// slash.
DCHECK(val.back() == '/');
}
std::string path = build_settings->build_dir().value();
path.append(val);
NormalizePath(&path);
return SourceDir(std::move(path));
}