mobile/android/base/Makefile.in
author Lucas Rocha <lucasr@mozilla.com>
Mon, 08 Jul 2013 23:05:51 +0100
changeset 151374 d239a58564cbb079ee4da885102ddaa29f234722
parent 151371 950e12ef1eb85945e36ca7145fbf28ccd51d6d75
child 151379 9d72801295c50f992458d07f4cce9ee2a564431d
permissions -rw-r--r--
Bug 882715 - Implement history/last tabs buttons in VisitedPage (r=bnicholson)

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

DEPTH		= @DEPTH@
topsrcdir	= @top_srcdir@
srcdir		= @srcdir@
VPATH		= @srcdir@

include $(DEPTH)/config/autoconf.mk

DIST_FILES = package-name.txt

include $(topsrcdir)/mobile/android/base/android-services-files.mk

MOZGLUE_JAVA_FILES := \
  mozglue/ByteBufferInputStream.java \
  mozglue/DirectBufferAllocator.java \
  mozglue/NativeReference.java \
  mozglue/NativeZip.java \
  $(NULL)

MOZGLUE_PP_JAVA_FILES := \
  mozglue/GeckoLoader.java \
  $(NULL)

UTIL_JAVA_FILES := \
  util/ActivityResultHandler.java \
  util/ActivityResultHandlerMap.java \
  util/Clipboard.java \
  util/EventDispatcher.java \
  util/FloatUtils.java \
  util/GamepadUtils.java \
  util/GeckoBackgroundThread.java \
  util/GeckoEventListener.java \
  util/GeckoEventResponder.java \
  util/GeckoJarReader.java \
  util/HardwareUtils.java \
  util/INIParser.java \
  util/INISection.java \
  util/JSONUtils.java \
  util/StringUtils.java \
  util/ThreadUtils.java \
  util/UiAsyncTask.java \
  $(NULL)

FENNEC_JAVA_FILES = \
  ANRReporter.java \
  ActivityHandlerHelper.java \
  AlertNotification.java \
  AlignRightLinkPreference.java \
  AllCapsTextView.java \
  AndroidImport.java \
  AndroidImportPreference.java \
  AnimatedHeightLayout.java \
  AppNotificationClient.java \
  AutocompleteHandler.java \
  animation/AnimatorProxy.java \
  animation/HeightChangeAnimation.java \
  animation/PropertyAnimator.java \
  animation/Rotate3DAnimation.java \
  animation/ViewHelper.java \
  BackButton.java \
  BrowserApp.java \
  BrowserToolbar.java \
  BrowserToolbarBackground.java \
  CameraImageResultHandler.java \
  CameraVideoResultHandler.java \
  CanvasDelegate.java \
  CheckableLinearLayout.java \
  ClickableWhenDisabledEditText.java \
  ContextGetter.java \
  CustomEditText.java \
  db/BrowserDB.java \
  db/LocalBrowserDB.java \
  db/DBUtils.java \
  DataReportingNotification.java \
  Distribution.java \
  DoorHanger.java \
  DoorHangerPopup.java \
  EditBookmarkDialog.java \
  Favicons.java \
  FilePickerResultHandler.java \
  FilePickerResultHandlerSync.java \
  FindInPageBar.java \
  FlowLayout.java \
  FontSizePreference.java \
  FormAssistPopup.java \
  ForwardButton.java \
  GeckoAccessibility.java \
  GeckoApplication.java \
  GeckoApp.java \
  GeckoAppShell.java \
  GeckoActivity.java \
  GeckoBatteryManager.java \
  GeckoConnectivityReceiver.java \
  GeckoEditable.java \
  GeckoEvent.java \
  GeckoHalDefines.java \
  GeckoInputConnection.java \
  GeckoMessageReceiver.java \
  GeckoPreferences.java \
  GeckoPreferenceFragment.java \
  GeckoProfile.java \
  GeckoSmsManager.java \
  GeckoThread.java \
  GeckoJavaSampler.java \
  GlobalHistory.java \
  GeckoView.java \
  health/BrowserHealthRecorder.java \
  health/BrowserHealthReporter.java \
  InputMethods.java \
  JavaAddonManager.java \
  LightweightTheme.java \
  LightweightThemeDrawable.java \
  LinkPreference.java \
  MemoryMonitor.java \
  MotionEventInterceptor.java \
  MultiChoicePreference.java \
  NotificationClient.java \
  NotificationHandler.java \
  NotificationHelper.java \
  NotificationService.java \
  NSSBridge.java \
  OrderedBroadcastHelper.java \
  PrefsHelper.java \
  PrivateDataPreference.java \
  PrivateTab.java \
  ProfileMigrator.java \
  Prompt.java \
  PromptInput.java \
  PromptService.java \
  Restarter.java \
  sqlite/ByteBufferInputStream.java \
  sqlite/MatrixBlobCursor.java \
  sqlite/SQLiteBridge.java \
  sqlite/SQLiteBridgeException.java \
  ReaderModeUtils.java \
  RemoteTabs.java \
  RobocopAPI.java \
  ServiceNotificationClient.java \
  ScrollAnimator.java \
  SessionParser.java \
  SetupScreen.java \
  ShapedButton.java \
  SharedPreferencesHelper.java \
  SiteIdentityPopup.java \
  SmsManager.java \
  SurfaceBits.java \
  SyncPreference.java \
  Tab.java \
  TabCounter.java \
  Tabs.java \
  TabsPanel.java \
  TabsTray.java \
  TabsAccessor.java \
  TailTouchDelegate.java \
  Telemetry.java \
  TextSelection.java \
  TextSelectionHandle.java \
  ThumbnailHelper.java \
  TouchEventInterceptor.java \
  UpdateServiceHelper.java \
  VideoPlayer.java \
  WebAppAllocator.java \
  WebAppImpl.java \
  ZoomConstraints.java \
  braille/com/googlecode/eyesfree/braille/selfbraille/ISelfBrailleService.java \
  braille/com/googlecode/eyesfree/braille/selfbraille/SelfBrailleClient.java \
  braille/com/googlecode/eyesfree/braille/selfbraille/WriteData.java \
  db/BrowserContract.java \
  db/BrowserProvider.java \
  db/FormHistoryProvider.java \
  db/PerProfileContentProvider.java \
  db/PasswordsProvider.java \
  db/TabsProvider.java \
  gfx/Axis.java \
  gfx/BitmapUtils.java \
  gfx/BufferedCairoImage.java \
  gfx/CairoGLInfo.java \
  gfx/CairoImage.java \
  gfx/CairoUtils.java \
  gfx/DisplayPortCalculator.java \
  gfx/DisplayPortMetrics.java \
  gfx/DrawTimingQueue.java \
  gfx/FloatSize.java \
  gfx/GeckoLayerClient.java \
  gfx/GfxInfoThread.java \
  gfx/GLController.java \
  gfx/ImmutableViewportMetrics.java \
  gfx/InputConnectionHandler.java \
  gfx/IntSize.java \
  gfx/JavaPanZoomController.java \
  gfx/Layer.java \
  gfx/LayerMarginsAnimator.java \
  gfx/LayerRenderer.java \
  gfx/LayerView.java \
  gfx/NativePanZoomController.java \
  gfx/NinePatchTileLayer.java \
  gfx/PanningPerfAPI.java \
  gfx/PanZoomController.java \
  gfx/PanZoomTarget.java \
  gfx/PluginLayer.java \
  gfx/PointUtils.java \
  gfx/ProgressiveUpdateData.java \
  gfx/RectUtils.java \
  gfx/ScrollbarLayer.java \
  gfx/SimpleScaleGestureDetector.java \
  gfx/SingleTileLayer.java \
  gfx/SubdocumentScrollHelper.java \
  gfx/TextLayer.java \
  gfx/TextureGenerator.java \
  gfx/TextureReaper.java \
  gfx/TileLayer.java \
  gfx/TouchEventHandler.java \
  gfx/ViewTransform.java \
  gfx/VirtualLayer.java \
  home/BookmarksListAdapter.java \
  home/BookmarksListView.java \
  home/BookmarksPage.java \
  home/BookmarkFolderView.java \
  home/BookmarkThumbnailView.java \
  home/BrowserSearch.java \
  home/HistoryPage.java \
  home/HomeFragment.java \
  home/HomeListView.java \
  home/HomePager.java \
  home/HomePagerTabStrip.java \
  home/FadedTextView.java \
  home/FaviconsLoader.java \
  home/LastTabsPage.java \
  home/ReadingListPage.java \
  home/SearchEngine.java \
  home/SearchEngineRow.java \
  home/SimpleCursorLoader.java \
  home/SuggestClient.java \
  home/TopBookmarkItemView.java \
  home/TopBookmarksAdapter.java \
  home/TopBookmarksView.java \
  home/TwoLinePageRow.java \
  home/VisitedPage.java \
  menu/GeckoMenu.java \
  menu/GeckoMenuInflater.java \
  menu/GeckoMenuItem.java \
  menu/GeckoSubMenu.java \
  menu/MenuItemActionBar.java \
  menu/MenuItemActionView.java \
  menu/MenuItemDefault.java \
  menu/MenuPanel.java \
  menu/MenuPopup.java \
  widget/AboutHome.java \
  widget/AboutHomeView.java \
  widget/AboutHomeSection.java \
  widget/ActivityChooserModel.java \
  widget/AddonsSection.java \
  widget/ButtonToast.java \
  widget/ArrowPopup.java \
  widget/DateTimePicker.java \
  widget/Divider.java \
  widget/FaviconView.java \
  widget/GeckoPopupMenu.java \
  widget/GeckoActionProvider.java \
  widget/IconTabWidget.java \
  widget/LastTabsSection.java \
  widget/LinkTextView.java \
  widget/PromoBox.java \
  widget/RemoteTabsSection.java \
  widget/TopSitesView.java \
  widget/TabRow.java \
  widget/ThumbnailView.java \
  widget/TwoWayView.java \
  GeckoNetworkManager.java \
  GeckoScreenOrientationListener.java \
  UpdateService.java \
  GeckoUpdateReceiver.java \
  ReferrerReceiver.java \
  $(NULL)

