| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "tools/gn/substitution_writer.h" | 5 #include "tools/gn/substitution_writer.h" |
| 6 | 6 |
| 7 #include "tools/gn/build_settings.h" | 7 #include "tools/gn/build_settings.h" |
| 8 #include "tools/gn/escape.h" | 8 #include "tools/gn/escape.h" |
| 9 #include "tools/gn/filesystem_utils.h" | 9 #include "tools/gn/filesystem_utils.h" |
| 10 #include "tools/gn/output_file.h" | 10 #include "tools/gn/output_file.h" |
| (...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 break; | 357 break; |
| 358 | 358 |
| 359 case SUBSTITUTION_SOURCE_ROOT_RELATIVE_DIR: | 359 case SUBSTITUTION_SOURCE_ROOT_RELATIVE_DIR: |
| 360 if (source.is_system_absolute()) | 360 if (source.is_system_absolute()) |
| 361 return DirectoryWithNoLastSlash(source.GetDir()); | 361 return DirectoryWithNoLastSlash(source.GetDir()); |
| 362 return RebasePath( | 362 return RebasePath( |
| 363 DirectoryWithNoLastSlash(source.GetDir()), SourceDir("//"), | 363 DirectoryWithNoLastSlash(source.GetDir()), SourceDir("//"), |
| 364 settings->build_settings()->root_path_utf8()); | 364 settings->build_settings()->root_path_utf8()); |
| 365 | 365 |
| 366 case SUBSTITUTION_SOURCE_GEN_DIR: | 366 case SUBSTITUTION_SOURCE_GEN_DIR: |
| 367 to_rebase = DirectoryWithNoLastSlash( | 367 to_rebase = DirectoryWithNoLastSlash(GetSubBuildDirAsSourceDir( |
| 368 GetGenDirForSourceDir(settings, source.GetDir())); | 368 BuildDirContext(settings), source.GetDir(), BuildDirType::GEN)); |
| 369 break; | 369 break; |
| 370 | 370 |
| 371 case SUBSTITUTION_SOURCE_OUT_DIR: | 371 case SUBSTITUTION_SOURCE_OUT_DIR: |
| 372 to_rebase = DirectoryWithNoLastSlash( | 372 to_rebase = DirectoryWithNoLastSlash(GetSubBuildDirAsSourceDir( |
| 373 GetOutputDirForSourceDir(settings, source.GetDir())); | 373 BuildDirContext(settings), source.GetDir(), BuildDirType::OBJ)); |
| 374 break; | 374 break; |
| 375 | 375 |
| 376 default: | 376 default: |
| 377 NOTREACHED() | 377 NOTREACHED() |
| 378 << "Unsupported substitution for this function: " | 378 << "Unsupported substitution for this function: " |
| 379 << kSubstitutionNames[type]; | 379 << kSubstitutionNames[type]; |
| 380 return std::string(); | 380 return std::string(); |
| 381 } | 381 } |
| 382 | 382 |
| 383 // If we get here, the result is a path that should be made relative or | 383 // If we get here, the result is a path that should be made relative or |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 426 case SUBSTITUTION_LABEL: | 426 case SUBSTITUTION_LABEL: |
| 427 // Only include the toolchain for non-default toolchains. | 427 // Only include the toolchain for non-default toolchains. |
| 428 *result = target->label().GetUserVisibleName( | 428 *result = target->label().GetUserVisibleName( |
| 429 !target->settings()->is_default()); | 429 !target->settings()->is_default()); |
| 430 break; | 430 break; |
| 431 case SUBSTITUTION_LABEL_NAME: | 431 case SUBSTITUTION_LABEL_NAME: |
| 432 *result = target->label().name(); | 432 *result = target->label().name(); |
| 433 break; | 433 break; |
| 434 case SUBSTITUTION_ROOT_GEN_DIR: | 434 case SUBSTITUTION_ROOT_GEN_DIR: |
| 435 SetDirOrDotWithNoSlash( | 435 SetDirOrDotWithNoSlash( |
| 436 GetToolchainGenDirAsOutputFile(target->settings()).value(), | 436 GetBuildDirAsOutputFile(BuildDirContext(target), |
| 437 BuildDirType::GEN).value(), |
| 437 result); | 438 result); |
| 438 break; | 439 break; |
| 439 case SUBSTITUTION_ROOT_OUT_DIR: | 440 case SUBSTITUTION_ROOT_OUT_DIR: |
| 440 SetDirOrDotWithNoSlash( | 441 SetDirOrDotWithNoSlash( |
| 441 target->settings()->toolchain_output_subdir().value(), | 442 target->settings()->toolchain_output_subdir().value(), |
| 442 result); | 443 result); |
| 443 break; | 444 break; |
| 444 case SUBSTITUTION_TARGET_GEN_DIR: | 445 case SUBSTITUTION_TARGET_GEN_DIR: |
| 445 SetDirOrDotWithNoSlash( | 446 SetDirOrDotWithNoSlash( |
| 446 GetTargetGenDirAsOutputFile(target).value(), | 447 GetBuildDirForTargetAsOutputFile(target, BuildDirType::GEN).value(), |
| 447 result); | 448 result); |
| 448 break; | 449 break; |
| 449 case SUBSTITUTION_TARGET_OUT_DIR: | 450 case SUBSTITUTION_TARGET_OUT_DIR: |
| 450 SetDirOrDotWithNoSlash( | 451 SetDirOrDotWithNoSlash( |
| 451 GetTargetOutputDirAsOutputFile(target).value(), | 452 GetBuildDirForTargetAsOutputFile(target, BuildDirType::OBJ).value(), |
| 452 result); | 453 result); |
| 453 break; | 454 break; |
| 454 case SUBSTITUTION_TARGET_OUTPUT_NAME: | 455 case SUBSTITUTION_TARGET_OUTPUT_NAME: |
| 455 *result = target->GetComputedOutputName(); | 456 *result = target->GetComputedOutputName(); |
| 456 break; | 457 break; |
| 457 default: | 458 default: |
| 458 return false; | 459 return false; |
| 459 } | 460 } |
| 460 return true; | 461 return true; |
| 461 } | 462 } |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 return tool->default_output_extension(); | 576 return tool->default_output_extension(); |
| 576 if (target->output_extension().empty()) | 577 if (target->output_extension().empty()) |
| 577 return std::string(); // Explicitly set to no extension. | 578 return std::string(); // Explicitly set to no extension. |
| 578 return std::string(".") + target->output_extension(); | 579 return std::string(".") + target->output_extension(); |
| 579 | 580 |
| 580 default: | 581 default: |
| 581 NOTREACHED(); | 582 NOTREACHED(); |
| 582 return std::string(); | 583 return std::string(); |
| 583 } | 584 } |
| 584 } | 585 } |
| OLD | NEW |