| # 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. |
| |
| assert(is_mac || is_ios) |
| |
| import("//flutter/common/config.gni") |
| import("//flutter/testing/testing.gni") |
| import("framework_common.gni") |
| |
| source_set("common") { |
| cflags_objc = flutter_cflags_objc |
| cflags_objcc = flutter_cflags_objcc |
| |
| sources = [ |
| "buffer_conversions.h", |
| "buffer_conversions.mm", |
| "command_line.h", |
| "command_line.mm", |
| ] |
| |
| deps = [ |
| ":availability_version_check", |
| "//flutter/fml", |
| ] |
| |
| public_configs = [ "//flutter:config" ] |
| } |
| |
| # Provides an implementation for _availability_version_check. |
| # |
| # This is required due to an upstream compiler builtin (runtime) change |
| # that marked this function as weakly-linked via __attribute__((weak import)) |
| # As such, no linking failure occurs when the function is unavailable at |
| # link time. Since the symbol is no longer linked in, App Store review blocks |
| # publishing due to relying on a private symbol. Instead we link in our own |
| # implementation, which provides the exact implementation used in clang prior |
| # to the upstream change. |
| # |
| # See: Upstream clang change: https://reviews.llvm.org/D150397 |
| # See: https://github.com/flutter/flutter/issues/133777 |
| source_set("availability_version_check") { |
| cflags_objc = flutter_cflags_objc |
| cflags_objcc = flutter_cflags_objcc |
| |
| sources = [ "availability_version_check.cc" ] |
| |
| deps = [ "//flutter/fml" ] |
| |
| public_configs = [ "//flutter:config" ] |
| } |
| |
| test_fixtures("availability_version_check_fixtures") { |
| fixtures = [] |
| } |
| |
| executable("availability_version_check_unittests") { |
| testonly = true |
| |
| sources = [ "availability_version_check_unittests.cc" ] |
| |
| deps = [ |
| ":availability_version_check", |
| ":availability_version_check_fixtures", |
| "//flutter/fml", |
| "//flutter/testing", |
| ] |
| |
| public_configs = [ "//flutter:config" ] |
| } |
| |
| # Shared framework headers end up in the same folder as platform-specific |
| # framework headers when consumed by clients, so the include paths assume they |
| # are next to each other. |
| config("framework_relative_headers") { |
| include_dirs = [ "framework/Headers" ] |
| } |
| |
| # Framework code shared between iOS and macOS. |
| source_set("framework_common") { |
| cflags_objc = flutter_cflags_objc_arc |
| cflags_objcc = flutter_cflags_objcc_arc |
| |
| sources = [ |
| "framework/Source/FlutterBinaryMessengerRelay.mm", |
| "framework/Source/FlutterChannels.mm", |
| "framework/Source/FlutterCodecs.mm", |
| "framework/Source/FlutterNSBundleUtils.h", |
| "framework/Source/FlutterNSBundleUtils.mm", |
| "framework/Source/FlutterStandardCodec.mm", |
| "framework/Source/FlutterStandardCodecHelper.cc", |
| "framework/Source/FlutterStandardCodec_Internal.h", |
| ] |
| |
| public = framework_common_headers |
| |
| public += [ "framework/Source/FlutterNSBundleUtils.h" ] |
| |
| defines = [ "FLUTTER_FRAMEWORK" ] |
| |
| public_configs = [ |
| "//flutter:config", |
| ":framework_relative_headers", |
| ] |
| |
| deps = [ "//flutter/fml" ] |
| } |
| |
| test_fixtures("framework_common_fixtures") { |
| fixtures = [] |
| } |
| |
| # Unit tests for channels. |
| executable("framework_common_unittests") { |
| testonly = true |
| |
| sources = [ |
| "framework/Source/FlutterBinaryMessengerRelayTest.mm", |
| "framework/Source/FlutterTestUtils.mm", |
| "framework/Source/flutter_codecs_unittest.mm", |
| "framework/Source/flutter_standard_codec_unittest.mm", |
| ] |
| |
| cflags_objcc = flutter_cflags_objcc_arc |
| |
| ldflags = [ "-ObjC" ] |
| |
| deps = [ |
| ":framework_common", |
| ":framework_common_fixtures", |
| "//flutter/testing", |
| "//flutter/third_party/ocmock:ocmock", |
| "//third_party/dart/runtime:libdart_jit", |
| ] |
| |
| public_configs = [ "//flutter:config" ] |
| } |