def __init__(self,
                 name,
                 srcs,
                 deps,
                 prebuilt,
                 blade,
                 kwargs):
        """Init method.

        Init the java jar target.

        """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)

        Target.__init__(self,
                        name,
                        'java_jar',
                        srcs,
                        deps,
                        blade,
                        kwargs)

        if prebuilt:
            self.data['type'] = 'prebuilt_java_jar'
        self.java_jar_cmd_list = []
        self.cmd_var_list = []
        self.java_jar_after_dep_source_list = []
        self.targets_dependency_map = {}
        self.java_jar_dep_vars = {}
        self.java_jars_map = self.blade.get_java_jars_map()
        self.sources_dependency_map = self.blade.get_sources_explict_dependency_map()
示例#2
0
    def __init__(self,
                 name,
                 srcs,
                 deps,
                 outs,
                 cmd,
                 blade,
                 kwargs):
        """Init method.

        Init the gen rule target.

        """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)
        outs = var_to_list(outs)

        Target.__init__(self,
                        name,
                        'gen_rule',
                        srcs,
                        deps,
                        None,
                        blade,
                        kwargs)

        self.data['outs'] = outs
        self.data['locations'] = []
        self.data['cmd'] = location_re.sub(self._process_location_reference, cmd)
示例#3
0
    def __init__(self, name, srcs, deps, optimize, deprecated, blade, kwargs):
        """Init method.

        Init the thrift target.

        """
        srcs = var_to_list(srcs)
        self._check_thrift_srcs_name(srcs)
        CcTarget.__init__(self, name, 'thrift_library', srcs, deps, '', [], [],
                          [], optimize, [], [], blade, kwargs)

        thrift_config = configparse.blade_config.get_config('thrift_config')
        thrift_lib = var_to_list(thrift_config['thrift_libs'])

        # Hardcode deps rule to thrift libraries.
        self._add_hardcode_library(thrift_lib)

        # Link all the symbols by default
        self.data['options']['link_all_symbols'] = True
        self.data['options']['deprecated'] = deprecated

        # For each thrift file initialize a ThriftHelper, which will be used
        # to get the source files generated from thrift file.
        self.thrift_helpers = {}
        for src in srcs:
            self.thrift_helpers[src] = ThriftHelper(
                os.path.join(self.data['path'], src))
示例#4
0
    def __init__(self,
                 name,
                 srcs,
                 deps,
                 outs,
                 cmd,
                 blade,
                 kwargs):
        """Init method.

        Init the gen rule target.

        """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)
        outs = var_to_list(outs)

        Target.__init__(self,
                        name,
                        'gen_rule',
                        srcs,
                        deps,
                        blade,
                        kwargs)

        self.data['outs'] = outs
        self.data['cmd'] = cmd
示例#5
0
    def ninja_build(self,
                    outputs,
                    rule,
                    inputs=None,
                    implicit_deps=None,
                    order_only_deps=None,
                    variables=None,
                    implicit_outputs=None):
        """Generate a ninja build statement with specified parameters. """
        outs = var_to_list(outputs)
        if implicit_outputs:
            outs.append('|')
            outs += implicit_outputs
        ins = []
        if inputs:
            ins = var_to_list(inputs)
        if implicit_deps:
            ins.append('|')
            ins += implicit_deps
        if order_only_deps:
            ins.append('||')
            ins += order_only_deps
        self._write_rule('build %s: %s %s' %
                         (' '.join(outs), rule, ' '.join(ins)))

        if variables:
            assert isinstance(variables, dict)
            for name, v in variables.iteritems():
                if v:
                    self._write_rule('  %s = %s' % (name, v))
                else:
                    self._write_rule('  %s =' % name)
示例#6
0
    def __init__(self,
                 name,
                 srcs,
                 deps,
                 type,
                 out,
                 blade,
                 kwargs):
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)

        Target.__init__(self,
                        name,
                        'package',
                        [],
                        deps,
                        None,
                        blade,
                        kwargs)

        if type not in _package_types:
            console.error_exit('%s: Invalid type %s. Types supported '
                               'by the package are %s' % (
                               self.fullname, type, ', '.join(sorted(_package_types))))
        self.data['type'] = type
        self.data['sources'], self.data['locations'] = [], []
        self._process_srcs(srcs)

        if not out:
            out = '%s.%s' % (name, type)
        self.data['out'] = out
示例#7
0
    def ninja_build(self, outputs, rule, inputs=None,
                    implicit_deps=None, order_only_deps=None,
                    variables=None, implicit_outputs=None):
        """Generate a ninja build statement with specified parameters. """
        outs = var_to_list(outputs)
        if implicit_outputs:
            outs.append('|')
            outs += implicit_outputs
        ins = []
        if inputs:
            ins = var_to_list(inputs)
        if implicit_deps:
            ins.append('|')
            ins += implicit_deps
        if order_only_deps:
            ins.append('||')
            ins += order_only_deps
        self._write_rule('build %s: %s %s' % (' '.join(outs), rule, ' '.join(ins)))

        if variables:
            assert isinstance(variables, dict)
            for name, v in variables.iteritems():
                if v:
                    self._write_rule('  %s = %s' % (name, v))
                else:
                    self._write_rule('  %s =' % name)
