# Copyright 2013 The Flutter 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("core_wrapper_files.gni") # Publishes client wrapper files to the output directory for distribution. # This can be used multiple times to combine various portions of a wrapper # library into one cohesive library for clients to consume. # # Files that should be built by clients go into 'sources', while headers meant # to be included by the consuming code go into 'public'. # # All public code is assumed to be in the 'flutter' namespace. template("publish_client_wrapper") { forward_variables_from(invoker, [ "directory_suffix" ]) if (defined(directory_suffix)) { publish_dir_root = "$root_out_dir/cpp_client_wrapper_$directory_suffix" } else { publish_dir_root = "$root_out_dir/cpp_client_wrapper" } template_target_name = target_name namespace = "flutter" group(template_target_name) { forward_variables_from(invoker, [ "public_deps", "visibility", ]) deps = [ ":${template_target_name}_publish_includes", ":${template_target_name}_publish_sources", ] if (defined(invoker.deps)) { deps += invoker.deps } } copy("${template_target_name}_publish_includes") { visibility = [ ":$template_target_name", ":${template_target_name}_publish_sources", ] sources = invoker.public outputs = [ "$publish_dir_root/include/$namespace/{{source_file_part}}" ] } copy("${template_target_name}_publish_sources") { visibility = [ ":$template_target_name" ] sources = invoker.sources outputs = [ "$publish_dir_root/{{source_file_part}}" ] # GN on Windows appears to do #include checks even for copy # targets, so add the dependency to the headers to satisfy # the check. deps = [ ":${template_target_name}_publish_includes" ] } } _wrapper_readme = get_path_info("README", "abspath") # Copies the client wrapper code to the output directory. template("publish_client_wrapper_core") { publish_client_wrapper(target_name) { forward_variables_from(invoker, [ "directory_suffix", "visibility", ]) public = core_cpp_client_wrapper_includes sources = core_cpp_client_wrapper_sources + core_cpp_client_wrapper_internal_headers + [ _wrapper_readme ] + temporary_shim_files } } # A wrapper for publish_client_wrapper that will also # publish_client_wrapper_core into the same directory. # # This is a convenience utility for the common case of wanting to publish # the core wrapper and a single set of extra wrapper files corresponding to # the platform. template("publish_client_wrapper_extension") { extension_target_name = target_name core_target_name = "${target_name}_core" publish_client_wrapper_core(core_target_name) { visibility = [ ":$extension_target_name" ] forward_variables_from(invoker, [ "directory_suffix" ]) } publish_client_wrapper(extension_target_name) { forward_variables_from(invoker, [ "public", "sources", "directory_suffix", ]) public_deps = [ ":$core_target_name" ] } }