WEBSOCKETS_JAVA_FILES := \
  websockets/HybiParser.java \
  websockets/WebSocketClient.java \
  $(NULL)

ifdef MOZ_WEBRTC
WEBRTC_VIDEO_CAPTURE_JAVA_FILES = \
  CaptureCapabilityAndroid.java \
  VideoCaptureAndroid.java \
  VideoCaptureDeviceInfoAndroid.java \
  $(NULL)

WEBRTC_AUDIO_CAPTURE_JAVA_FILES = \
  WebRTCAudioDevice.java \
  $(NULL)

WEBRTC_JAVA_FILES = \
  $(addprefix $(DEPTH)/media/webrtc/trunk/webrtc/modules/video_capture/android/java/org/webrtc/videoengine/, $(WEBRTC_VIDEO_CAPTURE_JAVA_FILES)) \
  $(addprefix $(DEPTH)/media/webrtc/trunk/webrtc/modules/audio_device/android/org/webrtc/voiceengine/, $(WEBRTC_AUDIO_CAPTURE_JAVA_FILES)) \
  $(NULL)
endif

ifdef MOZ_ANDROID_ANR_REPORTER
DEFINES += -DMOZ_ANDROID_ANR_REPORTER=1
endif

FENNEC_PP_JAVA_VIEW_FILES = \
  GeckoButton.java \
  GeckoImageButton.java \
  GeckoImageView.java \
  GeckoEditText.java \
  GeckoFrameLayout.java \
  GeckoLinearLayout.java \
  GeckoRelativeLayout.java \
  GeckoTextSwitcher.java \
  GeckoTextView.java \
  $(NULL)

FENNEC_PP_JAVA_FILES = \
  App.java \
  AppConstants.java \
  SysInfo.java \
  WebApp.java \
  WebApps.java \
  $(NULL)

FENNEC_PP_XML_FILES = \
  res/xml/preferences.xml \
  res/xml/searchable.xml \
  $(NULL)

ifneq (,$(findstring -march=armv7,$(OS_CFLAGS)))
MIN_CPU_VERSION=7
else
MIN_CPU_VERSION=5
endif

MOZ_APP_BUILDID=$(shell cat $(DEPTH)/config/buildid)

ifeq (,$(ANDROID_VERSION_CODE))
ifeq ($(CPU_ARCH),arm)
ifeq ($(MIN_CPU_VERSION),7)
ANDROID_VERSION_CODE=$(shell cat $(DEPTH)/config/buildid | cut -c1-10)
else
# decrement the version code by 1 for armv6 builds so armv7 builds will win any compatability ties
ANDROID_VERSION_CODE=$(shell echo $$((`cat $(DEPTH)/config/buildid | cut -c1-10` - 1)))
endif
else #not arm, so x86
# increment the version code by 1 for x86 builds so they are offered to x86 phones that have arm emulators
ANDROID_VERSION_CODE=$(shell echo $$((`cat $(DEPTH)/config/buildid | cut -c1-10` + 1)))
endif
endif

UA_BUILDID=$(shell echo $(ANDROID_VERSION_CODE) | cut -c1-8)

MOZ_BUILD_TIMESTAMP=$(shell echo `$(PYTHON) $(topsrcdir)/toolkit/xre/make-platformini.py --print-timestamp`)

ifdef MOZ_UPDATER
DEFINES +=  -DMOZ_UPDATER=$(MOZ_UPDATER)
endif

# Mangle our package name to avoid Bug 750548.
DEFINES += \
  -DMANGLED_ANDROID_PACKAGE_NAME=$(subst fennec,f3nn3c,$(ANDROID_PACKAGE_NAME)) \
  -DANDROID_PACKAGE_NAME=$(ANDROID_PACKAGE_NAME) \
  -DANDROID_CPU_ARCH=$(ANDROID_CPU_ARCH) \
  -DANDROID_VERSION_CODE=$(ANDROID_VERSION_CODE) \
  -DCPU_ARCH=$(CPU_ARCH) \
  -DGRE_MILESTONE=$(GRE_MILESTONE) \
  -DMOZILLA_OFFICIAL=$(MOZILLA_OFFICIAL) \
  -DMOZ_APP_ABI=$(TARGET_XPCOM_ABI) \
  -DMOZ_APP_BASENAME=$(MOZ_APP_BASENAME) \
  -DMOZ_APP_BUILDID=$(MOZ_APP_BUILDID) \
  -DMOZ_APP_DISPLAYNAME="$(MOZ_APP_DISPLAYNAME)" \
  -DMOZ_APP_ID=$(MOZ_APP_ID) \
  -DMOZ_APP_NAME=$(MOZ_APP_NAME) \
  -DMOZ_APP_VENDOR=$(MOZ_APP_VENDOR) \
  -DMOZ_APP_VERSION=$(MOZ_APP_VERSION) \
  -DMOZ_BUILD_TIMESTAMP=$(MOZ_BUILD_TIMESTAMP) \
  -DMOZ_CHILD_PROCESS_NAME=$(MOZ_CHILD_PROCESS_NAME) \
  -DMOZ_CRASHREPORTER=$(MOZ_CRASHREPORTER) \
  -DMOZ_MIN_CPU_VERSION=$(MIN_CPU_VERSION) \
  -DMOZ_UPDATE_CHANNEL=$(MOZ_UPDATE_CHANNEL) \
  -DOMNIJAR_NAME=$(OMNIJAR_NAME) \
  -DOS_TARGET=$(OS_TARGET) \
  -DTARGET_XPCOM_ABI=$(TARGET_XPCOM_ABI) \
  -DUA_BUILDID=$(UA_BUILDID) \
  $(NULL)

ifdef MOZ_PKG_SPECIAL
DEFINES += -DMOZ_PKG_SPECIAL=$(MOZ_PKG_SPECIAL)
endif

ifdef MOZ_LINKER_EXTRACT
DEFINES += -DMOZ_LINKER_EXTRACT=1
endif

GARBAGE += \
  AndroidManifest.xml  \
  classes.dex  \
  $(MOZGLUE_PP_JAVA_FILES) \
  $(FENNEC_PP_JAVA_FILES) \
  $(FENNEC_PP_JAVA_VIEW_FILES) \
  $(SYNC_PP_JAVA_FILES) \
  gecko.ap_  \
  res/values/strings.xml \
  R.java \
  $(FENNEC_PP_XML_FILES) \
  $(SYNC_PP_RES_XML) \
  package-name.txt \
  fennec_ids.txt \
  Manifest.java \
  javah.out \
  jni-stubs.inc \
  $(NULL)

GARBAGE_DIRS += classes db jars res sync services

MOZ_ANDROID_SHARED_ID = "$(ANDROID_PACKAGE_NAME).sharedID"
MOZ_ANDROID_SHARED_ACCOUNT_TYPE = "$(ANDROID_PACKAGE_NAME)_sync"

# Bug 567884 - Need a way to find appropriate icons during packaging
ifeq ($(MOZ_APP_NAME),fennec)
ICON_PATH = $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/content/fennec_48x48.png
ICON_PATH_HDPI = $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/content/fennec_72x72.png
ICON_PATH_XHDPI = $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/content/fennec_96x96.png
ICON_PATH_XXHDPI = $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/content/fennec_144x144.png

