build: [gn] simplify resource pak build
This commit is contained in:
		
					parent
					
						
							
								ea16445be7
							
						
					
				
			
			
				commit
				
					
						76a62b44dc
					
				
			
		
					 4 changed files with 202 additions and 40 deletions
				
			
		
							
								
								
									
										45
									
								
								BUILD.gn
									
										
									
									
									
								
							
							
						
						
									
										45
									
								
								BUILD.gn
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -5,6 +5,7 @@ import("build/asar.gni")
 | 
			
		|||
import("build/npm.gni")
 | 
			
		||||
import("//pdf/features.gni")
 | 
			
		||||
import("//build/config/win/manifest.gni")
 | 
			
		||||
import("electron_paks.gni")
 | 
			
		||||
 | 
			
		||||
if (is_mac) {
 | 
			
		||||
  import("//build/config/mac/rules.gni")
 | 
			
		||||
| 
						 | 
				
			
			@ -360,6 +361,15 @@ static_library("electron_lib") {
 | 
			
		|||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
electron_paks("packed_resources") {
 | 
			
		||||
  if (is_mac) {
 | 
			
		||||
    output_dir = "$root_gen_dir/electron_repack"
 | 
			
		||||
    copy_data_to_bundle = true
 | 
			
		||||
  } else {
 | 
			
		||||
    output_dir = root_out_dir
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if (is_mac) {
 | 
			
		||||
  electron_framework_name = electron_product_name + " Framework"
 | 
			
		||||
  electron_helper_name = electron_product_name + " Helper"
 | 
			
		||||
| 
						 | 
				
			
			@ -373,12 +383,9 @@ if (is_mac) {
 | 
			
		|||
 | 
			
		||||
  bundle_data("electron_framework_resources") {
 | 
			
		||||
    public_deps = [
 | 
			
		||||
      "//content/shell:pak",
 | 
			
		||||
      ":electron_locales",
 | 
			
		||||
    ]
 | 
			
		||||
    sources = [
 | 
			
		||||
      "$root_out_dir/content_shell.pak",
 | 
			
		||||
      ":packed_resources",
 | 
			
		||||
    ]
 | 
			
		||||
    sources = []
 | 
			
		||||
    if (icu_use_data_file) {
 | 
			
		||||
      sources += [ "$root_out_dir/icudtl.dat" ]
 | 
			
		||||
      public_deps += [ "//third_party/icu:icudata" ]
 | 
			
		||||
| 
						 | 
				
			
			@ -541,30 +548,6 @@ if (is_mac) {
 | 
			
		|||
    ]
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  repack_locales("electron_locales") {
 | 
			
		||||
    source_patterns = [
 | 
			
		||||
      "${root_gen_dir}/content/app/strings/content_strings_",
 | 
			
		||||
    ]
 | 
			
		||||
    deps = [
 | 
			
		||||
      "//content/app/strings",
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    input_locales = locales
 | 
			
		||||
 | 
			
		||||
    if (is_mac) {
 | 
			
		||||
      output_locales = locales_as_mac_outputs
 | 
			
		||||
    } else {
 | 
			
		||||
      output_locales = locales
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (is_mac) {
 | 
			
		||||
      output_dir = "$root_gen_dir/repack"
 | 
			
		||||
      copy_data_to_bundle = true
 | 
			
		||||
    } else {
 | 
			
		||||
      output_dir = root_out_dir
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  mac_app_bundle("electron_app") {
 | 
			
		||||
    output_name = electron_product_name
 | 
			
		||||
    sources = filenames_gypi.app_sources
 | 
			
		||||
| 
						 | 
				
			
			@ -604,10 +587,6 @@ if (is_mac) {
 | 
			
		|||
      ":electron_lib",
 | 
			
		||||
      ":js2asar",
 | 
			
		||||
      "//build/config:exe_and_shlib_deps",
 | 
			
		||||
      "//chrome:packed_resources",
 | 
			
		||||
      "//content/shell:copy_shell_resources",
 | 
			
		||||
      "//content/shell:pak",
 | 
			
		||||
      "//third_party/WebKit/public:image_resources",
 | 
			
		||||
      "//ui/strings",
 | 
			
		||||
      "//content:sandbox_helper_win",
 | 
			
		||||
    ]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,6 +25,7 @@ static_library("brightray") {
 | 
			
		|||
 | 
			
		||||
  defines = [
 | 
			
		||||
    "DISABLE_NACL=1",
 | 
			
		||||
    "ELECTRON_GN_BUILD",
 | 
			
		||||
  ]
 | 
			
		||||
 | 
			
		||||
  if (is_linux) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -48,19 +48,28 @@ void LoadResourceBundle(const std::string& locale) {
 | 
			
		|||
  if (initialized)
 | 
			
		||||
    ui::ResourceBundle::CleanupSharedInstance();
 | 
			
		||||
 | 
			
		||||
  ui::ResourceBundle::InitSharedInstanceWithLocale(
 | 
			
		||||
      locale, nullptr, ui::ResourceBundle::DO_NOT_LOAD_COMMON_RESOURCES);
 | 
			
		||||
 | 
			
		||||
  ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
 | 
			
		||||
  bundle.ReloadLocaleResources(locale);
 | 
			
		||||
 | 
			
		||||
  // Load other resource files.
 | 
			
		||||
  base::FilePath pak_dir;
 | 
			
		||||
#if defined(OS_MACOSX)
 | 
			
		||||
  pak_dir = base::mac::FrameworkBundlePath().Append("Resources");
 | 
			
		||||
  pak_dir =
 | 
			
		||||
      base::mac::FrameworkBundlePath().Append(FILE_PATH_LITERAL("Resources"));
 | 
			
		||||
#else
 | 
			
		||||
  PathService::Get(base::DIR_MODULE, &pak_dir);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(ELECTRON_GN_BUILD)
 | 
			
		||||
  ui::ResourceBundle::InitSharedInstanceWithLocale(
 | 
			
		||||
      locale, nullptr, ui::ResourceBundle::LOAD_COMMON_RESOURCES);
 | 
			
		||||
  ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
 | 
			
		||||
  bundle.ReloadLocaleResources(locale);
 | 
			
		||||
  bundle.AddDataPackFromPath(pak_dir.Append(FILE_PATH_LITERAL("resources.pak")),
 | 
			
		||||
                             ui::SCALE_FACTOR_NONE);
 | 
			
		||||
#else
 | 
			
		||||
  ui::ResourceBundle::InitSharedInstanceWithLocale(
 | 
			
		||||
      locale, nullptr, ui::ResourceBundle::DO_NOT_LOAD_COMMON_RESOURCES);
 | 
			
		||||
  ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
 | 
			
		||||
  bundle.ReloadLocaleResources(locale);
 | 
			
		||||
 | 
			
		||||
  bundle.AddDataPackFromPath(
 | 
			
		||||
      pak_dir.Append(FILE_PATH_LITERAL("content_shell.pak")),
 | 
			
		||||
      ui::GetSupportedScaleFactors()[0]);
 | 
			
		||||
| 
						 | 
				
			
			@ -81,6 +90,7 @@ void LoadResourceBundle(const std::string& locale) {
 | 
			
		|||
  bundle.AddDataPackFromPath(
 | 
			
		||||
      pak_dir.Append(FILE_PATH_LITERAL("views_resources_200_percent.pak")),
 | 
			
		||||
      ui::SCALE_FACTOR_200P);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
MainDelegate::MainDelegate() {}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										172
									
								
								electron_paks.gni
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								electron_paks.gni
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,172 @@
 | 
			
		|||
import("//build/config/locales.gni")
 | 
			
		||||
import("//printing/features/features.gni")
 | 
			
		||||
import("//tools/grit/repack.gni")
 | 
			
		||||
import("//ui/base/ui_features.gni")
 | 
			
		||||
 | 
			
		||||
# See: //chrome/chrome_paks.gni
 | 
			
		||||
template("electron_repack_percent") {
 | 
			
		||||
  percent = invoker.percent
 | 
			
		||||
 | 
			
		||||
  repack(target_name) {
 | 
			
		||||
    forward_variables_from(invoker,
 | 
			
		||||
                           [
 | 
			
		||||
                             "copy_data_to_bundle",
 | 
			
		||||
                             "repack_whitelist",
 | 
			
		||||
                             "visibility",
 | 
			
		||||
                           ])
 | 
			
		||||
 | 
			
		||||
    # All sources should also have deps for completeness.
 | 
			
		||||
    sources = [
 | 
			
		||||
      "$root_gen_dir/blink/public/resources/blink_scaled_resources_${percent}_percent.pak",
 | 
			
		||||
      "$root_gen_dir/components/components_resources_${percent}_percent.pak",
 | 
			
		||||
      "$root_gen_dir/content/app/resources/content_resources_${percent}_percent.pak",
 | 
			
		||||
      "$root_gen_dir/ui/resources/ui_resources_${percent}_percent.pak",
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    deps = [
 | 
			
		||||
      "//components/resources",
 | 
			
		||||
      "//content/app/resources",
 | 
			
		||||
      "//third_party/WebKit/public:scaled_resources_${percent}_percent",
 | 
			
		||||
      "//ui/resources",
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    if (defined(invoker.deps)) {
 | 
			
		||||
      deps += invoker.deps
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (toolkit_views) {
 | 
			
		||||
      sources += [ "$root_gen_dir/ui/views/resources/views_resources_${percent}_percent.pak" ]
 | 
			
		||||
      deps += [ "//ui/views/resources" ]
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    output = "${invoker.output_dir}/chrome_${percent}_percent.pak"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template("electron_extra_paks") {
 | 
			
		||||
  repack(target_name) {
 | 
			
		||||
    forward_variables_from(invoker,
 | 
			
		||||
                           [
 | 
			
		||||
                             "copy_data_to_bundle",
 | 
			
		||||
                             "repack_whitelist",
 | 
			
		||||
                             "visibility",
 | 
			
		||||
                           ])
 | 
			
		||||
    output = "${invoker.output_dir}/resources.pak"
 | 
			
		||||
    sources = [
 | 
			
		||||
      "$root_gen_dir/blink/public/resources/blink_resources.pak",
 | 
			
		||||
      "$root_gen_dir/components/components_resources.pak",
 | 
			
		||||
      "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
 | 
			
		||||
      "$root_gen_dir/content/content_resources.pak",
 | 
			
		||||
      "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
 | 
			
		||||
      "$root_gen_dir/net/net_resources.pak",
 | 
			
		||||
    ]
 | 
			
		||||
    deps = [
 | 
			
		||||
      "//components/resources",
 | 
			
		||||
      "//content:resources",
 | 
			
		||||
      "//content/browser/tracing:resources",
 | 
			
		||||
      "//mojo/public/js:resources",
 | 
			
		||||
      "//net:net_resources",
 | 
			
		||||
      "//third_party/WebKit/public:resources",
 | 
			
		||||
    ]
 | 
			
		||||
    if (defined(invoker.deps)) {
 | 
			
		||||
      deps += invoker.deps
 | 
			
		||||
    }
 | 
			
		||||
    if (defined(invoker.additional_paks)) {
 | 
			
		||||
      sources += invoker.additional_paks
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    # New paks should be added here by default.
 | 
			
		||||
    sources +=
 | 
			
		||||
        [ "$root_gen_dir/content/browser/devtools/devtools_resources.pak" ]
 | 
			
		||||
    deps += [ "//content/browser/devtools:devtools_resources" ]
 | 
			
		||||
    if (enable_print_preview) {
 | 
			
		||||
      sources += [ "$root_gen_dir/chrome/print_preview_resources.pak" ]
 | 
			
		||||
      deps += [ "//chrome/browser/resources:print_preview_resources" ]
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template("electron_paks") {
 | 
			
		||||
  electron_repack_percent("${target_name}_100_percent") {
 | 
			
		||||
    percent = "100"
 | 
			
		||||
    forward_variables_from(invoker,
 | 
			
		||||
                           [
 | 
			
		||||
                             "copy_data_to_bundle",
 | 
			
		||||
                             "deps",
 | 
			
		||||
                             "output_dir",
 | 
			
		||||
                             "repack_whitelist",
 | 
			
		||||
                             "visibility",
 | 
			
		||||
                           ])
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (enable_hidpi) {
 | 
			
		||||
    electron_repack_percent("${target_name}_200_percent") {
 | 
			
		||||
      percent = "200"
 | 
			
		||||
      forward_variables_from(invoker,
 | 
			
		||||
                             [
 | 
			
		||||
                               "copy_data_to_bundle",
 | 
			
		||||
                               "deps",
 | 
			
		||||
                               "output_dir",
 | 
			
		||||
                               "repack_whitelist",
 | 
			
		||||
                               "visibility",
 | 
			
		||||
                             ])
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  electron_extra_paks("${target_name}_extra") {
 | 
			
		||||
    forward_variables_from(invoker,
 | 
			
		||||
                           [
 | 
			
		||||
                             "copy_data_to_bundle",
 | 
			
		||||
                             "deps",
 | 
			
		||||
                             "output_dir",
 | 
			
		||||
                             "repack_whitelist",
 | 
			
		||||
                             "visibility",
 | 
			
		||||
                           ])
 | 
			
		||||
    if (defined(invoker.additional_extra_paks)) {
 | 
			
		||||
      additional_paks = invoker.additional_extra_paks
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  repack_locales("${target_name}_locales") {
 | 
			
		||||
    forward_variables_from(invoker,
 | 
			
		||||
                           [
 | 
			
		||||
                             "copy_data_to_bundle",
 | 
			
		||||
                             "deps",
 | 
			
		||||
                             "visibility",
 | 
			
		||||
                           ])
 | 
			
		||||
    if (defined(invoker.locale_whitelist)) {
 | 
			
		||||
      repack_whitelist = invoker.locale_whitelist
 | 
			
		||||
    } else if (defined(invoker.repack_whitelist)) {
 | 
			
		||||
      repack_whitelist = invoker.repack_whitelist
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    source_patterns = [ "${root_gen_dir}/content/app/strings/content_strings_" ]
 | 
			
		||||
    deps = [
 | 
			
		||||
      "//content/app/strings",
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    input_locales = locales
 | 
			
		||||
    output_dir = "${invoker.output_dir}/locales"
 | 
			
		||||
 | 
			
		||||
    if (is_mac) {
 | 
			
		||||
      output_locales = locales_as_mac_outputs
 | 
			
		||||
    } else {
 | 
			
		||||
      output_locales = locales
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  group(target_name) {
 | 
			
		||||
    forward_variables_from(invoker, [ "deps" ])
 | 
			
		||||
    public_deps = [
 | 
			
		||||
      ":${target_name}_100_percent",
 | 
			
		||||
      ":${target_name}_extra",
 | 
			
		||||
      ":${target_name}_locales",
 | 
			
		||||
    ]
 | 
			
		||||
    if (enable_hidpi) {
 | 
			
		||||
      public_deps += [ ":${target_name}_200_percent" ]
 | 
			
		||||
    }
 | 
			
		||||
    if (defined(invoker.public_deps)) {
 | 
			
		||||
      public_deps += invoker.public_deps
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue