# -*- Mode: python; c-basic-offset: 4; 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/.

DIRS += ['locales']

CONFIGURE_SUBST_FILES += ['adjust_sdk_app_token']

include('android-services.mozbuild')

geckoview_source_dir = TOPSRCDIR + '/mobile/android/geckoview/src/main/'
geckoview_thirdparty_source_dir = TOPSRCDIR + '/mobile/android/geckoview/src/thirdparty/'
thirdparty_source_dir = TOPSRCDIR + '/mobile/android/thirdparty/'

constants_jar = add_java_jar('constants')
constants_jar.sources += [geckoview_source_dir + 'java/org/mozilla/gecko/' + x for x in [
    'annotation/JNITarget.java',
    'annotation/ReflectionTarget.java',
    'annotation/RobocopTarget.java',
    'annotation/WebRTCJNITarget.java',
    'annotation/WrapForJNI.java',
    'SysInfo.java',
]]
constants_jar.sources += ['java/org/mozilla/gecko/' + x for x in [
    'adjust/AdjustHelperInterface.java',
    'adjust/AttributionHelperListener.java',
    'db/BrowserContract.java',
    'LocaleManager.java',
    'Locales.java',
]]
constants_jar.generated_sources = [
    'preprocessed/org/mozilla/gecko/AdjustConstants.java',
    'preprocessed/org/mozilla/gecko/AppConstants.java',
]
constants_jar.extra_jars = [
    CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
    CONFIG['ANDROID_APPCOMPAT_V7_AAR_LIB'],
]

if CONFIG['MOZ_INSTALL_TRACKING']:
    constants_jar.sources += ['java/org/mozilla/gecko/' + x for x in [
        'adjust/AdjustHelper.java',
    ]]
    constants_jar.extra_jars += [
        'gecko-thirdparty-adjust_sdk.jar',
    ]
else:
    constants_jar.sources += ['java/org/mozilla/gecko/' + x for x in [
        'adjust/StubAdjustHelper.java',
    ]]

resjar = add_java_jar('gecko-R')
resjar.sources = []
resjar.generated_sources += [
    'org/mozilla/gecko/R.java',
]

if CONFIG['ANDROID_SUPPORT_V4_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.v4']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_SUPPORT_V4_AAR_RES']]
# (no resources) resjar.generated_sources += ['android/support/v4/R.java']
if CONFIG['ANDROID_APPCOMPAT_V7_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.v7.appcompat']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_APPCOMPAT_V7_AAR_RES']]
    resjar.generated_sources += ['android/support/v7/appcompat/R.java']
if CONFIG['ANDROID_SUPPORT_VECTOR_DRAWABLE_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.graphics.drawable']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_SUPPORT_VECTOR_DRAWABLE_AAR_RES']]
# (no reosurces) resjar.generated_sources += ['android/support/graphics/drawable/R.java']
if CONFIG['ANDROID_ANIMATED_VECTOR_DRAWABLE_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.graphics.drawable.animated']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_ANIMATED_VECTOR_DRAWABLE_AAR_RES']]
# (no resources) resjar.generated_sources += ['android/support/graphics/drawable/animated/R.java']
if CONFIG['ANDROID_CARDVIEW_V7_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.v7.cardview']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_CARDVIEW_V7_AAR_RES']]
    resjar.generated_sources += ['android/support/v7/cardview/R.java']
if CONFIG['ANDROID_DESIGN_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.design']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_DESIGN_AAR_RES']]
    resjar.generated_sources += ['android/support/design/R.java']
if CONFIG['ANDROID_RECYCLERVIEW_V7_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.v7.recyclerview']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_RECYCLERVIEW_V7_AAR_RES']]
    resjar.generated_sources += ['android/support/v7/recyclerview/R.java']
if CONFIG['ANDROID_CUSTOMTABS_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.customtabs']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_CUSTOMTABS_AAR_RES']]
# (no resources) resjar.generated_sources += ['android/support/customtabs/R.java']
if CONFIG['ANDROID_PALETTE_V7_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.v7.palette']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PALETTE_V7_AAR_RES']]
# (no resources) resjar.generated_sources += ['android/support/v7/palette/R.java']

resjar.javac_flags += ['-Xlint:all']

mgjar = add_java_jar('gecko-mozglue')
mgjar.sources += [geckoview_source_dir + 'java/org/mozilla/gecko/' + x for x in [
    'mozglue/ByteBufferInputStream.java',
    'mozglue/DirectBufferAllocator.java',
    'mozglue/GeckoLoader.java',
    'mozglue/JNIObject.java',
    'mozglue/NativeReference.java',
    'mozglue/NativeZip.java',
    'mozglue/SafeIntent.java',
]]
mgjar.generated_sources = [] # Keep it this way.
mgjar.extra_jars += [
    CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
    'constants.jar',
]
mgjar.javac_flags += ['-Xlint:all']

gujar = add_java_jar('gecko-util')
gujar.sources += [geckoview_source_dir + 'java/org/mozilla/gecko/' + x for x in [
    'util/ActivityResultHandler.java',
    'util/ActivityResultHandlerMap.java',
    'util/ActivityUtils.java',
    'util/BundleEventListener.java',
    'util/Clipboard.java',
    'util/ContextUtils.java',
    'util/DateUtil.java',
    'util/EventCallback.java',
    'util/FileUtils.java',
    'util/FloatUtils.java',
    'util/GamepadUtils.java',
    'util/GeckoBackgroundThread.java',
    'util/GeckoEventListener.java',
    'util/GeckoJarReader.java',
    'util/GeckoRequest.java',
    'util/HardwareCodecCapabilityUtils.java',
    'util/HardwareUtils.java',
    'util/INIParser.java',
    'util/INISection.java',
    'util/InputOptionsUtils.java',
    'util/IntentUtils.java',
    'util/IOUtils.java',
    'util/JSONUtils.java',
    'util/MenuUtils.java',
    'util/NativeEventListener.java',
    'util/NativeJSContainer.java',
    'util/NativeJSObject.java',
    'util/NetworkUtils.java',
    'util/NonEvictingLruCache.java',
    'util/PrefUtils.java',
    'util/ProxySelector.java',
    'util/publicsuffix/PublicSuffix.java',
    'util/publicsuffix/PublicSuffixPatterns.java',
    'util/RawResource.java',
    'util/StringUtils.java',
    'util/ThreadUtils.java',
    'util/UIAsyncTask.java',
    'util/UUIDUtil.java',
    'util/WeakReferenceHandler.java',
    'util/WindowUtils.java',
]]
gujar.extra_jars = [
    CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
    'constants.jar',
    'gecko-mozglue.jar',
]
gujar.javac_flags += ['-Xlint:all,-deprecation']