# we released these builds to the public with shared IDs and need to keep them
ifeq (org.mozilla.firefox,$(ANDROID_PACKAGE_NAME))
MOZ_ANDROID_SHARED_ID = "org.mozilla.firefox.sharedID"
MOZ_ANDROID_SHARED_ACCOUNT_TYPE = "org.mozilla.firefox_sync"
else ifeq (org.mozilla.firefox_beta,$(ANDROID_PACKAGE_NAME))
MOZ_ANDROID_SHARED_ID = "org.mozilla.firefox.sharedID"
MOZ_ANDROID_SHARED_ACCOUNT_TYPE = "org.mozilla.firefox_sync"
else ifeq (org.mozilla.fennec_aurora,$(ANDROID_PACKAGE_NAME))
MOZ_ANDROID_SHARED_ID = "org.mozilla.fennec.sharedID"
MOZ_ANDROID_SHARED_ACCOUNT_TYPE = "org.mozilla.fennec_sync"
else ifeq (org.mozilla.fennec,$(ANDROID_PACKAGE_NAME))
MOZ_ANDROID_SHARED_ID = "org.mozilla.fennec.sharedID"
MOZ_ANDROID_SHARED_ACCOUNT_TYPE = "org.mozilla.fennec_sync"
endif

else
ICON_PATH = $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/content/icon48.png
ICON_PATH_HDPI = $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/content/icon64.png
endif

ifdef MOZ_ANDROID_SHARED_ID
DEFINES += -DMOZ_ANDROID_SHARED_ID="$(MOZ_ANDROID_SHARED_ID)"
endif
ifdef MOZ_ANDROID_SHARED_ACCOUNT_TYPE
DEFINES += -DMOZ_ANDROID_SHARED_ACCOUNT_TYPE="$(MOZ_ANDROID_SHARED_ACCOUNT_TYPE)"
endif

RES_LAYOUT = \
  $(SYNC_RES_LAYOUT) \
  res/layout/abouthome_content.xml \
  res/layout/arrow_popup.xml \
  res/layout/autocomplete_list.xml \
  res/layout/autocomplete_list_item.xml \
  res/layout/bookmark_edit.xml \
  res/layout/bookmark_folder_row.xml \
  res/layout/browser_toolbar.xml \
  res/layout/datetime_picker.xml \
  res/layout/doorhanger.xml \
  res/layout/doorhanger_button.xml \
  res/layout/find_in_page_content.xml \
  res/layout/font_size_preference.xml \
  res/layout/gecko_app.xml \
  res/layout/home_bookmarks_page.xml \
  res/layout/home_item_row.xml \
  res/layout/home_header_row.xml \
  res/layout/home_list_with_title.xml \
  res/layout/home_search_item_row.xml \
  res/layout/home_visited_page.xml \
  res/layout/web_app.xml \
  res/layout/launch_app_list.xml \
  res/layout/launch_app_listitem.xml \
  res/layout/menu_action_bar.xml \
  res/layout/menu_item_action_view.xml \
  res/layout/menu_popup.xml \
  res/layout/notification_icon_text.xml \
  res/layout/notification_progress.xml \
  res/layout/notification_progress_text.xml \
  res/layout/preference_rightalign_icon.xml \
  res/layout/site_setting_item.xml \
  res/layout/site_setting_title.xml \
  res/layout/setup_screen.xml \
  res/layout/shared_ui_components.xml \
  res/layout/site_identity.xml \
  res/layout/remote_tabs_child.xml \
  res/layout/remote_tabs_group.xml \
  res/layout/search_engine_row.xml \
  res/layout/tabs_panel.xml \
  res/layout/tabs_counter.xml \
  res/layout/tabs_panel_header.xml \
  res/layout/tabs_panel_indicator.xml \
  res/layout/tabs_item_cell.xml \
  res/layout/tabs_item_row.xml \
  res/layout/text_selection_handles.xml \
  res/layout/top_bookmark_item_view.xml \
  res/layout/two_line_page_row.xml \
  res/layout/list_item_header.xml \
  res/layout/select_dialog_list.xml \
  res/layout/select_dialog_multichoice.xml \
  res/layout/select_dialog_singlechoice.xml \
  res/layout/simple_dropdown_item_1line.xml \
  res/layout/suggestion_item.xml \
  res/layout/abouthome_addon_row.xml \
  res/layout/abouthome_last_tabs_row.xml \
  res/layout/abouthome_section.xml \
  res/layout/abouthome_remote_tab_row.xml \
  res/layout/abouthome_topsite_item.xml \
  res/layout/validation_message.xml \
  res/layout/videoplayer.xml \
  $(NULL)

RES_LAYOUT_LARGE_V11 = \
  res/layout-large-v11/browser_toolbar.xml \
  $(NULL)

RES_LAYOUT_LARGE_LAND_V11 = \
  res/layout-large-land-v11/tabs_panel.xml \
  res/layout-large-land-v11/tabs_panel_header.xml \
  res/layout-large-land-v11/tabs_panel_footer.xml \
  $(NULL)

RES_LAYOUT_XLARGE_V11 = \
  res/layout-xlarge-v11/font_size_preference.xml \
  res/layout-xlarge-v11/remote_tabs_child.xml \
  res/layout-xlarge-v11/remote_tabs_group.xml \
  $(NULL)

RES_LAYOUT_XLARGE_LAND_V11 = \
  res/layout-xlarge-land-v11/abouthome_content.xml \
  $(NULL)

RES_VALUES = \
  $(SYNC_RES_VALUES) \
  res/values/attrs.xml \
  res/values/arrays.xml \
  res/values/colors.xml \
  res/values/dimens.xml \
  res/values/integers.xml \
  res/values/layout.xml \
  res/values/styles.xml \
  res/values/themes.xml \
  $(NULL)

RES_VALUES_LAND = \
  res/values-land/integers.xml \
  res/values-land/layout.xml \
  res/values-land/styles.xml \
  $(NULL)

RES_VALUES_V11 = \
  $(SYNC_RES_VALUES_V11) \
  res/values-v11/colors.xml \
  res/values-v11/dimens.xml \
  res/values-v11/styles.xml \
  res/values-v11/themes.xml \
  $(NULL)

RES_VALUES_LARGE_V11 = \
  $(SYNC_RES_VALUES_LARGE_V11) \
  res/values-large-v11/dimens.xml \
  res/values-large-v11/layout.xml \
  res/values-large-v11/styles.xml \
  res/values-large-v11/themes.xml \
  $(NULL)

RES_VALUES_LARGE_LAND_V11 = \
  res/values-large-land-v11/styles.xml \
  $(NULL)

RES_VALUES_XLARGE_V11 = \
  res/values-xlarge-v11/dimens.xml \
  res/values-xlarge-v11/integers.xml \
  res/values-xlarge-v11/styles.xml \
  $(NULL)

RES_VALUES_V14 = \
  res/values-v14/styles.xml \
  $(NULL)

RES_VALUES_V16 = \
  res/values-v16/styles.xml \
  $(NULL)

RES_XML = \
  res/xml/preferences_customize.xml \
  res/xml/preferences_display.xml \
  res/xml/preferences_privacy.xml \
  res/xml/preferences_vendor.xml \
  $(SYNC_RES_XML) \
  $(NULL)

RES_XML_V11 = \
  res/xml-v11/preference_headers.xml \
  res/xml-v11/preferences_customize_tablet.xml \
  res/xml-v11/preferences.xml \
  $(NULL)

RES_ANIM = \
  res/anim/popup_show.xml \
  res/anim/popup_hide.xml \
  res/anim/grow_fade_in.xml \
  res/anim/grow_fade_in_center.xml \
  res/anim/shrink_fade_out.xml \
  $(NULL)

