Remove obsolete OS handling in GN.

There was a a bunch of built-in special-casing of the current_os variable which has been gradually removed over time as we have needed extra flexibility and reduced special casing.

The only use of this was for libs ending in .framework on Mac. I think it's OK to run the special-casing on all OS's, since in pracice libraries on Windows and Linux can't end in ".framework".

A bunch of setup and maintenance of these variables is removed.

Review URL: https://codereview.chromium.org/1431323003

Cr-Original-Commit-Position: refs/heads/master@{#359170}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: d4f9637d51829c0d779e7ce07b945e8b7813397d
diff --git a/tools/gn/function_get_target_outputs_unittest.cc b/tools/gn/function_get_target_outputs_unittest.cc
index cd19d99..c947709 100644
--- a/tools/gn/function_get_target_outputs_unittest.cc
+++ b/tools/gn/function_get_target_outputs_unittest.cc
@@ -12,8 +12,6 @@
 class GetTargetOutputsTest : public testing::Test {
  public:
   GetTargetOutputsTest() {
-    // Want consistent target names so explicitly set platform.
-    setup_.settings()->set_target_os(Settings::LINUX);
     setup_.scope()->set_item_collector(&items_);
   }
 
diff --git a/tools/gn/ninja_action_target_writer_unittest.cc b/tools/gn/ninja_action_target_writer_unittest.cc
index a7dd21b..38a175b 100644
--- a/tools/gn/ninja_action_target_writer_unittest.cc
+++ b/tools/gn/ninja_action_target_writer_unittest.cc
@@ -54,7 +54,6 @@
   target.SetToolchain(setup.toolchain());
   ASSERT_TRUE(target.OnResolved(&err));
 
-  setup.settings()->set_target_os(Settings::LINUX);
   setup.build_settings()->set_python_path(base::FilePath(FILE_PATH_LITERAL(
       "/usr/bin/python")));
 
@@ -96,7 +95,6 @@
   target.SetToolchain(setup.toolchain());
   ASSERT_TRUE(target.OnResolved(&err));
 
-  setup.settings()->set_target_os(Settings::LINUX);
   setup.build_settings()->set_python_path(base::FilePath(FILE_PATH_LITERAL(
       "/usr/bin/python")));
 
@@ -140,7 +138,6 @@
   target.SetToolchain(setup.toolchain());
   ASSERT_TRUE(target.OnResolved(&err));
 
-  setup.settings()->set_target_os(Settings::LINUX);
   setup.build_settings()->set_python_path(base::FilePath(FILE_PATH_LITERAL(
       "/usr/bin/python")));
 
@@ -206,7 +203,6 @@
   target.SetToolchain(setup.toolchain());
   ASSERT_TRUE(target.OnResolved(&err));
 
-  setup.settings()->set_target_os(Settings::LINUX);
   setup.build_settings()->set_python_path(base::FilePath(FILE_PATH_LITERAL(
       "/usr/bin/python")));
 
@@ -275,7 +271,6 @@
 
   target.inputs().push_back(SourceFile("//foo/included.txt"));
 
-  setup.settings()->set_target_os(Settings::LINUX);
   setup.build_settings()->set_python_path(base::FilePath(FILE_PATH_LITERAL(
       "/usr/bin/python")));
 
@@ -335,7 +330,6 @@
   target.action_values().outputs() = SubstitutionList::MakeForTest(
       "//out/Debug/{{source_name_part}}.out");
 
-  setup.settings()->set_target_os(Settings::LINUX);
   setup.build_settings()->set_python_path(base::FilePath(FILE_PATH_LITERAL(
       "/usr/bin/python")));
 
diff --git a/tools/gn/ninja_binary_target_writer.cc b/tools/gn/ninja_binary_target_writer.cc
index 64bf042..98c6f1d 100644
--- a/tools/gn/ninja_binary_target_writer.cc
+++ b/tools/gn/ninja_binary_target_writer.cc
@@ -860,10 +860,9 @@
   const OrderedSet<std::string> all_libs = target_->all_libs();
   const std::string framework_ending(".framework");
   for (size_t i = 0; i < all_libs.size(); i++) {
-    if (settings_->IsMac() &&
-        base::EndsWith(all_libs[i], framework_ending,
+    if (base::EndsWith(all_libs[i], framework_ending,
                        base::CompareCase::INSENSITIVE_ASCII)) {
-      // Special-case libraries ending in ".framework" on Mac. Add the
+      // Special-case libraries ending in ".framework" to support Mac: Add the
       // -framework switch and don't add the extension to the output.
       out_ << " -framework ";
       EscapeStringToStream(out_,
diff --git a/tools/gn/ninja_binary_target_writer_unittest.cc b/tools/gn/ninja_binary_target_writer_unittest.cc
index 3de68e8..0765ba6 100644
--- a/tools/gn/ninja_binary_target_writer_unittest.cc
+++ b/tools/gn/ninja_binary_target_writer_unittest.cc
@@ -15,7 +15,6 @@
   Err err;
 
   setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
-  setup.settings()->set_target_os(Settings::WIN);
 
   Target target(setup.settings(), Label(SourceDir("//foo/"), "bar"));
   target.set_output_type(Target::SOURCE_SET);
@@ -152,7 +151,6 @@
   Err err;
 
   setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
-  setup.settings()->set_target_os(Settings::LINUX);
 
   // An action for our library to depend on.
   Target action(setup.settings(), Label(SourceDir("//foo/"), "action"));
@@ -208,7 +206,6 @@
   Err err;
 
   setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
-  setup.settings()->set_target_os(Settings::LINUX);
 
   // This test is the same as ProductExtension, except that
   // we call set_output_extension("") and ensure that we still get the default.
@@ -250,7 +247,6 @@
 TEST(NinjaBinaryTargetWriter, SourceSetDataDeps) {
   TestWithScope setup;
   setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
-  setup.settings()->set_target_os(Settings::LINUX);
 
   Err err;
 
@@ -332,7 +328,6 @@
 TEST(NinjaBinaryTargetWriter, SharedLibraryModuleDefinitionFile) {
   TestWithScope setup;
   setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
-  setup.settings()->set_target_os(Settings::WIN);
 
   Target shared_lib(setup.settings(), Label(SourceDir("//foo/"), "bar"));
   shared_lib.set_output_type(Target::SHARED_LIBRARY);
diff --git a/tools/gn/ninja_copy_target_writer_unittest.cc b/tools/gn/ninja_copy_target_writer_unittest.cc
index 12496bf..e6ec222 100644
--- a/tools/gn/ninja_copy_target_writer_unittest.cc
+++ b/tools/gn/ninja_copy_target_writer_unittest.cc
@@ -15,7 +15,6 @@
   TestWithScope setup;
   Err err;
 
-  setup.settings()->set_target_os(Settings::LINUX);
   setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
   Target target(setup.settings(), Label(SourceDir("//foo/"), "bar"));
   target.set_output_type(Target::COPY_FILES);
@@ -47,7 +46,6 @@
   TestWithScope setup;
   Err err;
 
-  setup.settings()->set_target_os(Settings::LINUX);
   setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
   Target target(setup.settings(), Label(SourceDir("//foo/"), "bar"));
   target.set_output_type(Target::COPY_FILES);
@@ -76,7 +74,6 @@
   TestWithScope setup;
   Err err;
 
-  setup.settings()->set_target_os(Settings::LINUX);
   setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
 
   Target target(setup.settings(), Label(SourceDir("//foo/"), "bar"));
diff --git a/tools/gn/settings.cc b/tools/gn/settings.cc
index a5f90d6..034e601 100644
--- a/tools/gn/settings.cc
+++ b/tools/gn/settings.cc
@@ -29,20 +29,6 @@
   // one-off data without doing generation.
   if (!toolchain_output_dir_.is_null())
     toolchain_gen_dir_ = SourceDir(toolchain_output_dir_.value() + "gen/");
-
-#if defined(OS_WIN)
-  target_os_ = WIN;
-#elif defined(OS_MACOSX)
-  target_os_ = MAC;
-#elif defined(OS_LINUX)
-  target_os_ = LINUX;
-#elif defined(OS_ANDROID)
-  // Currently we don't have an "Android" target OS, it looks just like Linux
-  // from our perspective.
-  target_os_ = LINUX;
-#else
-  #error implement me
-#endif
 }
 
 Settings::~Settings() {
diff --git a/tools/gn/settings.h b/tools/gn/settings.h
index e66a13f..e07ee2e 100644
--- a/tools/gn/settings.h
+++ b/tools/gn/settings.h
@@ -26,13 +26,6 @@
 // the file with the toolchain declaration in it.
 class Settings {
  public:
-  enum TargetOS {
-    UNKNOWN,
-    LINUX,
-    MAC,
-    WIN
-  };
-
   // Constructs a toolchain settings.
   //
   // The output_subdir_name is the name we should use for the subdirectory in
@@ -60,13 +53,6 @@
     return toolchain_label_ == default_toolchain_label_;
   }
 
-  bool IsMac() const { return target_os_ == MAC; }
-  bool IsLinux() const { return target_os_ == LINUX; }
-  bool IsWin() const { return target_os_ == WIN; }
-
-  TargetOS target_os() const { return target_os_; }
-  void set_target_os(TargetOS t) { target_os_ = t; }
-
   const OutputFile& toolchain_output_subdir() const {
     return toolchain_output_subdir_;
   }
@@ -106,8 +92,6 @@
   Label toolchain_label_;
   Label default_toolchain_label_;
 
-  TargetOS target_os_;
-
   mutable ImportManager import_manager_;
 
   // The subdirectory inside the build output for this toolchain. For the
diff --git a/tools/gn/variables.cc b/tools/gn/variables.cc
index 5a9b840..aa4de36 100644
--- a/tools/gn/variables.cc
+++ b/tools/gn/variables.cc
@@ -880,9 +880,12 @@
     "  When constructing the linker command, the \"lib_prefix\" attribute of\n"
     "  the linker tool in the current toolchain will be prepended to each\n"
     "  library. So your BUILD file should not specify the switch prefix\n"
-    "  (like \"-l\"). On Mac, libraries ending in \".framework\" will be\n"
-    "  special-cased: the switch \"-framework\" will be prepended instead of\n"
-    "  the lib_prefix, and the \".framework\" suffix will be trimmed.\n"
+    "  (like \"-l\").\n"
+    "\n"
+    "  Libraries ending in \".framework\" will be special-cased: the switch\n"
+    "  \"-framework\" will be prepended instead of the lib_prefix, and the\n"
+    "  \".framework\" suffix will be trimmed. This is to support the way Mac\n"
+    "  links framework dependencies.\n"
     COMMON_LIB_INHERITANCE_HELP
     COMMON_ORDERING_HELP
     "\n"