示例#8
0
    def __init__(self,
                 name,
                 srcs,
                 deps,
                 main,
                 base,
                 kwargs):
        """Init method. """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)

        PythonTarget.__init__(self,
                              name,
                              'py_binary',
                              srcs,
                              deps,
                              base,
                              None,
                              kwargs)

        self.data['run_in_shell'] = True
        if main:
            self.data['main'] = main
        else:
            if len(srcs) == 1:
                self.data['main'] = srcs[0]
            else:
                console.error_exit(
                    '%s: The entry file must be specified by the "main" '
                    'argument if there are more than one srcs' % self.fullname)
示例#9
0
    def __init__(self,
                 name,
                 srcs,
                 deps,
                 type,
                 out,
                 shell,
                 blade,
                 kwargs):
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)

        Target.__init__(self,
                        name,
                        'package',
                        [],
                        deps,
                        None,
                        blade,
                        kwargs)

        if type not in _package_types:
            console.error_exit('%s: Invalid type %s. Types supported '
                               'by the package are %s' % (
                               self.fullname, type, ', '.join(sorted(_package_types))))
        self.data['type'] = type
        self.data['sources'], self.data['locations'] = [], []
        self._process_srcs(srcs)

        if not out:
            out = '%s.%s' % (name, type)
        self.data['out'] = out
        self.data['shell'] = shell
示例#10
0
    def __init__(self,
                 name,
                 srcs,
                 deps,
                 prebuilt,
                 blade,
                 kwargs):
        """Init method.

        Init the java jar target.

        """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)

        Target.__init__(self,
                        name,
                        'java_jar',
                        srcs,
                        deps,
                        blade,
                        kwargs)

        if prebuilt:
            self.data['type'] = 'prebuilt_java_jar'
        self.java_jar_cmd_list = []
        self.cmd_var_list = []
        self.java_jar_after_dep_source_list = []
        self.targets_dependency_map = {}
        self.java_jar_dep_vars = {}
        self.java_jars_map = self.blade.get_java_jars_map()
        self.sources_dependency_map = self.blade.get_sources_explict_dependency_map()
示例#11
0
    def __init__(self,
                 name,
                 type,
                 srcs,
                 deps,
                 base,
                 visibility,
                 kwargs):
        """Init method. """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)

        Target.__init__(self,
                        name,
                        type,
                        srcs,
                        deps,
                        visibility,
                        blade.blade,
                        kwargs)

        if base:
            if not base.startswith('//'):
                console.error_exit('%s: Invalid base directory %s. Option base should '
                                   'be a directory starting with \'//\' from BLADE_ROOT directory.' %
                                   (self.fullname, base))
            self.data['python_base'] = base[2:]
        self.data['python_sources'] = [self._source_file_path(s) for s in srcs]
    def __init__(self,
                 name,
                 srcs,
                 deps,
                 outs,
                 cmd,
                 blade,
                 kwargs):
        """Init method.

        Init the gen rule target.

        """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)
        outs = var_to_list(outs)

        Target.__init__(self,
                        name,
                        'gen_rule',
                        srcs,
                        deps,
                        blade,
                        kwargs)

        self.data['outs'] = outs
        self.data['cmd'] = cmd
示例#13
0
    def __init__(self,
                 name,
                 type,
                 srcs,
                 deps,
                 resources,
                 source_encoding,
                 warnings,
                 kwargs):
        """Init method.

        Init the java jar target.

        """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)
        resources = var_to_list(resources)

        Target.__init__(self,
                        name,
                        type,
                        srcs,
                        deps,
                        None,
                        blade.blade,
                        kwargs)
        self._process_resources(resources)
        self.data['source_encoding'] = source_encoding
        if warnings is not None:
            self.data['warnings'] = var_to_list(warnings)
示例#14
0
    def __init__(self,
                 name,
                 type,
                 srcs,
                 deps,
                 resources,
                 source_encoding,
                 warnings,
                 kwargs):
        """Init method.

        Init the java jar target.

        """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)
        resources = var_to_list(resources)

        Target.__init__(self,
                        name,
                        type,
                        srcs,
                        deps,
                        None,
                        blade.blade,
                        kwargs)
        self._process_resources(resources)
        self.data['source_encoding'] = source_encoding
        if warnings is not None:
            self.data['warnings'] = var_to_list(warnings)
示例#15
0
    def __init__(self,
                 name,
                 srcs,
                 deps,
                 outs,
                 cmd,
                 blade,
                 kwargs):
        """Init method.

        Init the gen rule target.

        """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)
        outs = var_to_list(outs)

        Target.__init__(self,
                        name,
                        'gen_rule',
                        srcs,
                        deps,
                        None,
                        blade,
                        kwargs)

        self.data['outs'] = outs
        self.data['locations'] = []
        self.data['cmd'] = location_re.sub(self._process_location_reference, cmd)
示例#16
0
    def __init__(self,
                 name,
                 target_type,
                 srcs,
                 deps,
                 warning,
                 defs,
                 incs,
                 extra_cppflags,
                 extra_linkflags,
                 blade,
                 kwargs):
        """Init method.

        Init the cu target.

        """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)
        extra_cppflags = var_to_list(extra_cppflags)
        extra_linkflags = var_to_list(extra_linkflags)

        CcTarget.__init__(self,
                          name,
                          target_type,
                          srcs,
                          deps,
                          warning,
                          defs,
                          incs,
                          [], [],
                          extra_cppflags,
                          extra_linkflags,
                          blade,
                          kwargs)
    def __init__(self,
                 name,
                 srcs,
                 deps,
                 prebuilt,
                 blade,
                 kwargs):
        """Init method.

        Init the java jar target.

        """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)

        Target.__init__(self,
                        name,
                        'java_jar',
                        srcs,
                        deps,
                        blade,
                        kwargs)

        if prebuilt:
            self.type = 'prebuilt_java_jar'
            self.data['jar_class_path'] = self._prebuilt_java_jar_src_path()
        self.data['java_jars'] = []
        self.java_jar_cmd_list = []
        self.cmd_var_list = []
        self.java_jar_after_dep_source_list = []
        self.targets_dependency_map = {}
        self.java_jar_dep_vars = {}
