# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

EXPORTS += [
    'ContextStateTracker.h',
    'DrawMode.h',
    'gfx2DGlue.h',
    'gfxAlphaRecovery.h',
    'gfxASurface.h',
    'gfxBaseSharedMemorySurface.h',
    'gfxBlur.h',
    'gfxColor.h',
    'gfxContext.h',
    'gfxDrawable.h',
    'gfxEnv.h',
    'gfxFailure.h',
    'gfxFont.h',
    'gfxFontConstants.h',
    'gfxFontEntry.h',
    'gfxFontFamilyList.h',
    'gfxFontFeatures.h',
    'gfxFontInfoLoader.h',
    'gfxFontPrefLangList.h',
    'gfxFontTest.h',
    'gfxFontUtils.h',
    'gfxGradientCache.h',
    'gfxImageSurface.h',
    'gfxLineSegment.h',
    'gfxMathTable.h',
    'gfxMatrix.h',
    'gfxPattern.h',
    'gfxPlatform.h',
    'gfxPoint.h',
    'gfxPrefs.h',
    'gfxQuad.h',
    'gfxQuaternion.h',
    'gfxRect.h',
    'gfxSharedImageSurface.h',
    'gfxSkipChars.h',
    'gfxSVGGlyphs.h',
    'gfxTextRun.h',
    'gfxTypes.h',
    'gfxUserFontSet.h',
    'gfxUtils.h',
    'RoundedRect.h',
    'SoftwareVsyncSource.h',
    'VsyncSource.h',
]

EXPORTS.mozilla.gfx += [
    'D3D11Checks.h',
    'DeviceManagerDx.h',
    'PrintTarget.h',
    'PrintTargetThebes.h',
]

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
    EXPORTS += [
        'gfxAndroidPlatform.h',
        'gfxFT2FontBase.h',
        'gfxFT2Fonts.h',
    ]
    EXPORTS.mozilla.gfx += [
        'PrintTargetPDF.h',
    ]
    SOURCES += [
        'gfxAndroidPlatform.cpp',
        'gfxFT2FontBase.cpp',
        'gfxFT2FontList.cpp',
        'gfxFT2Fonts.cpp',
        'gfxFT2Utils.cpp',
        'PrintTargetPDF.cpp',
    ]
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
    EXPORTS += [
        'gfxPlatformMac.h',
        'gfxQuartzNativeDrawing.h',
        'gfxQuartzSurface.h',
    ]
    EXPORTS.mozilla.gfx += [
        'PrintTargetCG.h',
    ]
    SOURCES += [
        'gfxCoreTextShaper.cpp',
        'gfxMacFont.cpp',
        'gfxPlatformMac.cpp',
        'gfxQuartzNativeDrawing.cpp',
        'gfxQuartzSurface.cpp',
        'PrintTargetCG.cpp',
    ]
elif 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
    EXPORTS += [
        'gfxFontconfigFonts.h',
        'gfxFT2FontBase.h',
        'gfxGdkNativeRenderer.h',
        'gfxPlatformGtk.h',
    ]
    EXPORTS.mozilla.gfx += [
        'PrintTargetPDF.h',
        'PrintTargetPS.h',
    ]
    SOURCES += [
        'gfxFcPlatformFontList.cpp',
        'gfxFontconfigFonts.cpp',
        'gfxFontconfigUtils.cpp',
        'gfxFT2FontBase.cpp',
        'gfxFT2Utils.cpp',
        'gfxGdkNativeRenderer.cpp',
        'gfxPlatformGtk.cpp',
        'PrintTargetPDF.cpp',
        'PrintTargetPS.cpp',
    ]

    if CONFIG['MOZ_X11']:
        EXPORTS += [
            'gfxXlibNativeRenderer.h',
            'gfxXlibSurface.h',
        ]
        SOURCES += [
            'gfxXlibNativeRenderer.cpp',
            'gfxXlibSurface.cpp',
        ]

elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
    EXPORTS += [
        'gfxDWriteFonts.h',
        'gfxGDIFont.h',
        'gfxGDIFontList.h',
        'gfxPlatformFontList.h',
        'gfxWindowsNativeDrawing.h',
        'gfxWindowsPlatform.h',
        'gfxWindowsSurface.h',
    ]
    EXPORTS.mozilla.gfx += [
        'PrintTargetPDF.h',
        'PrintTargetWindows.h',
    ]
    SOURCES += [
        'gfxGDIFont.cpp',
        'gfxGDIFontList.cpp',
        'gfxWindowsNativeDrawing.cpp',
        'gfxWindowsPlatform.cpp',
        'gfxWindowsSurface.cpp',
        'PrintTargetPDF.cpp',
        'PrintTargetWindows.cpp',
    ]
    if CONFIG['MOZ_ENABLE_DWRITE_FONT']:
        UNIFIED_SOURCES += [
            'gfxDWriteFontList.cpp',
        ]
        SOURCES += [
            'gfxDWriteCommon.cpp',
            'gfxDWriteFonts.cpp',
        ]

