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

EXPORTS.mozilla += [
    'Hal.h',
    'HalImpl.h',
    'HalSandbox.h',
    'HalScreenConfiguration.h',
    'HalSensor.h',
    'HalTypes.h',
    'HalWakeLock.h',
]

UNIFIED_SOURCES += [
    'HalWakeLock.cpp',
    'sandbox/SandboxHal.cpp',
    'WindowIdentifier.cpp',
]

# Hal.cpp cannot be built in unified mode because it relies on HalImpl.h.
SOURCES += [
    'Hal.cpp',
]

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
    LOCAL_INCLUDES += [
        '/widget/android',
    ]
    UNIFIED_SOURCES += [
        'android/AndroidAlarm.cpp',
        'android/AndroidSensor.cpp',
        'fallback/FallbackPower.cpp',
        'linux/LinuxMemory.cpp',
    ]
    # AndroidHal.cpp cannot be built in unified mode because it relies on HalImpl.h.
    SOURCES += [
        'android/AndroidHal.cpp',
    ]
elif CONFIG['OS_TARGET'] == 'Linux':
    UNIFIED_SOURCES += [
        'fallback/FallbackAlarm.cpp',
        'fallback/FallbackScreenConfiguration.cpp',
        'fallback/FallbackSensor.cpp',
        'fallback/FallbackVibration.cpp',
        'linux/LinuxMemory.cpp',
        'linux/LinuxPower.cpp',
    ]
    if CONFIG['MOZ_ENABLE_DBUS']:
        UNIFIED_SOURCES += [
            'linux/UPowerClient.cpp',
        ]
    else:
        UNIFIED_SOURCES += [
            'fallback/FallbackBattery.cpp',
        ]
elif CONFIG['OS_TARGET'] == 'WINNT':
    UNIFIED_SOURCES += [
        'fallback/FallbackAlarm.cpp',
        'fallback/FallbackMemory.cpp',
        'fallback/FallbackPower.cpp',
        'fallback/FallbackScreenConfiguration.cpp',
        'fallback/FallbackVibration.cpp',
        'windows/WindowsSensor.cpp',
    ]
    # WindowsBattery.cpp cannot be built in unified mode because it relies on HalImpl.h.
    SOURCES += [
        'windows/WindowsBattery.cpp',
    ]
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
    UNIFIED_SOURCES += [
        'cocoa/CocoaBattery.cpp',
        'fallback/FallbackAlarm.cpp',
        'fallback/FallbackMemory.cpp',
        'fallback/FallbackPower.cpp',
        'fallback/FallbackScreenConfiguration.cpp',
        'fallback/FallbackVibration.cpp',
    ]
elif CONFIG['OS_TARGET'] in ('OpenBSD', 'NetBSD', 'FreeBSD', 'DragonFly'):
    UNIFIED_SOURCES += [
        'fallback/FallbackAlarm.cpp',
        'fallback/FallbackMemory.cpp',
        'fallback/FallbackPower.cpp',
        'fallback/FallbackScreenConfiguration.cpp',
        'fallback/FallbackSensor.cpp',
        'fallback/FallbackVibration.cpp',
    ]
    if CONFIG['MOZ_ENABLE_DBUS']:
        UNIFIED_SOURCES += [
            'linux/UPowerClient.cpp',
        ]
    else:
        UNIFIED_SOURCES += [
            'fallback/FallbackBattery.cpp',
        ]
else:
    UNIFIED_SOURCES += [
        'fallback/FallbackAlarm.cpp',
        'fallback/FallbackBattery.cpp',
        'fallback/FallbackMemory.cpp',
        'fallback/FallbackPower.cpp',
        'fallback/FallbackScreenConfiguration.cpp',
        'fallback/FallbackSensor.cpp',
        'fallback/FallbackVibration.cpp',
    ]

UNIFIED_SOURCES += [
    'fallback/FallbackDiskSpaceWatcher.cpp',
    'fallback/FallbackFactoryReset.cpp',
    'fallback/FallbackProcessPriority.cpp',
    'fallback/FallbackScreenPower.cpp',
    'fallback/FallbackSwitch.cpp',
    'fallback/FallbackSystemService.cpp',
    'fallback/FallbackThreadPriority.cpp',
    'fallback/FallbackTime.cpp',
    'fallback/FallbackWakeLocks.cpp',
]

# Fallbacks for backends implemented on Android only.
if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'android':
    UNIFIED_SOURCES += [
        'fallback/FallbackNetwork.cpp',
    ]

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
    UNIFIED_SOURCES += [
        'cocoa/CocoaSensor.mm',
        'cocoa/smslib.mm',
    ]

IPDL_SOURCES = [
    'sandbox/PHal.ipdl',
]

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

FINAL_LIBRARY = 'xul'

if CONFIG['MOZ_GAMEPAD']:
    LOCAL_INCLUDES += [
        '/dom/base',
    ]

CFLAGS += CONFIG['GLIB_CFLAGS']
CFLAGS += CONFIG['MOZ_DBUS_GLIB_CFLAGS']
CXXFLAGS += CONFIG['GLIB_CFLAGS']
CXXFLAGS += CONFIG['MOZ_DBUS_GLIB_CFLAGS']