# -*- 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('ActiveLayerTracker.*'):
    BUG_COMPONENT = ('Core', 'Layout: View Rendering')

with Files('Display*'):
    BUG_COMPONENT = ('Core', 'Layout: View Rendering')

with Files('FrameLayerBuilder.*'):
    BUG_COMPONENT = ('Core', 'Layout: View Rendering')

with Files('LayerState.*'):
    BUG_COMPONENT = ('Core', 'Layout: View Rendering')

with Files('MaskLayerImageCache.*'):
    BUG_COMPONENT = ('Core', 'Layout: View Rendering')

with Files('PaintTracker.*'):
    BUG_COMPONENT = ('Core', 'Layout: View Rendering')

with Files('nsCSSRendering.*'):
    BUG_COMPONENT = ('Core', 'Layout: View Rendering')

with Files('nsDisplay*'):
    BUG_COMPONENT = ('Core', 'Layout: View Rendering')

with Files('Restyle*'):
    BUG_COMPONENT = ('Core', 'CSS Parsing and Computation')

with Files('nsStyle*'):
    BUG_COMPONENT = ('Core', 'CSS Parsing and Computation')

with Files('nsChangeHint.h'):
    BUG_COMPONENT = ('Core', 'CSS Parsing and Computation')

with Files('nsBidi*'):
    BUG_COMPONENT = ('Core', 'Layout: Text')

with Files('AccessibleCaret*'):
    BUG_COMPONENT = ('Core', 'Selection')

XPIDL_SOURCES += [
    'nsIStyleSheetService.idl',
]

if CONFIG['MOZ_DEBUG']:
    UNIFIED_SOURCES += [
        'nsAutoLayoutPhase.cpp',
    ]

XPIDL_MODULE = 'layout_base'

EXPORTS += [
    'ActiveLayerTracker.h',
    'CaretAssociationHint.h',
    'DisplayItemClip.h',
    'DisplayItemScrollClip.h',
    'DisplayListClipState.h',
    'FrameLayerBuilder.h',
    'FramePropertyTable.h',
    'LayerState.h',
    'LayoutLogging.h',
    'nsArenaMemoryStats.h',
    'nsBidi.h',
    'nsBidiPresUtils.h',
    'nsCaret.h',
    'nsChangeHint.h',
    'nsCompatibility.h',
    'nsCSSFrameConstructor.h',
    'nsDisplayItemTypes.h',
    'nsDisplayItemTypesList.h',
    'nsDisplayList.h',
    'nsDisplayListInvalidation.h',
    'nsFrameManager.h',
    'nsFrameManagerBase.h',
    'nsFrameTraversal.h',
    'nsIFrameTraversal.h',
    'nsILayoutDebugger.h',
    'nsILayoutHistoryState.h',
    'nsIPercentBSizeObserver.h',
    'nsIPresShell.h',
    'nsIReflowCallback.h',
    'nsLayoutUtils.h',
    'nsPresArena.h',
    'nsPresArenaObjectList.h',
    'nsPresContext.h',
    'nsPresState.h',
    'nsRefreshDriver.h',
    'nsStyleChangeList.h',
    'nsStyleSheetService.h',
    'ScrollbarStyles.h',
    'StackArena.h',
    'Units.h',
    'UnitTransforms.h',
    'WordMovementType.h',
]

EXPORTS.mozilla += [
    'ArenaObjectID.h',
    'ArenaRefPtr.h',
    'ArenaRefPtrInlines.h',
    'GeometryUtils.h',
    'OverflowChangedTracker.h',
    'PaintTracker.h',
    'RestyleLogging.h',
    'RestyleManager.h',
    'RestyleManagerBase.h',
    'RestyleManagerHandle.h',
    'RestyleManagerHandleInlines.h',
    'ServoRestyleManager.h',
    'StaticPresData.h',
]

UNIFIED_SOURCES += [
    'AccessibleCaret.cpp',
    'AccessibleCaretEventHub.cpp',
    'AccessibleCaretManager.cpp',
    'ActiveLayerTracker.cpp',
    'DashedCornerFinder.cpp',
    'DisplayItemClip.cpp',
    'DisplayItemScrollClip.cpp',
    'DisplayListClipState.cpp',
    'DottedCornerFinder.cpp',
    'FrameLayerBuilder.cpp',
    'FramePropertyTable.cpp',
    'GeometryUtils.cpp',
    'LayoutLogging.cpp',
    'MaskLayerImageCache.cpp',
    'MobileViewportManager.cpp',
    'nsBidi.cpp',
    'nsBidiPresUtils.cpp',
    'nsCaret.cpp',
    'nsCounterManager.cpp',
    'nsCSSColorUtils.cpp',
    'nsCSSFrameConstructor.cpp',
    'nsCSSRendering.cpp',
    'nsCSSRenderingBorders.cpp',
    'nsDisplayList.cpp',
    'nsDisplayListInvalidation.cpp',
    'nsDocumentViewer.cpp',
    'nsFrameManager.cpp',
    'nsFrameTraversal.cpp',
    'nsGenConList.cpp',
    'nsLayoutDebugger.cpp',
    'nsLayoutHistoryState.cpp',
    'nsLayoutUtils.cpp',
    'nsPresContext.cpp',
    'nsPresShell.cpp',
    'nsQuoteList.cpp',
    'nsStyleChangeList.cpp',
    'nsStyleSheetService.cpp',
    'PaintTracker.cpp',
    'PositionedEventTargeting.cpp',
    'RestyleManager.cpp',
    'RestyleManagerBase.cpp',
    'RestyleTracker.cpp',
    'ScrollbarStyles.cpp',
    'ServoRestyleManager.cpp',
    'StackArena.cpp',
    'StaticPresData.cpp',
    'TouchManager.cpp',
    'ZoomConstraintsClient.cpp',
]

# nsPresArena.cpp needs to be built separately because it uses plarena.h.
# nsRefreshDriver.cpp needs to be built separately because of name clashes in the OS X headers
SOURCES += [
    'nsPresArena.cpp',
    'nsRefreshDriver.cpp',
]

if CONFIG['ENABLE_TESTS']:
    DIRS += ['gtest']

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

LOCAL_INCLUDES += [
    '../forms',
    '../generic',
    '../mathml',
    '../printing',
    '../style',
    '../svg',
    '../tables',
    '../xul',
    '../xul/tree/',
    '/docshell/base',
    '/dom/base',
    '/dom/html',
    '/dom/svg',
    '/dom/xbl',
    '/view',
]

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
    LOCAL_INCLUDES += [
        '/widget/android',
    ]

FINAL_LIBRARY = 'xul'

BROWSER_CHROME_MANIFESTS += ['tests/browser.ini']
MARIONETTE_LAYOUT_MANIFESTS += ['tests/marionette/manifest.ini']
MOCHITEST_MANIFESTS += ['tests/mochitest.ini']
MOCHITEST_CHROME_MANIFESTS += ['tests/chrome/chrome.ini']

CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']

if CONFIG['_MSC_VER']:
    # This is intended as a temporary hack to support building with VS2015.
    # 'type cast': conversion from 'unsigned int' to 'void *' of greater size
    CXXFLAGS += ['-wd4312']

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