# Are we targeting x86 or x64?  If so, build gfxAlphaRecoverySSE2.cpp.
if CONFIG['INTEL_ARCHITECTURE']:
    SOURCES += ['gfxAlphaRecoverySSE2.cpp']
    # The file uses SSE2 intrinsics, so it needs special compile flags on some
    # compilers.
    SOURCES['gfxAlphaRecoverySSE2.cpp'].flags += CONFIG['SSE2_FLAGS']

SOURCES += [
    'ContextStateTracker.cpp',
    # Includes mac system header conflicting with point/size,
    # and includes glxXlibSurface.h which drags in Xrender.h
    'gfxASurface.cpp',
    # on X11, gfxDrawable.cpp includes X headers for an old workaround which
    # we could consider removing soon (affects Ubuntus older than 10.04 LTS)
    # which currently prevent it from joining UNIFIED_SOURCES.
    'gfxDrawable.cpp',
    # gfxPlatform.cpp includes mac system header conflicting with point/size
    'gfxPlatform.cpp',
    'gfxPrefs.cpp',
    'PrintTarget.cpp',
    'PrintTargetThebes.cpp',
]

UNIFIED_SOURCES += [
    'CJKCompatSVS.cpp',
    'gfxAlphaRecovery.cpp',
    'gfxBaseSharedMemorySurface.cpp',
    'gfxBlur.cpp',
    'gfxContext.cpp',
    'gfxFont.cpp',
    'gfxFontEntry.cpp',
    'gfxFontFeatures.cpp',
    'gfxFontInfoLoader.cpp',
    'gfxFontMissingGlyphs.cpp',
    'gfxFontTest.cpp',
    'gfxFontUtils.cpp',
    'gfxGlyphExtents.cpp',
    'gfxGradientCache.cpp',
    'gfxGraphiteShaper.cpp',
    'gfxHarfBuzzShaper.cpp',
    'gfxImageSurface.cpp',
    'gfxMathTable.cpp',
    'gfxMatrix.cpp',
    'gfxPattern.cpp',
    'gfxPlatformFontList.cpp',
    'gfxRect.cpp',
    'gfxScriptItemizer.cpp',
    'gfxSkipChars.cpp',
    'gfxSVGGlyphs.cpp',
    'gfxTextRun.cpp',
    'gfxUserFontSet.cpp',
    'gfxUtils.cpp',
    'nsUnicodeRange.cpp',
    'SoftwareVsyncSource.cpp',
    'VsyncSource.cpp',
]

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
    UNIFIED_SOURCES += [
        'gfxMacPlatformFontList.mm',
    ]
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
    UNIFIED_SOURCES += [
        'D3D11Checks.cpp',
        'DeviceManagerDx.cpp',
    ]

# We use ICU for normalization functions
USE_LIBS += [
    'icu',
]

include('/ipc/chromium/chromium-config.mozbuild')

FINAL_LIBRARY = 'xul'

GENERATED_FILES = [
    'DeprecatedPremultiplyTables.h',
]
GENERATED_FILES['DeprecatedPremultiplyTables.h'].script = 'genTables.py:generate'

LOCAL_INCLUDES += [
    '/dom/workers',
    '/dom/xml',
]

if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gtk2', 'gtk3'):
    DEFINES['MOZ_ENABLE_FREETYPE'] = True

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
    for var in ('MOZ_ENABLE_D3D9_LAYER', 'MOZ_ENABLE_D3D10_LAYER'):
        if CONFIG[var]:
            DEFINES[var] = True

CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
CXXFLAGS += CONFIG['TK_CFLAGS']
CFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
CFLAGS += CONFIG['TK_CFLAGS']

if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android'):
    CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']

if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'):
    CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS']

LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']
LOCAL_INCLUDES += ['/media/libyuv/include']

DEFINES['GRAPHITE2_STATIC'] = True

if CONFIG['CLANG_CXX']:
    # Suppress warnings from Skia header files.
    SOURCES['gfxPlatform.cpp'].flags += ['-Wno-implicit-fallthrough']