Index: build/config/mac/rules.gni |
diff --git a/build/config/mac/rules.gni b/build/config/mac/rules.gni |
index c10cc4b7f940dbefbba18126ee5e8454eca43d77..81297eb9a3d396bd5d7c5e2debfcab2cb87bf811 100644 |
--- a/build/config/mac/rules.gni |
+++ b/build/config/mac/rules.gni |
@@ -258,11 +258,13 @@ template("mac_framework_bundle") { |
# the versioned directory structure. |
_framework_target = _target_name |
_framework_name = _output_name + ".framework" |
- _framework_root_dir = "$root_out_dir/$_framework_name" |
+ _framework_base_dir = "$root_out_dir/$_framework_name" |
if (defined(invoker.framework_version) && invoker.framework_version != "") { |
_framework_version = invoker.framework_version |
- _framework_root_dir += "/Versions/$_framework_version" |
+ _framework_root_dir = _framework_base_dir + "/Versions/$_framework_version" |
_framework_target = _target_name + "_create_bundle" |
+ } else { |
+ _framework_root_dir = _framework_base_dir |
} |
_link_shared_library_target = target_name + "_shared_library" |
@@ -302,6 +304,19 @@ template("mac_framework_bundle") { |
] |
} |
+ # Clean the entire framework if the framework_version changes. |
+ _version_arg = "" |
+ if (defined(_framework_version)) { |
+ _version_arg = _framework_version |
+ } |
+ _version_file = "$target_out_dir/${target_name}_version" |
+ exec_script("//build/config/mac/prepare_framework_version.py", |
+ [ |
+ rebase_path(_version_file), |
+ rebase_path(_framework_base_dir), |
+ "'$_version_arg'", |
+ ]) |
+ |
_framework_public_config = _target_name + "_public_config" |
config(_framework_public_config) { |
# TODO(sdefresne): should we have a framework_dirs similar to lib_dirs |