stjar = add_java_jar('sync-thirdparty')
stjar.sources += [ thirdparty_source_dir + f for f in sync_thirdparty_java_files ]
stjar.javac_flags = ['-Xlint:none']

services_jar = add_java_jar('services')
services_jar.sources += sync_java_files
services_jar.extra_jars = [
    CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
    CONFIG['ANDROID_APPCOMPAT_V7_AAR_LIB'],
    'constants.jar',
    'gecko-R.jar',
    'gecko-mozglue.jar',
    'gecko-thirdparty.jar',
    'gecko-util.jar',
    'sync-thirdparty.jar',
]
services_jar.javac_flags += ['-Xlint:all,-deprecation']

if CONFIG['MOZ_WEBRTC']:
    video_root = TOPSRCDIR + '/media/webrtc/trunk/webrtc/modules/video_capture/android/java/src/org/webrtc/videoengine/'
    video_render_root = TOPSRCDIR + '/media/webrtc/trunk/webrtc/modules/video_render/android/java/src/org/webrtc/videoengine/'
    audio_root = TOPSRCDIR + '/media/webrtc/trunk/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/'
    wrjar = add_java_jar('webrtc')
    wrjar.sources += [
        video_root + 'CaptureCapabilityAndroid.java',
        video_root + 'VideoCaptureAndroid.java',
        video_root + 'VideoCaptureDeviceInfoAndroid.java',
        video_render_root + 'ViEAndroidGLES20.java',
        video_render_root + 'ViERenderer.java',
    ]
    wrjar.sources += [
        audio_root + 'AudioManagerAndroid.java',
        audio_root + 'WebRtcAudioManager.java',
        audio_root + 'WebRtcAudioRecord.java',
        audio_root + 'WebRtcAudioTrack.java',
        audio_root + 'WebRtcAudioUtils.java',
    ]
    wrjar.extra_jars = [
        'constants.jar',
        'gecko-R.jar',
        'gecko-browser.jar',
        'gecko-mozglue.jar',
        'gecko-util.jar',
        'gecko-view.jar',
    ]
    wrjar.javac_flags += ['-Xlint:all,-deprecation,-cast']

gvjar = add_java_jar('gecko-view')

gvjar.sources += [geckoview_source_dir + 'java/org/mozilla/gecko/' + x
                  for x in [
    'AlarmReceiver.java',
    'AndroidGamepadManager.java',
    'BaseGeckoInterface.java',
    'ContextGetter.java',
    'CrashHandler.java',
    'EventDispatcher.java',
    'GeckoAccessibility.java',
    'GeckoAppShell.java',
    'GeckoBatteryManager.java',
    'GeckoEditable.java',
    'GeckoEditableClient.java',
    'GeckoEditableListener.java',
    'GeckoHalDefines.java',
    'GeckoInputConnection.java',
    'GeckoNetworkManager.java',
    'GeckoProfile.java',
    'GeckoProfileDirectories.java',
    'GeckoScreenOrientation.java',
    'GeckoSharedPrefs.java',
    'GeckoThread.java',
    'GeckoView.java',
    'GeckoViewChrome.java',
    'GeckoViewContent.java',
    'GeckoViewFragment.java',
    'gfx/BitmapUtils.java',
    'gfx/BufferedImage.java',
    'gfx/BufferedImageGLInfo.java',
    'gfx/DynamicToolbarAnimator.java',
    'gfx/FloatSize.java',
    'gfx/FullScreenState.java',
    'gfx/GeckoLayerClient.java',
    'gfx/ImmutableViewportMetrics.java',
    'gfx/IntSize.java',
    'gfx/LayerRenderer.java',
    'gfx/LayerView.java',
    'gfx/NativePanZoomController.java',
    'gfx/Overscroll.java',
    'gfx/OverscrollEdgeEffect.java',
    'gfx/PanningPerfAPI.java',
    'gfx/PanZoomController.java',
    'gfx/PanZoomTarget.java',
    'gfx/PointUtils.java',
    'gfx/ProgressiveUpdateData.java',
    'gfx/RectUtils.java',
    'gfx/RenderTask.java',
    'gfx/StackScroller.java',
    'gfx/SurfaceTextureListener.java',
    'gfx/ViewTransform.java',
    'InputConnectionListener.java',
    'InputMethods.java',
    'NotificationListener.java',
    'NSSBridge.java',
    'permissions/PermissionBlock.java',
    'permissions/Permissions.java',
    'permissions/PermissionsHelper.java',
    'PrefsHelper.java',
    'sqlite/ByteBufferInputStream.java',
    'sqlite/MatrixBlobCursor.java',
    'sqlite/SQLiteBridge.java',
    'sqlite/SQLiteBridgeException.java',
    'TouchEventInterceptor.java',
]]

gvjar.sources += [geckoview_thirdparty_source_dir + f for f in [
    'java/com/googlecode/eyesfree/braille/selfbraille/ISelfBrailleService.java',
    'java/com/googlecode/eyesfree/braille/selfbraille/SelfBrailleClient.java',
    'java/com/googlecode/eyesfree/braille/selfbraille/WriteData.java',
]]

gvjar.extra_jars += [
    CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
    'constants.jar',
    'gecko-mozglue.jar',
    'gecko-util.jar',
]

gvjar.javac_flags += [
    '-Xlint:all,-deprecation,-fallthrough',
    '-J-Xmx512m',
    '-J-Xms128m'
]


gbjar = add_java_jar('gecko-browser')

gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
    'AboutPages.java',
    'AccountsHelper.java',
    'ActionBarTextSelection.java',
    'ActionModeCompat.java',
    'ActionModeCompatView.java',
    'ActivityHandlerHelper.java',
    'activitystream/ActivityStream.java',
    'adjust/AdjustBrowserAppDelegate.java',
    'animation/AnimationUtils.java',
    'animation/HeightChangeAnimation.java',
    'animation/PropertyAnimator.java',
    'animation/Rotate3DAnimation.java',
    'animation/ViewHelper.java',
    'ANRReporter.java',
    'BootReceiver.java',
    'BrowserApp.java',
    'BrowserLocaleManager.java',
    'cleanup/FileCleanupController.java',
    'cleanup/FileCleanupService.java',
    'CustomEditText.java',
    'customtabs/CustomTabsActivity.java',
    'customtabs/GeckoCustomTabsService.java',
    'DataReportingNotification.java',
    'db/AbstractPerProfileDatabaseProvider.java',
    'db/AbstractTransactionalProvider.java',
    'db/BaseTable.java',
    'db/BrowserDatabaseHelper.java',
    'db/BrowserDB.java',
    'db/BrowserProvider.java',
    'db/DBUtils.java',
    'db/FormHistoryProvider.java',
    'db/HomeProvider.java',
    'db/LocalBrowserDB.java',
    'db/LocalSearches.java',
    'db/LocalTabsAccessor.java',
    'db/LocalUrlAnnotations.java',
    'db/LocalURLMetadata.java',
    'db/LoginsProvider.java',
    'db/PasswordsProvider.java',
    'db/PerProfileDatabaseProvider.java',
    'db/PerProfileDatabases.java',
    'db/RemoteClient.java',
    'db/RemoteTab.java',
    'db/Searches.java',
    'db/SearchHistoryProvider.java',
    'db/SharedBrowserDatabaseProvider.java',
    'db/SQLiteBridgeContentProvider.java',
    'db/SuggestedSites.java',
    'db/Table.java',
    'db/TabsAccessor.java',
    'db/TabsProvider.java',
    'db/UrlAnnotations.java',
    'db/URLMetadata.java',
    'db/URLMetadataTable.java',
    'delegates/BookmarkStateChangeDelegate.java',
    'delegates/BrowserAppDelegate.java',
    'delegates/BrowserAppDelegateWithReference.java',
    'delegates/OfflineTabStatusDelegate.java',
    'delegates/ScreenshotDelegate.java',
    'delegates/TabsTrayVisibilityAwareDelegate.java',
    'DevToolsAuthHelper.java',
    'distribution/Distribution.java',
    'distribution/DistributionStoreCallback.java',
    'distribution/PartnerBookmarksProviderProxy.java',
    'distribution/PartnerBrowserCustomizationsClient.java',
    'distribution/ReferrerDescriptor.java',
    'distribution/ReferrerReceiver.java',
    'dlc/BaseAction.java',
    'dlc/catalog/DownloadContent.java',
    'dlc/catalog/DownloadContentBootstrap.java',
    'dlc/catalog/DownloadContentBuilder.java',
    'dlc/catalog/DownloadContentCatalog.java',
    'dlc/DownloadAction.java',
    'dlc/DownloadContentService.java',
    'dlc/StudyAction.java',
    'dlc/SyncAction.java',
    'dlc/VerifyAction.java',
    'DoorHangerPopup.java',
    'DownloadsIntegration.java',
    'DynamicToolbar.java',
    'EditBookmarkDialog.java',
    'Experiments.java',
    'feeds/action/CheckForUpdatesAction.java',
    'feeds/action/EnrollSubscriptionsAction.java',
    'feeds/action/FeedAction.java',
    'feeds/action/SetupAlarmsAction.java',
    'feeds/action/SubscribeToFeedAction.java',
    'feeds/action/WithdrawSubscriptionsAction.java',
    'feeds/ContentNotificationsDelegate.java',
    'feeds/FeedAlarmReceiver.java',
    'feeds/FeedFetcher.java',
    'feeds/FeedService.java',
    'feeds/knownsites/KnownSite.java',
    'feeds/knownsites/KnownSiteBlogger.java',
    'feeds/knownsites/KnownSiteMedium.java',
    'feeds/knownsites/KnownSiteTumblr.java',
    'feeds/knownsites/KnownSiteWordpress.java',
    'feeds/parser/Feed.java',
    'feeds/parser/Item.java',
    'feeds/parser/SimpleFeedParser.java',
    'feeds/subscriptions/FeedSubscription.java',
    'FilePicker.java',
    'FilePickerResultHandler.java',
    'FindInPageBar.java',
    'firstrun/DataPanel.java',
    'firstrun/FirstrunAnimationContainer.java',
    'firstrun/FirstrunPager.java',
    'firstrun/FirstrunPagerConfig.java',
    'firstrun/FirstrunPanel.java',
    'firstrun/RestrictedWelcomePanel.java',
    'firstrun/SyncPanel.java',
    'firstrun/TabQueuePanel.java',
    'FormAssistPopup.java',
    'GeckoActivity.java',
    'GeckoActivityStatus.java',
    'GeckoApp.java',
    'GeckoApplication.java',
    'GeckoJavaSampler.java',
    'GeckoMessageReceiver.java',
    'GeckoProfilesProvider.java',
    'GeckoService.java',
    'GeckoUpdateReceiver.java',
    'GlobalHistory.java',
    'GlobalPageMetadata.java',
    'GuestSession.java',
    'health/HealthRecorder.java',
    'health/SessionInformation.java',
    'health/StubbedHealthRecorder.java',
    'home/activitystream/ActivityStream.java',
    'home/activitystream/ActivityStreamHomeFragment.java',
    'home/activitystream/ActivityStreamHomeScreen.java',
    'home/activitystream/menu/ActivityStreamContextMenu.java',
    'home/activitystream/menu/BottomSheetContextMenu.java',
    'home/activitystream/menu/PopupContextMenu.java',
    'home/activitystream/StreamItem.java',
    'home/activitystream/StreamRecyclerAdapter.java',
    'home/activitystream/topsites/CirclePageIndicator.java',
    'home/activitystream/topsites/TopSitesCard.java',
    'home/activitystream/topsites/TopSitesPage.java',
    'home/activitystream/topsites/TopSitesPageAdapter.java',
    'home/activitystream/topsites/TopSitesPagerAdapter.java',
    'home/BookmarkFolderView.java',
    'home/BookmarkScreenshotRow.java',
    'home/BookmarksListAdapter.java',
    'home/BookmarksListView.java',
    'home/BookmarksPanel.java',
    'home/BrowserSearch.java',
    'home/ClientsAdapter.java',
    'home/CombinedHistoryAdapter.java',
    'home/CombinedHistoryItem.java',
    'home/CombinedHistoryPanel.java',
    'home/CombinedHistoryRecyclerView.java',
    'home/DynamicPanel.java',
    'home/FramePanelLayout.java',
    'home/HistorySectionsHelper.java',
    'home/HomeAdapter.java',
    'home/HomeBanner.java',
    'home/HomeConfig.java',
    'home/HomeConfigLoader.java',
    'home/HomeConfigPrefsBackend.java',
    'home/HomeContextMenuInfo.java',
    'home/HomeExpandableListView.java',
    'home/HomeFragment.java',
    'home/HomeListView.java',
    'home/HomePager.java',
    'home/HomePanelsManager.java',
    'home/HomeScreen.java',
    'home/ImageLoader.java',
    'home/MultiTypeCursorAdapter.java',
    'home/PanelAuthCache.java',
    'home/PanelAuthLayout.java',
    'home/PanelBackItemView.java',
    'home/PanelHeaderView.java',
    'home/PanelInfoManager.java',
    'home/PanelItemView.java',
    'home/PanelLayout.java',
    'home/PanelListView.java',
    'home/PanelRecyclerView.java',
    'home/PanelRecyclerViewAdapter.java',
    'home/PanelRefreshLayout.java',
    'home/PanelViewAdapter.java',
    'home/PanelViewItemHandler.java',
    'home/PinSiteDialog.java',
    'home/RecentTabsAdapter.java',
    'home/RemoteTabsExpandableListState.java',
    'home/SearchEngine.java',
    'home/SearchEngineAdapter.java',
    'home/SearchEngineBar.java',
    'home/SearchEngineRow.java',
    'home/SearchLoader.java',
    'home/SimpleCursorLoader.java',
    'home/SpacingDecoration.java',
    'home/TabMenuStrip.java',
    'home/TabMenuStripLayout.java',
    'home/TopSitesGridItemView.java',
    'home/TopSitesGridView.java',
    'home/TopSitesPanel.java',
    'home/TopSitesThumbnailView.java',
    'home/TwoLinePageRow.java',
    'icons/decoders/FaviconDecoder.java',
    'icons/decoders/ICODecoder.java',
    'icons/decoders/IconDirectoryEntry.java',
    'icons/decoders/LoadFaviconResult.java',
    'icons/IconCallback.java',
    'icons/IconDescriptor.java',
    'icons/IconDescriptorComparator.java',
    'icons/IconRequest.java',
    'icons/IconRequestBuilder.java',
    'icons/IconRequestExecutor.java',
    'icons/IconResponse.java',
    'icons/Icons.java',
    'icons/IconsHelper.java',
    'icons/IconTask.java',
    'icons/loader/ContentProviderLoader.java',
    'icons/loader/DataUriLoader.java',
    'icons/loader/DiskLoader.java',
    'icons/loader/IconDownloader.java',
    'icons/loader/IconGenerator.java',
    'icons/loader/IconLoader.java',
    'icons/loader/JarLoader.java',
    'icons/loader/LegacyLoader.java',
    'icons/loader/MemoryLoader.java',
    'icons/preparation/AboutPagesPreparer.java',
    'icons/preparation/AddDefaultIconUrl.java',
    'icons/preparation/FilterKnownFailureUrls.java',
    'icons/preparation/FilterMimeTypes.java',
    'icons/preparation/FilterPrivilegedUrls.java',
    'icons/preparation/LookupIconUrl.java',
    'icons/preparation/Preparer.java',
    'icons/processing/ColorProcessor.java',
    'icons/processing/DiskProcessor.java',
    'icons/processing/MemoryProcessor.java',
    'icons/processing/Processor.java',
    'icons/processing/ResizingProcessor.java',
    'icons/storage/DiskStorage.java',
    'icons/storage/FailureCache.java',
    'icons/storage/MemoryStorage.java',
    'IntentHelper.java',
    'javaaddons/JavaAddonManager.java',
    'javaaddons/JavaAddonManagerV1.java',
    'LauncherActivity.java',
    'lwt/LightweightTheme.java',
    'lwt/LightweightThemeDrawable.java',
    'mdns/MulticastDNSManager.java',
    'media/AsyncCodec.java',
    'media/AsyncCodecFactory.java',
    'media/AudioFocusAgent.java',
    'media/Codec.java',
    'media/CodecProxy.java',
    'media/FormatParam.java',
    'media/GeckoMediaDrm.java',
    'media/GeckoMediaDrmBridgeV21.java',
    'media/GeckoMediaDrmBridgeV23.java',
    'media/JellyBeanAsyncCodec.java',
    'media/LocalMediaDrmBridge.java',
    'media/MediaControlService.java',
    'media/MediaDrmProxy.java',
    'media/MediaManager.java',
    'media/RemoteManager.java',
    'media/RemoteMediaDrmBridge.java',
    'media/RemoteMediaDrmBridgeStub.java',
    'media/Sample.java',
    'media/SamplePool.java',
    'media/SessionKeyInfo.java',
    'media/VideoPlayer.java',
    'MediaCastingBar.java',
    'MemoryMonitor.java',
    'menu/GeckoMenu.java',
    'menu/GeckoMenuInflater.java',
    'menu/GeckoMenuItem.java',
    'menu/GeckoSubMenu.java',
    'menu/MenuItemActionBar.java',
    'menu/MenuItemDefault.java',
    'menu/MenuItemSwitcherLayout.java',
    'menu/MenuPanel.java',
    'menu/MenuPopup.java',
    'MotionEventInterceptor.java',
    'mozglue/SharedMemBuffer.java',
    'mozglue/SharedMemory.java',
    'notifications/NotificationClient.java',
    'notifications/NotificationHelper.java',
    'notifications/NotificationReceiver.java',
    'notifications/NotificationService.java',
    'notifications/WhatsNewReceiver.java',
    'overlays/OverlayConstants.java',
    'overlays/service/OverlayActionService.java',
    'overlays/service/ShareData.java',
    'overlays/service/sharemethods/AddBookmark.java',
    'overlays/service/sharemethods/SendTab.java',
    'overlays/service/sharemethods/ShareMethod.java',
    'overlays/ui/OverlayDialogButton.java',
    'overlays/ui/SendTabDeviceListArrayAdapter.java',
    'overlays/ui/SendTabList.java',
    'overlays/ui/SendTabTargetSelectedListener.java',
    'overlays/ui/ShareDialog.java',
    'PackageReplacedReceiver.java',
    'preferences/AlignRightLinkPreference.java',
    'preferences/AndroidImport.java',
    'preferences/AndroidImportPreference.java',
    'preferences/AppCompatPreferenceActivity.java',
    'preferences/ClearOnShutdownPref.java',
    'preferences/CustomCheckBoxPreference.java',
    'preferences/CustomListCategory.java',
    'preferences/CustomListPreference.java',
    'preferences/DistroSharedPrefsImport.java',
    'preferences/FontSizePreference.java',
    'preferences/GeckoPreferenceFragment.java',
    'preferences/GeckoPreferences.java',
    'preferences/LinkPreference.java',
    'preferences/ListCheckboxPreference.java',
    'preferences/LocaleListPreference.java',
    'preferences/ModifiableHintPreference.java',
    'preferences/MultiChoicePreference.java',
    'preferences/MultiPrefMultiChoicePreference.java',
    'preferences/PanelsPreference.java',
    'preferences/PanelsPreferenceCategory.java',
    'preferences/PrivateDataPreference.java',
    'preferences/SearchEnginePreference.java',
    'preferences/SearchPreferenceCategory.java',
    'preferences/SetHomepagePreference.java',
    'preferences/SyncPreference.java',
    'PresentationView.java',
    'PrintHelper.java',
    'PrivateTab.java',
    'promotion/AddToHomeScreenPromotion.java',
    'promotion/HomeScreenPrompt.java',
    'promotion/ReaderViewBookmarkPromotion.java',
    'promotion/SimpleHelperUI.java',
    'prompts/ColorPickerInput.java',
    'prompts/IconGridInput.java',
    'prompts/IntentChooserPrompt.java',
    'prompts/IntentHandler.java',
    'prompts/Prompt.java',
    'prompts/PromptInput.java',
    'prompts/PromptListAdapter.java',
    'prompts/PromptListItem.java',
    'prompts/PromptService.java',
    'prompts/TabInput.java',
    'reader/ReaderModeUtils.java',
    'reader/ReadingListHelper.java',
    'reader/SavedReaderViewHelper.java',
    'RemoteClientsDialogFragment.java',
    'Restarter.java',
    'restrictions/DefaultConfiguration.java',
    'restrictions/GuestProfileConfiguration.java',
    'restrictions/Restrictable.java',
    'restrictions/RestrictedProfileConfiguration.java',
    'restrictions/RestrictionCache.java',
    'restrictions/RestrictionConfiguration.java',
    'restrictions/RestrictionProvider.java',
    'restrictions/Restrictions.java',
    'ScreenManagerHelper.java',
    'ScreenshotObserver.java',
    'search/SearchEngine.java',
    'search/SearchEngineManager.java',
    'SessionParser.java',
    'SharedPreferencesHelper.java',
    'SiteIdentity.java',
    'SnackbarBuilder.java',
    'SuggestClient.java',
    'Tab.java',
    'tabqueue/TabQueueHelper.java',
    'tabqueue/TabQueuePrompt.java',
    'tabqueue/TabQueueService.java',
    'tabqueue/TabReceivedService.java',
    'Tabs.java',
    'tabs/PrivateTabsPanel.java',
    'tabs/TabCurve.java',
    'tabs/TabHistoryController.java',
    'tabs/TabHistoryFragment.java',
    'tabs/TabHistoryItemRow.java',
    'tabs/TabHistoryPage.java',
    'tabs/TabPanelBackButton.java',
    'tabs/TabsGridLayout.java',
    'tabs/TabsLayout.java',
    'tabs/TabsLayoutAdapter.java',
    'tabs/TabsLayoutItemView.java',
    'tabs/TabsLayoutRecyclerAdapter.java',
    'tabs/TabsListLayout.java',
    'tabs/TabsListLayoutAnimator.java',
    'tabs/TabsPanel.java',
    'tabs/TabsPanelThumbnailView.java',
    'tabs/TabsTouchHelperCallback.java',
    'Telemetry.java',
    'telemetry/measurements/CampaignIdMeasurements.java',
    'telemetry/measurements/SearchCountMeasurements.java',
    'telemetry/measurements/SessionMeasurements.java',
    'telemetry/pingbuilders/TelemetryCorePingBuilder.java',
    'telemetry/pingbuilders/TelemetryPingBuilder.java',
    'telemetry/schedulers/TelemetryUploadAllPingsImmediatelyScheduler.java',
    'telemetry/schedulers/TelemetryUploadScheduler.java',
    'telemetry/stores/TelemetryJSONFilePingStore.java',
    'telemetry/stores/TelemetryPingStore.java',
    'telemetry/TelemetryConstants.java',
    'telemetry/TelemetryCorePingDelegate.java',
    'telemetry/TelemetryDispatcher.java',
    'telemetry/TelemetryPing.java',
    'telemetry/TelemetryPreferences.java',
    'telemetry/TelemetryUploadService.java',
    'TelemetryContract.java',
    'text/FloatingActionModeCallback.java',
    'text/FloatingToolbarTextSelection.java',
    'text/TextAction.java',
    'text/TextSelection.java',
    'ThumbnailHelper.java',
    'toolbar/AutocompleteHandler.java',
    'toolbar/BackButton.java',
    'toolbar/BrowserToolbar.java',
    'toolbar/BrowserToolbarPhone.java',
    'toolbar/BrowserToolbarPhoneBase.java',
    'toolbar/BrowserToolbarTablet.java',
    'toolbar/BrowserToolbarTabletBase.java',
    'toolbar/CanvasDelegate.java',
    'toolbar/ForwardButton.java',
    'toolbar/NavButton.java',
    'toolbar/PageActionLayout.java',
    'toolbar/PhoneTabsButton.java',
    'toolbar/ShapedButton.java',
    'toolbar/ShapedButtonFrameLayout.java',
    'toolbar/SiteIdentityPopup.java',
    'toolbar/TabCounter.java',
    'toolbar/ToolbarDisplayLayout.java',
    'toolbar/ToolbarEditLayout.java',
    'toolbar/ToolbarEditText.java',
    'toolbar/ToolbarPrefs.java',
    'toolbar/ToolbarProgressView.java',
    'trackingprotection/TrackingProtectionPrompt.java',
    'updater/PostUpdateHandler.java',
    'updater/UpdateService.java',
    'updater/UpdateServiceHelper.java',
    'util/ColorUtil.java',
    'util/DrawableUtil.java',
    'util/ResourceDrawableUtils.java',
    'util/TouchTargetUtil.java',
    'util/ViewUtil.java',
    'widget/ActivityChooserModel.java',
    'widget/AllCapsTextView.java',
    'widget/AnchoredPopup.java',
    'widget/AnimatedHeightLayout.java',
    'widget/BasicColorPicker.java',
    'widget/CheckableLinearLayout.java',
    'widget/ClickableWhenDisabledEditText.java',
    'widget/ContentSecurityDoorHanger.java',
    'widget/CropImageView.java',
    'widget/DateTimePicker.java',
    'widget/DefaultDoorHanger.java',
    'widget/DefaultItemAnimatorBase.java',
    'widget/DoorHanger.java',
    'widget/DoorhangerConfig.java',
    'widget/EllipsisTextView.java',
    'widget/ExternalIntentDuringPrivateBrowsingPromptFragment.java',
    'widget/FadedMultiColorTextView.java',
    'widget/FadedSingleColorTextView.java',
    'widget/FadedTextView.java',
    'widget/FaviconView.java',
    'widget/FilledCardView.java',
    'widget/FlowLayout.java',
    'widget/GeckoActionProvider.java',
    'widget/GeckoPopupMenu.java',
    'widget/HistoryDividerItemDecoration.java',
    'widget/IconTabWidget.java',
    'widget/LoginDoorHanger.java',
    'widget/RecyclerViewClickSupport.java',
    'widget/ResizablePathDrawable.java',
    'widget/RoundedCornerLayout.java',
    'widget/SiteLogins.java',
    'widget/SquaredImageView.java',
    'widget/SquaredRelativeLayout.java',
    'widget/SwipeDismissListViewTouchListener.java',
    'widget/TabThumbnailWrapper.java',
    'widget/ThumbnailView.java',
    'widget/TouchDelegateWithReset.java',
    'widget/TwoWayView.java',
    'ZoomedView.java',
]]
# The following sources are checked in to version control but
# generated by a script (java/org/mozilla/gecko/widget/themed/generate_themed_views.py).
# If you're editing this list, make sure to edit that script.
gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
    'widget/themed/ThemedEditText.java',
    'widget/themed/ThemedFrameLayout.java',
    'widget/themed/ThemedImageButton.java',
    'widget/themed/ThemedImageView.java',
    'widget/themed/ThemedLinearLayout.java',
    'widget/themed/ThemedRelativeLayout.java',
    'widget/themed/ThemedTextSwitcher.java',
    'widget/themed/ThemedTextView.java',
    'widget/themed/ThemedView.java',
]]
android_package_dir = CONFIG['ANDROID_PACKAGE_NAME'].replace('.', '/')
gbjar.generated_sources = [] # Keep it this way.
gbjar.extra_jars += [
    CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
    'constants.jar'
]
if CONFIG['MOZ_ANDROID_GCM']:
    gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
        'gcm/GcmInstanceIDListenerService.java',
        'gcm/GcmMessageListenerService.java',
        'gcm/GcmTokenClient.java',
        'push/Fetched.java',
        'push/PushClient.java',
        'push/PushManager.java',
        'push/PushRegistration.java',
        'push/PushService.java',
        'push/PushState.java',
        'push/PushSubscription.java',
    ]]

