mirror of
https://github.com/dart-lang/sdk
synced 2024-10-06 14:07:57 +00:00
4182cbe1a3
The sources assignment filter is considered a misfeature of gn and is planned for removal (see discussion at [1]). Convert dart BUILD.gn rules to manually filter the files that are build using explicit `if` expressions. Remove obsolete call to set_sources_assignment_filter() to filter '*_test.*' files as no such files are present in the variables used to build the `sources` value. [1]: https://groups.google.com/a/chromium.org/g/gn-dev/c/oQcYStl_WkI/m/roukYTxSDAAJ Bug: gn:125 Change-Id: I591fbb746cf694f7d2a5a330f81652380acf5c11 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/166629 Reviewed-by: Ryan Macnak <rmacnak@google.com>
193 lines
5 KiB
Plaintext
193 lines
5 KiB
Plaintext
# Copyright 2015 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.
|
|
|
|
mac_app_script = "//build/config/mac/mac_app.py"
|
|
|
|
template("code_sign_mac") {
|
|
assert(defined(invoker.entitlements_path),
|
|
"The path to the entitlements .xcent file")
|
|
assert(defined(invoker.identity), "The code signing identity")
|
|
assert(defined(invoker.application_path), "The application to code sign")
|
|
assert(defined(invoker.deps))
|
|
|
|
action(target_name) {
|
|
sources = [ invoker.entitlements_path ]
|
|
|
|
_application_path = invoker.application_path
|
|
|
|
script = mac_app_script
|
|
|
|
outputs = [ "$_application_path/_CodeSignature/CodeResources" ]
|
|
|
|
args = [
|
|
"codesign",
|
|
"-p",
|
|
rebase_path(invoker.application_path, root_build_dir),
|
|
"-i",
|
|
invoker.identity,
|
|
"-e",
|
|
rebase_path(invoker.entitlements_path, root_build_dir),
|
|
]
|
|
|
|
deps = invoker.deps
|
|
}
|
|
}
|
|
|
|
template("process_nibs_mac") {
|
|
assert(defined(invoker.sources), "The nib sources must be specified")
|
|
assert(defined(invoker.module), "The nib module must be specified")
|
|
assert(defined(invoker.output_dir), "The output directory must be specified")
|
|
|
|
action_foreach(target_name) {
|
|
sources = invoker.sources
|
|
|
|
script = mac_app_script
|
|
|
|
invoker_out_dir = invoker.output_dir
|
|
|
|
outputs = [ "$root_build_dir/$invoker_out_dir/{{source_name_part}}.nib" ]
|
|
|
|
args = [
|
|
"nib",
|
|
"-i",
|
|
"{{source}}",
|
|
"-o",
|
|
invoker_out_dir,
|
|
"-m",
|
|
invoker.module,
|
|
]
|
|
}
|
|
}
|
|
|
|
template("resource_copy_mac") {
|
|
assert(defined(invoker.resources),
|
|
"The source list of resources to copy over")
|
|
assert(defined(invoker.bundle_directory),
|
|
"The directory within the bundle to place the sources in")
|
|
assert(defined(invoker.app_name), "The name of the application")
|
|
|
|
_bundle_directory = invoker.bundle_directory
|
|
_app_name = invoker.app_name
|
|
_resources = invoker.resources
|
|
|
|
copy(target_name) {
|
|
sources = _resources
|
|
outputs = [ "$root_build_dir/$_app_name.app/$_bundle_directory/Contents/Resources/{{source_file_part}}" ]
|
|
|
|
if (defined(invoker.deps)) {
|
|
deps = invoker.deps
|
|
}
|
|
}
|
|
}
|
|
|
|
template("mac_app") {
|
|
assert(defined(invoker.deps),
|
|
"Dependencies must be specified for $target_name")
|
|
assert(defined(invoker.info_plist),
|
|
"The application plist file must be specified for $target_name")
|
|
assert(defined(invoker.app_name),
|
|
"The name of Mac application for $target_name")
|
|
assert(defined(invoker.xibs),
|
|
"The list of XIB files must be specified for $target_name")
|
|
|
|
# assert(defined(invoker.entitlements_path),
|
|
# "The entitlements path must be specified for $target_name")
|
|
# assert(defined(invoker.code_signing_identity),
|
|
# "The entitlements path must be specified for $target_name")
|
|
|
|
# We just create a variable so we can use the same in interpolation
|
|
app_name = invoker.app_name
|
|
|
|
# Generate the project structure
|
|
|
|
struct_gen_target_name = target_name + "_struct"
|
|
|
|
action(struct_gen_target_name) {
|
|
script = mac_app_script
|
|
|
|
sources = []
|
|
outputs = [ "$root_build_dir/$app_name.app" ]
|
|
|
|
args = [
|
|
"structure",
|
|
"-d",
|
|
rebase_path(root_build_dir),
|
|
"-n",
|
|
app_name,
|
|
]
|
|
}
|
|
|
|
# Generate the executable
|
|
|
|
bin_gen_target_name = target_name + "_bin"
|
|
|
|
executable(bin_gen_target_name) {
|
|
deps = invoker.deps
|
|
output_name = app_name
|
|
}
|
|
|
|
# Process the Info.plist
|
|
|
|
plist_gen_target_name = target_name + "_plist"
|
|
|
|
action(plist_gen_target_name) {
|
|
script = mac_app_script
|
|
|
|
sources = [ invoker.info_plist ]
|
|
outputs = [ "$root_build_dir/plist/$app_name/Info.plist" ]
|
|
|
|
args = [
|
|
"plist",
|
|
"-i",
|
|
rebase_path(invoker.info_plist, root_build_dir),
|
|
"-o",
|
|
rebase_path("$root_build_dir/plist/$app_name"),
|
|
]
|
|
}
|
|
|
|
# Copy the generated binaries and assets to their appropriate locations
|
|
|
|
copy_plist_gen_target_name = target_name + "_plist_copy"
|
|
copy(copy_plist_gen_target_name) {
|
|
sources = [ "$root_build_dir/plist/$app_name/Info.plist" ]
|
|
|
|
outputs = [ "$root_build_dir/$app_name.app/Contents/{{source_file_part}}" ]
|
|
|
|
deps = [ ":$plist_gen_target_name" ]
|
|
}
|
|
|
|
copy_bin_target_name = target_name + "_bin_copy"
|
|
copy(copy_bin_target_name) {
|
|
sources = [ "$root_build_dir/$app_name" ]
|
|
|
|
outputs =
|
|
[ "$root_build_dir/$app_name.app/Contents/MacOS/{{source_file_part}}" ]
|
|
|
|
deps = [ ":$bin_gen_target_name" ]
|
|
}
|
|
|
|
copy_xib_target_name = target_name + "_xib_copy"
|
|
process_nibs_mac(copy_xib_target_name) {
|
|
sources = invoker.xibs
|
|
module = app_name
|
|
output_dir = "$app_name.app/Contents/Resources"
|
|
}
|
|
|
|
copy_all_target_name = target_name + "_all_copy"
|
|
group(copy_all_target_name) {
|
|
deps = [
|
|
":$copy_bin_target_name",
|
|
":$copy_plist_gen_target_name",
|
|
":$copy_xib_target_name",
|
|
":$struct_gen_target_name",
|
|
]
|
|
}
|
|
|
|
# Top level group
|
|
|
|
group(target_name) {
|
|
deps = [ ":$copy_all_target_name" ]
|
|
}
|
|
}
|