mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-30 21:55:31 +00:00
c01c5a1e15
This patch lays the groundwork for two things. First, it paves the way for splitting AppConstants.java into two parts, a GeckoView part and a Fennec part. This is necessary because the Makefile.in preprocessing is not flexible enough to write two separate GeckoView and Fennec constants files into different directories. Second, this allows us to more flexibly generate the file contents. Gradle has a way to get compile-time constants into Java code, which we want to migrate to. The details don't matter right here, but this paves the way to move from preprocessing to generating the Gradle-style BuildConfig files while we continue to support both build systems. MozReview-Commit-ID: 2o8X99uLoaM --HG-- extra : rebase_source : 54164d685b9c2b1342b1acba2913ce07b906a7d6
117 lines
4.1 KiB
Python
117 lines
4.1 KiB
Python
#!/bin/python
|
|
|
|
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
|
# 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/.
|
|
|
|
'''
|
|
Generate BuildConfig Java source files.
|
|
|
|
BuildConfig files are the Gradle way of configuring Java values at build time.
|
|
|
|
This is the moz.build equivalent of Gradle's `buildConfigField` (see
|
|
http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ProductFlavor.html#com.android.build.gradle.internal.dsl.ProductFlavor:buildConfigField(java.lang.String,%20java.lang.String,%20java.lang.String).
|
|
This mechanism will be replaced with the Gradle native version as we
|
|
transition to Gradle.
|
|
'''
|
|
|
|
from __future__ import (
|
|
print_function,
|
|
unicode_literals,
|
|
)
|
|
|
|
from collections import defaultdict
|
|
import os
|
|
import sys
|
|
|
|
import buildconfig
|
|
from mozbuild.preprocessor import Preprocessor
|
|
|
|
|
|
def main(output_file, input_filename):
|
|
# input_filename is an absolute path, so there's no need to join with __DIR__.
|
|
pp = Preprocessor(defines=buildconfig.defines, marker='//#')
|
|
|
|
CONFIG = defaultdict(lambda: None)
|
|
CONFIG.update(buildconfig.substs)
|
|
DEFINES = {}
|
|
|
|
for var in ('MOZ_ANDROID_ACTIVITY_STREAM'
|
|
'MOZ_ANDROID_ANR_REPORTER',
|
|
'MOZ_ANDROID_BEAM',
|
|
'MOZ_ANDROID_CUSTOM_TABS',
|
|
'MOZ_ANDROID_DOWNLOADS_INTEGRATION',
|
|
'MOZ_ANDROID_DOWNLOAD_CONTENT_SERVICE',
|
|
'MOZ_ANDROID_EXCLUDE_FONTS',
|
|
'MOZ_ANDROID_GCM',
|
|
'MOZ_ANDROID_MLS_STUMBLER',
|
|
'MOZ_ANDROID_SEARCH_ACTIVITY',
|
|
'MOZ_DEBUG',
|
|
'MOZ_INSTALL_TRACKING',
|
|
'MOZ_LOCALE_SWITCHER',
|
|
'MOZ_NATIVE_DEVICES',
|
|
'MOZ_SWITCHBOARD'):
|
|
if CONFIG[var]:
|
|
DEFINES[var] = 1
|
|
|
|
for var in ('MOZ_ANDROID_GCM_SENDERID',
|
|
'MOZ_PKG_SPECIAL',
|
|
'MOZ_UPDATER'):
|
|
if CONFIG[var]:
|
|
DEFINES[var] = CONFIG[var]
|
|
|
|
for var in ('ANDROID_CPU_ARCH',
|
|
'ANDROID_PACKAGE_NAME',
|
|
'GRE_MILESTONE',
|
|
'MOZ_ANDROID_APPLICATION_CLASS',
|
|
'MOZ_ANDROID_BROWSER_INTENT_CLASS',
|
|
'MOZ_ANDROID_SEARCH_INTENT_CLASS',
|
|
'MOZ_APP_BASENAME',
|
|
'MOZ_APP_DISPLAYNAME',
|
|
'MOZ_APP_ID',
|
|
'MOZ_APP_NAME',
|
|
'MOZ_APP_UA_NAME',
|
|
'MOZ_APP_VENDOR',
|
|
'MOZ_APP_VERSION',
|
|
'MOZ_CHILD_PROCESS_NAME',
|
|
'MOZ_CRASHREPORTER',
|
|
'MOZ_MOZILLA_API_KEY',
|
|
'MOZ_UPDATE_CHANNEL',
|
|
'OMNIJAR_NAME',
|
|
'OS_TARGET',
|
|
'TARGET_XPCOM_ABI'):
|
|
DEFINES[var] = CONFIG[var]
|
|
|
|
# Mangle our package name to avoid Bug 750548.
|
|
DEFINES['MANGLED_ANDROID_PACKAGE_NAME'] = CONFIG['ANDROID_PACKAGE_NAME'].replace('fennec', 'f3nn3c')
|
|
DEFINES['MOZ_APP_ABI'] = CONFIG['TARGET_XPCOM_ABI']
|
|
if not CONFIG['COMPILE_ENVIRONMENT']:
|
|
# These should really come from the included binaries, but that's not easy.
|
|
DEFINES['MOZ_APP_ABI'] = 'arm-eabi-gcc3'
|
|
DEFINES['TARGET_XPCOM_ABI'] = 'arm-eabi-gcc3'
|
|
|
|
if '-march=armv7' in CONFIG['OS_CFLAGS']:
|
|
DEFINES['MOZ_MIN_CPU_VERSION'] = 7
|
|
else:
|
|
DEFINES['MOZ_MIN_CPU_VERSION'] = 5
|
|
|
|
# It's okay to use MOZ_ADJUST_SDK_KEY here because this doesn't
|
|
# leak the value to build logs.
|
|
if CONFIG['MOZ_INSTALL_TRACKING']:
|
|
DEFINES['MOZ_INSTALL_TRACKING_ADJUST_SDK_APP_TOKEN'] = CONFIG['MOZ_ADJUST_SDK_KEY']
|
|
|
|
# TODO: mark buildid.h as a dependency? How about the buildconfig itself?
|
|
DEFINES['MOZ_BUILDID'] = open(os.path.join(buildconfig.topobjdir, 'buildid.h')).readline().split()[2]
|
|
|
|
pp.context.update(DEFINES)
|
|
|
|
with open(input_filename, 'rU') as input:
|
|
pp.processFile(input=input, output=output_file)
|
|
|
|
return 0
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main(sys.stdout, *sys.argv[1:]))
|