if (CONFIG['MOZ_ANDROID_MAX_SDK_VERSION']):
    max_sdk_version = int(CONFIG['MOZ_ANDROID_MAX_SDK_VERSION'])
else:
    max_sdk_version = 999

# Only bother to include new tablet code if we're building for tablet-capable
# OS releases.
if max_sdk_version >= 11:
    gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
        'tabs/TabStrip.java',
        'tabs/TabStripAdapter.java',
        'tabs/TabStripItemView.java',
        'tabs/TabStripView.java'
    ]]

gbjar.extra_jars += [
    OBJDIR + '/../javaaddons/javaaddons-1.0.jar',
    'gecko-R.jar',
    'gecko-mozglue.jar',
    'gecko-thirdparty.jar',
    'gecko-util.jar',
    'gecko-view.jar',
    'sync-thirdparty.jar',
    'services.jar',
]

moz_native_devices_jars = [
    CONFIG['ANDROID_MEDIAROUTER_V7_AAR_LIB'],
    CONFIG['ANDROID_MEDIAROUTER_V7_AAR_INTERNAL_LIB'],
    CONFIG['ANDROID_PLAY_SERVICES_BASE_AAR_LIB'],
    CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR_LIB'],
    CONFIG['ANDROID_PLAY_SERVICES_CAST_AAR_LIB'],
]
moz_native_devices_sources = ['java/org/mozilla/gecko/' + x for x in [
    'ChromeCastDisplay.java',
    'ChromeCastPlayer.java',
    'GeckoMediaPlayer.java',
    'GeckoPresentationDisplay.java',
    'MediaPlayerManager.java',
    'PresentationMediaPlayerManager.java',
    'RemotePresentationService.java',
]]
if CONFIG['MOZ_NATIVE_DEVICES']:
    gbjar.extra_jars += moz_native_devices_jars
    gbjar.sources += moz_native_devices_sources

    if CONFIG['ANDROID_MEDIAROUTER_V7_AAR']:
        ANDROID_EXTRA_PACKAGES += ['android.support.v7.mediarouter']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_MEDIAROUTER_V7_AAR_RES']]
        resjar.generated_sources += ['android/support/v7/mediarouter/R.java']

    if CONFIG['ANDROID_PLAY_SERVICES_BASE_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms.base']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_BASE_AAR_RES']]
        resjar.generated_sources += ['com/google/android/gms/base/R.java']

    if CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR_RES']]
        resjar.generated_sources += ['com/google/android/gms/R.java']

    if CONFIG['ANDROID_PLAY_SERVICES_CAST_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms.cast']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_CAST_AAR_RES']]
        resjar.generated_sources += ['com/google/android/gms/cast/R.java']

