# -*- 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/.

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
    DIRS += ['interpose']

EXPORTS.mozilla += [
    'PluginLibrary.h',
]

EXPORTS.mozilla.plugins += [
    'AStream.h',
    'BrowserStreamChild.h',
    'BrowserStreamParent.h',
    'ChildAsyncCall.h',
    'ChildTimer.h',
    'NPEventAndroid.h',
    'NPEventOSX.h',
    'NPEventUnix.h',
    'NPEventWindows.h',
    'PluginAsyncSurrogate.h',
    'PluginBridge.h',
    'PluginDataResolver.h',
    'PluginInstanceChild.h',
    'PluginInstanceParent.h',
    'PluginMessageUtils.h',
    'PluginModuleChild.h',
    'PluginModuleParent.h',
    'PluginProcessChild.h',
    'PluginProcessParent.h',
    'PluginQuirks.h',
    'PluginScriptableObjectChild.h',
    'PluginScriptableObjectParent.h',
    'PluginScriptableObjectUtils-inl.h',
    'PluginScriptableObjectUtils.h',
    'PluginStreamChild.h',
    'PluginStreamParent.h',
    'PluginUtilsOSX.h',
    'PluginWidgetChild.h',
    'PluginWidgetParent.h',
    'StreamNotifyChild.h',
    'StreamNotifyParent.h',
]

if CONFIG['OS_ARCH'] == 'WINNT':
    EXPORTS.mozilla.plugins += [
        'PluginSurfaceParent.h',
    ]
    UNIFIED_SOURCES += [
        'PluginHangUIParent.cpp',
        'PluginSurfaceParent.cpp',
    ]
    SOURCES += [
        'MiniShmParent.cpp', # Issues with CreateEvent
    ]
    DEFINES['MOZ_HANGUI_PROCESS_NAME'] = '"plugin-hang-ui%s"' % CONFIG['BIN_SUFFIX']
    LOCAL_INCLUDES += [
        '/widget',
        'hangui',
    ]

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
    EXPORTS.mozilla.plugins += [
        'PluginInterposeOSX.h',
    ]

UNIFIED_SOURCES += [
    'BrowserStreamChild.cpp',
    'BrowserStreamParent.cpp',
    'ChildAsyncCall.cpp',
    'ChildTimer.cpp',
    'PluginAsyncSurrogate.cpp',
    'PluginBackgroundDestroyer.cpp',
    'PluginInstanceParent.cpp',
    'PluginMessageUtils.cpp',
    'PluginModuleParent.cpp',
    'PluginProcessChild.cpp',
    'PluginProcessParent.cpp',
    'PluginQuirks.cpp',
    'PluginScriptableObjectChild.cpp',
    'PluginScriptableObjectParent.cpp',
    'PluginStreamChild.cpp',
    'PluginStreamParent.cpp',
]

SOURCES += [
    'PluginInstanceChild.cpp', # 'PluginThreadCallback' : ambiguous symbol
    'PluginModuleChild.cpp',   # Redefinition of mozilla::WindowsDllInterceptor sUser32Intercept
    'PluginWidgetChild.cpp',
    'PluginWidgetParent.cpp',
]

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
    UNIFIED_SOURCES += [
        'PluginInterposeOSX.mm',
        'PluginUtilsOSX.mm',
    ]

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
    UNIFIED_SOURCES += [
        'D3D11SurfaceHolder.cpp',
        'PluginUtilsWin.cpp'
    ]

IPDL_SOURCES += [
    'PBrowserStream.ipdl',
    'PluginTypes.ipdlh',
    'PPluginBackgroundDestroyer.ipdl',
    'PPluginInstance.ipdl',
    'PPluginModule.ipdl',
    'PPluginScriptableObject.ipdl',
    'PPluginStream.ipdl',
    'PPluginSurface.ipdl',
    'PStreamNotify.ipdl',
]

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

FINAL_LIBRARY = 'xul'
LOCAL_INCLUDES += [
    '../base',
    '/xpcom/base/',
]

DEFINES['FORCE_PR_LOG'] = True

if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'gtk3':
    CXXFLAGS += CONFIG['TK_CFLAGS']
else:
    # Force build against gtk+2 for struct offsets and such.
    CXXFLAGS += CONFIG['MOZ_GTK2_CFLAGS']

CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']

if CONFIG['GNU_CXX']:
    CXXFLAGS += ['-Wno-error=shadow']

if CONFIG['_MSC_VER']:
    # This is intended as a temporary hack to support building with VS2015.
    # conversion from 'X' to 'Y' requires a narrowing conversion
    CXXFLAGS += ['-wd4838']

    # 'type cast': conversion from 'unsigned int' to 'HIMC' of greater size
    CXXFLAGS += ['-wd4312']