# -*- 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: Cocoa")

XPIDL_SOURCES += [
    'nsPIWidgetCocoa.idl',
]

XPIDL_MODULE = 'widget_cocoa'

EXPORTS += [
    'mozView.h',
    'nsBidiKeyboard.h',
    'nsChangeObserver.h',
    'nsCocoaDebugUtils.h',
    'nsCocoaFeatures.h',
    'nsCocoaUtils.h',
]

UNIFIED_SOURCES += [
    'ComplexTextInputPanel.mm',
    'GfxInfo.mm',
    'NativeKeyBindings.mm',
    'nsAppShell.mm',
    'nsBidiKeyboard.mm',
    'nsCocoaFeatures.mm',
    'nsCocoaUtils.mm',
    'nsCocoaWindow.mm',
    'nsColorPicker.mm',
    'nsCursorManager.mm',
    'nsDeviceContextSpecX.mm',
    'nsFilePicker.mm',
    'nsIdleServiceX.mm',
    'nsLookAndFeel.mm',
    'nsMacCursor.mm',
    'nsMacDockSupport.mm',
    'nsMacSharingService.mm',
    'nsMacWebAppUtils.mm',
    'nsMenuBarX.mm',
    'nsMenuGroupOwnerX.mm',
    'nsMenuItemIconX.mm',
    'nsMenuItemX.mm',
    'nsMenuUtilsX.mm',
    'nsMenuX.mm',
    'nsPrintDialogX.mm',
    'nsPrintSettingsServiceX.mm',
    'nsPrintSettingsX.mm',
    'nsSound.mm',
    'nsStandaloneNativeMenu.mm',
    'nsSystemStatusBarCocoa.mm',
    'nsToolkit.mm',
    'nsTouchBar.mm',
    'nsTouchBarUpdater.mm',
    'nsWidgetFactory.mm',
    'nsWindowMap.mm',
    'OSXNotificationCenter.mm',
    'ProcInfo.mm',
    'RectTextureImage.mm',
    'ScreenHelperCocoa.mm',
    'SwipeTracker.mm',
    'TextInputHandler.mm',
    'VibrancyManager.mm',
    'ViewRegion.mm',
    'WidgetTraceEvent.mm',
]

# These files cannot be built in unified mode because they cause symbol conflicts
SOURCES += [
    'nsChildView.mm',
    'nsClipboard.mm',
    'nsCocoaDebugUtils.mm',
    'nsDragService.mm',
    'nsNativeThemeCocoa.mm',
]

if not CONFIG['RELEASE_OR_BETA'] or CONFIG['MOZ_DEBUG']:
    SOURCES += [
        'nsSandboxViolationSink.mm',
    ]

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

FINAL_LIBRARY = 'xul'
LOCAL_INCLUDES += [
    '/layout/base',
    '/layout/forms',
    '/layout/generic',
    '/layout/style',
    '/layout/xul',
    '/widget',
    '/widget/headless',
]

if CONFIG['MOZ_ENABLE_SKIA_PDF']:
    # Skia includes because widget code includes PrintTargetSkPDF.h, and that
    # includes skia headers.
    LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']

RESOURCE_FILES.cursors += [
    'cursors/arrowN.png',
    'cursors/arrowN@2x.png',
    'cursors/arrowS.png',
    'cursors/arrowS@2x.png',
    'cursors/cell.png',
    'cursors/cell@2x.png',
    'cursors/colResize.png',
    'cursors/colResize@2x.png',
    'cursors/help.png',
    'cursors/help@2x.png',
    'cursors/move.png',
    'cursors/move@2x.png',
    'cursors/rowResize.png',
    'cursors/rowResize@2x.png',
    'cursors/sizeNE.png',
    'cursors/sizeNE@2x.png',
    'cursors/sizeNESW.png',
    'cursors/sizeNESW@2x.png',
    'cursors/sizeNS.png',
    'cursors/sizeNS@2x.png',
    'cursors/sizeNW.png',
    'cursors/sizeNW@2x.png',
    'cursors/sizeNWSE.png',
    'cursors/sizeNWSE@2x.png',
    'cursors/sizeSE.png',
    'cursors/sizeSE@2x.png',
    'cursors/sizeSW.png',
    'cursors/sizeSW@2x.png',
    'cursors/vtIBeam.png',
    'cursors/vtIBeam@2x.png',
    'cursors/zoomIn.png',
    'cursors/zoomIn@2x.png',
    'cursors/zoomOut.png',
    'cursors/zoomOut@2x.png',
]

RESOURCE_FILES.touchbar += [
    'touchbar/back.pdf',
    'touchbar/bookmark-filled.pdf',
    'touchbar/bookmark.pdf',
    'touchbar/forward.pdf',
    'touchbar/fullscreen.pdf',
    'touchbar/home.pdf',
    'touchbar/new.pdf',
    'touchbar/reader-mode.pdf',
    'touchbar/refresh.pdf',
    'touchbar/search.pdf',
    'touchbar/share.pdf',
    'touchbar/sidebar-left.pdf',
    'touchbar/sidebar-right.pdf',
]

# These resources go in $(DIST)/bin/res/MainMenu.nib, but we can't use a magic
# RESOURCE_FILES.MainMenu.nib attribute, since that would put the files in
# $(DIST)/bin/res/MainMenu/nib. Instead, we call __setattr__ directly to create
# an attribute with the correct name.
RESOURCE_FILES.__setattr__('MainMenu.nib', [
    'resources/MainMenu.nib/classes.nib',
    'resources/MainMenu.nib/info.nib',
    'resources/MainMenu.nib/keyedobjects.nib',
])

CXXFLAGS += CONFIG['TK_CFLAGS']