示例#18
0
    def __init__(self, name, srcs, deps, optimize, deprecated, blade, kwargs):
        """Init method.

        Init the thrift target.

        """
        srcs = var_to_list(srcs)
        self._check_thrift_srcs_name(srcs)
        CcTarget.__init__(self, name, 'fbthrift_library', srcs, deps, None, '',
                          [], [], [], optimize, [], [], blade, kwargs)

        fbthrift_config = config.get_section('fbthrift_config')
        fbthrift_libs = var_to_list(fbthrift_config['fbthrift_libs'])
        fbthrift1_bin = fbthrift_config['fbthrift1']
        fbthrift2_bin = fbthrift_config['fbthrift2']

        # Hardcode deps rule to thrift libraries.
        self._add_hardcode_library(fbthrift_libs)

        # Link all the symbols by default
        self.data['link_all_symbols'] = True

        # For each thrift file initialize a FBThriftHelper, which will be used
        # to get the source files generated from thrift file.
        self.fbthrift_helpers = {}
        for src in srcs:
            self.fbthrift_helpers[src] = FBThriftHelper(
                os.path.join(self.path, src))
示例#19
0
    def __init__(self,
                 name,
                 target_type,
                 srcs,
                 deps,
                 warning,
                 defs,
                 incs,
                 extra_cppflags,
                 extra_linkflags,
                 blade,
                 kwargs):
        """Init method.

        Init the cu target.

        """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)
        extra_cppflags = var_to_list(extra_cppflags)
        extra_linkflags = var_to_list(extra_linkflags)

        CcTarget.__init__(self,
                          name,
                          target_type,
                          srcs,
                          deps,
                          warning,
                          defs,
                          incs,
                          [], [],
                          extra_cppflags,
                          extra_linkflags,
                          blade,
                          kwargs)
示例#20
0
    def __init__(self, name, srcs, deps, optimize, deprecated,
                 generate_descriptors, blade, kwargs):
        """Init method.

        Init the proto target.

        """
        srcs_list = var_to_list(srcs)
        self._check_proto_srcs_name(srcs_list)
        CcTarget.__init__(self, name, 'proto_library', srcs, deps, '', [], [],
                          [], optimize, [], [], blade, kwargs)

        proto_config = configparse.blade_config.get_config(
            'proto_library_config')
        protobuf_lib = var_to_list(proto_config['protobuf_libs'])

        # Hardcode deps rule to thirdparty protobuf lib.
        self._add_hardcode_library(protobuf_lib)

        # Link all the symbols by default
        self.data['link_all_symbols'] = True
        self.data['deprecated'] = deprecated
        self.data['java_sources_explict_dependency'] = []
        self.data['python_vars'] = []
        self.data['python_sources'] = []
        self.data['generate_descriptors'] = generate_descriptors
示例#21
0
 def __init__(self, name, srcs, deps, resources, source_encoding, warnings,
              exported_deps, provided_deps, kwargs):
     exported_deps = var_to_list(exported_deps)
     provided_deps = var_to_list(provided_deps)
     all_deps = var_to_list(deps) + exported_deps + provided_deps
     ScalaTarget.__init__(self, name, 'scala_library', srcs, all_deps,
                          resources, source_encoding, warnings, kwargs)
     self.data['exported_deps'] = self._unify_deps(exported_deps)
     self.data['provided_deps'] = self._unify_deps(provided_deps)
示例#22
0
    def __init__(self, name, srcs, deps, prebuilt, blade, kwargs):
        """Init method. """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)

        Target.__init__(self, name, 'py_egg', srcs, deps, None, blade, kwargs)

        if prebuilt:
            self.type = 'prebuilt_py_egg'
示例#23
0
    def __init__(self, name, srcs, deps, testdata, kwargs):
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)
        testdata = var_to_list(testdata)

        Target.__init__(self, name, 'sh_test', srcs, deps, None, blade.blade,
                        kwargs)

        self._process_test_data(testdata)
示例#24
0
    def __init__(self, name, srcs, deps, prebuilt, blade, kwargs):
        """Init method. """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)

        Target.__init__(self, name, 'py_binary', srcs, deps, blade, kwargs)

        if prebuilt:
            self.data['type'] = 'prebuilt_py_binary'
示例#25
0
 def __init__(self, name, srcs, deps, resources, source_encoding, warnings,
              exported_deps, provided_deps, kwargs):
     exported_deps = var_to_list(exported_deps)
     provided_deps = var_to_list(provided_deps)
     all_deps = var_to_list(deps) + exported_deps + provided_deps
     ScalaTarget.__init__(self, name, 'scala_library', srcs, all_deps,
                          resources, source_encoding, warnings, kwargs)
     self.data['exported_deps'] = self._unify_deps(exported_deps)
     self.data['provided_deps'] = self._unify_deps(provided_deps)
