Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Side by Side Diff: tools/gn/target_unittest.cc

Issue 1690843002: gn: Add runtime_link_output to tool("solib") (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: e Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/gn/target.cc ('k') | tools/gn/tool.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <utility> 7 #include <utility>
8 8
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "tools/gn/build_settings.h" 10 #include "tools/gn/build_settings.h"
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 450
451 toolchain.SetTool(Toolchain::TYPE_SOLINK, std::move(solink_tool)); 451 toolchain.SetTool(Toolchain::TYPE_SOLINK, std::move(solink_tool));
452 452
453 Target target(setup.settings(), Label(SourceDir("//a/"), "a")); 453 Target target(setup.settings(), Label(SourceDir("//a/"), "a"));
454 target.set_output_type(Target::SHARED_LIBRARY); 454 target.set_output_type(Target::SHARED_LIBRARY);
455 target.SetToolchain(&toolchain); 455 target.SetToolchain(&toolchain);
456 ASSERT_TRUE(target.OnResolved(&err)); 456 ASSERT_TRUE(target.OnResolved(&err));
457 457
458 EXPECT_EQ("./liba.so", target.link_output_file().value()); 458 EXPECT_EQ("./liba.so", target.link_output_file().value());
459 EXPECT_EQ("./liba.so.TOC", target.dependency_output_file().value()); 459 EXPECT_EQ("./liba.so.TOC", target.dependency_output_file().value());
460 EXPECT_EQ("./liba.so", target.runtime_link_output_file().value());
461 }
462
463 // Tests that runtime_link output works without an explicit link_output for
464 // solink tools.
465 TEST(Target, RuntimeLinkOuput) {
466 TestWithScope setup;
467 Err err;
468
469 Toolchain toolchain(setup.settings(), Label(SourceDir("//tc/"), "tc"));
470
471 scoped_ptr<Tool> solink_tool(new Tool());
472 solink_tool->set_output_prefix("");
473 solink_tool->set_default_output_extension(".dll");
474
475 const char kLibPattern[] =
476 "{{root_out_dir}}/{{target_output_name}}{{output_extension}}.lib";
477 SubstitutionPattern lib_output =
478 SubstitutionPattern::MakeForTest(kLibPattern);
479
480 const char kDllPattern[] =
481 "{{root_out_dir}}/{{target_output_name}}{{output_extension}}";
482 SubstitutionPattern dll_output =
483 SubstitutionPattern::MakeForTest(kDllPattern);
484
485 solink_tool->set_outputs(
486 SubstitutionList::MakeForTest(kLibPattern, kDllPattern));
487
488 solink_tool->set_runtime_link_output(dll_output);
489
490 toolchain.SetTool(Toolchain::TYPE_SOLINK, std::move(solink_tool));
491
492 Target target(setup.settings(), Label(SourceDir("//a/"), "a"));
493 target.set_output_type(Target::SHARED_LIBRARY);
494 target.SetToolchain(&toolchain);
495 ASSERT_TRUE(target.OnResolved(&err));
496
497 EXPECT_EQ("./a.dll.lib", target.link_output_file().value());
498 EXPECT_EQ("./a.dll.lib", target.dependency_output_file().value());
499 EXPECT_EQ("./a.dll", target.runtime_link_output_file().value());
460 } 500 }
461 501
462 // Shared libraries should be inherited across public shared liobrary 502 // Shared libraries should be inherited across public shared liobrary
463 // boundaries. 503 // boundaries.
464 TEST(Target, SharedInheritance) { 504 TEST(Target, SharedInheritance) {
465 TestWithScope setup; 505 TestWithScope setup;
466 Err err; 506 Err err;
467 507
468 // Create two leaf shared libraries. 508 // Create two leaf shared libraries.
469 TestTarget pub(setup, "//foo:pub", Target::SHARED_LIBRARY); 509 TestTarget pub(setup, "//foo:pub", Target::SHARED_LIBRARY);
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 d.private_deps().push_back(LabelTargetPair(&exe)); 756 d.private_deps().push_back(LabelTargetPair(&exe));
717 d.assert_no_deps().push_back(disallow_a); 757 d.assert_no_deps().push_back(disallow_a);
718 ASSERT_TRUE(d.OnResolved(&err)); 758 ASSERT_TRUE(d.OnResolved(&err));
719 759
720 // A2 disallows depending on anything in its own directory, but the 760 // A2 disallows depending on anything in its own directory, but the
721 // assertions should not match the target itself so this should be OK. 761 // assertions should not match the target itself so this should be OK.
722 TestTarget a2(setup, "//a:a2", Target::EXECUTABLE); 762 TestTarget a2(setup, "//a:a2", Target::EXECUTABLE);
723 a2.assert_no_deps().push_back(disallow_a); 763 a2.assert_no_deps().push_back(disallow_a);
724 ASSERT_TRUE(a2.OnResolved(&err)); 764 ASSERT_TRUE(a2.OnResolved(&err));
725 } 765 }
OLDNEW
« no previous file with comments | « tools/gn/target.cc ('k') | tools/gn/tool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698