Пример #1
0
 def check_autodetect_func(self):
     if self.attributes['func'](self.ctx, self.identifier):
         self.success(self.identifier)
     else:
         self.fail()
         self.ctx.undefine(inflector.define_key(self.identifier))
         self.fatal_if_needed()
Пример #2
0
 def check_autodetect_func(self):
     if self.attributes['func'](self.ctx, self.identifier):
         self.success(self.identifier)
     else:
         self.fail()
         self.ctx.undefine(inflector.define_key(self.identifier))
         self.fatal_if_needed()
Пример #3
0
 def fn(ctx, dependency_identifier):
     if ctx.env.MACOS_SDK_VERSION:
         if StrictVersion(
                 ctx.env.MACOS_SDK_VERSION) >= StrictVersion(version):
             ctx.define(inflector.define_key(dependency_identifier), 1)
             return True
     return False
Пример #4
0
def __get_features_string__(ctx):
    import inflector
    stuff = []
    for dependency_identifier in ctx.satisfied_deps:
        defkey = inflector.define_key(dependency_identifier)
        if ctx.is_defined(defkey) and ctx.get_define(defkey) == "1":
            stuff.append(dependency_identifier)
    stuff.sort()
    return " ".join(stuff)
Пример #5
0
def __get_features_string__(ctx):
    import inflector
    stuff = []
    for dependency_identifier in ctx.satisfied_deps:
        defkey = inflector.define_key(dependency_identifier)
        if ctx.is_defined(defkey) and ctx.get_define(defkey) == "1":
            stuff.append(dependency_identifier)
    stuff.sort()
    return " ".join(stuff)
Пример #6
0
 def fn(ctx, dependency_identifier):
     for header in headers:
         defaults = {'header_name': header, 'features': 'c cprogram'}
         options  = __merge_options__(dependency_identifier, defaults, kw_ext)
         if ctx.check(**options):
             undef_others(ctx, headers, header)
             ctx.define(inflector.define_key(dependency_identifier), 1)
             return True
     undef_others(ctx, headers, None)
     return False
 def fn(ctx, dependency_identifier):
     for header in headers:
         defaults = {'header_name': header, 'features': 'c cprogram'}
         options  = __merge_options__(dependency_identifier, defaults, kw_ext)
         if ctx.check(**options):
             undef_others(ctx, headers, header)
             ctx.define(inflector.define_key(dependency_identifier), 1)
             return True
     undef_others(ctx, headers, None)
     return False
Пример #8
0
    def check(self):
        self.ctx.start_msg('Checking for {0}'.format(self.desc))

        try:
            self.check_group_disabled()
            self.check_disabled()
            self.check_dependencies()
        except DependencyError:
            # No check was run, since the prerequisites of the dependency are
            # not satisfied. Make sure the define is 'undefined' so that we
            # get a `#define YYY 0` in `config.h`.
            self.ctx.undefine(inflector.define_key(self.identifier))
            self.fatal_if_needed()
            return

        self.check_autodetect_func()
Пример #9
0
    def fn(ctx, dependency_identifier, **kw):
        argsl = list(args)
        packages = args[::2]
        verchecks = args[1::2]
        sargs = []
        pkgc_args = _pkgc_args
        dyn_libs = {}
        for i in range(0, len(packages)):
            if i < len(verchecks):
                sargs.append(packages[i] + ' ' + verchecks[i])
            else:
                sargs.append(packages[i])
            if _dyn_libs and _dyn_libs[i]:
                dyn_libs[packages[i]] = _dyn_libs[i]
        if ctx.dependency_satisfied('static-build') and not dyn_libs:
            pkgc_args += ["--static"]

        defaults = {
            'path': ctx.env.PKG_CONFIG,
            'package': " ".join(packages),
            'args': sargs + pkgc_args
        }
        opts = __merge_options__(dependency_identifier, defaults, kw_ext, kw)

        # Warning! Megahack incoming: when parsing flags in `parse_flags` waf
        # uses append_unique. This appends the flags only if they aren't
        # already present in the list. This causes breakage if one checks for
        # multiple pkg-config packages in a single call as stuff like -lm is
        # added only at its first occurrence.
        original_append_unique = ConfigSet.append_unique
        ConfigSet.append_unique = ConfigSet.append_value
        result = ctx.check_cfg(**opts)
        ConfigSet.append_unique = original_append_unique

        defkey = inflector.define_key(dependency_identifier)
        if result:
            ctx.define(defkey, 1)
            for x in dyn_libs.keys():
                ctx.env['LIB_' + x] += dyn_libs[x]
        else:
            ctx.add_optional_message(dependency_identifier,
                                     "'{0}' not found".format(" ".join(sargs)))
            ctx.undefine(defkey)
        return result
Пример #10
0
    def fn(ctx, dependency_identifier, **kw):
        argsl     = list(args)
        packages  = args[::2]
        verchecks = args[1::2]
        sargs     = []
        pkgc_args = _pkgc_args
        dyn_libs  = {}
        for i in range(0, len(packages)):
            if i < len(verchecks):
                sargs.append(packages[i] + ' ' + verchecks[i])
            else:
                sargs.append(packages[i])
            if _dyn_libs and _dyn_libs[i]:
                dyn_libs[packages[i]] = _dyn_libs[i]
        if ctx.dependency_satisfied('static-build') and not dyn_libs:
            pkgc_args += ["--static"]

        defaults = {
            'path':    ctx.env.PKG_CONFIG,
            'package': " ".join(packages),
            'args':    sargs + pkgc_args }
        opts = __merge_options__(dependency_identifier, defaults, kw_ext, kw)

        # Warning! Megahack incoming: when parsing flags in `parse_flags` waf
        # uses append_unique. This appends the flags only if they aren't
        # already present in the list. This causes breakage if one checks for
        # multiple pkg-config packages in a single call as stuff like -lm is
        # added only at its first occurrence.
        original_append_unique  = ConfigSet.append_unique
        ConfigSet.append_unique = ConfigSet.append_value
        result = ctx.check_cfg(**opts)
        ConfigSet.append_unique = original_append_unique

        defkey = inflector.define_key(dependency_identifier)
        if result:
            ctx.define(defkey, 1)
            for x in dyn_libs.keys():
                ctx.env['LIB_'+x] += dyn_libs[x]
        else:
            ctx.add_optional_message(dependency_identifier,
                                     "'{0}' not found".format(" ".join(sargs)))
            ctx.undefine(defkey)
        return result
Пример #11
0
def check_stub(ctx, dependency_identifier):
    ctx.undefine(inflector.define_key(dependency_identifier))
    return False
Пример #12
0
def check_true(ctx, dependency_identifier):
    ctx.define(inflector.define_key(dependency_identifier), 1)
    return True
Пример #13
0
 def undef_others(ctx, headers, found):
     not_found_hs = set(headers) - {found}
     for not_found_h in not_found_hs:
         ctx.undefine(inflector.define_key(not_found_h))
Пример #14
0
def check_stub(ctx, dependency_identifier):
    ctx.undefine(inflector.define_key(dependency_identifier))
    return False
Пример #15
0
def check_true(ctx, dependency_identifier):
    ctx.define(inflector.define_key(dependency_identifier), 1)
    return True
Пример #16
0
 def undef_others(ctx, headers, found):
     not_found_hs = set(headers) - set([found])
     for not_found_h in not_found_hs:
         ctx.undefine(inflector.define_key(not_found_h))