| Index: tools/gn/setup.cc
|
| diff --git a/tools/gn/setup.cc b/tools/gn/setup.cc
|
| index 79814e602fe7a2f14a152ce9dae5d3d361d5f2d7..831e4e4db3e33cf54351849f3a4acac28e6649d6 100644
|
| --- a/tools/gn/setup.cc
|
| +++ b/tools/gn/setup.cc
|
| @@ -521,10 +521,23 @@ bool Setup::FillSourceDir(const base::CommandLine& cmdline) {
|
| }
|
|
|
| bool Setup::FillBuildDir(const std::string& build_dir, bool require_exists) {
|
| +#if defined(OS_POSIX)
|
| + // Expand all ./, ../, and symbolic links in build_dir.
|
| + char realpath_buf[PATH_MAX];
|
| + if (!realpath(build_dir.c_str(), realpath_buf)) {
|
| + Err(Location(), "Can't normalize the build directory path.",
|
| + strerror(errno)) .PrintToStdout();
|
| + return false;
|
| + }
|
| + const std::string build_dir_realpath = realpath_buf;
|
| +#else
|
| + const std::string& build_dir_realpath = build_dir;
|
| +#endif
|
| +
|
| Err err;
|
| SourceDir resolved =
|
| SourceDirForCurrentDirectory(build_settings_.root_path()).
|
| - ResolveRelativeDir(Value(nullptr, build_dir), &err,
|
| + ResolveRelativeDir(Value(nullptr, build_dir_realpath), &err,
|
| build_settings_.root_path_utf8());
|
| if (err.has_error()) {
|
| err.PrintToStdout();
|
|
|