Bug 933300 - Write preprocessed Fennec code into generated/org/mozilla/*. r=glandium

This commit is contained in:
Nick Alexander 2013-11-13 19:32:55 -08:00
parent 3453eec782
commit 3360f7d3bf
6 changed files with 188 additions and 157 deletions

View File

@ -7,10 +7,10 @@
jar = add_java_jar('annotationProcessors')
jar.sources += [
'AnnotationProcessor.java',
'CodeGenerator.java',
'MethodWithAnnotationInfo.java',
'classloader/IterableJarLoadingURLClassLoader.java',
'classloader/JarClassIterator.java',
'CodeGenerator.java',
'MethodWithAnnotationInfo.java',
'utils/AlphabeticMethodComparator.java',
'utils/GeneratableEntryPointIterator.java',
'utils/Utils.java',

View File

@ -2,7 +2,7 @@
# 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/.
DIST_FILES = package-name.txt
DIST_FILES := package-name.txt.in
ifdef MOZ_ANDROID_ANR_REPORTER
DEFINES += -DMOZ_ANDROID_ANR_REPORTER=1
@ -76,25 +76,20 @@ ifdef MOZ_LINKER_EXTRACT
DEFINES += -DMOZ_LINKER_EXTRACT=1
endif
PP_JAVAFILES = $(filter-out R.java,$(gecko-mozglue_PP_JAVAFILES) $(gecko-browser_PP_JAVAFILES))
GARBAGE += \
AndroidManifest.xml \
classes.dex \
$(PP_JAVAFILES) \
gecko.ap_ \
res/values/strings.xml \
R.java \
package-name.txt \
.aapt.deps \
fennec_ids.txt \
Manifest.java \
javah.out \
jni-stubs.inc \
GeneratedJNIWrappers.cpp \
GeneratedJNIWrappers.h \
$(NULL)
GARBAGE_DIRS += classes db jars res sync services
GARBAGE_DIRS += classes db jars res sync services generated
# Bug 567884 - Need a way to find appropriate icons during packaging
ifeq ($(MOZ_APP_NAME),fennec)
@ -121,14 +116,7 @@ ifdef MOZ_WEBRTC
ALL_JARS += webrtc.jar
endif
# We process ANDROID_RESFILES specially for now; the following flag
# disables the default processing.
IGNORE_ANDROID_RESFILES=1
include $(topsrcdir)/config/rules.mk
# Override the Java settings with some specific android settings
include $(topsrcdir)/config/android-common.mk
include $(topsrcdir)/config/config.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
@ -165,24 +153,44 @@ GeneratedJNIWrappers.cpp: $(ANNOTATION_PROCESSOR_JAR_FILES)
GeneratedJNIWrappers.cpp: $(ALL_JARS)
$(JAVA) -classpath $(JAVA_BOOTCLASSPATH):$(ANNOTATION_PROCESSOR_JAR_FILES) org.mozilla.gecko.annotationProcessors.AnnotationProcessor $(ALL_JARS)
# AndroidManifest.xml includes these files, so they need to be marked as dependencies.
SERVICES_MANIFEST_FRAGMENTS = $(wildcard $(topsrcdir)/mobile/android/services/manifests/*.in)
gecko_package_dir = generated/org/mozilla/gecko
# Like generated/org/mozilla/fennec_$USERID.
android_package_dir = $(addprefix generated/,$(subst .,/,$(ANDROID_PACKAGE_NAME)))
android-tgts = \
AndroidManifest.xml \
package-name.txt \
$(PP_JAVAFILES) \
# These _PP_JAVAFILES are specified in moz.build and defined in
# backend.mk, which is included by config.mk. Therefore this needs to
# be defined after config.mk is included.
PP_JAVAFILES := $(filter-out $(gecko_package_dir)/R.java,$(gecko-mozglue_PP_JAVAFILES) $(gecko-browser_PP_JAVAFILES))
manifest := \
AndroidManifest.xml.in \
$(NULL)
android-preqs = \
Makefile.in \
widget/GeckoView.java.frag \
$(SERVICES_MANIFEST_FRAGMENTS) \
$(NULL)
PP_TARGETS += manifest
$(android-tgts): % : %.in $(android-preqs)
$(call py_action,preprocessor, \
$(AUTOMATION_PPARGS) $(DEFINES) $(ACDEFINES) $< -o $@)
# Certain source files need to be preprocessed. This special rule
# generates these files into generated/org/mozilla/gecko for
# consumption by the build system and IDEs.
preprocessed := $(addsuffix .in,$(subst $(gecko_package_dir)/,,$(filter $(gecko_package_dir)/%,$(PP_JAVAFILES))))
preprocessed_PATH := $(gecko_package_dir)
preprocessed_KEEP_PATH := 1
PP_TARGETS += preprocessed
# Certain source files have Java package name @ANDROID_PACKAGE_NAME@.
# We hate these files but they are necessary for backwards
# compatibility. These special rules generate these files into
# generated/org/mozilla/{firefox,firefox_beta,fennec,fennec_$USER} for
# consumption by the build system and IDEs.
preprocessed_package := $(addsuffix .in,$(subst $(android_package_dir)/,,$(filter $(android_package_dir)/%,$(PP_JAVAFILES))))
preprocessed_package_PATH := $(android_package_dir)
preprocessed_package_KEEP_PATH := 1
PP_TARGETS += preprocessed_package
res/drawable-mdpi/icon.png: $(ICON_PATH)
$(NSINSTALL) -D res/drawable-mdpi
@ -224,17 +232,31 @@ all_resources = \
$(ANDROID_GENERATED_RESFILES) \
$(NULL)
R.java: $(all_resources)
$(AAPT) package -f -M AndroidManifest.xml -I $(ANDROID_SDK)/android.jar -S res -J . --custom-package org.mozilla.gecko --non-constant-id
# generated/org/mozilla/gecko/R.java and gecko.ap_ are both produced
# by aapt; this saves an aapt invocation.
gecko.ap_: $(all_resources)
$(AAPT) package -f -M AndroidManifest.xml -I $(ANDROID_SDK)/android.jar -S res -F $@
$(gecko_package_dir)/R.java: .aapt.deps
gecko.ap_: .aapt.deps
fennec_ids.txt: fennec-ids-generator.py R.java
$(PYTHON) $(topsrcdir)/mobile/android/base/fennec-ids-generator.py -i R.java -o $@
.aapt.deps: $(all_resources)
$(AAPT) package -f -M AndroidManifest.xml -I $(ANDROID_SDK)/android.jar -S res --custom-package org.mozilla.gecko --non-constant-id \
-J $(gecko_package_dir)/ \
-F gecko.ap_
@$(TOUCH) $@
libs:: classes.dex package-name.txt jni-stubs.inc GeneratedJNIWrappers.cpp fennec_ids.txt
fennec_ids.txt: $(gecko_package_dir)/R.java fennec-ids-generator.py
$(PYTHON) $(topsrcdir)/mobile/android/base/fennec-ids-generator.py -i $< -o $@
# We process ANDROID_RESFILES specially for now; the following flag
# disables the default processing.
IGNORE_ANDROID_RESFILES=1
include $(topsrcdir)/config/rules.mk
# Override the Java settings with some specific android settings
include $(topsrcdir)/config/android-common.mk
libs:: classes.dex jni-stubs.inc GeneratedJNIWrappers.cpp 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 && diff GeneratedJNIWrappers.cpp $(topsrcdir)/widget/android/GeneratedJNIWrappers.cpp >/dev/null) || \
(echo "*** Error: The generated JNI code has changed. Please run cp $(CURDIR)/jni-stubs.inc $(topsrcdir)/mozglue/android && cp $(CURDIR)/GeneratedJNIWrappers.* $(topsrcdir)/widget/android and repeat the build." && exit 1)

View File

@ -787,8 +787,8 @@ sync_java_files = [
]
sync_generated_java_files = [
'background/common/GlobalConstants.java',
'sync/SyncConstants.java',
'background/announcements/AnnouncementsConstants.java',
'background/healthreport/HealthReportConstants.java',
'org/mozilla/gecko/background/announcements/AnnouncementsConstants.java',
'org/mozilla/gecko/background/common/GlobalConstants.java',
'org/mozilla/gecko/background/healthreport/HealthReportConstants.java',
'org/mozilla/gecko/sync/SyncConstants.java',
]

View File

@ -20,16 +20,16 @@ mgjar.sources += [
'mozglue/OptionalGeneratedParameter.java',
]
mgjar.generated_sources += [
'mozglue/GeckoLoader.java',
'org/mozilla/gecko/mozglue/GeckoLoader.java',
]
mgjar.javac_flags = '-Xlint:all'
mgjar.javac_flags += ['-Xlint:all']
wsjar = add_java_jar('websockets')
wsjar.sources += [ thirdparty_source_dir + f for f in [
'com/codebutler/android_websockets/HybiParser.java',
'com/codebutler/android_websockets/WebSocketClient.java',
] ]
wsjar.javac_flags = '-Xlint:all,-serial'
wsjar.javac_flags += ['-Xlint:all,-serial']
gujar = add_java_jar('gecko-util')
gujar.sources += [
@ -51,14 +51,14 @@ gujar.sources += [
'util/ThreadUtils.java',
'util/UiAsyncTask.java',
]
gujar.extra_jars=[
gujar.extra_jars = [
'gecko-mozglue.jar'
]
gujar.javac_flags = '-Xlint:all,-deprecation'
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'
stjar.javac_flags = ['-Xlint:none']
if CONFIG['MOZ_WEBRTC']:
video_root = TOPSRCDIR + '/media/webrtc/trunk/webrtc/modules/video_capture/android/java/src/org/webrtc/videoengine/'
@ -68,28 +68,30 @@ if CONFIG['MOZ_WEBRTC']:
video_root + 'CaptureCapabilityAndroid.java',
video_root + 'VideoCaptureAndroid.java',
video_root + 'VideoCaptureDeviceInfoAndroid.java',
audio_root + 'WebRTCAudioDevice.java',
]
wrjar.sources += [
audio_root + 'AudioManagerAndroid.java',
audio_root + 'WebRTCAudioDevice.java',
]
wrjar.extra_jars = [
'gecko-browser.jar',
'gecko-util.jar',
'gecko-mozglue.jar',
]
wrjar.javac_flags = '-Xlint:all,-deprecation,-cast'
wrjar.javac_flags += ['-Xlint:all,-deprecation,-cast']
gbjar = add_java_jar('gecko-browser')
gbjar.sources += [
'ANRReporter.java',
'ActivityHandlerHelper.java',
'AlertNotification.java',
'AppNotificationClient.java',
'AutocompleteHandler.java',
'animation/AnimatorProxy.java',
'animation/HeightChangeAnimation.java',
'animation/PropertyAnimator.java',
'animation/Rotate3DAnimation.java',
'animation/ViewHelper.java',
'ANRReporter.java',
'AppNotificationClient.java',
'AutocompleteHandler.java',
'BackButton.java',
'BaseGeckoInterface.java',
'BrowserApp.java',
@ -101,10 +103,16 @@ gbjar.sources += [
'ContactService.java',
'ContextGetter.java',
'CustomEditText.java',
'db/BrowserDB.java',
'db/LocalBrowserDB.java',
'db/DBUtils.java',
'DataReportingNotification.java',
'db/BrowserContract.java',
'db/BrowserDB.java',
'db/BrowserProvider.java',
'db/DBUtils.java',
'db/FormHistoryProvider.java',
'db/LocalBrowserDB.java',
'db/PasswordsProvider.java',
'db/PerProfileContentProvider.java',
'db/TabsProvider.java',
'Distribution.java',
'DoorHanger.java',
'DoorHangerPopup.java',
@ -121,84 +129,28 @@ gbjar.sources += [
'FormAssistPopup.java',
'ForwardButton.java',
'GeckoAccessibility.java',
'GeckoApplication.java',
'GeckoApp.java',
'GeckoAppShell.java',
'GeckoActivity.java',
'GeckoActivityStatus.java',
'GeckoApp.java',
'GeckoApplication.java',
'GeckoAppShell.java',
'GeckoBatteryManager.java',
'GeckoConnectivityReceiver.java',
'GeckoEditable.java',
'GeckoEvent.java',
'GeckoHalDefines.java',
'GeckoInputConnection.java',
'GeckoJavaSampler.java',
'GeckoMessageReceiver.java',
'GeckoNetworkManager.java',
'GeckoProfile.java',
'GeckoScreenOrientationListener.java',
'GeckoSmsManager.java',
'GeckoThread.java',
'GeckoJavaSampler.java',
'GlobalHistory.java',
'GeckoUpdateReceiver.java',
'GeckoView.java',
'GeckoViewChrome.java',
'GeckoViewContent.java',
'health/BrowserHealthRecorder.java',
'health/BrowserHealthReporter.java',
'InputMethods.java',
'JavaAddonManager.java',
'LightweightTheme.java',
'LightweightThemeDrawable.java',
'MemoryMonitor.java',
'MotionEventInterceptor.java',
'NotificationClient.java',
'NotificationHandler.java',
'NotificationHelper.java',
'NotificationService.java',
'NSSBridge.java',
'OrderedBroadcastHelper.java',
'PageActionLayout.java',
'PrefsHelper.java',
'PrivateTab.java',
'prompts/Prompt.java',
'prompts/PromptInput.java',
'prompts/PromptService.java',
'prompts/IconGridInput.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',
'ShapedButton.java',
'SharedPreferencesHelper.java',
'SiteIdentityPopup.java',
'SmsManager.java',
'SurfaceBits.java',
'Tab.java',
'TabCounter.java',
'Tabs.java',
'TabsPanel.java',
'TabsTray.java',
'TabsAccessor.java',
'Telemetry.java',
'TextSelection.java',
'TextSelectionHandle.java',
'ThumbnailHelper.java',
'TouchEventInterceptor.java',
'VideoPlayer.java',
'WebAppAllocator.java',
'WebAppImpl.java',
'ZoomConstraints.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',
@ -242,18 +194,21 @@ gbjar.sources += [
'gfx/TouchEventHandler.java',
'gfx/ViewTransform.java',
'gfx/VirtualLayer.java',
'GlobalHistory.java',
'health/BrowserHealthRecorder.java',
'health/BrowserHealthReporter.java',
'home/BookmarkFolderView.java',
'home/BookmarksListAdapter.java',
'home/BookmarksListView.java',
'home/BookmarksPage.java',
'home/BookmarkFolderView.java',
'home/BrowserSearch.java',
'home/FadedTextView.java',
'home/HistoryPage.java',
'home/HomeBanner.java',
'home/HomeFragment.java',
'home/HomeListView.java',
'home/HomePager.java',
'home/HomePagerTabStrip.java',
'home/HomeBanner.java',
'home/FadedTextView.java',
'home/LastTabsPage.java',
'home/MostRecentPage.java',
'home/MultiTypeCursorAdapter.java',
@ -270,6 +225,11 @@ gbjar.sources += [
'home/TopSitesPage.java',
'home/TopSitesThumbnailView.java',
'home/TwoLinePageRow.java',
'InputMethods.java',
'JavaAddonManager.java',
'LightweightTheme.java',
'LightweightThemeDrawable.java',
'MemoryMonitor.java',
'menu/GeckoMenu.java',
'menu/GeckoMenuInflater.java',
'menu/GeckoMenuItem.java',
@ -279,73 +239,120 @@ gbjar.sources += [
'menu/MenuItemDefault.java',
'menu/MenuPanel.java',
'menu/MenuPopup.java',
'MotionEventInterceptor.java',
'NotificationClient.java',
'NotificationHandler.java',
'NotificationHelper.java',
'NotificationService.java',
'NSSBridge.java',
'OrderedBroadcastHelper.java',
'PageActionLayout.java',
'preferences/AlignRightLinkPreference.java',
'preferences/AndroidImport.java',
'preferences/AndroidImportPreference.java',
'preferences/FontSizePreference.java',
'preferences/GeckoPreferences.java',
'preferences/GeckoPreferenceFragment.java',
'preferences/GeckoPreferences.java',
'preferences/LinkPreference.java',
'preferences/MultiChoicePreference.java',
'preferences/PrivateDataPreference.java',
'preferences/SearchPreferenceCategory.java',
'preferences/SearchEnginePreference.java',
'preferences/SearchPreferenceCategory.java',
'preferences/SyncPreference.java',
'updater/UpdateServiceHelper.java',
'PrefsHelper.java',
'PrivateTab.java',
'prompts/IconGridInput.java',
'prompts/Prompt.java',
'prompts/PromptInput.java',
'prompts/PromptService.java',
'ReaderModeUtils.java',
'ReferrerReceiver.java',
'RemoteTabs.java',
'Restarter.java',
'RobocopAPI.java',
'ScrollAnimator.java',
'ServiceNotificationClient.java',
'SessionParser.java',
'ShapedButton.java',
'SharedPreferencesHelper.java',
'SiteIdentityPopup.java',
'SmsManager.java',
'sqlite/ByteBufferInputStream.java',
'sqlite/MatrixBlobCursor.java',
'sqlite/SQLiteBridge.java',
'sqlite/SQLiteBridgeException.java',
'SurfaceBits.java',
'Tab.java',
'TabCounter.java',
'Tabs.java',
'TabsAccessor.java',
'TabsPanel.java',
'TabsTray.java',
'Telemetry.java',
'TextSelection.java',
'TextSelectionHandle.java',
'ThumbnailHelper.java',
'TouchEventInterceptor.java',
'updater/UpdateService.java',
'updater/UpdateServiceHelper.java',
'VideoPlayer.java',
'WebAppAllocator.java',
'WebAppImpl.java',
'widget/ActivityChooserModel.java',
'widget/AllCapsTextView.java',
'widget/AnimatedHeightLayout.java',
'widget/ArrowPopup.java',
'widget/ButtonToast.java',
'widget/CheckableLinearLayout.java',
'widget/ClickableWhenDisabledEditText.java',
'widget/ArrowPopup.java',
'widget/DateTimePicker.java',
'widget/Divider.java',
'widget/FaviconView.java',
'widget/FlowLayout.java',
'widget/GeckoPopupMenu.java',
'widget/GeckoActionProvider.java',
'widget/GeckoPopupMenu.java',
'widget/IconTabWidget.java',
'widget/TabRow.java',
'widget/ThumbnailView.java',
'widget/TwoWayView.java',
'GeckoNetworkManager.java',
'GeckoScreenOrientationListener.java',
'GeckoUpdateReceiver.java',
'ReferrerReceiver.java',
'ZoomConstraints.java',
]
gbjar.sources += [ thirdparty_source_dir + f for f in [
'com/googlecode/eyesfree/braille/selfbraille/ISelfBrailleService.java',
'com/googlecode/eyesfree/braille/selfbraille/SelfBrailleClient.java',
'com/googlecode/eyesfree/braille/selfbraille/WriteData.java',
] ]
android_package_dir = CONFIG['ANDROID_PACKAGE_NAME'].replace('.', '/')
# All generated sources are handled specially in Makefile.in. And
# R.java is handled even more specially than the others!
gbjar.generated_sources += [ android_package_dir + f for f in [
'/App.java',
'/WebApp.java',
'/WebApps.java',
] ]
gbjar.generated_sources += [
'App.java',
'AppConstants.java',
'R.java',
'SysInfo.java',
'WebApp.java',
'WebApps.java',
'widget/GeckoEditText.java',
'widget/GeckoImageButton.java',
'widget/GeckoImageView.java',
'widget/GeckoLinearLayout.java',
'widget/GeckoRelativeLayout.java',
'widget/GeckoTextSwitcher.java',
'widget/GeckoTextView.java',
'org/mozilla/gecko/AppConstants.java',
'org/mozilla/gecko/R.java',
'org/mozilla/gecko/SysInfo.java',
'org/mozilla/gecko/widget/GeckoEditText.java',
'org/mozilla/gecko/widget/GeckoImageButton.java',
'org/mozilla/gecko/widget/GeckoImageView.java',
'org/mozilla/gecko/widget/GeckoLinearLayout.java',
'org/mozilla/gecko/widget/GeckoRelativeLayout.java',
'org/mozilla/gecko/widget/GeckoTextSwitcher.java',
'org/mozilla/gecko/widget/GeckoTextView.java',
]
if CONFIG['MOZ_CRASHREPORTER']:
gbjar.sources += [ 'CrashReporter.java ']
gbjar.sources += sync_java_files
gbjar.generated_sources += sync_generated_java_files
gbjar.extra_jars=[
gbjar.extra_jars = [
'gecko-mozglue.jar',
'gecko-util.jar',
'sync-thirdparty.jar',
'websockets.jar',
]
gbjar.javac_flags = '-Xlint:all,-deprecation,-fallthrough'
gbjar.javac_flags += ['-Xlint:all,-deprecation,-fallthrough']
ANDROID_GENERATED_RESFILES += [
'res/drawable-hdpi/icon.png',

View File

@ -1054,13 +1054,13 @@ class RecursiveMakeBackend(CommonBackend):
(target, ' '.join(jar.sources)))
if jar.generated_sources:
backend_file.write('%s_PP_JAVAFILES := %s\n' %
(target, ' '.join(jar.generated_sources)))
(target, ' '.join(os.path.join('generated', f) for f in jar.generated_sources)))
if jar.extra_jars:
backend_file.write('%s_EXTRA_JARS := %s\n' %
(target, ' '.join(jar.extra_jars)))
if jar.javac_flags:
backend_file.write('%s_JAVAC_FLAGS := %s\n' %
(target, jar.javac_flags))
(target, ' '.join(jar.javac_flags)))
def _write_manifests(self, dest, manifests):
man_dir = os.path.join(self.environment.topobjdir, '_build_manifests',

View File

@ -20,6 +20,7 @@ from __future__ import unicode_literals
import os
from collections import OrderedDict
from mozbuild.util import StrictOrderingOnAppendList
from .sandbox_symbols import compute_final_target
@ -425,11 +426,12 @@ class JavaJarData(object):
"""Represents a Java JAR file.
A Java JAR has the following members:
* sources - list of input java sources
* generated_sources - list of generated input java sources
* sources - strictly ordered list of input java sources
* generated_sources - strictly ordered list of generated input
java sources
* extra_jars - list of JAR file dependencies to include on the
javac compiler classpath
* javac_flags - string containing extra flags passed to the
* javac_flags - list containing extra flags passed to the
javac compiler
"""
@ -442,12 +444,12 @@ class JavaJarData(object):
)
def __init__(self, name, sources=[], generated_sources=[],
extra_jars=[], javac_flags=None):
extra_jars=[], javac_flags=[]):
self.name = name
self.sources = list(sources)
self.generated_sources = list(generated_sources)
self.sources = StrictOrderingOnAppendList(sources)
self.generated_sources = StrictOrderingOnAppendList(generated_sources)
self.extra_jars = list(extra_jars)
self.javac_flags = javac_flags
self.javac_flags = list(javac_flags)
class InstallationTarget(SandboxDerived):