# 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/*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_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 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/*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_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.
SRCS_IOS = glob(
    [
        "src/gpu/gl/iOS/GrGLCreateNativeInterface_iOS.cpp",
        "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/*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/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_SRCS = select({
    CONDITION_ANDROID: SRCS_ANDROID,
    CONDITION_IOS: SRCS_IOS,
    "//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/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/pdf",
    "src/sfnt",
    "src/utils",
    "third_party/etc1",
    "third_party/ktx",
]

# Dependencies.
DEPS_UNIX = [
    ":opts_sse4",
    ":opts_ssse3",
]

DEPS_ANDROID = []

DEPS_IOS = []

DEPS = select({
    CONDITION_ANDROID: DEPS_ANDROID + EXTERNAL_DEPS_ANDROID,
    CONDITION_IOS: DEPS_IOS + EXTERNAL_DEPS_IOS,
    "//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/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",
]

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