blob: 3b34d16ec965155fb29a71a2d604d3e831b4bc71 [file] [log] [blame]
# Copyright (C) 2013 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from multiprocessing import cpu_count
BROWSERS = [
'chrome',
'firefox',
'gecko1_8',
'safari',
'msie', 'ie8', 'ie9',
]
ALIASES = {
'chrome': 'safari',
'firefox': 'gecko1_8',
'msie': 'ie9',
}
MODULE = 'com.google.gerrit.GerritGwtUI'
CPU_COUNT = cpu_count()
def gwt_genrule(module, deps, suffix = ""):
dbg = 'ui_dbg' + suffix
opt = 'ui_opt' + suffix
soyc = 'ui_soyc' + suffix
module_dep = ':ui_module' + suffix
args = GWT_COMPILER_ARGS_RELEASE_MODE if suffix == "_r" else GWT_COMPILER_ARGS
genrule(
name = 'ui_optdbg' + suffix,
cmd = 'cd $TMP;' +
'unzip -q $(location :%s);' % dbg +
'mv' +
' gerrit_ui/gerrit_ui.nocache.js' +
' gerrit_ui/dbg_gerrit_ui.nocache.js;' +
'unzip -qo $(location :%s);' % opt +
'mkdir -p \$(dirname $OUT);' +
'zip -qr $OUT .',
out = 'ui_optdbg' + suffix + '.zip',
visibility = ['PUBLIC'],
)
gwt_binary(
name = opt,
modules = [module],
module_deps = [module_dep],
deps = deps + ([':' + dbg] if CPU_COUNT < 8 else []),
local_workers = CPU_COUNT,
strict = True,
experimental_args = args,
vm_args = GWT_JVM_ARGS,
)
gwt_binary(
name = dbg,
modules = [module],
style = 'PRETTY',
optimize = 0,
module_deps = [module_dep],
deps = deps,
local_workers = CPU_COUNT,
strict = True,
experimental_args = args,
vm_args = GWT_JVM_ARGS,
visibility = ['PUBLIC'],
)
gwt_binary(
name = soyc,
modules = [module],
module_deps = [module_dep],
deps = deps + [':' + dbg],
local_workers = CPU_COUNT,
strict = True,
experimental_args = args + ['-compileReport'],
vm_args = GWT_JVM_ARGS,
)
def gwt_user_agent_permutations(
name,
module_name,
modules,
style = 'PRETTY',
optimize = 0,
draft_compile = True,
module_deps = [],
deps = [],
browsers = BROWSERS,
visibility = []):
for ua in browsers:
impl = ua
if ua in ALIASES:
impl = ALIASES[ua]
xml = ''.join([
"<module rename-to='%s'>" % module_name,
"<inherits name='%s'/>" % modules[0],
"<set-property name='user.agent' value='%s'/>" % impl,
"<set-property name='locale' value='default'/>",
"</module>",
])
gwt = '%s_%s.gwt.xml' % (modules[0].replace('.', '/'), ua)
gwt_name = '%s_%s' % (name, ua)
jar = '%s.gwtxml.jar' % (gwt_name)
genrule(
name = '%s_gwtxml_gen' % gwt_name,
cmd = 'cd $TMP;' +
('mkdir -p \$(dirname %s);' % gwt) +
('echo "%s">%s;' % (xml, gwt)) +
'zip -qr $OUT .',
out = jar,
)
prebuilt_jar(
name = '%s_gwtxml_lib' % gwt_name,
binary_jar = ':%s_gwtxml_gen' % gwt_name,
gwt_jar = ':%s_gwtxml_gen' % gwt_name,
)
gwt_binary(
name = gwt_name,
modules = [modules[0] + '_' + ua],
style = style,
optimize = optimize,
draft_compile = draft_compile,
module_deps = module_deps + [':%s_gwtxml_lib' % gwt_name],
deps = deps,
local_workers = CPU_COUNT,
strict = True,
experimental_args = GWT_COMPILER_ARGS,
vm_args = GWT_JVM_ARGS,
visibility = visibility,
)