# Copyright 2021 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("//cobalt/renderer/rasterizer/skia/skia/skia_next.gni")
import("//third_party/$skia_subdir/gn/core.gni")
import("//third_party/$skia_subdir/gn/effects.gni")
import("//third_party/$skia_subdir/gn/effects_imagefilters.gni")
import("//third_party/$skia_subdir/gn/gpu.gni")
import("//third_party/$skia_subdir/gn/utils.gni")
import("//third_party/$skia_subdir/modules/skottie/skottie.gni")
import("//third_party/$skia_subdir/modules/sksg/sksg.gni")
import("//third_party/$skia_subdir/modules/skshaper/skshaper.gni")

combined_sources = []

shared_sources = [
  "//third_party/$skia_subdir/src/codec/SkBmpBaseCodec.cpp",
  "//third_party/$skia_subdir/src/codec/SkBmpCodec.cpp",
  "//third_party/$skia_subdir/src/codec/SkBmpMaskCodec.cpp",
  "//third_party/$skia_subdir/src/codec/SkBmpRLECodec.cpp",
  "//third_party/$skia_subdir/src/codec/SkBmpStandardCodec.cpp",
  "//third_party/$skia_subdir/src/codec/SkCodec.cpp",
  "//third_party/$skia_subdir/src/codec/SkCodecImageGenerator.cpp",
  "//third_party/$skia_subdir/src/codec/SkColorTable.cpp",
  "//third_party/$skia_subdir/src/codec/SkMaskSwizzler.cpp",
  "//third_party/$skia_subdir/src/codec/SkMasks.cpp",
  "//third_party/$skia_subdir/src/codec/SkSampledCodec.cpp",
  "//third_party/$skia_subdir/src/codec/SkSampler.cpp",
  "//third_party/$skia_subdir/src/codec/SkStreamBuffer.cpp",
  "//third_party/$skia_subdir/src/codec/SkSwizzler.cpp",
  "//third_party/$skia_subdir/src/codec/SkWbmpCodec.cpp",
  "//third_party/$skia_subdir/src/images/SkImageEncoder.cpp",
  "//third_party/$skia_subdir/src/ports/SkDiscardableMemory_none.cpp",
  "//third_party/$skia_subdir/src/ports/SkFontHost_FreeType.cpp",
  "//third_party/$skia_subdir/src/ports/SkFontHost_FreeType_common.cpp",
  "//third_party/$skia_subdir/src/ports/SkFontHost_FreeType_common.h",
  "//third_party/$skia_subdir/src/ports/SkGlobalInitialization_default.cpp",
  "//third_party/$skia_subdir/src/ports/SkImageGenerator_skia.cpp",
  "//third_party/$skia_subdir/src/sfnt/SkOTTable_name.cpp",
  "//third_party/$skia_subdir/src/sfnt/SkOTUtils.cpp",
]

if (!use_skia_next) {
  shared_sources += [
    "//third_party/$skia_subdir/src/codec/SkGifCodec.cpp",
    "//third_party/$skia_subdir/third_party/gif/SkGifImageReader.cpp",
  ]
}

# from "core.gni"
combined_sources += shared_sources
combined_sources += skia_core_sources

combined_sources += skia_effects_sources
combined_sources += skia_effects_imagefilter_sources

# from "gpu.gni"
combined_sources += skia_gpu_sources

combined_sources += skia_utils_sources
combined_sources += skia_skottie_sources
combined_sources += skia_sksg_sources
combined_sources += skia_shaper_primitive_sources