示例#26
0
    def __init__(self, name, type, srcs, deps, kwargs):
        """Init the go target. """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)

        Target.__init__(self, name, type, srcs, deps, None, blade.blade,
                        kwargs)

        self._set_go_package()
        self._init_go_environment()
示例#27
0
    def __init__(self, name, type, srcs, deps, prebuilt, blade, kwargs):
        """Init method.

        Init the java jar target.

        """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)

        Target.__init__(self, name, type, srcs, deps, blade, kwargs)
示例#28
0
    def __init__(self, name, target_type, srcs, deps, warning, defs, incs,
                 export_incs, optimize, extra_cppflags, extra_linkflags,
                 install_dir, extra_cmds, blade, kwargs):
        """Init method.

        Init the cc target.

        """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)
        defs = var_to_list(defs)
        incs = var_to_list(incs)
        export_incs = var_to_list(export_incs)
        opt = var_to_list(optimize)
        extra_cppflags = var_to_list(extra_cppflags)
        extra_linkflags = var_to_list(extra_linkflags)
        extra_cmds = var_to_list(extra_cmds)

        Target.__init__(self, name, target_type, srcs, deps, blade, kwargs)

        self.data['warning'] = warning
        self.data['defs'] = defs
        self.data['incs'] = incs
        self.data['export_incs'] = export_incs
        self.data['optimize'] = opt
        self.data['extra_cppflags'] = extra_cppflags
        self.data['extra_linkflags'] = extra_linkflags
        self.data['install_dir'] = install_dir
        self.data['extra_cmds'] = extra_cmds

        self._check_defs()
        self._check_incorrect_no_warning()
示例#29
0
    def __init__(self,
                 name,
                 srcs,
                 deps,
                 optimize,
                 deprecated,
                 blade,
                 kwargs):
        """Init method.

        Init the thrift target.

        """
        srcs = var_to_list(srcs)
        self._check_thrift_srcs_name(srcs)
        CcTarget.__init__(self,
                          name,
                          'thrift_library',
                          srcs,
                          deps,
                          '',
                          [], [], [], optimize, [], [],'',[],
                          blade,
                          kwargs)
        self.data['python_vars'] = []
        self.data['python_sources'] = []

        thrift_config = configparse.blade_config.get_config('thrift_config')
        thrift_lib = var_to_list(thrift_config['thrift_libs'])
        thrift_bin = thrift_config['thrift']
        if thrift_bin.startswith("//"):
            dkey = self._convert_string_to_target_helper(thrift_bin)
            if dkey not in self.expanded_deps:
                self.expanded_deps.append(dkey)
            if dkey not in self.deps:
                self.deps.append(dkey)


        # Hardcode deps rule to thrift libraries.
        self._add_hardcode_library(thrift_lib)

        # Link all the symbols by default
        self.data['link_all_symbols'] = True
        self.data['deprecated'] = deprecated
        self.data['java_sources_explict_dependency'] = []

        # For each thrift file initialize a ThriftHelper, which will be used
        # to get the source files generated from thrift file.
        self.thrift_helpers = {}
        for src in srcs:
            self.thrift_helpers[src] = ThriftHelper(
                    os.path.join(self.path, src))
示例#30
0
    def __init__(self, name, srcs, deps, prebuilt, blade, kwargs):
        """Init method. """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)

        Target.__init__(self, name, 'py_binary', srcs, deps, blade, kwargs)

        self.blade = blade
        options = blade.get_options()
        setattr(options, 'generate_dynamic', True)

        if prebuilt:
            self.type = 'prebuilt_py_binary'
示例#31
0
    def __init__(self,
                 name,
                 target_type,
                 srcs,
                 deps,
                 warning,
                 defs,
                 incs,
                 export_incs,
                 optimize,
                 extra_cppflags,
                 extra_linkflags,
                 blade,
                 kwargs):
        """Init method.

        Init the cc target.

        """
        srcs_list = var_to_list(srcs)
        srcs = []
        for item in srcs_list:
            if (';' in item):
                # file list expanded with asterisk wildcard
                file_name_array = string.split(item, ';')
                for file_name in file_name_array:
                    srcs.append(file_name)
            else:
                srcs.append(item)
        deps = var_to_list(deps)
        defs = var_to_list(defs)
        incs = var_to_list(incs)
        export_incs = var_to_list(export_incs)
        opt = var_to_list(optimize)
        extra_cppflags = var_to_list(extra_cppflags)
        extra_linkflags = var_to_list(extra_linkflags)

        Target.__init__(self,
                        name,
                        target_type,
                        srcs,
                        deps,
                        blade,
                        kwargs)

        self.data['warning'] = warning
        self.data['defs'] = defs
        # add by zxy([email protected]) 20140929 support absolute include path (/common/gsl/include)
        for index, item in enumerate(incs):
            if (item.startswith('/')):
                incs[index] = find_relative_path(self.path, item)
        #end
        self.data['incs'] = incs
        self.data['export_incs'] = export_incs
        self.data['optimize'] = opt
        self.data['extra_cppflags'] = extra_cppflags
        self.data['extra_linkflags'] = extra_linkflags

        self._check_defs()
        self._check_incorrect_no_warning()
 def _check_proto_deps(self):
     """Only proto_library or gen_rule target is allowed as deps. """
     proto_config = config.get_section('proto_library_config')
     protobuf_libs = var_to_list(proto_config['protobuf_libs'])
     protobuf_java_libs = var_to_list(proto_config['protobuf_java_libs'])
     protobuf_libs = [self._unify_dep(d) for d in protobuf_libs + protobuf_java_libs]
     proto_deps = protobuf_libs + self.data['protoc_plugin_deps']
     for dkey in self.deps:
         if dkey in proto_deps:
             continue
         dep = self.target_database[dkey]
         if dep.type != 'proto_library' and dep.type != 'gen_rule':
             console.error_exit('%s: Invalid dep %s. Proto_library can '
                 'only depend on proto_library or gen_rule.' %
                 (self.fullname, dep.fullname))
