| Index: base/base_paths_posix.cc
|
| diff --git a/base/base_paths_posix.cc b/base/base_paths_posix.cc
|
| index d8d5ae61b7285ab113eb46718610a25e08773bf7..a1c45a03df1c470bd15a9af31044ac4241780bc4 100644
|
| --- a/base/base_paths_posix.cc
|
| +++ b/base/base_paths_posix.cc
|
| @@ -74,6 +74,20 @@ bool PathProviderPosix(int key, FilePath* result) {
|
| #endif
|
| }
|
| case base::DIR_SOURCE_ROOT: {
|
| + // Allow passing this in the environment, for more flexibility in build
|
| + // tree configurations (sub-project builds, gyp --output_dir, etc.)
|
| + scoped_ptr<base::Environment> env(base::Environment::Create());
|
| + std::string cr_source_root;
|
| + if (env->GetVar("CR_SOURCE_ROOT", &cr_source_root)) {
|
| + path = FilePath(cr_source_root);
|
| + if (file_util::PathExists(path)) {
|
| + *result = path;
|
| + return true;
|
| + } else {
|
| + DLOG(WARNING) << "CR_SOURCE_ROOT is set, but it appears to not "
|
| + << "point to a directory.";
|
| + }
|
| + }
|
| // On POSIX, unit tests execute two levels deep from the source root.
|
| // For example: out/{Debug|Release}/net_unittest
|
| if (PathService::Get(base::DIR_EXE, &path)) {
|
|
|