# 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("//build/fuchsia/sdk.gni")
import("//flutter/common/config.gni")
import("//flutter/testing/testing.gni")

source_set("fml") {
  sources = [
    "ascii_trie.cc",
    "ascii_trie.h",
    "backtrace.h",
    "base32.cc",
    "base32.h",
    "build_config.h",
    "closure.h",
    "compiler_specific.h",
    "concurrent_message_loop.cc",
    "concurrent_message_loop.h",
    "delayed_task.cc",
    "delayed_task.h",
    "eintr_wrapper.h",
    "endianness.cc",
    "endianness.h",
    "file.cc",
    "file.h",
    "hash_combine.h",
    "hex_codec.cc",
    "hex_codec.h",
    "icu_util.cc",
    "icu_util.h",
    "log_level.h",
    "log_settings.cc",
    "log_settings.h",
    "log_settings_state.cc",
    "logging.cc",
    "logging.h",
    "make_copyable.h",
    "mapping.cc",
    "mapping.h",
    "math.h",
    "memory/ref_counted.h",
    "memory/ref_counted_internal.h",
    "memory/ref_ptr.h",
    "memory/ref_ptr_internal.h",
    "memory/task_runner_checker.cc",
    "memory/task_runner_checker.h",
    "memory/thread_checker.h",
    "memory/weak_ptr.h",
    "memory/weak_ptr_internal.cc",
    "memory/weak_ptr_internal.h",
    "message_loop.cc",
    "message_loop.h",
    "message_loop_impl.cc",
    "message_loop_impl.h",
    "message_loop_task_queues.cc",
    "message_loop_task_queues.h",
    "native_library.h",
    "paths.cc",
    "paths.h",
    "posix_wrappers.h",
    "raster_thread_merger.cc",
    "raster_thread_merger.h",
    "shared_thread_merger.cc",
    "shared_thread_merger.h",
    "size.h",
    "synchronization/atomic_object.h",
    "synchronization/count_down_latch.cc",
    "synchronization/count_down_latch.h",
    "synchronization/semaphore.cc",
    "synchronization/semaphore.h",
    "synchronization/shared_mutex.h",
    "synchronization/sync_switch.cc",
    "synchronization/sync_switch.h",
    "synchronization/waitable_event.cc",
    "synchronization/waitable_event.h",
    "task_queue_id.h",
    "task_runner.cc",
    "task_runner.h",
    "task_source.cc",
    "task_source.h",
    "thread.cc",
    "thread.h",
    "thread_local.cc",
    "thread_local.h",
    "time/time_delta.h",
    "time/time_point.cc",
    "time/time_point.h",
    "time/timestamp_provider.h",
    "trace_event.cc",
    "trace_event.h",
    "unique_fd.cc",
    "unique_fd.h",
    "unique_object.h",
    "wakeable.h",
  ]

  if (is_mac || is_linux || (is_ios && is_debug)) {
    sources += [ "backtrace.cc" ]
  } else {
    sources += [ "backtrace_stub.cc" ]
  }

  public_deps = [
    ":build_config",
    ":command_line",
    ":string_conversion",
  ]

  deps = [
    "//third_party/dart/runtime:dart_api",

    # These need to be in sync with the Fuchsia buildroot.
    "//third_party/icu",
  ]

  if (is_mac || is_linux || (is_ios && is_debug)) {
    # This abseil dependency is only used by backtrace.cc.
    deps += [ "//third_party/abseil-cpp/absl/debugging:symbolize" ]
  }

  configs += [ "//third_party/icu:icu_config" ]

  public_configs = [
    "//flutter:config",
    "//flutter/common:flutter_config",
  ]

  libs = []

  if (is_ios || is_mac) {
    sources += [ "platform/posix/shared_mutex_posix.cc" ]
  } else {
    sources += [ "synchronization/shared_mutex_std.cc" ]
  }

  if (is_ios || is_mac) {
    cflags_objc = flutter_cflags_objc
    cflags_objcc = flutter_cflags_objcc

    sources += [
      "platform/darwin/cf_utils.cc",
      "platform/darwin/cf_utils.h",
      "platform/darwin/message_loop_darwin.h",
      "platform/darwin/message_loop_darwin.mm",
      "platform/darwin/paths_darwin.mm",
      "platform/darwin/platform_version.h",
      "platform/darwin/platform_version.mm",
      "platform/darwin/scoped_block.h",
      "platform/darwin/scoped_block.mm",
      "platform/darwin/scoped_nsobject.h",
      "platform/darwin/scoped_nsobject.mm",
      "platform/darwin/string_range_sanitization.h",
      "platform/darwin/string_range_sanitization.mm",
    ]

    frameworks = [ "Foundation.framework" ]
  }

  if (is_android) {
    sources += [
      "platform/android/jni_util.cc",
      "platform/android/jni_util.h",
      "platform/android/jni_weak_ref.cc",
      "platform/android/jni_weak_ref.h",
      "platform/android/message_loop_android.cc",
      "platform/android/message_loop_android.h",
      "platform/android/paths_android.cc",
      "platform/android/paths_android.h",
      "platform/android/scoped_java_ref.cc",
      "platform/android/scoped_java_ref.h",
    ]

    libs += [ "android" ]
  }

  if (is_android) {
    sources += [
      "platform/linux/timerfd.cc",
      "platform/linux/timerfd.h",
    ]
  }

  if (is_linux) {
    sources += [
      "platform/linux/message_loop_linux.cc",
      "platform/linux/message_loop_linux.h",
      "platform/linux/paths_linux.cc",
      "platform/linux/timerfd.cc",
      "platform/linux/timerfd.h",
    ]
  }

  if (is_fuchsia) {
    sources += [
      "platform/fuchsia/message_loop_fuchsia.cc",
      "platform/fuchsia/message_loop_fuchsia.h",
      "platform/fuchsia/paths_fuchsia.cc",
      "platform/fuchsia/task_observers.cc",
      "platform/fuchsia/task_observers.h",
    ]

    public_deps += [
      "$fuchsia_sdk_root/pkg:async-cpp",
      "$fuchsia_sdk_root/pkg:async-loop-cpp",
      "$fuchsia_sdk_root/pkg:async-loop-default",
      "$fuchsia_sdk_root/pkg:syslog",
      "$fuchsia_sdk_root/pkg:trace",
      "$fuchsia_sdk_root/pkg:trace-engine",
      "$fuchsia_sdk_root/pkg:zx",
    ]
  }

  if (is_win) {
    sources += [
      "platform/win/errors_win.cc",
      "platform/win/errors_win.h",
      "platform/win/file_win.cc",
      "platform/win/mapping_win.cc",
      "platform/win/message_loop_win.cc",
      "platform/win/message_loop_win.h",
      "platform/win/native_library_win.cc",
      "platform/win/paths_win.cc",
      "platform/win/posix_wrappers_win.cc",
    ]
  } else {
    sources += [
      "platform/posix/file_posix.cc",
      "platform/posix/mapping_posix.cc",
      "platform/posix/native_library_posix.cc",
      "platform/posix/paths_posix.cc",
      "platform/posix/posix_wrappers_posix.cc",
    ]
  }
}