示例#33
0
 def _check_proto_deps(self):
     """Only proto_library or gen_rule target is allowed as deps. """
     proto_config = configparse.blade_config.get_config('proto_library_config')
     protobuf_libs = var_to_list(proto_config['protobuf_libs'])
     protobuf_java_libs = var_to_list(proto_config['protobuf_java_libs'])
     protobuf_libs = [self._unify_dep(d) for d in protobuf_libs + protobuf_java_libs]
     proto_deps = protobuf_libs + self.data['protoc_plugin_deps']
     for dkey in self.deps:
         if dkey in proto_deps:
             continue
         dep = self.target_database[dkey]
         if dep.type != 'proto_library' and dep.type != 'gen_rule':
             console.error_exit('%s: Invalid dep %s. Proto_library can '
                 'only depend on proto_library or gen_rule.' %
                 (self.fullname, dep.fullname))
示例#34
0
    def __init__(self, name, srcs, deps, warning, defs, incs, embed_version,
                 optimize, dynamic_link, testdata, extra_cppflags,
                 extra_linkflags, export_dynamic, always_run, exclusive,
                 heap_check, heap_check_debug, blade, kwargs):
        """Init method.

        Init the cc test.

        """
        cc_test_config = configparse.blade_config.get_config('cc_test_config')
        if dynamic_link is None:
            dynamic_link = cc_test_config['dynamic_link']

        CcBinary.__init__(self, name, srcs, deps, warning, defs, incs,
                          embed_version, optimize, dynamic_link,
                          extra_cppflags, extra_linkflags, export_dynamic,
                          blade, kwargs)
        self.type = 'cc_test'
        self.data['testdata'] = var_to_list(testdata)
        self.data['always_run'] = always_run
        self.data['exclusive'] = exclusive

        gtest_lib = var_to_list(cc_test_config['gtest_libs'])
        gtest_main_lib = var_to_list(cc_test_config['gtest_main_libs'])

        # Hardcode deps rule to thirdparty gtest main lib.
        self._add_hardcode_library(gtest_lib)
        self._add_hardcode_library(gtest_main_lib)

        if heap_check is None:
            heap_check = cc_test_config.get('heap_check', '')
        else:
            if heap_check not in HEAP_CHECK_VALUES:
                console.error_exit('//%s:%s: heap_check can only be in %s' %
                                   (self.path, self.name, HEAP_CHECK_VALUES))

        perftools_lib = var_to_list(cc_test_config['gperftools_libs'])
        perftools_debug_lib = var_to_list(
            cc_test_config['gperftools_debug_libs'])
        if heap_check:
            self.data['heap_check'] = heap_check

            if heap_check_debug:
                perftools_lib_list = perftools_debug_lib
            else:
                perftools_lib_list = perftools_lib

            self._add_hardcode_library(perftools_lib_list)
示例#35
0
    def _generate_target_explict_dependency(self, target_files):
        """_generate_target_explict_dependency.

        Description
        -----------
        Generates dependency relationship that two targets have no dependency
        but it really needs when user specify it in BUILD file.

        1. gen_rule target should be needed by other targets

        """
        if not target_files:
            return
        env_name = self._env_name()
        files = var_to_list(target_files)
        files_str = ','.join(['%s' % f for f in files])
        targets = self.blade.get_build_targets()
        import gen_rule_target
        deps = self.expanded_deps
        for d in deps:
            dep_target = targets[d]
            if dep_target.type == 'gen_rule':
                srcs_list = dep_target.var_name
                if srcs_list:
                    self._write_rule('%s.Depends([%s], [%s])' % (
                        env_name,
                        files_str,
                        srcs_list))
示例#36
0
 def __init__(self, name, srcs, deps, resources, source_encoding, warnings,
              prebuilt, binary_jar, exported_deps, provided_deps, kwargs):
     type = 'java_library'
     if prebuilt:
         type = 'prebuilt_java_library'
     exported_deps = var_to_list(exported_deps)
     provided_deps = var_to_list(provided_deps)
     all_deps = var_to_list(deps) + exported_deps + provided_deps
     JavaTarget.__init__(self, name, type, srcs, all_deps, resources,
                         source_encoding, warnings, kwargs)
     self.data['exported_deps'] = self._unify_deps(exported_deps)
     self.data['provided_deps'] = self._unify_deps(provided_deps)
     if prebuilt:
         if not binary_jar:
             binary_jar = name + '.jar'
         self.data['binary_jar'] = self._source_file_path(binary_jar)
