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

with Files("**"):
    BUG_COMPONENT = ("Core", "Widget: Win32")

with Files("*CompositorWidget*"):
    BUG_COMPONENT = ("Core", "Graphics")

TEST_DIRS += ['tests']

EXPORTS += [
    'nsdefs.h',
    'WindowHook.h',
    'WinUtils.h',
]

EXPORTS.mozilla += [
    'ShellHeaderOnlyUtils.h',
    'UrlmonHeaderOnlyUtils.h',
    'WindowsConsole.h',
    'WinHeaderOnlyUtils.h',
]

EXPORTS.mozilla.widget += [
    'AudioSession.h',
    'CompositorWidgetChild.h',
    'CompositorWidgetParent.h',
    'InProcessWinCompositorWidget.h',
    'WinCompositorWidget.h',
    'WinCompositorWindowThread.h',
    'WindowsEMF.h',
    'WinMessages.h',
    'WinModifierKeyState.h',
    'WinNativeEventData.h',
]

UNIFIED_SOURCES += [
    'AudioSession.cpp',
    'CompositorWidgetChild.cpp',
    'CompositorWidgetParent.cpp',
    'GfxInfo.cpp',
    'IEnumFE.cpp',
    'IMMHandler.cpp',
    'InkCollector.cpp',
    'InProcessWinCompositorWidget.cpp',
    'JumpListItem.cpp',
    'KeyboardLayout.cpp',
    'LSPAnnotator.cpp',
    'nsAppShell.cpp',
    'nsClipboard.cpp',
    'nsColorPicker.cpp',
    'nsDataObj.cpp',
    'nsDataObjCollection.cpp',
    'nsDragService.cpp',
    'nsIdleServiceWin.cpp',
    'nsLookAndFeel.cpp',
    'nsNativeDragSource.cpp',
    'nsNativeDragTarget.cpp',
    'nsNativeThemeWin.cpp',
    'nsSound.cpp',
    'nsToolkit.cpp',
    'nsUXThemeData.cpp',
    'nsWindow.cpp',
    'nsWindowBase.cpp',
    'nsWindowDbg.cpp',
    'nsWindowGfx.cpp',
    'nsWinGesture.cpp',
    'ProcInfo.cpp',
    'ScreenHelperWin.cpp',
    'TaskbarPreview.cpp',
    'TaskbarPreviewButton.cpp',
    'TaskbarTabPreview.cpp',
    'TaskbarWindowPreview.cpp',
    'WidgetTraceEvent.cpp',
    'WinCompositorWindowThread.cpp',
    'WindowHook.cpp',
    'WindowsConsole.cpp',
    'WinIMEHandler.cpp',
    'WinPointerEvents.cpp',
    'WinTaskbar.cpp',
    'WinTextEventDispatcherListener.cpp',
    'WinUtils.cpp',
]

# The following files cannot be built in unified mode because of name clashes.
SOURCES += [
    'JumpListBuilder.cpp',
    'nsBidiKeyboard.cpp',
    'nsFilePicker.cpp',
    'nsWidgetFactory.cpp',
    'WinCompositorWidget.cpp',
    'WindowsUIUtils.cpp',
    'WinMouseScrollHandler.cpp',
]

# Needs INITGUID and we don't allow INITGUID in unified sources since bug 970429.
SOURCES += [
    'InputDeviceUtils.cpp',
]

if CONFIG['NS_PRINTING']:
    UNIFIED_SOURCES += [
        'nsDeviceContextSpecWin.cpp',
        'nsPrintDialogUtil.cpp',
        'nsPrintDialogWin.cpp',
        'nsPrintSettingsServiceWin.cpp',
        'nsPrintSettingsWin.cpp',
    ]

if CONFIG['MOZ_ENABLE_SKIA_PDF']:
    UNIFIED_SOURCES += [
        'WindowsEMF.cpp',
    ]

if CONFIG['NS_ENABLE_TSF']:
    SOURCES += [
        'TSFTextStore.cpp',
    ]

XPCOM_MANIFESTS += [
    'components.conf',
]

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

FINAL_LIBRARY = 'xul'

if CONFIG['MOZ_ENABLE_SKIA_PDF']:
  LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']
  LOCAL_INCLUDES += [
    '/gfx/skia/skia/include/config',
    '/gfx/skia/skia/include/core',
  ]

LOCAL_INCLUDES += [
    '/layout/forms',
    '/layout/generic',
    '/layout/xul',
    '/toolkit/xre',
    '/widget',
    '/widget/headless',
    '/xpcom/base',
]

DEFINES['MOZ_UNICODE'] = True

for var in ('MOZ_ENABLE_D3D10_LAYER'):
    if CONFIG[var]:
        DEFINES[var] = True

RESFILE = 'widget.res'

CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']

OS_LIBS += [
    'rpcrt4',
    'urlmon',
]

if CONFIG['CC_TYPE'] == 'clang-cl':
    SOURCES += [
        'ToastNotification.cpp',
        'ToastNotificationHandler.cpp',
    ]
