[apple] Remove support for frameworks in libs
As configs now support both "frameworks" and "weak_frameworks",
remove support for frameworks from "libs", printing an error if
users try to assign Foo.framework to "libs".
Bug: chromium:1052560
Change-Id: I82a29aa16432e0659c18d9c1432692b090602e64
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/9240
Commit-Queue: Sylvain Defresne <sdefresne@chromium.org>
Reviewed-by: Brett Wilson <brettw@chromium.org>
diff --git a/docs/reference.md b/docs/reference.md
index ad1ef27..8fc86fd 100644
--- a/docs/reference.md
+++ b/docs/reference.md
@@ -3729,10 +3729,6 @@
Expands to the list of system libraries to link to. Each will be
prefixed by the "lib_switch".
- As a special case to support Mac, libraries with names ending in
- ".framework" will be added to the {{libs}} with "-framework" preceding
- it, and the lib prefix will be ignored.
-
Example: "-lfoo -lbar"
{{output_dir}}
@@ -5699,12 +5695,6 @@
"lib_dirs" so the given library is found. Your BUILD.gn file should not
specify the switch (like "-l"): this will be encoded in the "lib_switch"
of the tool.
-
- Apple frameworks
- System libraries ending in ".framework" will be special-cased: the switch
- "-framework" will be prepended instead of the lib_switch, and the
- ".framework" suffix will be trimmed. This is to support the way Mac links
- framework dependencies.
```
#### **Ordering of flags and values**
@@ -7347,7 +7337,7 @@
group("a") {
metadata = {
my_files = [ "foo.cpp" ]
- my_files_barrier [ ":b" ]
+ my_files_barrier = [ ":b" ]
}
deps = [ ":b", ":c" ]
@@ -7367,7 +7357,8 @@
generated_file("metadata") {
outputs = [ "$root_build_dir/my_files.json" ]
- data_keys = [ "my_files", "my_extra_files" ]
+ data_keys = [ "my_files" ]
+ walk_keys = [ "my_files_barrier" ]
deps = [ ":a" ]
}
diff --git a/src/gn/format_test_data/048.gn b/src/gn/format_test_data/048.gn
index 7d39efb..2584b75 100644
--- a/src/gn/format_test_data/048.gn
+++ b/src/gn/format_test_data/048.gn
@@ -6,7 +6,7 @@
"src/AddressBook/GTMABAddressBook.m",
]
- libs = [
+ frameworks = [
"AddressBook.framework",
"AppKit.framework",
]
diff --git a/src/gn/format_test_data/048.golden b/src/gn/format_test_data/048.golden
index 7d39efb..2584b75 100644
--- a/src/gn/format_test_data/048.golden
+++ b/src/gn/format_test_data/048.golden
@@ -6,7 +6,7 @@
"src/AddressBook/GTMABAddressBook.m",
]
- libs = [
+ frameworks = [
"AddressBook.framework",
"AppKit.framework",
]
diff --git a/src/gn/function_toolchain.cc b/src/gn/function_toolchain.cc
index 0ff5d34..ac63c2e 100644
--- a/src/gn/function_toolchain.cc
+++ b/src/gn/function_toolchain.cc
@@ -661,10 +661,6 @@
Expands to the list of system libraries to link to. Each will be
prefixed by the "lib_switch".
- As a special case to support Mac, libraries with names ending in
- ".framework" will be added to the {{libs}} with "-framework" preceding
- it, and the lib prefix will be ignored.
-
Example: "-lfoo -lbar"
{{output_dir}}
diff --git a/src/gn/ninja_binary_target_writer.cc b/src/gn/ninja_binary_target_writer.cc
index e12e836..4379ca0 100644
--- a/src/gn/ninja_binary_target_writer.cc
+++ b/src/gn/ninja_binary_target_writer.cc
@@ -333,17 +333,9 @@
for (size_t i = 0; i < all_libs.size(); i++) {
const LibFile& lib_file = all_libs[i];
const std::string& lib_value = lib_file.value();
- std::string_view framework_name = GetFrameworkName(lib_value);
if (lib_file.is_source_file()) {
out << " " << tool->linker_arg();
path_output_.WriteFile(out, lib_file.source_file());
- } else if (!framework_name.empty()) {
- // Special-case libraries ending in ".framework" to support Mac: Add the
- // -framework switch and don't add the extension to the output.
- // TODO(crbug.com/gn/119): remove this once all code has been ported to
- // use "frameworks" and "framework_dirs" instead.
- out << " " << tool->framework_switch();
- EscapeStringToStream(out, framework_name, lib_escape_opts);
} else {
out << " " << tool->lib_switch();
EscapeStringToStream(out, lib_value, lib_escape_opts);
diff --git a/src/gn/value_extractors.cc b/src/gn/value_extractors.cc
index 74ea345..9eb7593 100644
--- a/src/gn/value_extractors.cc
+++ b/src/gn/value_extractors.cc
@@ -8,6 +8,7 @@
#include "gn/build_settings.h"
#include "gn/err.h"
+#include "gn/frameworks_utils.h"
#include "gn/label.h"
#include "gn/source_dir.h"
#include "gn/source_file.h"
@@ -80,6 +81,11 @@
bool operator()(const Value& v, LibFile* out, Err* err) const {
if (!v.VerifyTypeIs(Value::STRING, err))
return false;
+ if (!GetFrameworkName(v.string_value()).empty()) {
+ *err = Err(v, "Unsupported value in libs.",
+ "Use frameworks to list framework dependencies.");
+ return false;
+ }
if (v.string_value().find('/') == std::string::npos) {
*out = LibFile(v.string_value());
} else {
diff --git a/src/gn/variables.cc b/src/gn/variables.cc
index daabdb5..b543dd2 100644
--- a/src/gn/variables.cc
+++ b/src/gn/variables.cc
@@ -1408,12 +1408,6 @@
"lib_dirs" so the given library is found. Your BUILD.gn file should not
specify the switch (like "-l"): this will be encoded in the "lib_switch"
of the tool.
-
- Apple frameworks
- System libraries ending in ".framework" will be special-cased: the switch
- "-framework" will be prepended instead of the lib_switch, and the
- ".framework" suffix will be trimmed. This is to support the way Mac links
- framework dependencies.
)" COMMON_ORDERING_HELP LIBS_AND_LIB_DIRS_ORDERING_HELP
R"(
Examples