示例#37
0
    def _generate_target_explict_dependency(self, target_files):
        """_generate_target_explict_dependency.

        Description
        -----------
        Generates dependency relationship that two targets have no dependency
        but it really needs when user specify it in BUILD file.

        1. gen_rule target should be needed by other targets

        """
        if not target_files:
            return
        env_name = self._env_name()
        files = var_to_list(target_files)
        files_str = ",".join(["%s" % f for f in files])
        if not self.blade.get_expanded():
            console.error_exit(
                "logic error in Blade, error in _generate_target_explict_dependency"
            )
        targets = self.blade.get_all_targets_expanded()
        files_map = self.blade.get_gen_rule_files_map()
        deps = targets[self.key]['deps']
        for d in deps:
            dep_target = targets[d]
            if dep_target['type'] == 'gen_rule':
                srcs_list = files_map[(dep_target['path'], dep_target['name'])]
                if srcs_list:
                    self._write_rule("%s.Depends([%s], [%s])" %
                                     (env_name, files_str, srcs_list))
示例#38
0
    def __init__(self, name, type, srcs, deps, base, visibility, kwargs):
        """Init method. """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)

        Target.__init__(self, name, type, srcs, deps, visibility, blade.blade,
                        kwargs)

        if base:
            if not base.startswith('//'):
                console.error_exit(
                    '%s: Invalid base directory %s. Option base should '
                    'be a directory starting with \'//\' from BLADE_ROOT directory.'
                    % (self.fullname, base))
            self.data['python_base'] = base[2:]
        self.data['python_sources'] = [self._source_file_path(s) for s in srcs]
示例#39
0
    def _generate_target_explict_dependency(self, target_files):
        """_generate_target_explict_dependency.

        Description
        -----------
        Generates dependency relationship that two targets have no dependency
        but it really needs when user specify it in BUILD file.

        1. gen_rule target should be needed by other targets

        """
        if not target_files:
            return
        env_name = self._env_name()
        files = var_to_list(target_files)
        files_str = ','.join(['%s' % f for f in files])
        targets = self.blade.get_build_targets()
        import gen_rule_target
        deps = self.expanded_deps
        for d in deps:
            dep_target = targets[d]
            if dep_target.type == 'gen_rule':
                srcs_list = dep_target.var_name
                if srcs_list:
                    self._write_rule('%s.Depends([%s], [%s])' % (
                        env_name,
                        files_str,
                        srcs_list))
示例#40
0
    def _generate_target_explict_dependency(self, target_files):
        """_generate_target_explict_dependency.

        Description
        -----------
        Generates dependency relationship that two targets have no dependency
        but it really needs when user specify it in BUILD file.

        1. gen_rule target should be needed by other targets

        """
        if not target_files:
            return
        env_name = self._env_name()
        files = var_to_list(target_files)
        files_str = ",".join(["%s" % f for f in files])
        if not self.blade.get_expanded():
            console.error_exit("logic error in Blade, error in _generate_target_explict_dependency")
        targets = self.blade.get_all_targets_expanded()
        files_map = self.blade.get_gen_rule_files_map()
        deps = targets[self.key]["deps"]
        for d in deps:
            dep_target = targets[d]
            if dep_target["type"] == "gen_rule":
                srcs_list = files_map[(dep_target["path"], dep_target["name"])]
                if srcs_list:
                    self._write_rule("%s.Depends([%s], [%s])" % (env_name, files_str, srcs_list))
示例#41
0
    def _init_visibility(self, visibility):
        """

        Parameters
        -----------
        visibility: the visibility list in BUILD file

        Description
        -----------
        Visibility determines whether another target is able to depend
        on this target.

        Visibility specify a list of targets in the same form as deps,
        i.e. //path/to:target. The default value of visibility is PUBLIC,
        which means this target is visible globally within the code base.
        Note that targets inside the same BUILD file are always visible
        to each other.
        
        """
        if visibility is None:
            return

        visibility = var_to_list(visibility)
        if visibility == ['PUBLIC']:
            return

        self.visibility = []
        for v in visibility:
            self._check_format(v)
            key = self._unify_dep(v)
            if key not in self.visibility:
                self.visibility.append(key)
示例#42
0
def cc_benchmark(name, deps=[], **kwargs):
    """cc_benchmark target. """
    cc_config = configparse.blade_config.get_config('cc_config')
    benchmark_libs = cc_config['benchmark_libs']
    benchmark_main_libs = cc_config['benchmark_main_libs']
    deps = var_to_list(deps) + benchmark_libs + benchmark_main_libs
    cc_binary(name=name, deps=deps, **kwargs)
示例#43
0
 def __init__(self, name, srcs, deps, resources, source_encoding, warnings,
              prebuilt, binary_jar, exported_deps, provided_deps, kwargs):
     type = 'java_library'
     if prebuilt:
         type = 'prebuilt_java_library'
     exported_deps = var_to_list(exported_deps)
     provided_deps = var_to_list(provided_deps)
     all_deps = var_to_list(deps) + exported_deps + provided_deps
     JavaTarget.__init__(self, name, type, srcs, all_deps, resources,
                         source_encoding, warnings, kwargs)
     self.data['exported_deps'] = self._unify_deps(exported_deps)
     self.data['provided_deps'] = self._unify_deps(provided_deps)
     if prebuilt:
         if not binary_jar:
             binary_jar = name + '.jar'
         self.data['binary_jar'] = self._source_file_path(binary_jar)