if CONFIG['MOZ_ANDROID_GCM']:
    gbjar.extra_jars += [
        CONFIG['ANDROID_PLAY_SERVICES_BASE_AAR_LIB'],
        CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR_LIB'],
        CONFIG['ANDROID_PLAY_SERVICES_GCM_AAR_LIB'],
        CONFIG['ANDROID_PLAY_SERVICES_MEASUREMENT_AAR_LIB'],
    ]

    if CONFIG['ANDROID_PLAY_SERVICES_BASE_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_BASE_AAR_RES']]
        resjar.generated_sources += ['com/google/android/gms/R.java']

    if CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR_RES']]
        resjar.generated_sources += ['com/google/android/gms/R.java']

    if CONFIG['ANDROID_PLAY_SERVICES_GCM_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms.gcm']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_GCM_AAR_RES']]
# (no resources) resjar.generated_sources += ['com/google/android/gms/gcm/R.java']

    if CONFIG['ANDROID_PLAY_SERVICES_MEASUREMENT_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms.measurement']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_MEASUREMENT_AAR_RES']]
# (no resources) resjar.generated_sources += ['android/support/v7/palette/R.java']

if CONFIG['MOZ_INSTALL_TRACKING']:
    gbjar.extra_jars += [
        CONFIG['ANDROID_PLAY_SERVICES_ADS_AAR_LIB'],
        CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR_LIB'],
    ]

    if CONFIG['ANDROID_PLAY_SERVICES_ADS_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms.ads']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_ADS_AAR_RES']]
        resjar.generated_sources += ['com/google/android/gms/ads/R.java']

    if CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR_RES']]
        resjar.generated_sources += ['com/google/android/gms/R.java']