source_set("build_config") {
  sources = [ "build_config.h" ]

  public_configs = [
    "//flutter:config",
    "//flutter/common:flutter_config",
  ]
}

source_set("command_line") {
  sources = [
    "command_line.cc",
    "command_line.h",
  ]

  public_configs = [
    "//flutter:config",
    "//flutter/common:flutter_config",
  ]
}

source_set("string_conversion") {
  sources = [
    "string_conversion.cc",
    "string_conversion.h",
  ]

  if (is_win) {
    sources += [
      "platform/win/wstring_conversion.cc",
      "platform/win/wstring_conversion.h",
    ]

    # TODO(cbracken): https://github.com/flutter/flutter/issues/50053
    defines = [ "_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING" ]
  }

  deps = [ ":build_config" ]

  public_configs = [
    "//flutter:config",
    "//flutter/common:flutter_config",
  ]
}

if (enable_unittests) {
  test_fixtures("fml_fixtures") {
    fixtures = []
  }

  executable("fml_benchmarks") {
    testonly = true

    sources = [ "message_loop_task_queues_benchmark.cc" ]

    deps = [
      "//flutter/benchmarking",
      "//flutter/fml",
    ]
  }

  executable("fml_unittests") {
    testonly = true

    sources = [
      "ascii_trie_unittests.cc",
      "backtrace_unittests.cc",
      "base32_unittest.cc",
      "command_line_unittest.cc",
      "endianness_unittests.cc",
      "file_unittest.cc",
      "hash_combine_unittests.cc",
      "hex_codec_unittest.cc",
      "logging_unittests.cc",
      "mapping_unittests.cc",
      "math_unittests.cc",
      "memory/ref_counted_unittest.cc",
      "memory/task_runner_checker_unittest.cc",
      "memory/weak_ptr_unittest.cc",
      "message_loop_impl_unittests.cc",
      "message_loop_task_queues_merge_unmerge_unittests.cc",
      "message_loop_task_queues_unittests.cc",
      "message_loop_unittests.cc",
      "paths_unittests.cc",
      "raster_thread_merger_unittests.cc",
      "string_conversion_unittests.cc",
      "synchronization/count_down_latch_unittests.cc",
      "synchronization/semaphore_unittest.cc",
      "synchronization/sync_switch_unittest.cc",
      "synchronization/waitable_event_unittest.cc",
      "task_source_unittests.cc",
      "thread_local_unittests.cc",
      "thread_unittests.cc",
      "time/chrono_timestamp_provider.cc",
      "time/chrono_timestamp_provider.h",
      "time/time_delta_unittest.cc",
      "time/time_point_unittest.cc",
      "time/time_unittest.cc",
    ]

    if (is_mac) {
      sources += [
        "platform/darwin/cf_utils_unittests.mm",
        "platform/darwin/string_range_sanitization_unittests.mm",
      ]
    }

    if (is_win) {
      sources += [ "platform/win/wstring_conversion_unittests.cc" ]
    }

    deps = [
      ":fml_fixtures",
      "//flutter/fml",
      "//flutter/fml/dart",
      "//flutter/runtime",
      "//flutter/runtime:libdart",
      "//flutter/testing",
    ]

    # This is needed for //third_party/googletest for linking zircon symbols.
    if (is_fuchsia) {
      libs =
          [ "${fuchsia_sdk_path}/arch/${target_cpu}/sysroot/lib/libzircon.so" ]
    }
  }
}