示例#44
0
def cc_benchmark(name, deps=[], **kwargs):
    """cc_benchmark target. """
    cc_config = configparse.blade_config.get_config('cc_config')
    benchmark_libs = cc_config['benchmark_libs']
    benchmark_main_libs = cc_config['benchmark_main_libs']
    deps = var_to_list(deps) + benchmark_libs + benchmark_main_libs
    cc_binary(name=name, deps=deps, **kwargs)
示例#45
0
    def _init_visibility(self, visibility):
        """

        Parameters
        -----------
        visibility: the visibility list in BUILD file

        Description
        -----------
        Visibility determines whether another target is able to depend
        on this target.

        Visibility specify a list of targets in the same form as deps,
        i.e. //path/to:target. The default value of visibility is PUBLIC,
        which means this target is visible globally within the code base.
        Note that targets inside the same BUILD file are always visible
        to each other.

        """
        if visibility is None:
            return

        visibility = var_to_list(visibility)
        if visibility == ['PUBLIC']:
            return

        self.visibility = []
        for v in visibility:
            self._check_format(v)
            key = self._unify_dep(v)
            if key not in self.visibility:
                self.visibility.append(key)
示例#46
0
    def __init__(self,
                 name,
                 target_type,
                 srcs,
                 deps,
                 warning,
                 defs,
                 incs,
                 export_incs,
                 optimize,
                 extra_cppflags,
                 extra_linkflags,
                 install_dir,
                 extra_cmds,
                 blade,
                 kwargs):
        """Init method.

        Init the cc target.

        """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)
        defs = var_to_list(defs)
        incs = var_to_list(incs)
        export_incs = var_to_list(export_incs)
        opt = var_to_list(optimize)
        extra_cppflags = var_to_list(extra_cppflags)
        extra_linkflags = var_to_list(extra_linkflags)
        extra_cmds = var_to_list(extra_cmds)
        
        Target.__init__(self,
                        name,
                        target_type,
                        srcs,
                        deps,
                        blade,
                        kwargs)

        self.data['warning'] = warning
        self.data['defs'] = defs
        self.data['incs'] = incs
        self.data['export_incs'] = export_incs
        self.data['optimize'] = opt
        self.data['extra_cppflags'] = extra_cppflags
        self.data['extra_linkflags'] = extra_linkflags
        self.data['install_dir'] = install_dir
        self.data['extra_cmds'] = extra_cmds

        self._check_defs()
        self._check_incorrect_no_warning()
示例#47
0
 def __init__(self, name, srcs, deps, resources, source_encoding, warnings,
              main_class, exclusions, testdata, target_under_test, kwargs):
     JavaBinary.__init__(self, name, srcs, deps, resources, source_encoding,
                         warnings, main_class, exclusions, kwargs)
     self.type = 'java_test'
     self.data['testdata'] = var_to_list(testdata)
     if target_under_test:
         self.data['target_under_test'] = self._unify_dep(target_under_test)
示例#48
0
    def __init__(self, name, srcs, deps, warning, defs, incs, extra_cppflags,
                 extra_linkflags, testdata, always_run, exclusive, blade,
                 kwargs):
        CuBinary.__init__(self, name, srcs, deps, warning, defs, incs,
                          extra_cppflags, extra_linkflags, blade, kwargs)
        self.type = 'cu_test'
        self.data['testdata'] = var_to_list(testdata)
        self.data['always_run'] = always_run
        self.data['exclusive'] = exclusive

        cc_test_config = configparse.blade_config.get_config('cc_test_config')
        gtest_lib = var_to_list(cc_test_config['gtest_libs'])
        gtest_main_lib = var_to_list(cc_test_config['gtest_main_libs'])

        # Hardcode deps rule to thirdparty gtest main lib.
        self._add_hardcode_library(gtest_lib)
        self._add_hardcode_library(gtest_main_lib)
示例#49
0
    def __init__(self,
                 name,
                 srcs,
                 deps,
                 optimize,
                 deprecated,
                 blade,
                 kwargs):
        """Init method.

        Init the thrift target.

        """
        srcs = var_to_list(srcs)
        self._check_thrift_srcs_name(srcs)
        CcTarget.__init__(self,
                          name,
                          'fbthrift_library',
                          srcs,
                          deps,
                          None,
                          '',
                          [], [], [], optimize, [], [],
                          blade,
                          kwargs)

        fbthrift_config = configparse.blade_config.get_config('fbthrift_config')
        fbthrift_libs = var_to_list(fbthrift_config['fbthrift_libs'])
        fbthrift1_bin = fbthrift_config['fbthrift1']
        fbthrift2_bin = fbthrift_config['fbthrift2']


        # Hardcode deps rule to thrift libraries.
        self._add_hardcode_library(fbthrift_libs)

        # Link all the symbols by default
        self.data['link_all_symbols'] = True

        # For each thrift file initialize a FBThriftHelper, which will be used
        # to get the source files generated from thrift file.
        self.fbthrift_helpers = {}
        for src in srcs:
            self.fbthrift_helpers[src] = FBThriftHelper(
                    os.path.join(self.path, src))
示例#50
0
 def __init__(self, name, srcs, deps, resources, source_encoding,
              warnings, main_class, exclusions,
              testdata, target_under_test, kwargs):
     java_test_config = configparse.blade_config.get_config('java_test_config')
     JavaBinary.__init__(self, name, srcs, deps, resources,
                         source_encoding, warnings, main_class, exclusions, kwargs)
     self.type = 'java_test'
     self.data['testdata'] = var_to_list(testdata)
     if target_under_test:
         self.data['target_under_test'] = self._unify_dep(target_under_test)