gbjar.extra_jars += [CONFIG['ANDROID_APPCOMPAT_V7_AAR_LIB']]
gbjar.extra_jars += [CONFIG['ANDROID_SUPPORT_VECTOR_DRAWABLE_AAR_LIB']]
gbjar.extra_jars += [CONFIG['ANDROID_ANIMATED_VECTOR_DRAWABLE_AAR_LIB']]
gbjar.extra_jars += [CONFIG['ANDROID_CARDVIEW_V7_AAR_LIB']]
gbjar.extra_jars += [CONFIG['ANDROID_DESIGN_AAR_LIB']]
gbjar.extra_jars += [CONFIG['ANDROID_RECYCLERVIEW_V7_AAR_LIB']]
gbjar.extra_jars += [CONFIG['ANDROID_CUSTOMTABS_AAR_LIB']]
gbjar.extra_jars += [CONFIG['ANDROID_PALETTE_V7_AAR_LIB']]

gbjar.javac_flags += ['-Xlint:all,-deprecation,-fallthrough', '-J-Xmx512m', '-J-Xms128m']

# gecko-thirdparty is a good place to put small independent libraries
gtjar = add_java_jar('gecko-thirdparty')
gtjar.sources += [ thirdparty_source_dir + f for f in [
    'com/jakewharton/disklrucache/DiskLruCache.java',
    'com/jakewharton/disklrucache/StrictLineReader.java',
    'com/jakewharton/disklrucache/Util.java',
    'com/keepsafe/switchboard/AsyncConfigLoader.java',
    'com/keepsafe/switchboard/DeviceUuidFactory.java',
    'com/keepsafe/switchboard/Preferences.java',
    'com/keepsafe/switchboard/Switch.java',
    'com/keepsafe/switchboard/SwitchBoard.java',
    'com/squareup/leakcanary/LeakCanary.java',
    'com/squareup/leakcanary/RefWatcher.java',
    'com/squareup/picasso/Action.java',
    'com/squareup/picasso/AssetBitmapHunter.java',
    'com/squareup/picasso/BitmapHunter.java',
    'com/squareup/picasso/Cache.java',
    'com/squareup/picasso/Callback.java',
    'com/squareup/picasso/ContactsPhotoBitmapHunter.java',
    'com/squareup/picasso/ContentStreamBitmapHunter.java',
    'com/squareup/picasso/DeferredRequestCreator.java',
    'com/squareup/picasso/Dispatcher.java',
    'com/squareup/picasso/Downloader.java',
    'com/squareup/picasso/FetchAction.java',
    'com/squareup/picasso/FileBitmapHunter.java',
    'com/squareup/picasso/GetAction.java',
    'com/squareup/picasso/ImageViewAction.java',
    'com/squareup/picasso/LruCache.java',
    'com/squareup/picasso/MarkableInputStream.java',
    'com/squareup/picasso/MediaStoreBitmapHunter.java',
    'com/squareup/picasso/NetworkBitmapHunter.java',
    'com/squareup/picasso/Picasso.java',
    'com/squareup/picasso/PicassoDrawable.java',
    'com/squareup/picasso/PicassoExecutorService.java',
    'com/squareup/picasso/Request.java',
    'com/squareup/picasso/RequestCreator.java',
    'com/squareup/picasso/ResourceBitmapHunter.java',
    'com/squareup/picasso/Stats.java',
    'com/squareup/picasso/StatsSnapshot.java',
    'com/squareup/picasso/Target.java',
    'com/squareup/picasso/TargetAction.java',
    'com/squareup/picasso/Transformation.java',
    'com/squareup/picasso/UrlConnectionDownloader.java',
    'com/squareup/picasso/Utils.java'
] ]
gtjar.extra_jars = [
    CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
]

