def __init__(self, conanfile, generator=None): self._conanfile = conanfile self.generator = self._get_generator(generator) self.variables = Variables() self.preprocessor_definitions = Variables() self.blocks = ToolchainBlocks( self._conanfile, self, [("user_toolchain", UserToolchain), ("generic_system", GenericSystemBlock), ("android_system", AndroidSystemBlock), ("apple_system", AppleSystemBlock), ("fpic", FPicBlock), ("arch_flags", ArchitectureBlock), ("libcxx", GLibCXXBlock), ("vs_runtime", VSRuntimeBlock), ("cppstd", CppStdBlock), ("parallel", ParallelBlock), ("extra_flags", ExtraFlagsBlock), ("cmake_flags_init", CMakeFlagsInitBlock), ("try_compile", TryCompileBlock), ("find_paths", FindFiles), ("rpath", SkipRPath), ("shared", SharedLibBock), ("output_dirs", OutputDirsBlock)]) check_using_build_profile(self._conanfile)
def __init__(self, conanfile, generator=None, namespace=None): self._conanfile = conanfile self.generator = self._get_generator(generator) self._namespace = namespace self.variables = Variables() self.preprocessor_definitions = Variables() self.blocks = ToolchainBlocks(self._conanfile, self, [("user_toolchain", UserToolchain), ("generic_system", GenericSystemBlock), ("android_system", AndroidSystemBlock), ("apple_system", AppleSystemBlock), ("fpic", FPicBlock), ("arch_flags", ArchitectureBlock), ("libcxx", GLibCXXBlock), ("vs_runtime", VSRuntimeBlock), ("cppstd", CppStdBlock), ("parallel", ParallelBlock), ("cmake_flags_init", CMakeFlagsInitBlock), ("try_compile", TryCompileBlock), ("find_paths", FindConfigFiles), ("rpath", SkipRPath), ("shared", SharedLibBock)]) # Set the CMAKE_MODULE_PATH and CMAKE_PREFIX_PATH to the deps .builddirs self.find_builddirs = True check_using_build_profile(self._conanfile)
def __init__(self, conanfile): self._conanfile = conanfile self.preprocessor_definitions = {} self.compile_options = {} self.configuration = conanfile.settings.build_type self.runtime_library = self._runtime_library(conanfile.settings) self.cppstd = conanfile.settings.get_safe("compiler.cppstd") self.toolset = self._msvs_toolset(conanfile) check_using_build_profile(self._conanfile)
def __init__(self, conanfile): self._conanfile = conanfile self.configuration = conanfile.settings.get_safe("build_type") arch = conanfile.settings.get_safe("arch") self.architecture = to_apple_arch(arch) or arch self.os_version = conanfile.settings.get_safe("os.version") self.sdk = conanfile.settings.get_safe("os.sdk") self.sdk_version = conanfile.settings.get_safe("os.sdk_version") check_using_build_profile(self._conanfile)
def __init__(self, conanfile, namespace=None): self._conanfile = conanfile self._namespace = namespace build_type = self._conanfile.settings.get_safe("build_type") self.configure_args = [] self.make_args = [] self.default_configure_install_args = False # TODO: compiler.runtime for Visual studio? # defines self.ndebug = None if build_type in ['Release', 'RelWithDebInfo', 'MinSizeRel']: self.ndebug = "NDEBUG" self.gcc_cxx11_abi = self._cxx11_abi_define() self.defines = [] # cxxflags, cflags self.cxxflags = [] self.cflags = [] self.ldflags = [] self.libcxx = self._libcxx() self.fpic = self._conanfile.options.get_safe("fPIC") self.cppstd = cppstd_flag(self._conanfile.settings) self.arch_flag = architecture_flag(self._conanfile.settings) # TODO: This is also covering compilers like Visual Studio, necessary to test it (&remove?) self.build_type_flags = build_type_flags(self._conanfile.settings) # Cross build self._host = None self._build = None self._target = None self.apple_arch_flag = self.apple_isysroot_flag = None self.apple_min_version_flag = apple_min_version_flag(self._conanfile) if cross_building(self._conanfile): os_build, arch_build, os_host, arch_host = get_cross_building_settings( self._conanfile) self._host = _get_gnu_triplet(os_host, arch_host) self._build = _get_gnu_triplet(os_build, arch_build) # Apple Stuff if os_build == "Macos": sdk_path = apple_sdk_path(conanfile) apple_arch = to_apple_arch( self._conanfile.settings.get_safe("arch")) # https://man.archlinux.org/man/clang.1.en#Target_Selection_Options self.apple_arch_flag = "-arch {}".format( apple_arch) if apple_arch else None # -isysroot makes all includes for your library relative to the build directory self.apple_isysroot_flag = "-isysroot {}".format( sdk_path) if sdk_path else None check_using_build_profile(self._conanfile)
def __init__(self, conanfile): self._conanfile = conanfile self.configuration = conanfile.settings.build_type self.platform = {'x86': 'Win32', 'x86_64': 'x64'}.get(str(conanfile.settings.arch)) # ca_exclude section # TODO: Accept single strings, not lists self.exclude_code_analysis = self._conanfile.conf.get("tools.microsoft.msbuilddeps:exclude_code_analysis", check_type=list) check_using_build_profile(self._conanfile)
def __init__(self, conanfile): self._conanfile = conanfile self.configuration = conanfile.settings.get_safe("build_type") arch = conanfile.settings.get_safe("arch") self.architecture = to_apple_arch(arch) or arch # TODO: check if it makes sense to add a subsetting for sdk version # related to: https://github.com/conan-io/conan/issues/9608 self.os_version = conanfile.settings.get_safe("os.version") check_using_build_profile(self._conanfile)
def __init__(self, conanfile): self._conanfile = conanfile self._build_type = self._conanfile.settings.get_safe("build_type") self._base_compiler = self._conanfile.settings.get_safe("compiler.base") or \ self._conanfile.settings.get_safe("compiler") self._vscrt = self._conanfile.settings.get_safe("compiler.base.runtime") or \ self._conanfile.settings.get_safe("compiler.runtime") self._cppstd = cppstd_from_settings(self._conanfile.settings) self._shared = self._conanfile.options.get_safe("shared") self._fpic = self._conanfile.options.get_safe("fPIC") self._build_env = VirtualBuildEnv(self._conanfile).environment() self.definitions = dict() self.preprocessor_definitions = dict() def from_build_env(name): return self._to_meson_value(self._build_env.get(name, None)) self.c = from_build_env("CC") self.cpp = from_build_env("CXX") self.c_ld = from_build_env("CC_LD") or from_build_env("LD") self.cpp_ld = from_build_env("CXX_LD") or from_build_env("LD") self.ar = from_build_env("AR") self.strip = from_build_env("STRIP") self.as_ = from_build_env("AS") self.windres = from_build_env("WINDRES") self.pkgconfig = from_build_env("PKG_CONFIG") # https://mesonbuild.com/Builtin-options.html#core-options # Do not adjust "debug" if already adjusted "buildtype" self.buildtype = self._to_meson_build_type( self._build_type) if self._build_type else None self.default_library = self._to_meson_shared(self._shared) \ if self._shared is not None else None # https://mesonbuild.com/Builtin-options.html#base-options self.b_vscrt = self._to_meson_vscrt(self._vscrt) self.b_staticpic = self._to_meson_value(self._fpic) \ if (self._shared is False and self._fpic is not None) else None self.b_ndebug = self._to_meson_value( self._ndebug) if self._build_type else None # https://mesonbuild.com/Builtin-options.html#compiler-options self.cpp_std = self._to_meson_cppstd( self._cppstd) if self._cppstd else None self.c_args = self._to_meson_value( self._env_array('CPPFLAGS') + self._env_array('CFLAGS')) self.c_link_args = self._to_meson_value(self._env_array('LDFLAGS')) self.cpp_args = self._to_meson_value( self._env_array('CPPFLAGS') + self._env_array('CXXFLAGS')) self.cpp_link_args = self._to_meson_value(self._env_array('LDFLAGS')) self.pkg_config_path = "'%s'" % self._conanfile.generators_folder check_using_build_profile(self._conanfile)
def __init__(self, conanfile): self._conanfile = conanfile self.arch = self._conanfile.settings.get_safe("arch") self.configuration = str(self._conanfile.settings.build_type) # Activate the build config files for the specified libraries self.build_context_activated = [] # By default, the build modules are generated for host context only self.build_context_build_modules = [] # If specified, the files/targets/variables for the build context will be renamed appending # a suffix. It is necessary in case of same require and build_require and will cause an error self.build_context_suffix = {} check_using_build_profile(self._conanfile) # Enable/Disable checking if a component target exists or not self.check_components_exist = False
def __init__(self, conanfile): self._conanfile = conanfile self.configuration = conanfile.settings.build_type self.platform = { 'x86': 'Win32', 'x86_64': 'x64' }.get(str(conanfile.settings.arch)) # ca_exclude section self.exclude_code_analysis = None ca_exclude = self._conanfile.conf[ "tools.microsoft.msbuilddeps:exclude_code_analysis"] if ca_exclude is not None: # TODO: Accept single strings, not lists self.exclude_code_analysis = eval(ca_exclude) if not isinstance(self.exclude_code_analysis, list): raise ConanException( "tools.microsoft.msbuilddeps:exclude_code_analysis must be a" " list of package names patterns like ['pkga*']") check_using_build_profile(self._conanfile)
def __init__(self, conanfile): self._conanfile = conanfile arch = conanfile.settings.get_safe("arch") self.architecture = to_apple_arch(arch) or arch self.configuration = conanfile.settings.build_type self.sdk = conanfile.settings.get_safe("os.sdk") self.sdk_version = conanfile.settings.get_safe("os.sdk_version") self.libcxx = conanfile.settings.get_safe("compiler.libcxx") self.os_version = conanfile.settings.get_safe("os.version") self._global_defines = self._conanfile.conf.get("tools.build:defines", default=[], check_type=list) self._global_cxxflags = self._conanfile.conf.get( "tools.build:cxxflags", default=[], check_type=list) self._global_cflags = self._conanfile.conf.get("tools.build:cflags", default=[], check_type=list) sharedlinkflags = self._conanfile.conf.get( "tools.build:sharedlinkflags", default=[], check_type=list) exelinkflags = self._conanfile.conf.get("tools.build:exelinkflags", default=[], check_type=list) self._global_ldflags = sharedlinkflags + exelinkflags check_using_build_profile(self._conanfile)
def __init__(self, conanfile): self._conanfile = conanfile self._environment = None check_using_build_profile(self._conanfile)
def __init__(self, conanfile, backend=None): self._conanfile = conanfile self._os = self._conanfile.settings.get_safe("os") # Values are kept as Python built-ins so users can modify them more easily, and they are # only converted to Meson file syntax for rendering # priority: first user conf, then recipe, last one is default "ninja" self._backend = conanfile.conf.get( "tools.meson.mesontoolchain:backend", default=backend or 'ninja') build_type = self._conanfile.settings.get_safe("build_type") self._buildtype = { "Debug": "debug", # Note, it is not "'debug'" "Release": "release", "MinSizeRel": "minsize", "RelWithDebInfo": "debugoptimized" }.get(build_type, build_type) self._b_ndebug = "true" if self._buildtype != "debug" else "false" # https://mesonbuild.com/Builtin-options.html#base-options fpic = self._conanfile.options.get_safe("fPIC") shared = self._conanfile.options.get_safe("shared") self._b_staticpic = fpic if (shared is False and fpic is not None) else None # https://mesonbuild.com/Builtin-options.html#core-options # Do not adjust "debug" if already adjusted "buildtype" self._default_library = ( "shared" if shared else "static") if shared is not None else None compiler = self._conanfile.settings.get_safe("compiler") cppstd = self._conanfile.settings.get_safe("compiler.cppstd") self._cpp_std = to_cppstd_flag(compiler, cppstd) if compiler == "Visual Studio": vscrt = self._conanfile.settings.get_safe("compiler.runtime") self._b_vscrt = str(vscrt).lower() elif compiler == "msvc": vscrt = msvc_runtime_flag(self._conanfile) self._b_vscrt = str(vscrt).lower() else: self._b_vscrt = None self.properties = {} self.project_options = { "wrap_mode": "nofallback" # https://github.com/conan-io/conan/issues/10671 } self.preprocessor_definitions = {} self.pkg_config_path = self._conanfile.generators_folder check_using_build_profile(self._conanfile) self.cross_build = {} default_comp = "" default_comp_cpp = "" if cross_building(conanfile, skip_x64_x86=True): os_build, arch_build, os_host, arch_host = get_cross_building_settings( self._conanfile) self.cross_build["build"] = to_meson_machine(os_build, arch_build) self.cross_build["host"] = to_meson_machine(os_host, arch_host) self.properties["needs_exe_wrapper"] = True if hasattr(conanfile, 'settings_target') and conanfile.settings_target: settings_target = conanfile.settings_target os_target = settings_target.get_safe("os") arch_target = settings_target.get_safe("arch") self.cross_build["target"] = to_meson_machine( os_target, arch_target) if is_apple_os( os_host): # default cross-compiler in Apple is common default_comp = "clang" default_comp_cpp = "clang++" else: if "Visual" in compiler or compiler == "msvc": default_comp = "cl" default_comp_cpp = "cl" elif "clang" in compiler: default_comp = "clang" default_comp_cpp = "clang++" elif compiler == "gcc": default_comp = "gcc" default_comp_cpp = "g++" # Read the VirtualBuildEnv to update the variables build_env = VirtualBuildEnv(self._conanfile).vars() self.c = build_env.get("CC") or default_comp self.cpp = build_env.get("CXX") or default_comp_cpp self.c_ld = build_env.get("CC_LD") or build_env.get("LD") self.cpp_ld = build_env.get("CXX_LD") or build_env.get("LD") self.ar = build_env.get("AR") self.strip = build_env.get("STRIP") self.as_ = build_env.get("AS") self.windres = build_env.get("WINDRES") self.pkgconfig = build_env.get("PKG_CONFIG") self.c_args = self._get_env_list(build_env.get("CFLAGS", [])) self.c_link_args = self._get_env_list(build_env.get("LDFLAGS", [])) self.cpp_args = self._get_env_list(build_env.get("CXXFLAGS", [])) self.cpp_link_args = self._get_env_list(build_env.get("LDFLAGS", [])) # Apple flags self.apple_arch_flag = [] self.apple_isysroot_flag = [] self.apple_min_version_flag = [] self._resolve_apple_flags() self._resolve_android_cross_compilation()
def __init__(self, conanfile): self._conanfile = conanfile self._environment = None self._ordered_deps = [] check_using_build_profile(self._conanfile)
def __init__(self, conanfile): self._conanfile = conanfile check_using_build_profile(self._conanfile)
def __init__(self, conanfile, namespace=None): self._conanfile = conanfile self._namespace = namespace check_using_build_profile(self._conanfile)