示例#51
0
    def __init__(self,
                 name,
                 srcs,
                 deps,
                 testdata,
                 kwargs):
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)
        testdata = var_to_list(testdata)

        Target.__init__(self,
                        name,
                        'sh_test',
                        srcs,
                        deps,
                        None,
                        blade.blade,
                        kwargs)

        self._process_test_data(testdata)
示例#52
0
    def __init__(self,
                 name,
                 srcs,
                 deps,
                 optimize,
                 deprecated,
                 blade,
                 kwargs):
        """Init method.

        Init the thrift target.

        """
        srcs = var_to_list(srcs)
        self._check_thrift_srcs_name(srcs)
        CcTarget.__init__(self,
                          name,
                          'thrift_library',
                          srcs,
                          deps,
                          '',
                          [], [], [], optimize, [], [],
                          blade,
                          kwargs)

        thrift_config = configparse.blade_config.get_config('thrift_config')
        thrift_lib = var_to_list(thrift_config['thrift_libs'])

        # Hardcode deps rule to thrift libraries.
        self._add_hardcode_library(thrift_lib)

        # Link all the symbols by default
        self.data['options']['link_all_symbols'] = True
        self.data['options']['deprecated'] = deprecated

        # For each thrift file initialize a ThriftHelper, which will be used
        # to get the source files generated from thrift file.
        self.thrift_helpers = {}
        for src in srcs:
            self.thrift_helpers[src] = ThriftHelper(
                    os.path.join(self.data['path'], src))
示例#53
0
 def __init__(self, name, srcs, deps, resources, source_encoding, warnings,
              testdata, kwargs):
     ScalaFatLibrary.__init__(self, name, srcs, deps, resources, source_encoding,
                              warnings, [], kwargs)
     self.type = 'scala_test'
     self.data['testdata'] = var_to_list(testdata)
     config = configparse.blade_config.get_config('scala_test_config')
     scalatest_libs = config['scalatest_libs']
     if scalatest_libs:
         self._add_hardcode_java_library(scalatest_libs)
     else:
         console.warning('scalatest jar was not configured')
示例#54
0
 def _replace_config(self, section_name, config, user_config):
     """Replace config section items"""
     for k in user_config.keys():
         if k in config:
             if isinstance(config[k], list):
                 user_config[k] = var_to_list(user_config[k])
             else:
                 user_config[k] = user_config[k]
         else:
             console.warning("%s: %s: unknown config item name: %s" % (self.current_file_name, section_name, k))
             del user_config[k]
     config.update(user_config)
示例#55
0
    def __init__(self,
                 name,
                 srcs,
                 deps,
                 prebuilt,
                 blade,
                 kwargs):
        """Init method. """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)

        Target.__init__(self,
                        name,
                        'py_binary',
                        srcs,
                        deps,
                        blade,
                        kwargs)

        if prebuilt:
            self.data['type'] = 'prebuilt_py_binary'
示例#56
0
    def __init__(self,
                 name,
                 type,
                 srcs,
                 deps,
                 kwargs):
        """Init the go target. """
        srcs = var_to_list(srcs)
        deps = var_to_list(deps)

        Target.__init__(self,
                        name,
                        type,
                        srcs,
                        deps,
                        None,
                        blade.blade,
                        kwargs)

        self._set_go_package()
        self._init_go_environment()
    def __init__(self,
                 name,
                 srcs,
                 deps,
                 optimize,
                 deprecated,
                 generate_descriptors,
                 blade,
                 kwargs):
        """Init method.

        Init the proto target.

        """
        srcs_list = var_to_list(srcs)
        self._check_proto_srcs_name(srcs_list)
        CcTarget.__init__(self,
                          name,
                          'proto_library',
                          srcs,
                          deps,
                          '',
                          [], [], [], optimize, [], [],
                          blade,
                          kwargs)

        proto_config = configparse.blade_config.get_config('proto_library_config')
        protobuf_lib = var_to_list(proto_config['protobuf_libs'])

        # Hardcode deps rule to thirdparty protobuf lib.
        self._add_hardcode_library(protobuf_lib)

        # Link all the symbols by default
        self.data['link_all_symbols'] = True
        self.data['deprecated'] = deprecated
        self.data['java_sources_explict_dependency'] = []
        self.data['python_vars'] = []
        self.data['python_sources'] = []
        self.data['generate_descriptors'] = generate_descriptors
    def __init__(self, name, srcs, deps, optimize, deprecated, blade, kwargs):
        """Init method.

        Init the proto target.

        """
        srcs_list = var_to_list(srcs)
        self._check_proto_srcs_name(srcs_list)
        CcTarget.__init__(self, name, "proto_library", srcs, deps, "", [], [], [], optimize, [], [], blade, kwargs)

        proto_config = configparse.blade_config.get_config("proto_library_config")
        protobuf_lib = var_to_list(proto_config["protobuf_libs"])

        # Hardcode deps rule to thirdparty protobuf lib.
        self._add_hardcode_library(protobuf_lib)

        # Link all the symbols by default
        self.data["link_all_symbols"] = True
        self.data["deprecated"] = deprecated
        self.data["java_sources_explict_dependency"] = []
        self.data["python_vars"] = []
        self.data["python_sources"] = []