RES_DRAWABLE_MDPI = \
  res/drawable-mdpi/blank.png \
  res/drawable-mdpi/favicon.png \
  res/drawable-mdpi/folder.png \
  res/drawable-mdpi/abouthome_icon.png \
  res/drawable-mdpi/abouthome_logo_dark.png \
  res/drawable-mdpi/abouthome_logo_light.png \
  res/drawable-mdpi/abouthome_promo_box_bg.9.png \
  res/drawable-mdpi/abouthome_promo_box_pressed_bg.9.png \
  res/drawable-mdpi/abouthome_promo_logo_apps.png \
  res/drawable-mdpi/abouthome_promo_logo_sync.png \
  res/drawable-mdpi/abouthome_thumbnail.png \
  res/drawable-mdpi/abouthome_thumbnail_bg.png \
  res/drawable-mdpi/abouthome_thumbnail_add.png \
  res/drawable-mdpi/alert_addon.png \
  res/drawable-mdpi/alert_app.png \
  res/drawable-mdpi/alert_download.png \
  res/drawable-mdpi/alert_camera.png \
  res/drawable-mdpi/alert_mic.png \
  res/drawable-mdpi/alert_mic_camera.png \
  res/drawable-mdpi/arrow_popup_bg.9.png \
  res/drawable-mdpi/autocomplete_list_bg.9.png \
  res/drawable-mdpi/bookmark_folder_closed.png \
  res/drawable-mdpi/bookmark_folder_opened.png \
  res/drawable-mdpi/desktop_notification.png \
  res/drawable-mdpi/ic_addons_empty.png \
  res/drawable-mdpi/ic_menu_addons_filler.png \
  res/drawable-mdpi/ic_menu_bookmark_add.png \
  res/drawable-mdpi/ic_menu_bookmark_remove.png \
  res/drawable-mdpi/ic_menu_character_encoding.png \
  res/drawable-mdpi/ic_menu_close_all_tabs.png \
  res/drawable-mdpi/ic_menu_forward.png \
  res/drawable-mdpi/ic_menu_new_private_tab.png \
  res/drawable-mdpi/ic_menu_new_tab.png \
  res/drawable-mdpi/ic_menu_reload.png \
  res/drawable-mdpi/ic_status_logo.png \
  res/drawable-mdpi/ic_url_bar_go.png \
  res/drawable-mdpi/ic_url_bar_reader.png \
  res/drawable-mdpi/ic_url_bar_search.png \
  res/drawable-mdpi/ic_url_bar_star.png \
  res/drawable-mdpi/ic_url_bar_tab.png \
  res/drawable-mdpi/progress_spinner_1.png \
  res/drawable-mdpi/progress_spinner_2.png \
  res/drawable-mdpi/progress_spinner_3.png \
  res/drawable-mdpi/progress_spinner_4.png \
  res/drawable-mdpi/progress_spinner_5.png \
  res/drawable-mdpi/progress_spinner_6.png \
  res/drawable-mdpi/progress_spinner_7.png \
  res/drawable-mdpi/progress_spinner_8.png \
  res/drawable-mdpi/progress_spinner_9.png \
  res/drawable-mdpi/progress_spinner_10.png \
  res/drawable-mdpi/progress_spinner_11.png \
  res/drawable-mdpi/progress_spinner_12.png \
  res/drawable-mdpi/tab_indicator_divider.9.png \
  res/drawable-mdpi/tab_indicator_selected.9.png \
  res/drawable-mdpi/tab_indicator_selected_focused.9.png \
  res/drawable-mdpi/spinner_default.9.png \
  res/drawable-mdpi/spinner_focused.9.png \
  res/drawable-mdpi/spinner_pressed.9.png \
  res/drawable-mdpi/tab_new.png \
  res/drawable-mdpi/tab_new_pb.png \
  res/drawable-mdpi/tab_close.png \
  res/drawable-mdpi/tab_thumbnail_default.png \
  res/drawable-mdpi/tab_thumbnail_shadow.png \
  res/drawable-mdpi/tabs_count.png \
  res/drawable-mdpi/tabs_count_foreground.png \
  res/drawable-mdpi/url_bar_bg_shadow.png \
  res/drawable-mdpi/url_bar_entry_default.9.png \
  res/drawable-mdpi/url_bar_entry_default_pb.9.png \
  res/drawable-mdpi/url_bar_entry_pressed.9.png \
  res/drawable-mdpi/url_bar_entry_pressed_pb.9.png \
  res/drawable-mdpi/toast.9.png \
  res/drawable-mdpi/toast_button_focused.9.png \
  res/drawable-mdpi/toast_button_pressed.9.png \
  res/drawable-mdpi/toast_divider.9.png \
  res/drawable-mdpi/find_close.png \
  res/drawable-mdpi/find_next.png \
  res/drawable-mdpi/find_prev.png \
  res/drawable-mdpi/larry_blue.png \
  res/drawable-mdpi/larry_green.png \
  res/drawable-mdpi/menu.png \
  res/drawable-mdpi/menu_pb.png \
  res/drawable-mdpi/menu_panel_bg.9.png \
  res/drawable-mdpi/menu_popup_bg.9.png \
  res/drawable-mdpi/menu_popup_arrow_bottom.png \
  res/drawable-mdpi/menu_popup_arrow_top.png \
  res/drawable-mdpi/menu_item_check.png \
  res/drawable-mdpi/menu_item_more.png \
  res/drawable-mdpi/menu_item_uncheck.png \
  res/drawable-mdpi/site_security_blocked_mixed_content.png \
  res/drawable-mdpi/site_security_loaded_mixed_content.png \
  res/drawable-mdpi/site_security_identified.png \
  res/drawable-mdpi/site_security_verified.png \
  res/drawable-mdpi/tabs_normal.png \
  res/drawable-mdpi/tabs_private.png \
  res/drawable-mdpi/tabs_synced.png \
  res/drawable-mdpi/urlbar_stop.png \
  res/drawable-mdpi/reader.png \
  res/drawable-mdpi/reader_active.png \
  res/drawable-mdpi/reading_list.png \
  res/drawable-mdpi/validation_arrow.png \
  res/drawable-mdpi/validation_arrow_inverted.png \
  res/drawable-mdpi/validation_bg.9.png \
  res/drawable-mdpi/bookmarkdefaults_favicon_support.png \
  res/drawable-mdpi/bookmarkdefaults_favicon_addons.png \
  res/drawable-mdpi/handle_end.png \
  res/drawable-mdpi/handle_middle.png \
  res/drawable-mdpi/handle_start.png \
  res/drawable-mdpi/scrollbar.png \
  res/drawable-mdpi/shadow.png \
  res/drawable-mdpi/start.png \
  res/drawable-mdpi/marketplace.png \
  $(addprefix res/drawable-mdpi/,$(notdir $(SYNC_RES_DRAWABLE_MDPI))) \
  $(NULL)

RES_DRAWABLE_LDPI = \
  $(addprefix res/drawable-ldpi/,$(notdir $(SYNC_RES_DRAWABLE_LDPI))) \
  $(NULL)

RES_DRAWABLE_HDPI = \
  res/drawable-hdpi/blank.png \
  res/drawable-hdpi/favicon.png \
  res/drawable-hdpi/folder.png \
  res/drawable-hdpi/home_bg.png \
  res/drawable-hdpi/home_star.png \
  res/drawable-hdpi/abouthome_icon.png \
  res/drawable-hdpi/abouthome_logo_dark.png \
  res/drawable-hdpi/abouthome_logo_light.png \
  res/drawable-hdpi/abouthome_promo_box_bg.9.png \
  res/drawable-hdpi/abouthome_promo_box_pressed_bg.9.png \
  res/drawable-hdpi/abouthome_promo_logo_apps.png \
  res/drawable-hdpi/abouthome_promo_logo_sync.png \
  res/drawable-hdpi/abouthome_thumbnail.png \
  res/drawable-hdpi/abouthome_thumbnail_bg.png \
  res/drawable-hdpi/abouthome_thumbnail_add.png \
  res/drawable-hdpi/alert_addon.png \
  res/drawable-hdpi/alert_app.png \
  res/drawable-hdpi/alert_download.png \
  res/drawable-hdpi/bookmark_folder_closed.png \
  res/drawable-hdpi/bookmark_folder_opened.png \
  res/drawable-hdpi/alert_camera.png \
  res/drawable-hdpi/alert_mic.png \
  res/drawable-hdpi/alert_mic_camera.png \
  res/drawable-hdpi/arrow_popup_bg.9.png \
  res/drawable-hdpi/ic_addons_empty.png \
  res/drawable-hdpi/ic_menu_addons_filler.png \
  res/drawable-hdpi/ic_menu_bookmark_add.png \
  res/drawable-hdpi/ic_menu_bookmark_remove.png \
  res/drawable-hdpi/ic_menu_character_encoding.png \
  res/drawable-hdpi/ic_menu_close_all_tabs.png \
  res/drawable-hdpi/ic_menu_forward.png \
  res/drawable-hdpi/ic_menu_new_private_tab.png \
  res/drawable-hdpi/ic_menu_new_tab.png \
  res/drawable-hdpi/ic_menu_reload.png \
  res/drawable-hdpi/ic_status_logo.png \
  res/drawable-hdpi/ic_url_bar_go.png \
  res/drawable-hdpi/ic_url_bar_reader.png \
  res/drawable-hdpi/ic_url_bar_search.png \
  res/drawable-hdpi/ic_url_bar_star.png \
  res/drawable-hdpi/ic_url_bar_tab.png \
  res/drawable-hdpi/tab_indicator_divider.9.png \
  res/drawable-hdpi/tab_indicator_selected.9.png \
  res/drawable-hdpi/tab_indicator_selected_focused.9.png \
  res/drawable-hdpi/spinner_default.9.png \
  res/drawable-hdpi/spinner_focused.9.png \
  res/drawable-hdpi/spinner_pressed.9.png \
  res/drawable-hdpi/tab_new.png \
  res/drawable-hdpi/tab_new_pb.png \
  res/drawable-hdpi/tab_close.png \
  res/drawable-hdpi/tab_thumbnail_default.png \
  res/drawable-hdpi/tab_thumbnail_shadow.png \
  res/drawable-hdpi/tabs_count.png \
  res/drawable-hdpi/tabs_count_foreground.png \
  res/drawable-hdpi/url_bar_bg_shadow.png \
  res/drawable-hdpi/url_bar_entry_default.9.png \
  res/drawable-hdpi/url_bar_entry_default_pb.9.png \
  res/drawable-hdpi/url_bar_entry_pressed.9.png \
  res/drawable-hdpi/url_bar_entry_pressed_pb.9.png \
  res/drawable-hdpi/find_close.png \
  res/drawable-hdpi/find_next.png \
  res/drawable-hdpi/find_prev.png \
  res/drawable-hdpi/larry_blue.png \
  res/drawable-hdpi/larry_green.png \
  res/drawable-hdpi/menu.png \
  res/drawable-hdpi/menu_pb.png \
  res/drawable-hdpi/menu_panel_bg.9.png \
  res/drawable-hdpi/menu_popup_bg.9.png \
  res/drawable-hdpi/menu_popup_arrow_bottom.png \
  res/drawable-hdpi/menu_popup_arrow_top.png \
  res/drawable-hdpi/menu_item_check.png \
  res/drawable-hdpi/menu_item_more.png \
  res/drawable-hdpi/menu_item_uncheck.png \
  res/drawable-hdpi/site_security_blocked_mixed_content.png \
  res/drawable-hdpi/site_security_loaded_mixed_content.png \
  res/drawable-hdpi/site_security_identified.png \
  res/drawable-hdpi/site_security_verified.png \
  res/drawable-hdpi/tabs_normal.png \
  res/drawable-hdpi/tabs_private.png \
  res/drawable-hdpi/tabs_synced.png \
  res/drawable-hdpi/urlbar_stop.png \
  res/drawable-hdpi/reader.png \
  res/drawable-hdpi/reader_active.png \
  res/drawable-hdpi/reading_list.png \
  res/drawable-hdpi/validation_arrow.png \
  res/drawable-hdpi/validation_arrow_inverted.png \
  res/drawable-hdpi/validation_bg.9.png \
  res/drawable-hdpi/handle_end.png \
  res/drawable-hdpi/handle_middle.png \
  res/drawable-hdpi/handle_start.png \
  $(addprefix res/drawable-hdpi/,$(notdir $(SYNC_RES_DRAWABLE_HDPI))) \
  $(NULL)

RES_DRAWABLE_XHDPI = \
  res/drawable-xhdpi/blank.png \
  res/drawable-xhdpi/favicon.png \
  res/drawable-xhdpi/folder.png \
  res/drawable-xhdpi/abouthome_icon.png \
  res/drawable-xhdpi/abouthome_logo_dark.png \
  res/drawable-xhdpi/abouthome_logo_light.png \
  res/drawable-xhdpi/abouthome_promo_box_bg.9.png \
  res/drawable-xhdpi/abouthome_promo_box_pressed_bg.9.png \
  res/drawable-xhdpi/abouthome_promo_logo_apps.png \
  res/drawable-xhdpi/abouthome_promo_logo_sync.png \
  res/drawable-xhdpi/abouthome_thumbnail.png \
  res/drawable-xhdpi/abouthome_thumbnail_bg.png \
  res/drawable-xhdpi/abouthome_thumbnail_add.png \
  res/drawable-xhdpi/url_bar_bg_shadow.png \
  res/drawable-xhdpi/url_bar_entry_default.9.png \
  res/drawable-xhdpi/url_bar_entry_default_pb.9.png \
  res/drawable-xhdpi/url_bar_entry_pressed.9.png \
  res/drawable-xhdpi/url_bar_entry_pressed_pb.9.png \
  res/drawable-xhdpi/alert_addon.png \
  res/drawable-xhdpi/alert_app.png \
  res/drawable-xhdpi/alert_download.png \
  res/drawable-xhdpi/bookmark_folder_closed.png \
  res/drawable-xhdpi/bookmark_folder_opened.png \
  res/drawable-xhdpi/alert_camera.png \
  res/drawable-xhdpi/alert_mic.png \
  res/drawable-xhdpi/alert_mic_camera.png \
  res/drawable-xhdpi/arrow_popup_bg.9.png \
  res/drawable-xhdpi/ic_addons_empty.png \
  res/drawable-xhdpi/ic_menu_addons_filler.png \
  res/drawable-xhdpi/ic_menu_bookmark_add.png \
  res/drawable-xhdpi/ic_menu_bookmark_remove.png \
  res/drawable-xhdpi/ic_menu_close_all_tabs.png \
  res/drawable-xhdpi/ic_menu_character_encoding.png \
  res/drawable-xhdpi/ic_menu_forward.png \
  res/drawable-xhdpi/ic_menu_new_private_tab.png \
  res/drawable-xhdpi/ic_menu_new_tab.png \
  res/drawable-xhdpi/ic_menu_reload.png \
  res/drawable-xhdpi/ic_status_logo.png \
  res/drawable-xhdpi/ic_url_bar_go.png \
  res/drawable-xhdpi/ic_url_bar_reader.png \
  res/drawable-xhdpi/ic_url_bar_search.png \
  res/drawable-xhdpi/ic_url_bar_star.png \
  res/drawable-xhdpi/ic_url_bar_tab.png \
  res/drawable-xhdpi/spinner_default.9.png \
  res/drawable-xhdpi/spinner_focused.9.png \
  res/drawable-xhdpi/spinner_pressed.9.png \
  res/drawable-xhdpi/tab_new.png \
  res/drawable-xhdpi/tab_new_pb.png \
  res/drawable-xhdpi/tab_close.png \
  res/drawable-xhdpi/tab_thumbnail_default.png \
  res/drawable-xhdpi/tab_thumbnail_shadow.png \
  res/drawable-xhdpi/tabs_count.png \
  res/drawable-xhdpi/tabs_count_foreground.png \
  res/drawable-xhdpi/find_close.png \
  res/drawable-xhdpi/find_next.png \
  res/drawable-xhdpi/find_prev.png \
  res/drawable-xhdpi/urlbar_stop.png \
  res/drawable-xhdpi/reader.png \
  res/drawable-xhdpi/reader_active.png \
  res/drawable-xhdpi/reading_list.png \
  res/drawable-xhdpi/larry_blue.png \
  res/drawable-xhdpi/larry_green.png \
  res/drawable-xhdpi/menu.png \
  res/drawable-xhdpi/menu_pb.png \
  res/drawable-xhdpi/menu_panel_bg.9.png \
  res/drawable-xhdpi/menu_popup_bg.9.png \
  res/drawable-xhdpi/menu_popup_arrow_bottom.png \
  res/drawable-xhdpi/menu_popup_arrow_top.png \
  res/drawable-xhdpi/menu_item_check.png \
  res/drawable-xhdpi/menu_item_more.png \
  res/drawable-xhdpi/menu_item_uncheck.png \
  res/drawable-xhdpi/tab_indicator_divider.9.png \
  res/drawable-xhdpi/tab_indicator_selected.9.png \
  res/drawable-xhdpi/tab_indicator_selected_focused.9.png \
  res/drawable-xhdpi/site_security_blocked_mixed_content.png \
  res/drawable-xhdpi/site_security_loaded_mixed_content.png \
  res/drawable-xhdpi/site_security_identified.png \
  res/drawable-xhdpi/site_security_verified.png \
  res/drawable-xhdpi/tabs_normal.png \
  res/drawable-xhdpi/tabs_private.png \
  res/drawable-xhdpi/tabs_synced.png \
  res/drawable-xhdpi/validation_arrow.png \
  res/drawable-xhdpi/validation_arrow_inverted.png \
  res/drawable-xhdpi/validation_bg.9.png \
  res/drawable-xhdpi/handle_end.png \
  res/drawable-xhdpi/handle_middle.png \
  res/drawable-xhdpi/handle_start.png \
  $(NULL)

RES_DRAWABLE_MDPI_V11 = \
  res/drawable-mdpi-v11/alert_addon.png \
  res/drawable-mdpi-v11/alert_app.png \
  res/drawable-mdpi-v11/alert_download.png \
  res/drawable-mdpi-v11/alert_camera.png \
  res/drawable-mdpi-v11/alert_mic.png \
  res/drawable-mdpi-v11/alert_mic_camera.png \
  res/drawable-mdpi-v11/firefox_settings_alert.png \
  res/drawable-mdpi-v11/ic_menu_addons.png \
  res/drawable-mdpi-v11/ic_menu_apps.png \
  res/drawable-mdpi-v11/ic_menu_back.png \
  res/drawable-mdpi-v11/ic_menu_bookmark_add.png \
  res/drawable-mdpi-v11/ic_menu_bookmark_remove.png \
  res/drawable-mdpi-v11/ic_menu_desktop_mode_off.png \
  res/drawable-mdpi-v11/ic_menu_desktop_mode_on.png \
  res/drawable-mdpi-v11/ic_menu_downloads.png \
  res/drawable-mdpi-v11/ic_menu_find_in_page.png \
  res/drawable-mdpi-v11/ic_menu_forward.png \
  res/drawable-mdpi-v11/ic_menu_new_private_tab.png \
  res/drawable-mdpi-v11/ic_menu_new_tab.png \
  res/drawable-mdpi-v11/ic_menu_reload.png \
  res/drawable-mdpi-v11/ic_menu_save_as_pdf.png \
  res/drawable-mdpi-v11/ic_menu_settings.png \
  res/drawable-mdpi-v11/ic_menu_share.png \
  res/drawable-mdpi-v11/ic_menu_tools.png \
  res/drawable-mdpi-v11/ic_menu_quit.png \
  res/drawable-mdpi-v11/ic_status_logo.png \
  $(NULL)

RES_DRAWABLE_HDPI_V11 = \
  res/drawable-hdpi-v11/alert_addon.png \
  res/drawable-hdpi-v11/alert_app.png \
  res/drawable-hdpi-v11/alert_download.png \
  res/drawable-hdpi-v11/alert_camera.png \
  res/drawable-hdpi-v11/alert_mic.png \
  res/drawable-hdpi-v11/alert_mic_camera.png \
  res/drawable-hdpi-v11/firefox_settings_alert.png \
  res/drawable-hdpi-v11/ic_menu_addons.png \
  res/drawable-hdpi-v11/ic_menu_apps.png \
  res/drawable-hdpi-v11/ic_menu_back.png \
  res/drawable-hdpi-v11/ic_menu_bookmark_add.png \
  res/drawable-hdpi-v11/ic_menu_bookmark_remove.png \
  res/drawable-hdpi-v11/ic_menu_desktop_mode_off.png \
  res/drawable-hdpi-v11/ic_menu_desktop_mode_on.png \
  res/drawable-hdpi-v11/ic_menu_downloads.png \
  res/drawable-hdpi-v11/ic_menu_find_in_page.png \
  res/drawable-hdpi-v11/ic_menu_forward.png \
  res/drawable-hdpi-v11/ic_menu_new_private_tab.png \
  res/drawable-hdpi-v11/ic_menu_new_tab.png \
  res/drawable-hdpi-v11/ic_menu_reload.png \
  res/drawable-hdpi-v11/ic_menu_save_as_pdf.png \
  res/drawable-hdpi-v11/ic_menu_settings.png \
  res/drawable-hdpi-v11/ic_menu_share.png \
  res/drawable-hdpi-v11/ic_menu_tools.png \
  res/drawable-hdpi-v11/ic_menu_quit.png \
  res/drawable-hdpi-v11/ic_status_logo.png \
  $(NULL)

RES_DRAWABLE_XHDPI_V11 = \
  res/drawable-xhdpi-v11/alert_addon.png \
  res/drawable-xhdpi-v11/alert_app.png \
  res/drawable-xhdpi-v11/alert_download.png \
  res/drawable-xhdpi-v11/alert_camera.png \
  res/drawable-xhdpi-v11/alert_mic.png \
  res/drawable-xhdpi-v11/alert_mic_camera.png \
  res/drawable-xhdpi-v11/firefox_settings_alert.png \
  res/drawable-xhdpi-v11/ic_menu_addons.png \
  res/drawable-xhdpi-v11/ic_menu_apps.png \
  res/drawable-xhdpi-v11/ic_menu_back.png \
  res/drawable-xhdpi-v11/ic_menu_bookmark_add.png \
  res/drawable-xhdpi-v11/ic_menu_bookmark_remove.png \
  res/drawable-xhdpi-v11/ic_menu_desktop_mode_off.png \
  res/drawable-xhdpi-v11/ic_menu_desktop_mode_on.png \
  res/drawable-xhdpi-v11/ic_menu_downloads.png \
  res/drawable-xhdpi-v11/ic_menu_find_in_page.png \
  res/drawable-xhdpi-v11/ic_menu_forward.png \
  res/drawable-xhdpi-v11/ic_menu_new_private_tab.png \
  res/drawable-xhdpi-v11/ic_menu_new_tab.png \
  res/drawable-xhdpi-v11/ic_menu_reload.png \
  res/drawable-xhdpi-v11/ic_menu_save_as_pdf.png \
  res/drawable-xhdpi-v11/ic_menu_settings.png \
  res/drawable-xhdpi-v11/ic_menu_share.png \
  res/drawable-xhdpi-v11/ic_menu_tools.png \
  res/drawable-xhdpi-v11/ic_menu_quit.png \
  res/drawable-xhdpi-v11/ic_status_logo.png \
  $(NULL)

RES_DRAWABLE_LARGE_MDPI_V11 = \
  res/drawable-large-mdpi-v11/arrow_popup_bg.9.png \
  res/drawable-large-mdpi-v11/ic_menu_reload.png \
  res/drawable-large-mdpi-v11/ic_menu_forward.png \
  res/drawable-large-mdpi-v11/menu.png \
  $(NULL)

RES_DRAWABLE_LARGE_HDPI_V11 = \
  res/drawable-large-hdpi-v11/arrow_popup_bg.9.png \
  res/drawable-large-hdpi-v11/ic_menu_reload.png \
  res/drawable-large-hdpi-v11/ic_menu_forward.png \
  res/drawable-large-hdpi-v11/menu.png \
  $(NULL)

RES_DRAWABLE_LARGE_XHDPI_V11 = \
  res/drawable-large-xhdpi-v11/arrow_popup_bg.9.png \
  res/drawable-large-xhdpi-v11/ic_menu_reload.png \
  res/drawable-large-xhdpi-v11/ic_menu_forward.png \
  res/drawable-large-xhdpi-v11/menu.png \
  $(NULL)

RES_DRAWABLE_XLARGE_MDPI_V11 = \
  res/drawable-xlarge-mdpi-v11/ic_menu_bookmark_add.png \
  res/drawable-xlarge-mdpi-v11/ic_menu_bookmark_remove.png \
  $(NULL)

RES_DRAWABLE_XLARGE_HDPI_V11 = \
  res/drawable-xlarge-hdpi-v11/ic_menu_bookmark_add.png \
  res/drawable-xlarge-hdpi-v11/ic_menu_bookmark_remove.png \
  $(NULL)

RES_DRAWABLE_XLARGE_XHDPI_V11 = \
  res/drawable-xlarge-xhdpi-v11/ic_menu_bookmark_add.png \
  res/drawable-xlarge-xhdpi-v11/ic_menu_bookmark_remove.png \
  $(NULL)

RES_COLOR = \
  res/color/abouthome_section_more_text.xml \
  res/color/abouthome_section_subtitle.xml \
  res/color/abouthome_section_title.xml \
  res/color/primary_text.xml \
  res/color/primary_text_inverse.xml \
  res/color/secondary_text.xml \
  res/color/secondary_text_inverse.xml \
  res/color/select_item_multichoice.xml \
  res/color/tertiary_text.xml \
  res/color/tertiary_text_inverse.xml \
  res/color/top_bookmark_item_title.xml \
  res/color/url_bar_title.xml \
  res/color/url_bar_title_hint.xml \
  $(NULL)

RES_MENU = \
  res/menu/abouthome_topsites_contextmenu.xml \
  res/menu/browser_app_menu.xml \
  res/menu/gecko_app_menu.xml \
  res/menu/home_contextmenu.xml \
  res/menu/titlebar_contextmenu.xml \
  res/menu-large-v11/browser_app_menu.xml \
  res/menu-v11/browser_app_menu.xml \
  res/menu-xlarge-v11/browser_app_menu.xml \
  $(NULL)

JAVA_CLASSPATH = $(ANDROID_SDK)/android.jar

ifdef MOZ_CRASHREPORTER
FENNEC_JAVA_FILES += CrashReporter.java
RES_DRAWABLE_MDPI += res/drawable-mdpi/crash_reporter.png
RES_LAYOUT += res/layout/crash_reporter.xml
endif

