# Description:
#   Skia graphics library.
#
#   Definitions for Google BUILD file.

exports_files(["BUILD.public"])

# All platform-independent SRCS.
BASE_SRCS = glob(
    [
        "include/private/*.h",
        "src/**/*.h",
        "src/**/*.cpp",

        # Third Party
        "third_party/etc1/*.cpp",
        "third_party/etc1/*.h",
        "third_party/ktx/*.cpp",
        "third_party/ktx/*.h",
    ],
    exclude = [
        # Exclude platform-dependent files.
        "src/codec/*",
        "src/device/xps/*",  # Windows-only. Move to ports?
        "src/doc/*_XPS.cpp",  # Windows-only. Move to ports?
        "src/fonts/SkFontMgr_fontconfig.cpp",
        "src/gpu/gl/android/*",
        "src/gpu/gl/egl/*",
        "src/gpu/gl/glx/*",
        "src/gpu/gl/iOS/*",
        "src/gpu/gl/mac/*",
        "src/gpu/gl/win/*",
        "src/images/*",
        "src/opts/**/*",
        "src/ports/**/*",
        "src/utils/android/**/*",
        "src/utils/mac/**/*",
        "src/utils/SkThreadUtils_win.cpp",  # Windows-only. Move to ports?
        "src/utils/win/**/*",
        "src/views/sdl/*",
        "src/views/win/*",
        "src/views/unix/*",

        # Exclude multiple definitions.
        # TODO(mtklein): Move to opts?
        "src/doc/SkDocument_PDF_None.cpp",  # We use SkDocument_PDF.cpp.
        "src/gpu/gl/GrGLCreateNativeInterface_none.cpp",
        "src/gpu/gl/GrGLDefaultInterface_native.cpp",

        # Exclude files that don't compile with the current DEFINES.
        "src/gpu/gl/angle/*",  # Requires SK_ANGLE define.
        "src/gpu/gl/command_buffer/*",  # unknown type name 'HMODULE'
        "src/gpu/gl/mesa/*",  # Requires SK_MESA define.
        "src/svg/parser/*",  # Missing SkSVG.h.

        # Conflicting dependencies among Lua versions. See cl/107087297.
        "src/utils/SkLua*",

        # Not used.
        "src/animator/**/*",
        "src/views/**/*",
        "src/xml/SkBML_Verbs.h",
        "src/xml/SkBML_XMLParser.cpp",
        "src/xml/SkXMLPullParser.cpp",
    ],
)

# Platform-dependent SRCS for google3-default platform.
BASE_SRCS_UNIX = glob(
    [
        "src/codec/*",
        "src/fonts/SkFontMgr_fontconfig.cpp",
        "src/images/*",
        "src/opts/**/*.cpp",
        "src/opts/**/*.h",
        "src/ports/**/*.cpp",
        "src/ports/**/*.h",
    ],
    exclude = [
        "src/codec/SkJpegCodec.cpp",  # libjpeg_turbo version mismatch.
        "src/opts/*arm*",
        "src/opts/*mips*",
        "src/opts/*NEON*",
        "src/opts/*neon*",
        # Included in :opts_ssse3 library.
        "src/opts/*SSSE3*",
        "src/opts/*ssse3*",
        # Included in :opts_sse4 library.
        "src/opts/*SSE4*",
        "src/opts/*sse4*",
        # Included in :opts_avx or :opts_avx2
        "src/opts/*avx*",
        "src/opts/SkBitmapProcState_opts_none.cpp",
        "src/opts/SkBlitMask_opts_none.cpp",
        "src/opts/SkBlitRow_opts_none.cpp",
        "src/ports/*android*",
        "src/ports/*chromium*",
        "src/ports/*mac*",
        "src/ports/*mozalloc*",
        "src/ports/*nacl*",
        "src/ports/*win*",
        "src/ports/SkFontConfigInterface_direct_factory.cpp",
        "src/ports/SkFontMgr_custom_directory_factory.cpp",
        "src/ports/SkFontMgr_custom_embedded_factory.cpp",
        "src/ports/SkFontMgr_empty_factory.cpp",
        "src/ports/SkFontMgr_fontconfig.cpp",
        "src/ports/SkImageDecoder_CG.cpp",
        "src/ports/SkFontMgr_fontconfig_factory.cpp",
        "src/ports/SkImageDecoder_WIC.cpp",
        "src/ports/SkImageDecoder_empty.cpp",
        "src/ports/SkImageGenerator_none.cpp",
        "src/ports/SkTLS_none.cpp",
    ],
)

# Platform-dependent SRCS for google3-default Android.
BASE_SRCS_ANDROID = glob(
    [
        "src/codec/*",
        "src/images/*",
        # TODO(benjaminwagner): Figure out how to compile with EGL.
        "src/opts/**/*.cpp",
        "src/opts/**/*.h",
        "src/ports/**/*.cpp",
        "src/ports/**/*.h",
    ],
    exclude = [
        "src/codec/SkJpegCodec.cpp",  # libjpeg_turbo version mismatch.
        "src/opts/*mips*",
        "src/opts/*SSE2*",
        "src/opts/*SSSE3*",
        "src/opts/*ssse3*",
        "src/opts/*SSE4*",
        "src/opts/*sse4*",
        "src/opts/*avx*",
        "src/opts/*x86*",
        "src/opts/SkBitmapProcState_opts_none.cpp",
        "src/opts/SkBlitMask_opts_none.cpp",
        "src/opts/SkBlitRow_opts_none.cpp",
        "src/ports/*chromium*",
        "src/ports/*fontconfig*",
        "src/ports/*FontConfig*",
        "src/ports/*mac*",
        "src/ports/*mozalloc*",
        "src/ports/*nacl*",
        "src/ports/*win*",
        "src/ports/SkDebug_stdio.cpp",
        "src/ports/SkFontConfigInterface_direct_factory.cpp",
        "src/ports/SkFontConfigInterface_direct_google3_factory.cpp",
        "src/ports/SkFontMgr_custom_directory_factory.cpp",
        "src/ports/SkFontMgr_custom_embedded_factory.cpp",
        "src/ports/SkFontMgr_empty_factory.cpp",
        "src/ports/SkImageDecoder_CG.cpp",
        "src/ports/SkImageDecoder_WIC.cpp",
        "src/ports/SkImageDecoder_empty.cpp",
        "src/ports/SkImageGenerator_none.cpp",
        "src/ports/SkTLS_none.cpp",
    ],
)

# Platform-dependent SRCS for google3-default iOS.
BASE_SRCS_IOS = glob(
    [
        "src/opts/**/*.cpp",
        "src/opts/**/*.h",
        "src/ports/**/*.cpp",
        "src/ports/**/*.h",
    ],
    exclude = [
        "src/opts/*mips*",
        "src/opts/*NEON*",
        "src/opts/*neon*",
        "src/opts/*SSE2*",
        "src/opts/*SSSE3*",
        "src/opts/*ssse3*",
        "src/opts/*SSE4*",
        "src/opts/*sse4*",
        "src/opts/*avx*",
        "src/opts/*x86*",
        "src/opts/SkBitmapProcState_opts_none.cpp",
        "src/opts/SkBlitMask_opts_none.cpp",
        "src/opts/SkBlitRow_opts_none.cpp",
        "src/ports/*android*",
        "src/ports/*chromium*",
        "src/ports/*fontconfig*",
        "src/ports/*FontConfig*",
        "src/ports/*FreeType*",
        "src/ports/*mozalloc*",
        "src/ports/*nacl*",
        "src/ports/*win*",
        "src/ports/SkDebug_stdio.cpp",
        "src/ports/SkFontMgr_custom.cpp",
        "src/ports/SkFontConfigInterface_direct_factory.cpp",
        "src/ports/SkFontConfigInterface_direct_google3_factory.cpp",
        "src/ports/SkFontMgr_custom_directory_factory.cpp",
        "src/ports/SkFontMgr_custom_embedded_factory.cpp",
        "src/ports/SkFontMgr_empty_factory.cpp",
        "src/ports/SkImageDecoder_CG.cpp",
        "src/ports/SkImageDecoder_WIC.cpp",
        "src/ports/SkImageDecoder_empty.cpp",
        "src/ports/SkImageGenerator_none.cpp",
        "src/ports/SkTLS_none.cpp",
    ],
)

BASE_SRCS_PLATFORM = select({
    CONDITION_ANDROID: BASE_SRCS_ANDROID,
    CONDITION_IOS: BASE_SRCS_IOS,
    "//conditions:default": BASE_SRCS_UNIX,
})

SSSE3_SRCS = glob(
    [
        "src/opts/*SSSE3*.cpp",
        "src/opts/*ssse3*.cpp",
    ],
)

