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

exports_files(["BUILD.public"])

# Platform-independent SRCS
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/device/xps/*",  # Windows-only. Move to ports?
        "src/doc/*_XPS.cpp",  # Windows-only. Move to ports?
        "src/gpu/gl/android/*",
        "src/gpu/gl/egl/*",
        "src/gpu/gl/glx/*",
        "src/gpu/gl/nacl/*",
        "src/gpu/gl/iOS/*",
        "src/gpu/gl/mac/*",
        "src/gpu/gl/win/*",
        "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/fonts/*fontconfig*",
        "src/gpu/gl/GrGLCreateNativeInterface_none.cpp",
        "src/gpu/gl/GrGLDefaultInterface_native.cpp",
        "src/gpu/gl/GrGLDefaultInterface_none.cpp",

        # Exclude files that don't compile with the current DEFINES.
        "src/codec/SkJpegCodec.cpp",  # libjpeg_turbo version mismatch.
        "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.

        # 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.
SRCS_UNIX = glob(
    [
        "src/gpu/gl/GrGLDefaultInterface_native.cpp",
        "src/gpu/gl/glx/**/*.cpp",
        "src/gpu/gl/glx/**/*.h",
        "src/opts/**/*.cpp",
        "src/opts/**/*.h",
        "src/ports/**/*.cpp",
        "src/ports/**/*.h",
    ],
    exclude = [
        "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*",
        "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/*CG*",
        "src/ports/*fontconfig*",
        "src/ports/*FontConfig*",
        "src/ports/*mac*",
        "src/ports/*mozalloc*",
        "src/ports/*nacl*",
        "src/ports/*win*",
        "src/ports/SkFontMgr_custom_embedded_factory.cpp",
        "src/ports/SkFontMgr_empty_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.
SRCS_ANDROID = glob(
    [
        # TODO(benjaminwagner): Figure out how to compile with EGL.
        "src/gpu/gl/GrGLDefaultInterface_none.cpp",
        "src/gpu/gl/nacl/SkCreatePlatformGLContext_nacl.cpp",
        "src/opts/**/*.cpp",
        "src/opts/**/*.h",
        "src/ports/**/*.cpp",
        "src/ports/**/*.h",
    ],
    exclude = [
        "src/opts/*mips*",
        "src/opts/*SSE2*",
        "src/opts/*SSSE3*",
        "src/opts/*ssse3*",
        "src/opts/*SSE4*",
        "src/opts/*sse4*",
        "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/*CG*",
        "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/SkFontMgr_custom_directory_factory.cpp",
        "src/ports/SkFontMgr_custom_embedded_factory.cpp",
        "src/ports/SkFontMgr_empty_factory.cpp",
        "src/ports/SkImageDecoder_WIC.cpp",
        "src/ports/SkImageDecoder_empty.cpp",
        "src/ports/SkImageGenerator_none.cpp",
        "src/ports/SkTLS_none.cpp",
    ],
)

PLATFORM_SRCS = select({
    CONDITION_ANDROID: SRCS_ANDROID,
    "//conditions:default": SRCS_UNIX,
})

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

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

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

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

# Includes needed by Skia implementation.  Not public includes.
INCLUDES = [
    "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/svg",
    "include/xml",
    "src/core",
    "src/gpu",
    "src/image",
    "src/lazy",
    "src/opts",
    "src/pdf",
    "src/sfnt",
    "src/utils",
    "third_party/etc1",
    "third_party/ktx",
]

DEPS_UNIX = [
    ":opts_sse4",
    ":opts_ssse3",
]

DEPS_ANDROID = []

DEPS = select({
    CONDITION_ANDROID: DEPS_ANDROID + EXTERNAL_DEPS_ANDROID + EXTERNAL_DEPS_ALL,
    "//conditions:default": DEPS_UNIX + EXTERNAL_DEPS_UNIX + EXTERNAL_DEPS_ALL,
})

# 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/SkBitmapRegionDecoderInterface.cpp",
        "tools/SkBitmapRegionDecoderInterface.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_UNIX = [
    "-Wno-implicit-fallthrough",  # Some intentional fallthrough.
    "-Wno-deprecated-declarations",  # Internal use of deprecated methods. :(
]

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

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

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

DEFINES_ALL = [
    # Chrome DEFINES.
    "SK_USE_FLOATBITS",
    "SK_USE_FREETYPE_EMBOLDEN",
    # Turn on a few Google3-specific build fixes.
    "GOOGLE3",
]

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

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

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

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

cc_library(
    name = "skia",
    srcs = SRCS + PLATFORM_SRCS,
    hdrs = HDRS,
    copts = COPTS,
    defines = DEFINES,
    includes = INCLUDES,
    linkopts = LINKOPTS,
    visibility = [":skia_clients"],
    deps = DEPS,
)

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 ~Math ~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,
)