MOZ_ANDROID_DRAWABLES += \
  $(SYNC_RES_DRAWABLE)                                                          \
  mobile/android/base/resources/drawable/abouthome_logo.xml                     \
  mobile/android/base/resources/drawable/abouthome_promo_box.xml                \
  mobile/android/base/resources/drawable/action_bar_button.xml                  \
  mobile/android/base/resources/drawable/action_bar_button_inverse.xml          \
  mobile/android/base/resources/drawable/bookmark_thumbnail_bg.xml              \
  mobile/android/base/resources/drawable/url_bar_bg.xml                         \
  mobile/android/base/resources/drawable/url_bar_bg_shadow_repeat.xml           \
  mobile/android/base/resources/drawable/url_bar_entry.xml                      \
  mobile/android/base/resources/drawable/url_bar_nav_button.xml                 \
  mobile/android/base/resources/drawable/url_bar_right_edge.xml                 \
  mobile/android/base/resources/drawable/bookmark_folder.xml                    \
  mobile/android/base/resources/drawable/divider_vertical.xml                   \
  mobile/android/base/resources/drawable/favicon_bg.xml                         \
  mobile/android/base/resources/drawable/handle_end_level.xml                   \
  mobile/android/base/resources/drawable/handle_start_level.xml                 \
  mobile/android/base/resources/drawable/ic_menu_back.xml                       \
  mobile/android/base/resources/drawable/ic_menu_desktop_mode_off.xml           \
  mobile/android/base/resources/drawable/ic_menu_desktop_mode_on.xml            \
  mobile/android/base/resources/drawable/ic_menu_quit.xml                       \
  mobile/android/base/resources/drawable/menu_item_state.xml                    \
  mobile/android/base/resources/drawable/menu_level.xml                         \
  mobile/android/base/resources/drawable/progress_spinner.xml                   \
  mobile/android/base/resources/drawable/remote_tabs_child_divider.xml          \
  mobile/android/base/resources/drawable/shaped_button.xml                      \
  mobile/android/base/resources/drawable/site_security_level.xml                \
  mobile/android/base/resources/drawable/spinner.xml                            \
  mobile/android/base/resources/drawable/suggestion_selector.xml                \
  mobile/android/base/resources/drawable/tab_new_level.xml                      \
  mobile/android/base/resources/drawable/tab_row.xml                            \
  mobile/android/base/resources/drawable/tab_thumbnail.xml                      \
  mobile/android/base/resources/drawable/tabs_panel_indicator.xml               \
  mobile/android/base/resources/drawable/textbox_bg.xml                         \
  mobile/android/base/resources/drawable/toast_button.xml                       \
  mobile/android/base/resources/drawable/webapp_titlebar_bg.xml                 \
  $(NULL)

MOZ_BRANDING_DRAWABLE_MDPI = $(shell if test -e $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/android-resources.mn; then cat $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/android-resources.mn | tr '\n' ' ';  fi)

RESOURCES=$(RES_LAYOUT) $(RES_LAYOUT_LARGE_LAND_V11) $(RES_LAYOUT_LARGE_V11) $(RES_LAYOUT_XLARGE_V11) $(RES_LAYOUT_XLARGE_LAND_V11) $(RES_VALUES) $(RES_VALUES_LAND) $(RES_VALUES_V11) $(RES_VALUES_LARGE_V11) $(RES_VALUES_LARGE_LAND_V11) $(RES_VALUES_XLARGE_V11) $(RES_VALUES_LAND_V14) $(RES_VALUES_V14) $(RES_VALUES_V16) $(RES_XML) $(RES_XML_V11) $(RES_ANIM) $(RES_DRAWABLE_MDPI) $(RES_DRAWABLE_LDPI) $(RES_DRAWABLE_HDPI) $(RES_DRAWABLE_XHDPI) $(RES_DRAWABLE_MDPI_V11) $(RES_DRAWABLE_HDPI_V11) $(RES_DRAWABLE_XHDPI_V11) $(RES_DRAWABLE_LARGE_MDPI_V11) $(RES_DRAWABLE_LARGE_HDPI_V11) $(RES_DRAWABLE_LARGE_XHDPI_V11) $(RES_DRAWABLE_XLARGE_MDPI_V11) $(RES_DRAWABLE_XLARGE_HDPI_V11) $(RES_DRAWABLE_XLARGE_XHDPI_V11) $(RES_COLOR) $(RES_MENU)

RES_DIRS= \
  res/layout                    \
  res/layout-large-v11          \
  res/layout-large-land-v11     \
  res/layout-xlarge-v11         \
  res/layout-xlarge-land-v11    \
  res/values                    \
  res/values-v11                \
  res/values-large-v11          \
  res/values-xlarge-v11         \
  res/values-v14                \
  res/values-v16                \
  res/xml                       \
  res/xml-v11                   \
  res/anim                      \
  res/drawable-ldpi             \
  res/drawable-mdpi             \
  res/drawable-hdpi             \
  res/drawable-xhdpi            \
  res/drawable                  \
  res/drawable-mdpi-v11         \
  res/drawable-hdpi-v11         \
  res/drawable-xhdpi-v11        \
  res/drawable-large-mdpi-v11   \
  res/drawable-large-hdpi-v11   \
  res/drawable-large-xhdpi-v11  \
  res/drawable-xlarge-mdpi-v11  \
  res/drawable-xlarge-hdpi-v11  \
  res/drawable-xlarge-xhdpi-v11 \
  res/color                     \
  res/menu                      \
  res/menu-v11                  \
  res/menu-large-v11            \
  res/menu-xlarge-v11           \
  $(NULL)

ALL_JARS = \
  jars/gecko-browser.jar \
  jars/gecko-mozglue.jar \
  jars/gecko-util.jar \
  jars/sync-thirdparty.jar \
  jars/websockets.jar \
  $(NULL)

ifdef MOZ_WEBRTC
ALL_JARS += jars/webrtc.jar
endif

include $(topsrcdir)/config/rules.mk

# Override the Java settings with some specific android settings
include $(topsrcdir)/config/android-common.mk

# Note that we're going to set up a dependency directly between embed_android.dex and the java files
# Instead of on the .class files, since more than one .class file might be produced per .java file
# Sync dependencies are provided in a single jar. Sync classes themselves are delivered as source,
# because Android resource classes must be compiled together in order to avoid overlapping resource
# indices.
classes.dex: $(ALL_JARS)
	@echo "DX classes.dex"
	$(DX) --dex --output=classes.dex jars $(ANDROID_COMPAT_LIB)

jars/gecko-browser.jar: jars/gecko-mozglue.jar jars/gecko-util.jar jars/sync-thirdparty.jar jars/websockets.jar $(addprefix $(srcdir)/,$(FENNEC_JAVA_FILES)) $(FENNEC_PP_JAVA_FILES) $(FENNEC_PP_JAVA_VIEW_FILES) $(addprefix $(srcdir)/,$(SYNC_JAVA_FILES)) $(SYNC_PP_JAVA_FILES) R.java
	@echo "JAR gecko-browser.jar"
	$(NSINSTALL) -D classes/gecko-browser
	$(JAVAC) $(JAVAC_FLAGS) -Xlint:all,-deprecation,-fallthrough -d classes/gecko-browser -classpath "jars/gecko-mozglue.jar:jars/gecko-util.jar:jars/sync-thirdparty.jar:jars/websockets.jar" $(addprefix $(srcdir)/,$(FENNEC_JAVA_FILES)) $(FENNEC_PP_JAVA_FILES) $(FENNEC_PP_JAVA_VIEW_FILES) $(addprefix $(srcdir)/,$(SYNC_JAVA_FILES)) $(SYNC_PP_JAVA_FILES) R.java
	$(JAR) cMf jars/gecko-browser.jar -C classes/gecko-browser .

jars/gecko-mozglue.jar: $(addprefix $(srcdir)/,$(MOZGLUE_JAVA_FILES)) $(MOZGLUE_PP_JAVA_FILES) jars
	@echo "JAR gecko-mozglue.jar"
	$(NSINSTALL) -D classes/gecko-mozglue
	$(JAVAC) $(JAVAC_FLAGS) -Xlint:all -d classes/gecko-mozglue $(addprefix $(srcdir)/,$(MOZGLUE_JAVA_FILES)) $(MOZGLUE_PP_JAVA_FILES)
	$(JAR) cMf jars/gecko-mozglue.jar -C classes/gecko-mozglue .

jars/gecko-util.jar: jars/gecko-mozglue.jar $(addprefix $(srcdir)/,$(UTIL_JAVA_FILES)) jars
	@echo "JAR gecko-util.jar"
	$(NSINSTALL) -D classes/gecko-util
	$(JAVAC) $(JAVAC_FLAGS) -Xlint:all,-deprecation -d classes/gecko-util -classpath "jars/gecko-mozglue.jar" $(addprefix $(srcdir)/,$(UTIL_JAVA_FILES))
	$(JAR) cMf jars/gecko-util.jar -C classes/gecko-util .

jars/sync-thirdparty.jar: $(addprefix $(srcdir)/,$(SYNC_THIRDPARTY_JAVA_FILES)) jars
	@echo "JAR sync-thirdparty.jar"
	$(NSINSTALL) -D classes/sync-thirdparty
	$(JAVAC) $(JAVAC_FLAGS) -d classes/sync-thirdparty $(addprefix $(srcdir)/,$(SYNC_THIRDPARTY_JAVA_FILES))
	$(JAR) cMf jars/sync-thirdparty.jar -C classes/sync-thirdparty .

