Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  asset_catalog.gni   Sprache: unbekannt

 
Spracherkennung für: .gni vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//chromium/build/config/ios/ios_sdk.gni")

# This template declares a bundle_data target that references an asset
# catalog so that it is compiled to the asset catalog of the generated
# bundle.
#
# The create_bundle target requires that all asset catalogs are part of an
# .xcasset bundle. This requirement comes from actool that only receives
# the path to the .xcasset bundle directory and not to the individual
# .imageset directories.
#
# The requirement is a bit problematic as it prevents compiling only a
# subset of the asset catakig that are contained in a .xcasset. This template
# fixes that by instead copying the content of the asset catalog to temporary
# .xcasset directory (below $root_out_dir) and defining a bundle_data
# target that refers to those copies (this is efficient as the "copy" is
# implemented by hardlinking if possible on macOS).
#
# Since the create_data target will only refer to the .xcasset directory
# and additional "action" target that runs a dummy script is defined. It
# does nothing but pretends to generate the .xcassets directory (while
# it is really created as a side-effect of the "copy" step). This allows
# to workaround the check in "gn" that all inputs below $root_out_dir have
# to be outputs of another target with a public dependency path.
#
# This template also ensures that the file are only copied once when the
# build targets multiple architectures at the same time (aka "fat build").
#
# Arguments
#
#     sources:
#       required, list of strings, paths to the file contained in the
#       asset catalog directory; this must contain the Contents.json file
#       and all the image referenced by it (not enforced by the template).
#
#     asset_type:
#       required, string, type of the asset catalog, that is the extension
#       of the directory containing the images and the Contents.json file.
#
template("asset_catalog") {
  assert(defined(invoker.sources) && invoker.sources != [],
         "sources must be defined and not empty for $target_name")

  assert(defined(invoker.asset_type) && invoker.asset_type != "",
         "asset_type must be defined and not empty for $target_name")

  if (is_fat_secondary_toolchain) {
    group(target_name) {
      public_deps = [ ":$target_name($primary_fat_toolchain_name)" ]
    }
  } else {
    _copy_target_name = target_name + "__copy"
    _data_target_name = target_name

    _sources = invoker.sources
    _outputs = []

    # The compilation of resources into Assets.car is enabled automatically
    # by the "create_bundle" target if any of the "bundle_data" sources's
    # path is in a .xcassets directory and matches one of the know asset
    # catalog type.
    _xcassets_dir = "$target_gen_dir/${target_name}.xcassets"
    _output_dir = "$_xcassets_dir/" +
                  get_path_info(get_path_info(_sources[0], "dir"), "file")

    foreach(_source, invoker.sources) {
      _dir = get_path_info(_source, "dir")
      _outputs += [ "$_output_dir/" + get_path_info(_source, "file") ]

      assert(get_path_info(_dir, "extension") == invoker.asset_type,
             "$_source dirname must have .${invoker.asset_type} extension")
    }

    action(_copy_target_name) {
      # Forward "deps", "public_deps" and "testonly" in case some of the
      # source files are generated.
      forward_variables_from(invoker,
                             [
                               "deps",
                               "public_deps",
                               "testonly",
                             ])

      script = "//chromium/build/config/ios/hardlink.py"

      visibility = [ ":$_data_target_name" ]
      sources = _sources
      outputs = _outputs + [ _xcassets_dir ]

      args = [
        rebase_path(get_path_info(_sources[0], "dir"), root_build_dir),
        rebase_path(_output_dir, root_build_dir),
      ]
    }

    bundle_data(_data_target_name) {
      forward_variables_from(invoker,
                             "*",
                             [
                               "deps",
                               "outputs",
                               "public_deps",
                               "sources",
                             ])

      sources = _outputs
      outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
      public_deps = [ ":$_copy_target_name" ]
    }
  }
}

# Those templates are specialisation of the asset_catalog template for known
# types of asset catalog types (imageset, launchimage, appiconset).
#
# Arguments
#
#     sources:
#       required, list of strings, paths to the file contained in the
#       asset catalog directory; this must contain the Contents.json file
#       and all the image referenced by it (not enforced by the template).
#
template("appiconset") {
  asset_catalog(target_name) {
    forward_variables_from(invoker, "*", [ "asset_type" ])
    asset_type = "appiconset"
  }
}
template("colorset") {
  asset_catalog(target_name) {
    forward_variables_from(invoker, "*", [ "asset_type" ])
    asset_type = "colorset"
  }
}
template("imageset") {
  asset_catalog(target_name) {
    forward_variables_from(invoker, "*", [ "asset_type" ])
    asset_type = "imageset"
  }
}
template("launchimage") {
  asset_catalog(target_name) {
    forward_variables_from(invoker, "*", [ "asset_type" ])
    asset_type = "launchimage"
  }
}

[ Dauer der Verarbeitung: 0.61 Sekunden  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge