# Copyright 2019 Google LLC
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("../../gn/ios.gni")

if (is_ios) {
  group("skottie_ios_app") {
    deps = [ ":skottie_example" ]
  }
  ios_app_bundle("skottie_example") {
    sources = [
      "SkiaContext.h",
      "SkiaContext.mm",
      "SkiaViewController.h",
      "SkiaViewController.mm",
      "SkottieViewController.h",
      "SkottieViewController.mm",
      "main.mm",
    ]
    if (skia_enable_ganesh && skia_use_metal) {
      sources += [
        "SkMetalViewBridge.h",
        "SkMetalViewBridge.mm",
        "SkiaMetalContext.mm",
      ]
    } else if (skia_enable_ganesh && skia_use_gl) {
      sources += [ "SkiaGLContext.mm" ]
    } else {
      sources += [ "SkiaUIContext.mm" ]
    }
    data_sources = [
      "../../resources/skottie/skottie-3d-rotation-order.json",
      "../../resources/skottie/skottie-camera-parent-3.json",
      "../../resources/skottie/skottie-gradient-ramp.json",
      "../../resources/skottie/skottie-linear-wipe-effect.json",
      "../../resources/skottie/skottie-text-animator-1.json",
      "../../resources/skottie/skottie-text-animator-2.json",
      "../../resources/skottie/skottie-text-animator-3.json",
      "../../resources/skottie/skottie-text-animator-4.json",
      "../../resources/skottie/skottie-text-animator-5.json",
      "../../resources/skottie/skottie-text-animator-8.json",
      "../../resources/skottie/skottie-transform-effect.json",
      "../../resources/skottie/skottie_sample_2.json",
    ]
    deps = [
      "../..:skia",
      "../../modules/skottie",
    ]
    cflags_objcc = [
      "-std=c++20",
      "-w",
    ]
    frameworks = [
      "CoreFoundation.framework",
      "Foundation.framework",
      "QuartzCore.framework",
      "UIKit.framework",
    ]
    if (skia_enable_ganesh && skia_use_metal) {
      frameworks += [
        "Metal.framework",
        "MetalKit.framework",
      ]
    } else if (skia_enable_ganesh && skia_use_gl) {
      frameworks += [
        "GLKit.framework",
        "OpenGLES.framework",
      ]
    }
    launchscreen = "../../platform_tools/ios/app/LaunchScreen.storyboard"
  }
}