jars/websockets.jar: $(addprefix $(srcdir)/, $(WEBSOCKETS_JAVA_FILES)) jars
	@echo "JAR websockets.jar"
	$(NSINSTALL) -D classes/websockets
	$(JAVAC) $(JAVAC_FLAGS) -Xlint:all,-serial -d classes/websockets $(addprefix $(srcdir)/,$(WEBSOCKETS_JAVA_FILES))
	$(JAR) cMf jars/websockets.jar -C classes/websockets .

ifdef MOZ_WEBRTC
jars/webrtc.jar: $(addprefix $(srcdir)/, $(WEBRTC_JAVA_FILES)) jars jars/gecko-browser.jar jars/gecko-util.jar
	@echo "JAR webrtc.jar"
	$(NSINSTALL) -D classes/webrtc
	$(JAVAC) $(JAVAC_FLAGS) -d classes/webrtc -classpath classes/gecko-browser:classes/gecko-util $(addprefix $(srcdir)/,$(WEBRTC_JAVA_FILES))
	$(JAR) cMf jars/webrtc.jar -C classes/webrtc .
endif

jars:
	@echo "MKDIR jars"
	$(NSINSTALL) -D jars

CLASSES_WITH_JNI= \
    org.mozilla.gecko.GeckoAppShell \
    org.mozilla.gecko.GeckoJavaSampler \
    org.mozilla.gecko.gfx.NativePanZoomController \
    org.mozilla.gecko.ANRReporter \
    $(NULL)

ifdef MOZ_WEBSMS_BACKEND
# Note: if you are building with MOZ_WEBSMS_BACKEND turned on, then
# you will get a build error because the generated jni-stubs.inc will
# be different than the one checked in (i.e. it will have the sms-related
# JNI stubs as well). Just copy the generated file to mozglue/android/
# like the error message says and rebuild. All should be well after that.
CLASSES_WITH_JNI += org.mozilla.gecko.GeckoSmsManager
endif

jni-stubs.inc: jars/gecko-browser.jar jars/gecko-mozglue.jar jars/gecko-util.jar jars/sync-thirdparty.jar
	$(JAVAH) -o javah.out -bootclasspath $(JAVA_BOOTCLASSPATH) -classpath $(subst $(NULL) $(NULL),:,$^) $(CLASSES_WITH_JNI)
	$(PYTHON) $(topsrcdir)/mobile/android/base/jni-generator.py javah.out $@

PP_RES_XML= \
  $(SYNC_PP_RES_XML) \
  $(FENNEC_PP_XML_FILES) \
  $(NULL)

# This is kinda awful; if any of the source files change, we remake them all.
$(PP_RES_XML): $(patsubst res/%,$(srcdir)/resources/%.in,$(PP_RES_XML))
	$(PYTHON) $(topsrcdir)/config/Preprocessor.py \
             $(AUTOMATION_PPARGS) $(DEFINES) $(ACDEFINES) $(subst res/,$(srcdir)/resources/,$@).in > $@

# AndroidManifest.xml includes these files, so they need to be marked as dependencies.
SERVICES_MANIFEST_FRAGMENTS = $(wildcard $(topsrcdir)/mobile/android/services/manifests/*.in)

android-tgts = \
  AndroidManifest.xml \
  $(MOZGLUE_PP_JAVA_FILES) \
  $(FENNEC_PP_JAVA_FILES) \
  $(SYNC_PP_JAVA_FILES) \
  package-name.txt \
  $(NULL)

android-preqs = \
  Makefile.in \
  $(call mkdir_deps,$(sort $(dir $(MOZGLUE_PP_JAVA_FILES)))) \
  $(call mkdir_deps,$(sort $(dir $(FENNEC_PP_JAVA_FILES)))) \
  $(call mkdir_deps,$(sort $(dir $(SYNC_PP_JAVA_FILES)))) \
  $(SERVICES_MANIFEST_FRAGMENTS) \
  WebAppManifestFragment.xml.in \
  WebAppsFragments.java \
  $(NULL)

$(android-tgts): % : %.in $(android-preqs)
	$(PYTHON) $(topsrcdir)/config/Preprocessor.py \
             $(AUTOMATION_PPARGS) -DOBJDIR="`pwd`" $(DEFINES) $(ACDEFINES) $< > $@

# Add a predefined number of WebApp<num> classes to the WebApps class.
# These are used so that each webapp can launch in its own process
# Keep this number in sync with the max web apps in WebAppAllocator.java
NUM_WEB_APPS=100
WebAppManifestFragment.xml.in: WebAppManifestFragment.xml.frag
	@rm -f $@
	@for n in `$(PYTHON) -c "for x in range($(NUM_WEB_APPS)): print x"`; do \
		cat $< | sed s,@APPNUM@,$$n,g >> $@ ; \
	done

WebAppsFragments.java: WebAppsFragment.java.frag
	@rm -f $@
	@for n in `$(PYTHON) -c "for x in range($(NUM_WEB_APPS)): print x"`; do \
		cat $< | sed s,@APPNUM@,$$n,g >> $@ ; \
	done

# Replace @VIEWTYPE@ with different View names.
$(FENNEC_PP_JAVA_VIEW_FILES): GeckoView.java.frag
	@rm -f $@
	cat $< | sed s,@VIEWTYPE@,$(patsubst Gecko%.java,%,$@),g >> $@ ; \

res/drawable-mdpi/icon.png: $(MOZ_APP_ICON)
	$(NSINSTALL) -D res/drawable-mdpi
	cp $(ICON_PATH) $@

res/drawable-hdpi/icon.png: $(MOZ_APP_ICON)
	$(NSINSTALL) -D res/drawable-hdpi
	cp $(ICON_PATH_HDPI) $@

res/drawable-xhdpi/icon.png: $(MOZ_APP_ICON)
	$(NSINSTALL) -D res/drawable-xhdpi
	cp $(ICON_PATH_XHDPI) $@

res/drawable-xxhdpi/icon.png: $(MOZ_APP_ICON)
	$(NSINSTALL) -D res/drawable-xxhdpi
	cp $(ICON_PATH_XXHDPI) $@

RES_DRAWABLE = $(addprefix res/drawable/,$(notdir $(MOZ_ANDROID_DRAWABLES)))
$(RES_DRAWABLE): $(addprefix $(topsrcdir)/,$(MOZ_ANDROID_DRAWABLES))
	$(NSINSTALL) -D res/drawable
	$(NSINSTALL) $^ res/drawable/

RES_BRANDING_DRAWABLE_MDPI = $(addprefix res/drawable-mdpi/,$(notdir $(MOZ_BRANDING_DRAWABLE_MDPI)))
$(RES_BRANDING_DRAWABLE_MDPI): $(addprefix $(topsrcdir)/,$(MOZ_BRANDING_DRAWABLE_MDPI))
	$(NSINSTALL) -D res/drawable-mdpi
	$(NSINSTALL) $^ res/drawable-mdpi/

$(RES_DIRS):
	$(RM) -r $@
	$(NSINSTALL) -D $@

$(RESOURCES): $(RES_DIRS) $(subst res/,$(srcdir)/resources/,$(RESOURCES))
	@echo "creating $@"
	$(NSINSTALL) $(subst res/,$(srcdir)/resources/,$@) $(dir $@)


R.java: $(MOZ_APP_ICON) $(RESOURCES) $(RES_DRAWABLE) $(RES_BRANDING_DRAWABLE_MDPI) $(PP_RES_XML) res/drawable-mdpi/icon.png res/drawable-hdpi/icon.png res/drawable-xhdpi/icon.png res/drawable-xxhdpi/icon.png res/values/strings.xml AndroidManifest.xml FORCE
	$(AAPT) package -f -M AndroidManifest.xml -I $(ANDROID_SDK)/android.jar -S res -J . --custom-package org.mozilla.gecko

gecko.ap_: AndroidManifest.xml res/drawable-mdpi/icon.png res/drawable-hdpi/icon.png res/drawable-xhdpi/icon.png res/drawable-xxhdpi/icon.png $(RESOURCES) $(RES_DRAWABLE) $(RES_BRANDING_DRAWABLE_MDPI) $(PP_RES_XML) res/values/strings.xml FORCE
	$(AAPT) package -f -M AndroidManifest.xml -I $(ANDROID_SDK)/android.jar  -S res -F $@

fennec_ids.txt: fennec-ids-generator.py R.java
	$(PYTHON) $(topsrcdir)/mobile/android/base/fennec-ids-generator.py -i R.java -o $@

libs:: classes.dex package-name.txt jni-stubs.inc fennec_ids.txt
	$(INSTALL) classes.dex $(FINAL_TARGET)
	$(INSTALL) package-name.txt $(FINAL_TARGET)
	@(diff jni-stubs.inc $(topsrcdir)/mozglue/android/jni-stubs.inc >/dev/null) || \
	 (echo "*** Error: The jni-stubs have changed. Copy $(CURDIR)/jni-stubs.inc to $(topsrcdir)/mozglue/android" && exit 1)