# -*- 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['OS_ARCH'] == 'WINNT':
    TEST_DIRS += ['test/win']

MOCHITEST_MANIFESTS += ['test/mochitest.ini']
BROWSER_CHROME_MANIFESTS += ['test/browser.ini']

XPIDL_SOURCES += [
    'nsINativeAppSupport.idl',
]

if CONFIG['OS_ARCH'] == 'WINNT':
    XPIDL_SOURCES += [
        'nsIWinAppHelper.idl',
    ]

XPIDL_MODULE = 'xulapp'

EXPORTS += ['nsAppRunner.h']

if CONFIG['MOZ_INSTRUMENT_EVENT_LOOP']:
    EXPORTS += ['EventTracer.h']

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
    UNIFIED_SOURCES += [
        'nsNativeAppSupportWin.cpp',
    ]
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
    UNIFIED_SOURCES += [
        'MacApplicationDelegate.mm',
        'MacAutoreleasePool.mm',
        'MacLaunchHelper.mm',
        'nsCommandLineServiceMac.cpp',
        'nsNativeAppSupportCocoa.mm',
        'updaterfileutils_osx.mm',
    ]
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
    UNIFIED_SOURCES += [
        'nsNativeAppSupportDefault.cpp',
        'UIKitDirProvider.mm',
    ]
elif 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
    UNIFIED_SOURCES += [
        'nsNativeAppSupportUnix.cpp',
    ]
else:
    UNIFIED_SOURCES += [
        'nsNativeAppSupportDefault.cpp',
    ]

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3':
    UNIFIED_SOURCES += [
        'nsGDKErrorHandler.cpp',
    ]

if CONFIG['MOZ_X11']:
    EXPORTS += ['nsX11ErrorHandler.h']
    UNIFIED_SOURCES += [
        'nsX11ErrorHandler.cpp',
    ]

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
    UNIFIED_SOURCES += [
        'nsAndroidStartup.cpp',
    ]

UNIFIED_SOURCES += [
    'CreateAppData.cpp',
    'nsConsoleWriter.cpp',
    'nsNativeAppSupportBase.cpp',
    'nsSigHandlers.cpp',
    'nsXREDirProvider.cpp',
]

# nsAppRunner.cpp and ProfileReset.cpp cannot be built in unified mode because
# they pull in OS X system headers.
# nsEmbedFunctions.cpp cannot be built in unified mode because it pulls in X11 headers.
SOURCES += [
    'nsAppRunner.cpp',
    'nsEmbedFunctions.cpp',
    'ProfileReset.cpp',
]

if CONFIG['MOZ_GL_DEFAULT_PROVIDER'] == 'GLX':
    UNIFIED_SOURCES += [
        'glxtest.cpp',
    ]

if CONFIG['MOZ_INSTRUMENT_EVENT_LOOP']:
    UNIFIED_SOURCES += [
        'EventTracer.cpp',
    ]

if CONFIG['MOZ_UPDATER']:
    if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'android':
        UNIFIED_SOURCES += [
            'nsUpdateDriver.cpp',
        ]

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

FINAL_LIBRARY = 'xul'

if CONFIG['MOZ_GL_DEFAULT_PROVIDER'] == 'GLX':
    DEFINES['USE_GLX_TEST'] = True

for var in ('MOZ_APP_NAME', 'MOZ_APP_BASENAME', 'MOZ_APP_VERSION', 'OS_TARGET',
            'MOZ_WIDGET_TOOLKIT'):
    DEFINES[var] = '"%s"' % CONFIG[var]

if CONFIG['MOZ_UPDATER'] and CONFIG['MOZ_WIDGET_TOOLKIT'] != 'android':
    DEFINES['MOZ_UPDATER'] = True

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
    DEFINES['WIN32_LEAN_AND_MEAN'] = True
    DEFINES['UNICODE'] = True
    DEFINES['_UNICODE'] = True

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
    DEFINES['ANDROID_PACKAGE_NAME'] = '"%s"' % CONFIG['ANDROID_PACKAGE_NAME']

if CONFIG['TARGET_XPCOM_ABI']:
    DEFINES['TARGET_OS_ABI'] = '"%s_%s"' % (CONFIG['OS_TARGET'],
                                            CONFIG['TARGET_XPCOM_ABI'])

if CONFIG['OS_ARCH'] == 'Linux' and 'lib64' in CONFIG['libdir']:
    DEFINES['HAVE_USR_LIB64_DIR'] = True

DEFINES['GRE_MILESTONE'] = CONFIG['GRE_MILESTONE']

for var in ('APP_VERSION', 'APP_ID'):
    DEFINES[var] = CONFIG['MOZ_%s' % var]

if CONFIG['MOZ_PHOENIX']:
    DEFINES['MOZ_BUILD_APP_IS_BROWSER'] = True

LOCAL_INCLUDES += [
    '../profile',
    '/config',
    '/dom/base',
    '/dom/ipc',
    '/testing/gtest/mozilla',
    '/toolkit/crashreporter',
    '/xpcom/build',
]

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

if CONFIG['MOZ_ENABLE_XREMOTE']:
    LOCAL_INCLUDES += [
        '/widget/xremoteclient',
    ]

CXXFLAGS += CONFIG['TK_CFLAGS']
CXXFLAGS += CONFIG['MOZ_DBUS_CFLAGS']
CXXFLAGS += CONFIG['MOZ_DBUS_GLIB_CFLAGS']

if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
    CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS']

DEFINES['TOPOBJDIR'] = TOPOBJDIR
FINAL_TARGET_PP_FILES += [
    'platform.ini'
]

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

if CONFIG['MOZ_IPDL_TESTS']:
    DEFINES['MOZ_IPDL_TESTS'] = True