Nach dem Mausklick ist die Projektion eines vierdimensionalen Würfels zu sehen pkg.configure
Sprache: unbekannt
|
|
Spracherkennung für: .configure vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# 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/.
@depends(toolchain_prefix, when=compile_environment)
def pkg_config(prefixes):
return tuple("{}pkg-config".format(p) for p in (prefixes or ()) + ("",))
@depends(compile_environment, target)
def use_pkg_config(compile_environment, target):
return compile_environment and target.os not in ("WINNT", "OSX", "Android")
pkg_config = check_prog(
"PKG_CONFIG",
pkg_config,
bootstrap=depends(when=target_sysroot.bootstrapped)(lambda: "pkgconf"),
allow_missing=True,
when=use_pkg_config,
)
@depends_if(pkg_config)
@checking("for pkg-config version")
def pkg_config_version(pkg_config):
return Version(check_cmd_output(pkg_config, "--version").rstrip())
@depends_if(pkg_config)
@checking("whether pkg-config is pkgconf")
def is_pkgconf(pkg_config):
return "pkgconf " in check_cmd_output(pkg_config, "--about", onerror=lambda: "")
@depends(is_pkgconf, pkg_config_version, target_sysroot.bootstrapped, when=pkg_conf ig)
def pkg_config_base_flags(is_pkgconf, pkg_config_version, target_sysroot_bootstrapped):
# pkgconf 1.7.4 changed the default on Windows to use --static, but
# that doesn't work for us.
# Note: the --shared flag is not available before pkgconf 1.7
flags = []
if is_pkgconf and pkg_config_version >= "1.7.4":
flags.append("--shared")
# When pkg-config is in /usr things work fine by default, but when
# it is not, it defines prefix to be something else than /usr, which
# won't match what the .pc files actually say, and won't work in
# sysroots.
if target_sysroot_bootstrapped and (
(is_pkgconf and pkg_config_version >= "1.2.0")
or (not is_pkgconf and pkg_config_version >= "0.29.0")
):
flags.append("--dont-define-prefix")
return tuple(flags)
@depends(target, target_sysroot.path, target_multiarch_dir, when=pkg_config)
@imports(_from="os", _import="environ")
@imports(_from="os", _import="pathsep")
def pkg_config_vars(target, sysroot_path, multiarch_dir):
if sysroot_path and target.kernel != "Darwin":
pkgconfig_dirs = [
"usr/lib/pkgconfig",
"usr/lib/{}/pkgconfig".format(multiarch_dir),
"usr/share/pkgconfig",
]
if target.bitness == 64:
pkgconfig_dirs.insert(0, "usr/lib64/pkgconfig")
return namespace(
PKG_CONFIG_PATH="",
PKG_CONFIG_SYSROOT_DIR=sysroot_path,
PKG_CONFIG_LIBDIR=pathsep.join(
os.path.join(sysroot_path, d) for d in pkgconfig_dirs
),
)
@depends(pkg_config_vars)
@imports(_from="os", _import="environ")
def pkg_config_env(vars):
if vars:
env = dict(environ)
env["PKG_CONFIG_PATH"] = vars.PKG_CONFIG_PATH
env["PKG_CONFIG_SYSROOT_DIR"] = vars.PKG_CONFIG_SYSROOT_DIR
env["PKG_CONFIG_LIBDIR"] = vars.PKG_CONFIG_LIBDIR
return env
set_config("PKG_CONFIG_PATH", pkg_config_vars.PKG_CONFIG_PATH)
set_config("PKG_CONFIG_SYSROOT_DIR", pkg_config_vars.PKG_CONFIG_SYSROOT_DIR)
set_config("PKG_CONFIG_LIBDIR", pkg_config_vars.PKG_CONFIG_LIBDIR)
# Locates the given module using pkg-config.
# - `var` determines the name of variables to set when the package is found.
# <var>_CFLAGS and <var>_LIBS are set with corresponding values.
# - `package_desc` package name and version requirement string, list of
# strings describing packages to locate, or depends function that will
# resolve to such a string or list of strings.
# - `when` a depends function that will determine whether to perform
# any checks (default is to always perform checks).
# - `allow_missing` If set, failure to fulfill the package description
# will not result in an error or logged message, and any error message
# will be returned to the caller.
# Returns `True` when the package description is fulfilled.
@template
def pkg_check_modules(
var,
package_desc,
when=always,
allow_missing=False,
config=True,
cflags_only=False,
):
@depends(dependable(package_desc), when=when)
def package_desc(desc):
if isinstance(desc, str):
desc = [desc]
if not isinstance(desc, (tuple, list)):
configure_error(
"package_desc must be a string or a tuple or list of strings"
)
return " ".join(desc)
allow_missing = dependable(allow_missing)
@depends(when, when=use_pkg_config)
def when_and_use_pkg_config(when):
return when
@depends(pkg_config, pkg_config_version, when=when_and_use_pkg_config)
def check_pkg_config(pkg_config, version):
min_version = "0.9.0"
if pkg_config is None:
die(
"*** The pkg-config script could not be found. Make sure it is\n"
"*** in your path, or set the PKG_CONFIG environment variable\n"
"*** to the full path to pkg-config."
)
if version < min_version:
die(
"*** Your version of pkg-config is too old. You need version %s or newer.",
min_version,
)
@depends(
pkg_config,
pkg_config_env,
package_desc,
allow_missing,
when=when_and_use_pkg_config,
)
@imports("sys")
@imports(_from="mozbuild.configure.util", _import="LineIO")
def package(pkg_config, env, package_desc, allow_missing):
# package_desc may start as a depends function, so we can't use
# @checking here.
log.info("checking for %s... " % package_desc)
retcode, stdout, stderr = get_cmd_output(
pkg_config,
"--errors-to-stdout",
"--print-errors",
package_desc,
env=env,
)
if retcode == 0:
log.info("yes")
return True
log.info("no")
log_writer = log.warning if allow_missing else log.error
with LineIO(lambda l: log_writer(l)) as o:
o.write(stdout)
if not allow_missing:
sys.exit(1)
@depends(
pkg_config, pkg_config_env, package_desc, pkg_config_base_flags, when=package
)
@checking("%s_CFLAGS" % var, callback=lambda t: " ".join(t))
def pkg_cflags(pkg_config, env, package_desc, base_flags):
args = list(base_flags) + ["--cflags", package_desc]
flags = check_cmd_output(pkg_config, *args, env=env)
return tuple(flags.split())
if cflags_only:
@depends(pkg_cflags, when=package)
def pkg_info(cflags):
return namespace(cflags=cflags)
else:
@depends(
pkg_config,
pkg_config_env,
package_desc,
pkg_config_base_flags,
when=package,
)
@checking("%s_LIBS" % var, callback=lambda t: " ".join(t))
def pkg_libs(pkg_config, env, package_desc, base_flags):
args = list(base_flags) + ["--libs", package_desc]
libs = check_cmd_output(pkg_config, *args, env=env)
# Remove evil flags like -Wl,--export-dynamic
return tuple(libs.replace("-Wl,--export-dynamic", "").split())
@depends(pkg_cflags, pkg_libs, when=package)
def pkg_info(cflags, libs):
return namespace(cflags=cflags, libs=libs)
if config:
set_config("%s_CFLAGS" % var, pkg_cflags)
if not cflags_only:
set_config("%s_LIBS" % var, pkg_libs)
return pkg_info
[Diese Firma untersucht Systeme, entwickelt Software und berät
Organisationen zu Themen der Informationstechnolgie. Dabei wird Wert auf anerkannte Normen und Standards gelegt.
Die Qualität eigener und fremder Produkte ist Leitlinie und Ziel zugleich.
Unter bestimmten Bedingungen finden Sie hier weiterführende Anregungen.0.54Die F&E-Firma in NorddeutschlandÜbersetzung europäischer Sprachen durch Browser2026-05-07]
|
2026-05-26
|