# Exclude all unused skia files
combined_sources -= [
  # codec
  "//third_party/$skia_subdir/src/codec/SkSampledCodec.cpp",

  # core
  "//third_party/$skia_subdir/src/core/SkTime.cpp",

  # utils bitmap
  "//third_party/$skia_subdir/src/utils/SkCamera.cpp",
  "//third_party/$skia_subdir/src/utils/SkCanvasStack.h",
  "//third_party/$skia_subdir/src/utils/SkFloatUtils.h",
  "//third_party/$skia_subdir/src/utils/SkParseColor.cpp",
  "//third_party/$skia_subdir/src/utils/SkParsePath.cpp",
  "//third_party/$skia_subdir/src/utils/SkThreadUtils_pthread.cpp",
  "//third_party/$skia_subdir/src/utils/SkThreadUtils_win.cpp",

  # mac
  "//third_party/$skia_subdir/src/utils/mac/SkCreateCGImageRef.cpp",

  # windows
  "//third_party/$skia_subdir/src/utils/win/SkAutoCoInitialize.cpp",
  "//third_party/$skia_subdir/src/utils/win/SkAutoCoInitialize.h",
  "//third_party/$skia_subdir/src/utils/win/SkDWrite.cpp",
  "//third_party/$skia_subdir/src/utils/win/SkDWrite.h",
  "//third_party/$skia_subdir/src/utils/win/SkDWriteFontFileStream.cpp",
  "//third_party/$skia_subdir/src/utils/win/SkDWriteFontFileStream.h",
  "//third_party/$skia_subdir/src/utils/win/SkDWriteGeometrySink.cpp",
  "//third_party/$skia_subdir/src/utils/win/SkDWriteGeometrySink.h",
  "//third_party/$skia_subdir/src/utils/win/SkHRESULT.cpp",
  "//third_party/$skia_subdir/src/utils/win/SkHRESULT.h",
  "//third_party/$skia_subdir/src/utils/win/SkIStream.cpp",
  "//third_party/$skia_subdir/src/utils/win/SkIStream.h",
  "//third_party/$skia_subdir/src/utils/win/SkTScopedComPtr.h",
  "//third_party/$skia_subdir/src/utils/win/SkWGL.h",
  "//third_party/$skia_subdir/src/utils/win/SkWGL_win.cpp",
]

# Exclude unused skia files which only exist in m79.
if (!use_skia_next) {
  combined_sources -= [
    # core
    "//third_party/$skia_subdir/src/core/SkMultiPictureDraw.cpp",

    # gpu
    "//third_party/$skia_subdir/src/gpu/gl/GrGLMakeNativeInterface_none.cpp",

    # utils bitmap
    "//third_party/$skia_subdir/src/utils/SkFrontBufferedStream.cpp",
    "//third_party/$skia_subdir/src/utils/SkInterpolator.cpp",
  ]
}

if (use_skia_next) {
  sksl_sources = [
    "//third_party/$skia_subdir/src/sksl/SkSLCompiler.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLLexer.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLOutputStream.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLString.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLUtil.cpp",
    "//third_party/$skia_subdir/src/sksl/ir/SkSLSetting.cpp",
    "//third_party/$skia_subdir/src/sksl/ir/SkSLSymbolTable.cpp",
    "//third_party/$skia_subdir/src/sksl/ir/SkSLType.cpp",
    "//third_party/$skia_subdir/src/sksl/ir/SkSLVariableReference.cpp",
  ]
} else {
  sksl_sources = [
    "//third_party/$skia_subdir/src/sksl/SkSLASTNode.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLByteCode.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLCFGGenerator.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLCPPCodeGenerator.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLCPPUniformCTypes.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLCompiler.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLGLSLCodeGenerator.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLHCodeGenerator.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLIRGenerator.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLLexer.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLMetalCodeGenerator.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLOutputStream.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLParser.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLPipelineStageCodeGenerator.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLSPIRVCodeGenerator.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLSectionAndParameterHelper.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLString.cpp",
    "//third_party/$skia_subdir/src/sksl/SkSLUtil.cpp",
    "//third_party/$skia_subdir/src/sksl/ir/SkSLSetting.cpp",
    "//third_party/$skia_subdir/src/sksl/ir/SkSLSymbolTable.cpp",
    "//third_party/$skia_subdir/src/sksl/ir/SkSLType.cpp",
    "//third_party/$skia_subdir/src/sksl/ir/SkSLVariableReference.cpp",
  ]

  # Exclude unused skia sksl files
  sksl_sources -=
      [ "//third_party/$skia_subdir/src/sksl/SkSLMetalCodeGenerator.cpp" ]
}