if not CONFIG['MOZILLA_OFFICIAL']:
    gtjar.sources += [ thirdparty_source_dir + f for f in [
        'org/lucasr/dspec/DesignSpec.java',
        'org/lucasr/dspec/RawResource.java'
    ] ]

if CONFIG['MOZ_INSTALL_TRACKING']:
    adjustjar = add_java_jar('gecko-thirdparty-adjust_sdk')
    adjustjar.sources += [ thirdparty_source_dir + f for f in [
        'com/adjust/sdk/ActivityHandler.java',
        'com/adjust/sdk/ActivityKind.java',
        'com/adjust/sdk/ActivityPackage.java',
        'com/adjust/sdk/ActivityState.java',
        'com/adjust/sdk/Adjust.java',
        'com/adjust/sdk/AdjustAttribution.java',
        'com/adjust/sdk/AdjustConfig.java',
        'com/adjust/sdk/AdjustEvent.java',
        'com/adjust/sdk/AdjustFactory.java',
        'com/adjust/sdk/AdjustInstance.java',
        'com/adjust/sdk/AdjustReferrerReceiver.java',
        'com/adjust/sdk/AttributionHandler.java',
        'com/adjust/sdk/Constants.java',
        'com/adjust/sdk/DeviceInfo.java',
        'com/adjust/sdk/IActivityHandler.java',
        'com/adjust/sdk/IAttributionHandler.java',
        'com/adjust/sdk/ILogger.java',
        'com/adjust/sdk/IPackageHandler.java',
        'com/adjust/sdk/IRequestHandler.java',
        'com/adjust/sdk/Logger.java',
        'com/adjust/sdk/LogLevel.java',
        'com/adjust/sdk/OnAttributionChangedListener.java',
        'com/adjust/sdk/PackageBuilder.java',
        'com/adjust/sdk/PackageHandler.java',
        'com/adjust/sdk/plugin/AndroidIdUtil.java',
        'com/adjust/sdk/plugin/MacAddressUtil.java',
        'com/adjust/sdk/plugin/Plugin.java',
        'com/adjust/sdk/Reflection.java',
        'com/adjust/sdk/RequestHandler.java',
        'com/adjust/sdk/UnitTestActivity.java',
        'com/adjust/sdk/Util.java'
    ] ]
    adjustjar.extra_jars += [
        'sync-thirdparty.jar',
    ]

# Putting branding earlier allows branders to override default resources.
ANDROID_RES_DIRS += [
    '/' + CONFIG['MOZ_BRANDING_DIRECTORY'] + '/res',
    'resources',
    '/mobile/android/services/src/main/res',
    '!res',
]

ANDROID_GENERATED_RESFILES += [
    'res/raw/browsersearch.json',
    'res/raw/suggestedsites.json',
    'res/values/strings.xml',
]

ANDROID_ASSETS_DIRS += [
    '/mobile/android/app/assets',
]

if CONFIG['MOZ_ANDROID_DISTRIBUTION_DIRECTORY']:
    # If you change this, also change its equivalent in mobile/android/bouncer.
    if not CONFIG['MOZ_ANDROID_PACKAGE_INSTALL_BOUNCER']:
        # If we are packaging the bouncer, it will have the distribution, so don't put
        # it in the main APK as well.
        ANDROID_ASSETS_DIRS += [
            '%' + CONFIG['MOZ_ANDROID_DISTRIBUTION_DIRECTORY'] + '/assets',
        ]

# We do not expose MOZ_ADJUST_SDK_KEY here because that # would leak the value
# to build logs.  Instead we expose the token quietly where appropriate in
# Makefile.in.
for var in ('MOZ_ANDROID_ANR_REPORTER', 'MOZ_DEBUG',
            'MOZ_ANDROID_SEARCH_ACTIVITY', 'MOZ_NATIVE_DEVICES', 'MOZ_ANDROID_MLS_STUMBLER',
            'MOZ_ANDROID_DOWNLOADS_INTEGRATION', 'MOZ_INSTALL_TRACKING',
            'MOZ_ANDROID_GCM', 'MOZ_ANDROID_EXCLUDE_FONTS', 'MOZ_LOCALE_SWITCHER',
            'MOZ_ANDROID_BEAM', 'MOZ_ANDROID_DOWNLOAD_CONTENT_SERVICE',
            'MOZ_SWITCHBOARD', 'MOZ_ANDROID_CUSTOM_TABS',
            'MOZ_ANDROID_ACTIVITY_STREAM'):
    if CONFIG[var]:
        DEFINES[var] = 1

for var in ('MOZ_UPDATER', 'MOZ_PKG_SPECIAL', 'MOZ_ANDROID_GCM_SENDERID'):
    if CONFIG[var]:
        DEFINES[var] = CONFIG[var]

for var in ('ANDROID_PACKAGE_NAME', 'ANDROID_CPU_ARCH',
            'GRE_MILESTONE', 'MOZ_APP_BASENAME', 'MOZ_MOZILLA_API_KEY',
            'MOZ_APP_DISPLAYNAME', 'MOZ_APP_UA_NAME', 'MOZ_APP_ID', 'MOZ_APP_NAME',
            'MOZ_APP_VENDOR', 'MOZ_APP_VERSION', 'MOZ_CHILD_PROCESS_NAME',
            'MOZ_ANDROID_APPLICATION_CLASS', 'MOZ_ANDROID_BROWSER_INTENT_CLASS', 'MOZ_ANDROID_SEARCH_INTENT_CLASS',
            'MOZ_UPDATE_CHANNEL', 'OMNIJAR_NAME',
            'OS_TARGET', 'TARGET_XPCOM_ABI'):
    DEFINES[var] = CONFIG[var]

# Mangle our package name to avoid Bug 750548.
DEFINES['MANGLED_ANDROID_PACKAGE_NAME'] = CONFIG['ANDROID_PACKAGE_NAME'].replace('fennec', 'f3nn3c')
DEFINES['MOZ_APP_ABI'] = CONFIG['TARGET_XPCOM_ABI']
if not CONFIG['COMPILE_ENVIRONMENT']:
    # These should really come from the included binaries, but that's not easy.
    DEFINES['MOZ_APP_ABI'] = 'arm-eabi-gcc3' # Observe quote differences here ...
    DEFINES['TARGET_XPCOM_ABI'] = '"arm-eabi-gcc3"' # ... and here.

if '-march=armv7' in CONFIG['OS_CFLAGS']:
    DEFINES['MOZ_MIN_CPU_VERSION'] = 7
else:
    DEFINES['MOZ_MIN_CPU_VERSION'] = 5

if CONFIG['MOZ_ANDROID_SEARCH_ACTIVITY']:
    # The Search Activity is mostly independent of Fennec proper, but
    # it does depend on Geckoview.  Therefore, we build it as a jar
    # that depends on the Geckoview jars.
    search_source_dir = SRCDIR + '/../search'
    include('../search/search_activity_sources.mozbuild')

    search_activity = add_java_jar('search-activity')
    search_activity.sources += [search_source_dir + '/' + f for f in search_activity_sources]
    search_activity.javac_flags += ['-Xlint:all']
    search_activity.extra_jars = [
        CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
        CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
        CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
        'constants.jar',
        'gecko-R.jar',
        'gecko-browser.jar',
        'gecko-mozglue.jar',
        'gecko-thirdparty.jar',
        'gecko-util.jar',
        'gecko-view.jar',
    ]

FINAL_TARGET_PP_FILES += ['package-name.txt.in']

DEFINES['OBJDIR'] = OBJDIR
DEFINES['TOPOBJDIR'] = TOPOBJDIR

OBJDIR_PP_FILES.mobile.android.base += [
    'AndroidManifest.xml.in',
]

gbjar.sources += ['generated/org/mozilla/gecko/' + x for x in [
    'media/ICodec.java',
    'media/ICodecCallbacks.java',
    'media/IMediaDrmBridge.java',
    'media/IMediaDrmBridgeCallbacks.java',
    'media/IMediaManager.java',
]]