| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/target.h" | 5 #include "tools/gn/target.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 345 // Copy public configs from all dependencies into the list of configs | 345 // Copy public configs from all dependencies into the list of configs |
| 346 // applying to this target (configs_). | 346 // applying to this target (configs_). |
| 347 PullDependentTargetConfigs(); | 347 PullDependentTargetConfigs(); |
| 348 | 348 |
| 349 // Copies public dependencies' public configs to this target's public | 349 // Copies public dependencies' public configs to this target's public |
| 350 // configs. These configs have already been applied to this target by | 350 // configs. These configs have already been applied to this target by |
| 351 // PullDependentTargetConfigs above, along with the public configs from | 351 // PullDependentTargetConfigs above, along with the public configs from |
| 352 // private deps. This step re-exports them as public configs for targets that | 352 // private deps. This step re-exports them as public configs for targets that |
| 353 // depend on this one. | 353 // depend on this one. |
| 354 for (const auto& dep : public_deps_) { | 354 for (const auto& dep : public_deps_) { |
| 355 public_configs_.Append(dep.ptr->public_configs().begin(), | 355 if (dep.ptr->toolchain() == toolchain()) { |
| 356 dep.ptr->public_configs().end()); | 356 public_configs_.Append(dep.ptr->public_configs().begin(), |
| 357 dep.ptr->public_configs().end()); |
| 358 } |
| 357 } | 359 } |
| 358 | 360 |
| 359 // Copy our own libs and lib_dirs to the final set. This will be from our | 361 // Copy our own libs and lib_dirs to the final set. This will be from our |
| 360 // target and all of our configs. We do this specially since these must be | 362 // target and all of our configs. We do this specially since these must be |
| 361 // inherited through the dependency tree (other flags don't work this way). | 363 // inherited through the dependency tree (other flags don't work this way). |
| 362 // | 364 // |
| 363 // This needs to happen after we pull dependent target configs for the | 365 // This needs to happen after we pull dependent target configs for the |
| 364 // public config's libs to be included here. And it needs to happen | 366 // public config's libs to be included here. And it needs to happen |
| 365 // before pulling the dependent target libs so the libs are in the correct | 367 // before pulling the dependent target libs so the libs are in the correct |
| 366 // order (local ones first, then the dependency's). | 368 // order (local ones first, then the dependency's). |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 495 if (!tool) | 497 if (!tool) |
| 496 return false; // Tool does not apply for this toolchain.file. | 498 return false; // Tool does not apply for this toolchain.file. |
| 497 | 499 |
| 498 // Figure out what output(s) this compiler produces. | 500 // Figure out what output(s) this compiler produces. |
| 499 SubstitutionWriter::ApplyListToCompilerAsOutputFile( | 501 SubstitutionWriter::ApplyListToCompilerAsOutputFile( |
| 500 this, source, tool->outputs(), outputs); | 502 this, source, tool->outputs(), outputs); |
| 501 return !outputs->empty(); | 503 return !outputs->empty(); |
| 502 } | 504 } |
| 503 | 505 |
| 504 void Target::PullDependentTargetConfigs() { | 506 void Target::PullDependentTargetConfigs() { |
| 505 for (const auto& pair : GetDeps(DEPS_LINKED)) | 507 for (const auto& pair : GetDeps(DEPS_LINKED)) { |
| 506 MergeAllDependentConfigsFrom(pair.ptr, &configs_, &all_dependent_configs_); | 508 if (pair.ptr->toolchain() == toolchain()) { |
| 507 for (const auto& pair : GetDeps(DEPS_LINKED)) | 509 MergeAllDependentConfigsFrom(pair.ptr, &configs_, |
| 508 MergePublicConfigsFrom(pair.ptr, &configs_); | 510 &all_dependent_configs_); |
| 511 } |
| 512 } |
| 513 for (const auto& pair : GetDeps(DEPS_LINKED)) { |
| 514 if (pair.ptr->toolchain() == toolchain()) { |
| 515 MergePublicConfigsFrom(pair.ptr, &configs_); |
| 516 } |
| 517 } |
| 509 } | 518 } |
| 510 | 519 |
| 511 void Target::PullDependentTargetLibsFrom(const Target* dep, bool is_public) { | 520 void Target::PullDependentTargetLibsFrom(const Target* dep, bool is_public) { |
| 512 // Direct dependent libraries. | 521 // Direct dependent libraries. |
| 513 if (dep->output_type() == STATIC_LIBRARY || | 522 if (dep->output_type() == STATIC_LIBRARY || |
| 514 dep->output_type() == SHARED_LIBRARY || | 523 dep->output_type() == SHARED_LIBRARY || |
| 515 dep->output_type() == SOURCE_SET) | 524 dep->output_type() == SOURCE_SET) |
| 516 inherited_libraries_.Append(dep, is_public); | 525 inherited_libraries_.Append(dep, is_public); |
| 517 | 526 |
| 518 if (dep->output_type() == SHARED_LIBRARY) { | 527 if (dep->output_type() == SHARED_LIBRARY) { |
| (...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 846 check_data_deps = g_scheduler->IsFileGeneratedByWriteRuntimeDeps(out_file); | 855 check_data_deps = g_scheduler->IsFileGeneratedByWriteRuntimeDeps(out_file); |
| 847 // Check object files (much slower and very rare) only if the "normal" | 856 // Check object files (much slower and very rare) only if the "normal" |
| 848 // output check failed. | 857 // output check failed. |
| 849 consider_object_files = !check_data_deps; | 858 consider_object_files = !check_data_deps; |
| 850 if (!EnsureFileIsGeneratedByDependency(this, out_file, true, | 859 if (!EnsureFileIsGeneratedByDependency(this, out_file, true, |
| 851 consider_object_files, | 860 consider_object_files, |
| 852 check_data_deps, &seen_targets)) | 861 check_data_deps, &seen_targets)) |
| 853 g_scheduler->AddUnknownGeneratedInput(this, source); | 862 g_scheduler->AddUnknownGeneratedInput(this, source); |
| 854 } | 863 } |
| 855 } | 864 } |
| OLD | NEW |