SSE4_SRCS = glob(
    [
        "src/opts/*SSE4*.cpp",
        "src/opts/*sse4*.cpp",
    ],
)

AVX_SRCS = glob(
    [
        "src/opts/*_avx.cpp",
    ],
)

AVX2_SRCS = glob(
    [
        "src/opts/*_avx2.cpp",
    ],
)

BASE_HDRS = glob(
    [
        "include/**/*.h",
    ],
    exclude = [
        "include/private/**/*",

        # Not used.
        "include/animator/**/*",
        "include/views/**/*",
        "include/xml/SkBML_WXMLParser.h",
        "include/xml/SkBML_XMLParser.h",
    ],
)

# Dependencies.
BASE_DEPS_UNIX = [
    ":opts_avx2",
    ":opts_avx",
    ":opts_sse4",
    ":opts_ssse3",
]

BASE_DEPS_ANDROID = []

BASE_DEPS_IOS = []

BASE_DEPS = select({
    CONDITION_ANDROID: BASE_DEPS_ANDROID + BASE_EXTERNAL_DEPS_ANDROID,
    CONDITION_IOS: BASE_DEPS_IOS + BASE_EXTERNAL_DEPS_IOS,
    "//conditions:default": BASE_DEPS_UNIX + BASE_EXTERNAL_DEPS_UNIX,
}) + EXTERNAL_DEPS_ALL

# Includes needed by Skia implementation.  Not public includes.
INCLUDES = [
    "include/android",
    "include/c",
    "include/codec",
    "include/config",
    "include/core",
    "include/effects",
    "include/gpu",
    "include/images",
    "include/pathops",
    "include/pipe",
    "include/ports",
    "include/private",
    "include/utils",
    "include/utils/mac",
    "include/utils/win",
    "include/svg",
    "include/xml",
    "src/codec",
    "src/core",
    "src/gpu",
    "src/image",
    "src/lazy",
    "src/opts",
    "src/ports",
    "src/pdf",
    "src/sfnt",
    "src/utils",
    "third_party/etc1",
    "third_party/ktx",
] + EXTERNAL_INCLUDES

## :dm

# Platform-independent SRCS for DM.
DM_SRCS = glob(
    [
        "dm/*.cpp",
        "dm/*.h",
        "gm/*.c",
        "gm/*.cpp",
        "gm/*.h",
        "tests/*.cpp",
        "tests/*.h",
        "tools/CrashHandler.cpp",
        "tools/CrashHandler.h",
        "tools/LazyDecodeBitmap.cpp",
        "tools/LazyDecodeBitmap.h",
        "tools/ProcStats.cpp",
        "tools/ProcStats.h",
        "tools/Resources.cpp",
        "tools/Resources.h",
        "tools/SkBitmapRegionCanvas.cpp",
        "tools/SkBitmapRegionCanvas.h",
        "tools/SkBitmapRegionCodec.cpp",
        "tools/SkBitmapRegionCodec.h",
        "tools/SkBitmapRegionDecoder.cpp",
        "tools/SkBitmapRegionDecoder.h",
        "tools/SkBitmapRegionSampler.cpp",
        "tools/SkBitmapRegionSampler.h",
        "tools/flags/*.cpp",
        "tools/flags/*.h",
        "tools/sk_tool_utils.cpp",
        "tools/sk_tool_utils.h",
        "tools/sk_tool_utils_font.cpp",
        "tools/timer/*.cpp",
        "tools/timer/*.h",
    ],
    exclude = [
        "dm/DMSrcSinkAndroid.cpp",  # Android-only.
        "tests/FontMgrAndroidParserTest.cpp",  # Android-only.
        "tests/PathOpsSkpClipTest.cpp",  # Alternate main.
        "tests/skia_test.cpp",  # Old main.
        "tests/SkpSkGrTest.cpp",  # Alternate main.
        "tools/timer/SysTimer_mach.cpp",
        "tools/timer/SysTimer_windows.cpp",
    ],
)

DM_SRCS_UNIX = []

DM_SRCS_ANDROID = glob(
    [
        # Depends on Android HWUI library that is not available in google3.
        #"dm/DMSrcSinkAndroid.cpp",
        "tests/FontMgrAndroidParserTest.cpp",
    ],
)

DM_PLATFORM_SRCS = select({
    CONDITION_ANDROID: DM_SRCS_ANDROID,
    "//conditions:default": DM_SRCS_UNIX,
})

DM_INCLUDES = [
    "gm",
    "src/codec",
    "src/effects",
    "src/fonts",
    "src/pathops",
    "src/pipe/utils",
    "src/ports",
    "src/utils/debugger",
    "tests",
    "tools",
    "tools/flags",
    "tools/timer",
]

COPTS_ANDROID = ["-mfpu=neon"]

COPTS_IOS = []

COPTS_UNIX = [
    "-Wno-implicit-fallthrough",  # Some intentional fallthrough.
    "-Wno-deprecated-declarations",  # Internal use of deprecated methods. :(
]

COPTS = select({
    CONDITION_ANDROID: COPTS_ANDROID,
    CONDITION_IOS: COPTS_IOS,
    "//conditions:default": COPTS_UNIX,
})

DEFINES_ANDROID = [
    "SK_BUILD_FOR_ANDROID",
    # TODO(benjaminwagner): Try to get png library updated?
    "SK_PNG_NO_INDEX_SUPPORTED",
]

DEFINES_IOS = [
    "SK_BUILD_FOR_IOS",
    "SK_IGNORE_ETC1_SUPPORT",
]

DEFINES_UNIX = [
    "SK_BUILD_FOR_UNIX",
    "SK_SAMPLES_FOR_X",
    "SK_SFNTLY_SUBSETTER",
]

DEFINES_ALL = [
    # Chrome DEFINES.
    "SK_USE_FLOATBITS",
    "SK_USE_FREETYPE_EMBOLDEN",
    # TODO(benjaminwagner): Needed for internal cl/107719535, but will be fixed
    # up after that CL is submitted.
    "SK_SUPPORT_LEGACY_SAVEFLAGS",
    # Turn on a few Google3-specific build fixes.
    "GOOGLE3",
]

DEFINES = select({
    CONDITION_ANDROID: DEFINES_ANDROID,
    CONDITION_IOS: DEFINES_IOS,
    "//conditions:default": DEFINES_UNIX,
}) + DEFINES_ALL

LINKOPTS = select({
    CONDITION_ANDROID: [
        "-ldl",
        "-lEGL",
    ],
    "//conditions:default": ["-ldl"],
})

cc_library(
    name = "opts_ssse3",
    srcs = SSSE3_SRCS,
    copts = COPTS + ["-mssse3"],
    defines = DEFINES,
    includes = INCLUDES,
    deps = EXTERNAL_DEPS_ALL,
)

cc_library(
    name = "opts_sse4",
    srcs = SSE4_SRCS,
    copts = COPTS + ["-msse4"],
    defines = DEFINES,
    includes = INCLUDES,
    deps = EXTERNAL_DEPS_ALL,
)

cc_library(
    name = "opts_avx",
    srcs = AVX_SRCS,
    copts = COPTS + ["-mavx"],
    defines = DEFINES,
    includes = INCLUDES,
    deps = EXTERNAL_DEPS_ALL,
)

cc_library(
    name = "opts_avx2",
    srcs = AVX2_SRCS,
    copts = COPTS + ["-mavx2"],
    defines = DEFINES,
    includes = INCLUDES,
    deps = EXTERNAL_DEPS_ALL,
)

# If you need Ganesh (GPU) support in Skia, please contact skia-team@google.com
# for help.
cc_library(
    name = "skia",
    srcs = BASE_SRCS + BASE_SRCS_PLATFORM,
    hdrs = BASE_HDRS,
    copts = COPTS,
    defines = DEFINES,
    includes = INCLUDES,
    linkopts = LINKOPTS,
    visibility = [":skia_clients"],
    deps = BASE_DEPS,
    alwayslink = 1,
)

cc_test(
    name = "dm",
    size = "large",
    srcs = DM_SRCS + DM_PLATFORM_SRCS,
    args = [
        "--nogpu",
        "--verbose",
        # TODO(mtklein): maybe investigate why these fail?
        "--match ~FontMgr ~Scalar ~Canvas ~Codec_stripes ~Codec_Dimensions ~Codec ~Stream ~skps ~RecordDraw_TextBounds",
        "--resourcePath %s/resources" % BASE_DIR,
        "--images %s/resources" % BASE_DIR,
    ],
    copts = COPTS,
    data = glob(["resources/**/*"]),
    defines = DEFINES,
    includes = DM_INCLUDES,
    deps = DM_EXTERNAL_DEPS + [
        ":skia",
    ] + EXTERNAL_DEPS_ALL,
)
