gecko/mobile/android/base/Makefile.in

1060 lines
38 KiB
Makefile

# 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 = ../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
include $(topsrcdir)/ipc/app/defs.mk
USE_AUTOTARGETS_MK = 1 # mkdir_deps
include $(topsrcdir)/config/makefiles/makeutils.mk
# Enhanced error checking
javac-xlint = -Xlint:all,-deprecation,-fallthrough
DIRS = locales
# Directory deps
dir-classes = $(call mkdir_deps,classes)
dir-res-drawable = $(call mkdir_deps,res/drawable)
dir-res-drawable-hdpi = $(call mkdir_deps,res/drawable-hdpi)
dir-res-values = $(call mkdir_deps,res/values)
# Local vars to avoid typos
dir-ts = .deps/ts
gecko-ap = gecko.ap_
manifest-xml = AndroidManifest.xml
pkg-name = package-name.txt
R-java = R.java
strings-xml = res/values/strings.xml
GENERATED_DIRS += $(dir-ts)
DIST_FILES = $(pkg-name)
include $(topsrcdir)/mobile/android/base/android-sync-files.mk
#These SYNC_ variables could be moved to android-sync/fennec-copy-code.sh
SYNC_RES_XML=res/xml/sync_authenticator.xml
SYNC_PP_RES_XML=res/xml/sync_syncadapter.xml res/xml/sync_options.xml
FENNEC_JAVA_FILES = \
AboutHomeContent.java \
AboutHomeSection.java \
AlertNotification.java \
AwesomeBar.java \
AwesomeBarTabs.java \
BrowserToolbar.java \
ConfirmPreference.java \
SyncPreference.java \
db/AndroidBrowserDB.java \
db/BrowserDB.java \
db/LocalBrowserDB.java \
db/DBUtils.java \
DoorHanger.java \
DoorHangerPopup.java \
Favicons.java \
FindInPageBar.java \
FloatUtils.java \
FormAssistPopup.java \
GeckoActionBar.java \
GeckoApplication.java \
GeckoApp.java \
GeckoAppShell.java \
GeckoAsyncTask.java \
GeckoBatteryManager.java \
GeckoBackgroundThread.java \
GeckoConnectivityReceiver.java \
GeckoEvent.java \
GeckoEventListener.java \
GeckoEventResponder.java \
GeckoHalDefines.java \
GeckoInputConnection.java \
GeckoJarReader.java \
GeckoMenu.java \
GeckoMenuInflater.java \
GeckoMenuItem.java \
GeckoMessageReceiver.java \
GeckoPreferences.java \
GeckoProfile.java \
GeckoStateListDrawable.java \
GeckoThread.java \
GlobalHistory.java \
GeckoViewsFactory.java \
LinkPreference.java \
LinkTextView.java \
MenuItemActionBar.java \
MenuItemDefault.java \
NSSBridge.java \
ProfileMigrator.java \
PromptService.java \
sqlite/ByteBufferInputStream.java \
sqlite/MatrixBlobCursor.java \
sqlite/SQLiteBridge.java \
sqlite/SQLiteBridgeException.java \
RemoteTabs.java \
SetupScreen.java \
SiteIdentityPopup.java \
SurfaceBits.java \
Tab.java \
Tabs.java \
TabsTray.java \
TabsAccessor.java \
Telemetry.java \
gfx/BitmapUtils.java \
gfx/BufferedCairoImage.java \
gfx/CairoGLInfo.java \
gfx/CairoImage.java \
gfx/CairoUtils.java \
gfx/CheckerboardImage.java \
gfx/DisplayPortCalculator.java \
gfx/DisplayPortMetrics.java \
gfx/DrawTimingQueue.java \
gfx/FloatSize.java \
gfx/GeckoLayerClient.java \
gfx/GLController.java \
gfx/ImmutableViewportMetrics.java \
gfx/InputConnectionHandler.java \
gfx/IntSize.java \
gfx/Layer.java \
gfx/LayerController.java \
gfx/LayerRenderer.java \
gfx/LayerView.java \
gfx/PluginLayer.java \
gfx/NinePatchTileLayer.java \
gfx/PanningPerfAPI.java \
gfx/PointUtils.java \
gfx/RectUtils.java \
gfx/ScreenshotLayer.java \
gfx/ScrollbarLayer.java \
gfx/SingleTileLayer.java \
gfx/SurfaceTextureLayer.java \
gfx/TextLayer.java \
gfx/TextureGenerator.java \
gfx/TextureReaper.java \
gfx/TileLayer.java \
gfx/TouchEventHandler.java \
gfx/ViewTransform.java \
gfx/ViewportMetrics.java \
gfx/VirtualLayer.java \
ui/Axis.java \
ui/PanZoomController.java \
ui/SimpleScaleGestureDetector.java \
ui/SubdocumentScrollHelper.java \
GeckoNetworkManager.java \
GeckoScreenOrientationListener.java \
$(NULL)
ifdef MOZ_WEBSMS_BACKEND
FENNEC_JAVA_FILES += GeckoSmsManager.java
endif
FENNEC_PP_JAVA_FILES = \
App.java \
GeckoActivity.java \
LauncherShortcuts.java \
NotificationHandler.java \
Restarter.java \
db/BrowserContract.java \
db/BrowserProvider.java \
db/PasswordsProvider.java \
db/FormHistoryProvider.java \
db/TabsProvider.java \
db/GeckoProvider.java \
SmsManager.java \
$(NULL)
FENNEC_PP_XML_FILES = \
res/layout/abouthome_content.xml \
res/menu/gecko_menu.xml \
res/menu-v11/gecko_menu.xml \
res/menu-xlarge/gecko_menu.xml \
res/menu-sw600dp/gecko_menu.xml \
$(NULL)
ifneq (,$(findstring -march=armv7,$(OS_CFLAGS)))
MIN_CPU_VERSION=7
else
MIN_CPU_VERSION=5
endif
ifeq (,$(ANDROID_VERSION_CODE))
ANDROID_VERSION_CODE=$(shell $(PYTHON) $(topsrcdir)/toolkit/xre/make-platformini.py --print-buildid | cut -c1-10)
endif
UA_BUILDID=$(shell $(PYTHON) $(topsrcdir)/toolkit/xre/make-platformini.py --print-buildid | cut -c1-8)
# 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) \
-DMOZ_APP_DISPLAYNAME="$(MOZ_APP_DISPLAYNAME)" \
-DMOZ_APP_NAME=$(MOZ_APP_NAME) \
-DMOZ_APP_VERSION=$(MOZ_APP_VERSION) \
-DMOZ_CHILD_PROCESS_NAME=$(MOZ_CHILD_PROCESS_NAME) \
-DMOZ_MIN_CPU_VERSION=$(MIN_CPU_VERSION) \
-DMOZ_CRASHREPORTER=$(MOZ_CRASHREPORTER) \
-DANDROID_VERSION_CODE=$(ANDROID_VERSION_CODE) \
-DMOZILLA_OFFICIAL=$(MOZILLA_OFFICIAL) \
-DUA_BUILDID=$(UA_BUILDID) \
$(NULL)
ifdef MOZ_LINKER_EXTRACT
DEFINES += -DMOZ_LINKER_EXTRACT=1
endif
GARBAGE += \
$(manifest-xml) \
classes.dex \
$(FENNEC_PP_JAVA_FILES) \
$(SYNC_PP_JAVA_FILES) \
$(gecko-ap) \
$(strings-xml) \
$(R-java) \
$(FENNEC_PP_XML_FILES) \
$(SYNC_PP_RES_XML) \
$(pkg-name) \
Manifest.java \
$(NULL)
GARBAGE_DIRS += classes res sync db
# 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
# we released these builds to the public with shared IDs and need to keep them
ifeq (org.mozilla.firefox,$(ANDROID_PACKAGE_NAME))
DEFINES += -DMOZ_ANDROID_SHARED_ID="org.mozilla.firefox.sharedID"
else ifeq (org.mozilla.firefox_beta,$(ANDROID_PACKAGE_NAME))
DEFINES += -DMOZ_ANDROID_SHARED_ID="org.mozilla.firefox.sharedID"
else ifeq (org.mozilla.fennec_aurora,$(ANDROID_PACKAGE_NAME))
DEFINES += -DMOZ_ANDROID_SHARED_ID="org.mozilla.fennec.sharedID"
else ifeq (org.mozilla.fennec,$(ANDROID_PACKAGE_NAME))
DEFINES += -DMOZ_ANDROID_SHARED_ID="org.mozilla.fennec.sharedID"
endif
else
ICON_PATH = $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/content/icon48.png
ICON_PATH_HDPI = $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/content/icon64.png
DEFINES += -DMOZ_ANDROID_SHARED_ID="$(ANDROID_PACKAGE_NAME).sharedID"
endif
RES_LAYOUT = \
$(SYNC_RES_LAYOUT) \
res/layout/autocomplete_list.xml \
res/layout/autocomplete_list_item.xml \
res/layout/awesomebar.xml \
res/layout/awesomebar_actionbar.xml \
res/layout/awesomebar_folder_row.xml \
res/layout/awesomebar_header_row.xml \
res/layout/awesomebar_row.xml \
res/layout/awesomebar_search.xml \
res/layout/awesomebar_tab_indicator.xml \
res/layout/awesomebar_tabs.xml \
res/layout/bookmark_edit.xml \
res/layout/browser_toolbar.xml \
res/layout/doorhangerpopup.xml \
res/layout/doorhanger.xml \
res/layout/find_in_page_content.xml \
res/layout/gecko_app.xml \
res/layout/launch_app_list.xml \
res/layout/launch_app_listitem.xml \
res/layout/menu_item.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/site_setting_title.xml \
res/layout/setup_screen.xml \
res/layout/site_identity_popup.xml \
res/layout/remote_tabs.xml \
res/layout/remote_tabs_child.xml \
res/layout/remote_tabs_group.xml \
res/layout/tabs_counter.xml \
res/layout/tabs_row.xml \
res/layout/tabs_tray.xml \
res/layout/list_item_header.xml \
res/layout/select_dialog_list.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 \
$(NULL)
RES_LAYOUT_V11 = \
res/layout-v11/gecko_app.xml \
$(NULL)
RES_LAYOUT_LAND_V14 = \
res/layout-land-v14/browser_toolbar.xml \
$(NULL)
RES_LAYOUT_XLARGE = \
res/layout-xlarge/browser_toolbar.xml \
$(NULL)
RES_LAYOUT_SW600DP = \
res/layout-sw600dp/browser_toolbar.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/styles.xml \
res/values/themes.xml \
$(NULL)
RES_VALUES_V11 = \
res/values-v11/dimens.xml \
res/values-v11/styles.xml \
res/values-v11/themes.xml \
$(NULL)
RES_VALUES_LAND_V14 = \
res/values-land-v14/dimens.xml \
$(NULL)
RES_VALUES_SW600DP_V14 = \
res/values-sw600dp-v14/dimens.xml \
$(NULL)
RES_XML = \
res/xml/preferences.xml \
$(SYNC_RES_XML) \
$(NULL)
RES_ANIM = \
res/anim/grow_fade_in.xml \
res/anim/shrink_fade_out.xml \
$(NULL)
RES_DRAWABLE_NODPI = \
res/drawable-nodpi/abouthome_bg.png \
res/drawable-nodpi/abouthome_topsites_bg.png \
res/drawable-nodpi/background.png \
res/drawable-nodpi/tabs_tray_bg.png \
res/drawable-nodpi/tabs_tray_pressed_bg.png \
$(NULL)
RES_DRAWABLE_BASE = \
res/drawable/favicon.png \
res/drawable/folder.png \
res/drawable/abouthome_icon.png \
res/drawable/abouthome_logo.png \
res/drawable/abouthome_separator.9.png \
res/drawable/abouthome_sync_logo.png \
res/drawable/abouthome_sync_bg.9.png \
res/drawable/abouthome_sync_pressed_bg.9.png \
res/drawable/abouthome_thumbnail.png \
res/drawable/alert_addon.png \
res/drawable/alert_app.png \
res/drawable/alert_download.png \
res/drawable/awesomebar_tab.9.png \
res/drawable/awesomebar_tab_pressed.9.png \
res/drawable/ic_addons_empty.png \
res/drawable/ic_awesomebar_go.png \
res/drawable/ic_awesomebar_search.png \
res/drawable/ic_awesomebar_star.png \
res/drawable/ic_menu_back.xml \
res/drawable/ic_menu_bookmark_add.png \
res/drawable/ic_menu_bookmark_remove.png \
res/drawable/ic_menu_find_in_page.png \
res/drawable/ic_menu_reload.png \
res/drawable/ic_menu_save_as_pdf.png \
res/drawable/ic_menu_share.png \
res/drawable/ic_menu_forward.png \
res/drawable/tab_new.png \
res/drawable/tab_close.png \
res/drawable/tab_thumbnail_default.png \
res/drawable/tab_thumbnail_shadow.png \
res/drawable/tab_selected.png \
res/drawable/tabs_normal.png \
res/drawable/tabs_pressed.png \
res/drawable/tabs_more.png \
res/drawable/tabs_plus.png \
res/drawable/address_bar_back_button.xml \
res/drawable/address_bar_back_button_bg.xml \
res/drawable/address_bar_back_button_pressed_bg.xml \
res/drawable/address_bar_texture_port.png \
res/drawable/address_bar_pressed_texture_port.png \
res/drawable/address_bar_url_bg.9.png \
res/drawable/address_bar_url_outline.9.png \
res/drawable/doorhanger_arrow.png \
res/drawable/doorhanger_bg.9.png \
res/drawable/doorhanger_shadow_bg.9.png \
res/drawable/doorhanger_popup_bg.9.png \
res/drawable/find_close.png \
res/drawable/find_next.png \
res/drawable/find_prev.png \
res/drawable/larry_blue.png \
res/drawable/larry_green.png \
res/drawable/menu.xml \
res/drawable/menu_item_bg.xml \
res/drawable/menu_item_default.xml \
res/drawable/menu_item_pressed.xml \
res/drawable/site_security_identified.png \
res/drawable/site_security_verified.png \
res/drawable/urlbar_stop.png \
res/drawable/validation_arrow.png \
res/drawable/validation_arrow_inverted.png \
res/drawable/validation_bg.9.png \
res/drawable/bookmarkdefaults_favicon_support.png \
res/drawable/bookmarkdefaults_favicon_addons.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/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.png \
res/drawable-hdpi/abouthome_separator.9.png \
res/drawable-hdpi/abouthome_sync_logo.png \
res/drawable-hdpi/abouthome_sync_bg.9.png \
res/drawable-hdpi/abouthome_sync_pressed_bg.9.png \
res/drawable-hdpi/abouthome_thumbnail.png \
res/drawable-hdpi/address_bar_bg_shadow.png \
res/drawable-hdpi/alert_addon.png \
res/drawable-hdpi/alert_app.png \
res/drawable-hdpi/alert_download.png \
res/drawable-hdpi/awesomebar_tab.9.png \
res/drawable-hdpi/awesomebar_tab_pressed.9.png \
res/drawable-hdpi/ic_addons_empty.png \
res/drawable-hdpi/ic_awesomebar_go.png \
res/drawable-hdpi/ic_awesomebar_search.png \
res/drawable-hdpi/ic_awesomebar_star.png \
res/drawable-hdpi/ic_menu_bookmark_add.png \
res/drawable-hdpi/ic_menu_bookmark_remove.png \
res/drawable-hdpi/ic_menu_find_in_page.png \
res/drawable-hdpi/ic_menu_reload.png \
res/drawable-hdpi/ic_menu_save_as_pdf.png \
res/drawable-hdpi/ic_menu_share.png \
res/drawable-hdpi/ic_menu_forward.png \
res/drawable-hdpi/tab_new.png \
res/drawable-hdpi/tab_close.png \
res/drawable-hdpi/tab_thumbnail_default.png \
res/drawable-hdpi/tab_thumbnail_shadow.png \
res/drawable-hdpi/tab_selected.png \
res/drawable-hdpi/tabs_normal.png \
res/drawable-hdpi/tabs_pressed.png \
res/drawable-hdpi/tabs_more.png \
res/drawable-hdpi/tabs_plus.png \
res/drawable-hdpi/address_bar_texture_port.png \
res/drawable-hdpi/address_bar_pressed_texture_port.png \
res/drawable-hdpi/address_bar_url_bg.9.png \
res/drawable-hdpi/address_bar_url_outline.9.png \
res/drawable-hdpi/doorhanger_arrow.png \
res/drawable-hdpi/doorhanger_bg.9.png \
res/drawable-hdpi/doorhanger_shadow_bg.9.png \
res/drawable-hdpi/doorhanger_popup_bg.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/site_security_identified.png \
res/drawable-hdpi/site_security_verified.png \
res/drawable-hdpi/urlbar_stop.png \
res/drawable-hdpi/validation_arrow.png \
res/drawable-hdpi/validation_arrow_inverted.png \
res/drawable-hdpi/validation_bg.9.png \
$(addprefix res/drawable-hdpi/,$(notdir $(SYNC_RES_DRAWABLE_HDPI))) \
$(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/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_clear_site_settings.png \
res/drawable-mdpi-v11/ic_menu_find_in_page.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_share.png \
res/drawable-mdpi-v11/ic_menu_forward.png \
res/drawable-mdpi-v11/menu.png \
res/drawable-mdpi-v11/menu_panel_bg.9.png \
res/drawable-mdpi-v11/menu_popup_bg.9.png \
res/drawable-mdpi-v11/menu_popup_arrow.png \
res/drawable-mdpi-v11/menu_item_texture.png \
res/drawable-mdpi-v11/menu_item_pressed_texture.png \
res/drawable-mdpi-v11/menu_item_check.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/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_clear_site_settings.png \
res/drawable-hdpi-v11/ic_menu_find_in_page.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_share.png \
res/drawable-hdpi-v11/ic_menu_forward.png \
res/drawable-hdpi-v11/menu.png \
res/drawable-hdpi-v11/menu_panel_bg.9.png \
res/drawable-hdpi-v11/menu_popup_bg.9.png \
res/drawable-hdpi-v11/menu_popup_arrow.png \
res/drawable-hdpi-v11/menu_item_texture.png \
res/drawable-hdpi-v11/menu_item_pressed_texture.png \
res/drawable-hdpi-v11/menu_item_check.png \
$(NULL)
RES_DRAWABLE_XHDPI_V11 = \
res/drawable-xhdpi-v11/favicon.png \
res/drawable-xhdpi-v11/folder.png \
res/drawable-xhdpi-v11/abouthome_icon.png \
res/drawable-xhdpi-v11/abouthome_logo.png \
res/drawable-xhdpi-v11/abouthome_separator.9.png \
res/drawable-xhdpi-v11/abouthome_sync_logo.png \
res/drawable-xhdpi-v11/abouthome_sync_bg.9.png \
res/drawable-xhdpi-v11/abouthome_sync_pressed_bg.9.png \
res/drawable-xhdpi-v11/abouthome_thumbnail.png \
res/drawable-xhdpi-v11/address_bar_bg_shadow.png \
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/awesomebar_tab.9.png \
res/drawable-xhdpi-v11/awesomebar_tab_pressed.9.png \
res/drawable-xhdpi-v11/ic_addons_empty.png \
res/drawable-xhdpi-v11/ic_awesomebar_go.png \
res/drawable-xhdpi-v11/ic_awesomebar_search.png \
res/drawable-xhdpi-v11/ic_awesomebar_star.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_clear_site_settings.png \
res/drawable-xhdpi-v11/ic_menu_find_in_page.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_share.png \
res/drawable-xhdpi-v11/tab_new.png \
res/drawable-xhdpi-v11/tab_close.png \
res/drawable-xhdpi-v11/tab_thumbnail_default.png \
res/drawable-xhdpi-v11/tab_thumbnail_shadow.png \
res/drawable-xhdpi-v11/tab_selected.png \
res/drawable-xhdpi-v11/tabs_normal.png \
res/drawable-xhdpi-v11/tabs_pressed.png \
res/drawable-xhdpi-v11/tabs_more.png \
res/drawable-xhdpi-v11/tabs_plus.png \
res/drawable-xhdpi-v11/address_bar_texture_port.png \
res/drawable-xhdpi-v11/address_bar_pressed_texture_port.png \
res/drawable-xhdpi-v11/address_bar_url_bg.9.png \
res/drawable-xhdpi-v11/address_bar_url_outline.9.png \
res/drawable-xhdpi-v11/doorhanger_arrow.png \
res/drawable-xhdpi-v11/doorhanger_bg.9.png \
res/drawable-xhdpi-v11/doorhanger_shadow_bg.9.png \
res/drawable-xhdpi-v11/doorhanger_popup_bg.9.png \
res/drawable-xhdpi-v11/find_close.png \
res/drawable-xhdpi-v11/find_next.png \
res/drawable-xhdpi-v11/find_prev.png \
res/drawable-xhdpi-v11/urlbar_stop.png \
res/drawable-xhdpi-v11/larry_blue.png \
res/drawable-xhdpi-v11/larry_green.png \
res/drawable-xhdpi-v11/menu.png \
res/drawable-xhdpi-v11/menu_panel_bg.9.png \
res/drawable-xhdpi-v11/menu_popup_bg.9.png \
res/drawable-xhdpi-v11/menu_popup_arrow.png \
res/drawable-xhdpi-v11/menu_item_texture.png \
res/drawable-xhdpi-v11/menu_item_pressed_texture.png \
res/drawable-xhdpi-v11/menu_item_check.png \
res/drawable-xhdpi-v11/site_security_identified.png \
res/drawable-xhdpi-v11/site_security_verified.png \
res/drawable-xhdpi-v11/validation_arrow.png \
res/drawable-xhdpi-v11/validation_arrow_inverted.png \
res/drawable-xhdpi-v11/validation_bg.9.png \
$(NULL)
RES_DRAWABLE_LAND_V14 = \
res/drawable-land-v14/address_bar_bg.xml \
res/drawable-land-v14/address_bar_pressed_bg.xml \
$(NULL)
RES_DRAWABLE_LAND_MDPI_V14 = \
res/drawable-land-mdpi-v14/ic_awesomebar_go.png \
res/drawable-land-mdpi-v14/ic_awesomebar_search.png \
res/drawable-land-mdpi-v14/address_bar_texture_land.png \
res/drawable-land-mdpi-v14/address_bar_pressed_texture_land.png \
res/drawable-land-mdpi-v14/address_bar_url_bg.9.png \
res/drawable-land-mdpi-v14/address_bar_url_outline.9.png \
res/drawable-land-mdpi-v14/tabs_normal.png \
res/drawable-land-mdpi-v14/tabs_pressed.png \
res/drawable-land-mdpi-v14/tabs_more.png \
res/drawable-land-mdpi-v14/tabs_plus.png \
res/drawable-land-mdpi-v14/urlbar_stop.png \
res/drawable-land-mdpi-v14/site_security_identified.png \
res/drawable-land-mdpi-v14/site_security_verified.png \
$(NULL)
RES_DRAWABLE_LAND_HDPI_V14 = \
res/drawable-land-hdpi-v14/ic_awesomebar_go.png \
res/drawable-land-hdpi-v14/ic_awesomebar_search.png \
res/drawable-land-hdpi-v14/address_bar_texture_land.png \
res/drawable-land-hdpi-v14/address_bar_pressed_texture_land.png \
res/drawable-land-hdpi-v14/address_bar_url_bg.9.png \
res/drawable-land-hdpi-v14/address_bar_url_outline.9.png \
res/drawable-land-hdpi-v14/tabs_normal.png \
res/drawable-land-hdpi-v14/tabs_pressed.png \
res/drawable-land-hdpi-v14/tabs_more.png \
res/drawable-land-hdpi-v14/tabs_plus.png \
res/drawable-land-hdpi-v14/urlbar_stop.png \
res/drawable-land-hdpi-v14/site_security_identified.png \
res/drawable-land-hdpi-v14/site_security_verified.png \
$(NULL)
RES_DRAWABLE_LAND_XHDPI_V14 = \
res/drawable-land-xhdpi-v14/ic_awesomebar_go.png \
res/drawable-land-xhdpi-v14/ic_awesomebar_search.png \
res/drawable-land-xhdpi-v14/address_bar_texture_land.png \
res/drawable-land-xhdpi-v14/address_bar_pressed_texture_land.png \
res/drawable-land-xhdpi-v14/address_bar_url_bg.9.png \
res/drawable-land-xhdpi-v14/address_bar_url_outline.9.png \
res/drawable-land-xhdpi-v14/tabs_normal.png \
res/drawable-land-xhdpi-v14/tabs_pressed.png \
res/drawable-land-xhdpi-v14/tabs_more.png \
res/drawable-land-xhdpi-v14/tabs_plus.png \
res/drawable-land-xhdpi-v14/urlbar_stop.png \
res/drawable-land-xhdpi-v14/site_security_identified.png \
res/drawable-land-xhdpi-v14/site_security_verified.png \
$(NULL)
RES_DRAWABLE_XLARGE_MDPI = \
res/drawable-xlarge-mdpi/address_bar_bg.xml \
res/drawable-xlarge-mdpi/address_bar_pressed_bg.xml \
res/drawable-xlarge-mdpi/address_bar_texture_tablet.png \
res/drawable-xlarge-mdpi/address_bar_pressed_texture_tablet.png \
res/drawable-xlarge-mdpi/address_bar_back_button_bg.png \
res/drawable-xlarge-mdpi/address_bar_back_button_pressed_bg.png \
res/drawable-xlarge-mdpi/menu.png \
res/drawable-xlarge-mdpi/ic_menu_bookmark_add.png \
res/drawable-xlarge-mdpi/ic_menu_bookmark_remove.png \
res/drawable-xlarge-mdpi/ic_menu_reload.png \
res/drawable-xlarge-mdpi/ic_menu_forward.png \
res/drawable-xlarge-mdpi/tabs_normal.png \
res/drawable-xlarge-mdpi/tabs_pressed.png \
res/drawable-xlarge-mdpi/tabs_more.png \
res/drawable-xlarge-mdpi/tabs_plus.png \
res/drawable-xlarge-mdpi/urlbar_stop.png \
$(NULL)
RES_DRAWABLE_XLARGE_HDPI = \
res/drawable-xlarge-hdpi/address_bar_texture_tablet.png \
res/drawable-xlarge-hdpi/address_bar_pressed_texture_tablet.png \
res/drawable-xlarge-hdpi/address_bar_back_button_bg.png \
res/drawable-xlarge-hdpi/address_bar_back_button_pressed_bg.png \
res/drawable-xlarge-hdpi/menu.png \
res/drawable-xlarge-hdpi/ic_menu_bookmark_add.png \
res/drawable-xlarge-hdpi/ic_menu_bookmark_remove.png \
res/drawable-xlarge-hdpi/ic_menu_reload.png \
res/drawable-xlarge-hdpi/ic_menu_forward.png \
res/drawable-xlarge-hdpi/tabs_normal.png \
res/drawable-xlarge-hdpi/tabs_pressed.png \
res/drawable-xlarge-hdpi/tabs_more.png \
res/drawable-xlarge-hdpi/tabs_plus.png \
res/drawable-xlarge-hdpi/urlbar_stop.png \
$(NULL)
RES_DRAWABLE_XLARGE_XHDPI = \
res/drawable-xlarge-xhdpi/address_bar_texture_tablet.png \
res/drawable-xlarge-xhdpi/address_bar_pressed_texture_tablet.png \
res/drawable-xlarge-xhdpi/address_bar_back_button_bg.png \
res/drawable-xlarge-xhdpi/address_bar_back_button_pressed_bg.png \
res/drawable-xlarge-xhdpi/menu.png \
res/drawable-xlarge-xhdpi/ic_menu_bookmark_add.png \
res/drawable-xlarge-xhdpi/ic_menu_bookmark_remove.png \
res/drawable-xlarge-xhdpi/ic_menu_reload.png \
res/drawable-xlarge-xhdpi/ic_menu_forward.png \
res/drawable-xlarge-xhdpi/tabs_normal.png \
res/drawable-xlarge-xhdpi/tabs_pressed.png \
res/drawable-xlarge-xhdpi/tabs_more.png \
res/drawable-xlarge-xhdpi/tabs_plus.png \
res/drawable-xlarge-xhdpi/urlbar_stop.png \
$(NULL)
RES_DRAWABLE_SW600DP_MDPI = \
res/drawable-sw600dp-mdpi/address_bar_bg.xml \
res/drawable-sw600dp-mdpi/address_bar_texture_tablet.png \
res/drawable-sw600dp-mdpi/address_bar_pressed_texture_tablet.png \
res/drawable-sw600dp-mdpi/address_bar_back_button_bg.png \
res/drawable-sw600dp-mdpi/address_bar_back_button_pressed_bg.png \
res/drawable-sw600dp-mdpi/menu.png \
res/drawable-sw600dp-mdpi/ic_menu_bookmark_add.png \
res/drawable-sw600dp-mdpi/ic_menu_bookmark_remove.png \
res/drawable-sw600dp-mdpi/ic_menu_reload.png \
res/drawable-sw600dp-mdpi/ic_menu_forward.png \
res/drawable-sw600dp-mdpi/tabs_normal.png \
res/drawable-sw600dp-mdpi/tabs_pressed.png \
res/drawable-sw600dp-mdpi/tabs_more.png \
res/drawable-sw600dp-mdpi/tabs_plus.png \
res/drawable-sw600dp-mdpi/urlbar_stop.png \
$(NULL)
RES_DRAWABLE_SW600DP_HDPI = \
res/drawable-sw600dp-hdpi/address_bar_texture_tablet.png \
res/drawable-sw600dp-hdpi/address_bar_pressed_texture_tablet.png \
res/drawable-sw600dp-hdpi/address_bar_back_button_bg.png \
res/drawable-sw600dp-hdpi/address_bar_back_button_pressed_bg.png \
res/drawable-sw600dp-hdpi/menu.png \
res/drawable-sw600dp-hdpi/ic_menu_bookmark_add.png \
res/drawable-sw600dp-hdpi/ic_menu_bookmark_remove.png \
res/drawable-sw600dp-hdpi/ic_menu_reload.png \
res/drawable-sw600dp-hdpi/ic_menu_forward.png \
res/drawable-sw600dp-hdpi/tabs_normal.png \
res/drawable-sw600dp-hdpi/tabs_pressed.png \
res/drawable-sw600dp-hdpi/tabs_more.png \
res/drawable-sw600dp-hdpi/tabs_plus.png \
res/drawable-sw600dp-hdpi/urlbar_stop.png \
$(NULL)
RES_DRAWABLE_SW600DP_XHDPI = \
res/drawable-sw600dp-xhdpi/address_bar_texture_tablet.png \
res/drawable-sw600dp-xhdpi/address_bar_pressed_texture_tablet.png \
res/drawable-sw600dp-xhdpi/address_bar_back_button_bg.png \
res/drawable-sw600dp-xhdpi/address_bar_back_button_pressed_bg.png \
res/drawable-sw600dp-xhdpi/menu.png \
res/drawable-sw600dp-xhdpi/ic_menu_bookmark_add.png \
res/drawable-sw600dp-xhdpi/ic_menu_bookmark_remove.png \
res/drawable-sw600dp-xhdpi/ic_menu_reload.png \
res/drawable-sw600dp-xhdpi/ic_menu_forward.png \
res/drawable-sw600dp-xhdpi/tabs_normal.png \
res/drawable-sw600dp-xhdpi/tabs_pressed.png \
res/drawable-sw600dp-xhdpi/tabs_more.png \
res/drawable-sw600dp-xhdpi/tabs_plus.png \
res/drawable-sw600dp-xhdpi/urlbar_stop.png \
$(NULL)
RES_COLOR = \
res/color/awesomebar_tab_text.xml \
res/color/menu_item_title.xml \
$(NULL)
RES_MENU = \
res/menu/awesomebar_contextmenu.xml \
$(NULL)
JAVA_CLASSPATH = $(ANDROID_SDK)/android.jar
ifdef MOZ_CRASHREPORTER
FENNEC_PP_JAVA_FILES += CrashReporter.java
MOZ_ANDROID_DRAWABLES += mobile/android/base/resources/drawable/crash_reporter.png
RES_LAYOUT += res/layout/crash_reporter.xml
endif
MOZ_ANDROID_DRAWABLES += \
$(SYNC_RES_DRAWABLE) \
mobile/android/base/resources/drawable/abouthome_bg_repeat.xml \
mobile/android/base/resources/drawable/abouthome_sync_box.xml \
mobile/android/base/resources/drawable/abouthome_topsites_bg_repeat.xml \
mobile/android/base/resources/drawable/address_bar_bg.xml \
mobile/android/base/resources/drawable/address_bar_pressed_bg.xml \
mobile/android/base/resources/drawable/action_bar_button.xml \
mobile/android/base/resources/drawable/address_bar_bg_shadow.png \
mobile/android/base/resources/drawable/address_bar_bg_shadow_repeat.xml \
mobile/android/base/resources/drawable/address_bar_url_default.xml \
mobile/android/base/resources/drawable/address_bar_url_pressed.xml \
mobile/android/base/resources/drawable/autocomplete_list_bg.9.png \
mobile/android/base/resources/drawable/awesomebar_tab_indicator.xml \
mobile/android/base/resources/drawable/awesomebar_tab_press.xml \
mobile/android/base/resources/drawable/awesomebar_tab_press_selected.xml \
mobile/android/base/resources/drawable/awesomebar_tab_selected.xml \
mobile/android/base/resources/drawable/awesomebar_tab_unselected.xml \
mobile/android/base/resources/drawable/desktop_notification.png \
mobile/android/base/resources/drawable/progress_spinner.xml \
mobile/android/base/resources/drawable/progress_spinner_1.png \
mobile/android/base/resources/drawable/progress_spinner_2.png \
mobile/android/base/resources/drawable/progress_spinner_3.png \
mobile/android/base/resources/drawable/progress_spinner_4.png \
mobile/android/base/resources/drawable/progress_spinner_5.png \
mobile/android/base/resources/drawable/progress_spinner_6.png \
mobile/android/base/resources/drawable/progress_spinner_7.png \
mobile/android/base/resources/drawable/progress_spinner_8.png \
mobile/android/base/resources/drawable/progress_spinner_9.png \
mobile/android/base/resources/drawable/progress_spinner_10.png \
mobile/android/base/resources/drawable/progress_spinner_11.png \
mobile/android/base/resources/drawable/progress_spinner_12.png \
mobile/android/base/resources/drawable/remote_tabs_group_bg_repeat.xml \
mobile/android/base/resources/drawable/start.png \
mobile/android/base/resources/drawable/site_security_level.xml \
mobile/android/base/resources/drawable/tabs_button.xml \
mobile/android/base/resources/drawable/tabs_level.xml \
mobile/android/base/resources/drawable/tabs_tray_bg_repeat.xml \
mobile/android/base/resources/drawable/tabs_tray_pressed_bg_repeat.xml \
mobile/android/base/resources/drawable/tabs_tray_close_button.xml \
mobile/android/base/resources/drawable/tabs_tray_list_divider.xml \
mobile/android/base/resources/drawable/tabs_tray_list_selector.xml \
mobile/android/base/resources/drawable/shadow.png \
$(NULL)
MOZ_ANDROID_DRAWABLES += $(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_V11) $(RES_LAYOUT_LAND_V14) $(RES_LAYOUT_XLARGE) $(RES_LAYOUT_SW600DP) $(RES_VALUES) $(RES_VALUES_V11) $(RES_VALUES_LAND_V14) $(RES_VALUES_SW600DP_V14) $(RES_XML) $(RES_ANIM) $(RES_DRAWABLE_NODPI) $(RES_DRAWABLE_BASE) $(RES_DRAWABLE_LDPI) $(RES_DRAWABLE_HDPI) $(RES_DRAWABLE_MDPI_V11) $(RES_DRAWABLE_HDPI_V11) $(RES_DRAWABLE_XHDPI_V11) $(RES_DRAWABLE_LAND_V14) $(RES_DRAWABLE_LAND_MDPI_V14) $(RES_DRAWABLE_LAND_HDPI_V14) $(RES_DRAWABLE_LAND_XHDPI_V14) $(RES_DRAWABLE_XLARGE_MDPI) $(RES_DRAWABLE_XLARGE_HDPI) $(RES_DRAWABLE_XLARGE_XHDPI) $(RES_DRAWABLE_SW600DP_MDPI) $(RES_DRAWABLE_SW600DP_HDPI) $(RES_DRAWABLE_SW600DP_XHDPI) $(RES_COLOR) $(RES_MENU)
RES_DIRS= \
res/layout \
res/layout-v11 \
res/layout-land-v14 \
res/layout-xlarge \
res/layout-sw600dp \
res/values \
res/values-v11 \
res/values-land-v14 \
res/values-sw600dp-v14 \
res/xml \
res/anim \
res/drawable-nodpi \
res/drawable-ldpi \
res/drawable-mdpi \
res/drawable-hdpi \
res/drawable \
res/drawable-mdpi-v9 \
res/drawable-hdpi-v9 \
res/drawable-mdpi-v11 \
res/drawable-hdpi-v11 \
res/drawable-xhdpi-v11 \
res/drawable-land-v14 \
res/drawable-land-mdpi-v14 \
res/drawable-land-hdpi-v14 \
res/drawable-land-xhdpi-v14 \
res/drawable-xlarge-mdpi \
res/drawable-xlarge-hdpi \
res/drawable-xlarge-xhdpi \
res/drawable-sw600dp-mdpi \
res/drawable-sw600dp-hdpi \
res/drawable-sw600dp-xhdpi \
res/color \
res/menu \
res/menu-v11 \
res/menu-xlarge \
res/menu-sw600dp \
$(NULL)
GENERATED_DIRS += $(RES_DIRS)
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.
###########################################################################
# Problems to contend with:
# -------------------------------------------------------------------------
# o Third party sources will not compile cleanly with -Werror -Xlint:all
# For now maintain separate -dep and -excl{usion} lists so dependencies
# and command lines can be handled separately. This layer can be used
# to transition files over to using stricter compiler flags by moving
# files between lists. The layer should be removed after all files
# have been transitioned.
# o A 1-to-1 dep mapping (%.class: %.java) would be beneficial.
# This would allow updating individual classes within a jarfile.
# $(wildcard) can be used to gather anonymous classes.
###########################################################################
###########################################################################
third-party-classes = $(dir-ts)/third-party-classes.ts
# -----------------------------------------------------------------------
# -classes: block classes.dex compile until 3rd party has finished
###########################################################################
third-party-src=\
$(addprefix $(srcdir)/,$(SYNC_THIRDPARTY_JAVA_FILES)) \
$(NULL)
third-party-preqs=\
$(dir-classes) \
$(third-party-src) \
$(NULL)
third-party-excl=\
$(dir-classes) \
$(srcdir)/Makefile.in \
$(NULL)
# todo: review deps, target should use $? rather than $^.
third-party-classes: $(third-party-classes)
$(third-party-classes): $(third-party-preqs)
$(if $(filter-out $(third-party-excl),$^),(\
$(JAVAC) $(JAVAC_FLAGS) -d classes $(filter-out $(third-party-excl),$^)\
))
@$(TOUCH) $@
$(third-party-preqs): $(srcdir)/Makefile.in
###########################################################################
classes-dex-src=\
$(addprefix $(srcdir)/,$(FENNEC_JAVA_FILES)) \
$(FENNEC_PP_JAVA_FILES) \
$(addprefix $(srcdir)/,$(SYNC_JAVA_FILES)) \
$(SYNC_PP_JAVA_FILES) \
$(R-java) \
$(NULL)
classes-dex-preqs=\
$(dir-classes) \
$(third-party-classes) \
$(classes-dex-src) \
$(third-party-src) \
$(NULL)
classes-dex-preqs-excl=\
$(dir-classes) \
$(third-party-classes) \
$(third-party-src) \
$(srcdir)/Makefile.in \
$(NULL)
classes.dex: $(classes-dex-preqs)
$(if $(filter-out $(classes-dex-preqs-excl),$?),(\
$(JAVAC) $(JAVAC_FLAGS) $(javac-xlint) \
-d classes -classpath classes \
$(filter-out $(classes-dex-preqs-excl),$?)\
))
$(DX) --dex --output=$@ classes
# todo: replace $(srcdir)/Makefile.in with $(GLOBAL_DEPS)
$(classes-dex-preqs) : $(srcdir)/Makefile.in
###########################################################################
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.
SYNC_MANIFEST_FRAGMENTS = $(wildcard $(topsrcdir)/mobile/android/sync/manifests/*.in)
gen-preqs =\
$(call mkdir_deps,db sync/repositories/android) \
$(SYNC_MANIFEST_FRAGMENTS) \
$(NULL)
gen-tgts =\
$(manifest-xml) \
$(FENNEC_PP_JAVA_FILES) \
$(SYNC_PP_JAVA_FILES) \
$(pkg-name) \
$(NULL)
$(gen-tgts): % : %.in $(gen-preqs)
$(PYTHON) $(topsrcdir)/config/Preprocessor.py \
$(AUTOMATION_PPARGS) $(DEFINES) $(ACDEFINES) $< > $@
$(gen-preqs): $(srcdir)/Makefile.in
#####################
res/drawable/icon.png: $(dir-res-drawable) $(MOZ_APP_ICON)
cp $(ICON_PATH) $@
res/drawable-hdpi/icon.png: $(dir-res-drawable-hdpi) $(MOZ_APP_ICON)
cp $(ICON_PATH_HDPI) $@
#####################
res-drawable-preqs =\
$(dir-res-drawable) \
$(addprefix $(topsrcdir)/,$(MOZ_ANDROID_DRAWABLES)) \
$(NULL)
RES_DRAWABLE = $(addprefix res/drawable/,$(notdir $(MOZ_ANDROID_DRAWABLES)))
$(RES_DRAWABLE): $(res-drawable-preqs)
$(NSINSTALL) $^ res/drawable/
#####################
res-defaults-preqs =\
$(dir-res-values) \
$(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/res/values/defaults.xml \
$(NULL)
res/values/defaults.xml: $(res-defaults-preqs)
$(NSINSTALL) $^ res/values
# note: deps += $(RES_DIRS) moved to GENERATED_DIRS
$(RESOURCES): $(subst res/,$(srcdir)/resources/,$(RESOURCES))
@echo "creating $@"
$(NSINSTALL) $(subst res/,$(srcdir)/resources/,$@) $(dir $@)
## Common preqs for R.java and gecko.ap_
##########################################
rg-common-preqs =\
$(RESOURCES) \
$(RES_DRAWABLE) \
$(RES_DRAWABLE_LDPI) \
$(RES_DRAWABLE_MDPI) \
$(RES_DRAWABLE_HDPI) \
$(PP_RES_XML) \
res/values/defaults.xml \
res/drawable/sync_ic_launcher.png \
res/drawable/icon.png \
res/drawable-hdpi/icon.png \
$(strings-xml) \
$(if $(IS_LANGUAGE_REPACK),FORCE) \
$(NULL)
## R.java
###########
R-java-preqs =\
$(MOZ_APP_ICON) \
$(rg-common-preqs) \
$(manifest-xml) \
$(NULL)
$(R-java): $(R-java-preqs)
$(AAPT) package -f -M $(manifest-xml) -I $(ANDROID_SDK)/android.jar -S res -J . --custom-package org.mozilla.gecko
## gecko.ap_
##############
gecko-ap-preqs =\
$(manifest-xml) \
$(rg-common-preqs) \
$(NULL)
$(gecko-ap): $(gecko-ap-preqs)
$(AAPT) package -f -M $(manifest-xml) -I $(ANDROID_SDK)/android.jar -S res -F $@
#################
libs-install = $(dir-ts)/libs-install.ts
libs:: $(R-java) $(gecko-ap) third-party-classes $(libs-install)
$(libs-install): classes.dex $(pkg-name)
$(INSTALL) $^ $(FINAL_TARGET)
$(TOUCH) $@