# 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("//flutter/common/config.gni")
import("framework_shared.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 = [ "//flutter/fml" ]

  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_shared") {
  cflags_objc = flutter_cflags_objc_arc
  cflags_objcc = flutter_cflags_objcc_arc

  sources = [
    "framework/Source/FlutterChannels.mm",
    "framework/Source/FlutterCodecs.mm",
    "framework/Source/FlutterStandardCodec.mm",
    "framework/Source/FlutterStandardCodec_Internal.h",
  ]

  public = framework_shared_headers

  defines = [ "FLUTTER_FRAMEWORK" ]

  public_configs = [
    "//flutter:config",
    ":framework_relative_headers",
  ]
}
