Chromium Code Reviews| Index: chrome/BUILD.gn |
| diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn |
| index c65eb9930b713821629aa5c45a6c6d62c63b5f7e..23eaded221b09180550558bea29f7b66ca0a17c0 100644 |
| --- a/chrome/BUILD.gn |
| +++ b/chrome/BUILD.gn |
| @@ -231,25 +231,6 @@ if (!is_android && !is_mac) { |
| } |
| } # !is_android && !is_mac |
| -if (is_mac) { |
| - if (is_component_build) { |
| - # On Mac component builds, this target is the bundle, and the main dll is |
| - # just another shared library. This speeds up incremental builds by |
| - # not requiring re-doing the bundle every time main_dll changes. |
| - # See https://codereview.chromium.org/11420019 |
| - |
| - # TODO(GYP) chrome_dll for Mac component build. |
| - assert(false) |
| - } else { |
| - # On Mac non-component builds, this is a no-op forwarding target. |
| - group("chrome_dll") { |
| - public_deps = [ |
| - ":chrome_framework", |
| - ] |
| - } |
| - } |
| -} |
| - |
| if (is_win) { |
| # This target is a forwarding target to compile the necessary DLLs used |
| # by Chrome. |
| @@ -402,12 +383,6 @@ if (is_win) { |
| group("chrome") { |
| deps = [ |
| - ":chrome_initial", |
| - ] |
| - } |
| - |
| - group("chrome_initial") { |
| - deps = [ |
| ":chrome_app", |
| ] |
| } |
| @@ -571,6 +546,11 @@ if (is_win) { |
| deps = [ |
| "//chrome/common:version_header", |
| ] |
| + |
| + ldflags = [ |
| + "-rpath", |
| + "@loader_path/../../../../../../..", |
|
Dirk Pranke
2016/05/06 22:10:07
same question ...
Robert Sesek
2016/05/06 22:20:49
Commented.
|
| + ] |
| } |
| bundle_data("chrome_framework_locales") { |
| @@ -665,10 +645,20 @@ if (is_win) { |
| ] |
| } |
| - mac_framework_bundle("chrome_framework") { |
| - output_name = chrome_framework_name |
| - |
| - configs += [ "//build/config/compiler:wexit_time_destructors" ] |
| + # On Mac, speed up the component build by not re-bundling the framework |
| + # every time it changes. Instead, place all the sources and their deps in |
| + # a library that the bundled framework links (and re-exports). That way |
| + # only the library needs to be re-linked when it changes. |
| + if (is_component_build) { |
| + _dll_target_type = "shared_library" |
| + } else { |
| + _dll_target_type = "source_set" |
| + } |
| + target(_dll_target_type, "chrome_dll") { |
| + visibility = [ |
| + ":chrome_framework", |
| + ":chrome_framework_shared_library", |
| + ] |
| sources = [ |
| "app/chrome_command_ids.h", |
| @@ -683,30 +673,59 @@ if (is_win) { |
| "app/chrome_main_mac.mm", |
| ] |
| + deps = [ |
| + ":browser_dependencies", |
| + ":child_dependencies", |
| + "//chrome/common:features", |
| + "//components/crash/content/app", |
| + "//components/policy", |
| + "//content/public/app:both", |
| + "//third_party/cld_2", |
| + ] |
| + |
| + if (is_component_build) { |
| + libs = [ "Carbon.framework" ] |
| + } |
| + |
| + ldflags = [ |
| + "-Wl,-order_file", |
| + "-Wl," + rebase_path("app/framework.order", root_build_dir), |
| + "-ObjC", |
| + ] |
| + |
| + if (enable_plugins && enable_pdf) { |
| + deps += [ "//pdf" ] |
| + } |
| + |
| + if (enable_package_mash_services) { |
| + deps += [ "//chrome/app/mash" ] |
| + } |
| + } |
| + |
| + mac_framework_bundle("chrome_framework") { |
| + output_name = chrome_framework_name |
| + |
| + configs += [ "//build/config/compiler:wexit_time_destructors" ] |
| + |
| info_plist_target = ":chrome_framework_plist" |
| extra_substitutions = [ |
| "CHROMIUM_BUNDLE_ID=$chrome_mac_bundle_id", |
| "CHROMIUM_SHORT_NAME=$chrome_product_short_name", |
| ] |
| + public_deps = [ |
| + ":chrome_dll", |
| + ] |
| + |
| deps = [ |
| - ":browser_dependencies", |
| - ":child_dependencies", |
| ":chrome_framework_helpers", |
| ":chrome_framework_locales", |
| ":chrome_framework_resources", |
| "//build/config/sanitizers:deps", |
| "//chrome/app/nibs:chrome_xibs", |
| - "//chrome/common:features", |
| - "//components/crash/content/app", |
| - "//components/policy", |
| - "//content/public/app:both", |
| - "//third_party/cld_2", |
| ] |
| ldflags = [ |
| - "-Wl,-order_file", |
| - "-Wl," + rebase_path("app/framework.order", root_build_dir), |
| "-install_name", |
| "@executable_path/../Versions/$chrome_version_full/$chrome_framework_name.framework/$chrome_framework_name", |
| "-compatibility_version", |
| @@ -715,12 +734,12 @@ if (is_win) { |
| chrome_dylib_version, |
| ] |
| - if (enable_plugins && enable_pdf) { |
| - deps += [ "//pdf" ] |
| - } |
| - |
| - if (enable_package_mash_services) { |
| - deps += [ "//chrome/app/mash" ] |
| + if (is_component_build) { |
| + ldflags += [ |
| + "-rpath", |
| + "@loader_path/../../../../..", |
| + "-Wl,-reexport_library,libchrome_dll.dylib", |
| + ] |
| } |
| } |
| } |