# 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 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 = [':ui_module'], 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 = [':ui_module'], 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 = [':ui_module'], 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_name, "" % modules[0], "" % impl, "", "", ]) 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, )