mold
Some checks failed
Conan Packaging / Package cli11/2.6.1 (push) Has been cancelled
Conan Packaging / Package eabase/01082025 (push) Has been cancelled
Conan Packaging / Package flatbuffers/25.12.19 (push) Has been cancelled
Conan Packaging / Package assimp/6.0.4 (push) Has been cancelled
Conan Packaging / Package imgui/1.92.6-docking (push) Has been cancelled
Conan Packaging / Package lodepng/cci.20260210 (push) Has been cancelled
Conan Packaging / Package meshoptimizer/1.0 (push) Has been cancelled
Conan Packaging / Package mimalloc/3.2.8 (push) Has been cancelled
Conan Packaging / Package mold/2.41.0 (push) Has been cancelled
Conan Packaging / Package pixelmatch-cpp17/1.0.3 (push) Has been cancelled
Conan Packaging / Package rapidhash/3.0 (push) Has been cancelled
Conan Packaging / Package spirv-cross/1.4.341.0 (push) Has been cancelled
Conan Packaging / Package spirv-headers/1.4.341.0 (push) Has been cancelled
Conan Packaging / Package sqlite3/3.51.2 (push) Has been cancelled
Conan Packaging / Package stduuid/1.2.3 (push) Has been cancelled
Conan Packaging / Package unordered_dense/4.8.1 (push) Has been cancelled
Conan Packaging / Package vulkan-headers/1.4.341.0 (push) Has been cancelled
Conan Packaging / Package eastl/3.27.01 (push) Has been cancelled
Conan Packaging / Package spirv-tools/1.4.341.0 (push) Has been cancelled
Conan Packaging / Package vulkan-memory-allocator/3.3.0 (push) Has been cancelled
Conan Packaging / Package vulkan-utility-libraries/1.4.341.0 (push) Has been cancelled
Conan Packaging / Package vulkan-validationlayers/1.4.341.0 (push) Has been cancelled
Conan Packaging / Package glslang/1.4.341.0 (push) Has been cancelled
Conan Packaging / Package shaderc/2026.1 (push) Has been cancelled

This commit is contained in:
2026-04-26 16:03:20 +02:00
parent 3f66c64d78
commit d10e333188
7 changed files with 252 additions and 0 deletions

View File

@@ -25,6 +25,8 @@ jobs:
strategy:
matrix:
package: [
{ name: "mold", version: "2.41.0", location: "all" },
{ name: "eabase", version: "01082025", location: "all" },
{ name: "vulkan-headers", version: "1.4.341.0", location: "all" },

22
mold/README.md Normal file
View File

@@ -0,0 +1,22 @@
# mold: A Modern Linker
mold is a faster drop-in replacement for existing Unix linkers. It is several
times quicker than the LLVM lld linker, the second-fastest open-source linker.
mold aims to enhance developer productivity by minimizing build time,
particularly in rapid debug-edit-rebuild cycles.
You can configure Conan to download the latest version of `mold` and use it as the linker
when building your dependencies and projects from source. Currently only supported
when targeting Linux as the platform.
To use mold automatically as the linker, you can add the following section to your
_host_ profile that targets Linux. When using gcc, please note that the following
flags require gcc 12.1 or greater.
```
[tool_requires]
*:mold/[*]
[conf]
tools.build:exelinkflags=['-fuse-ld=mold']
tools.build:sharedlinkflags=['-fuse-ld=mold']
```

39
mold/all/conandata.yml Normal file
View File

@@ -0,0 +1,39 @@
sources:
"2.41.0":
url: "https://github.com/rui314/mold/archive/refs/tags/v2.41.0.tar.gz"
sha256: "0a61abac85d818437b425df856822e9d6e9982baeae5a93bcb02fe6c0060c61a"
"2.40.1":
url: "https://github.com/rui314/mold/archive/refs/tags/v2.40.1.tar.gz"
sha256: "d1ce09a69941f8158604c3edcc96c7178231e7dba2da66b20f5ef6e112c443b7"
"2.36.0":
url: "https://github.com/rui314/mold/archive/refs/tags/v2.36.0.tar.gz"
sha256: "3f57fe75535500ecce7a80fa1ba33675830b7d7deb1e5ee9a737e2bc43cdb1c7"
"2.34.1":
url: "https://github.com/rui314/mold/archive/refs/tags/v2.34.1.tar.gz"
sha256: "a8cf638045b4a4b2697d0bcc77fd96eae93d54d57ad3021bf03b0333a727a59d"
"2.33.0":
url: "https://github.com/rui314/mold/archive/refs/tags/v2.33.0.tar.gz"
sha256: "37b3aacbd9b6accf581b92ba1a98ca418672ae330b78fe56ae542c2dcb10a155"
"2.32.1":
url: "https://github.com/rui314/mold/archive/refs/tags/v2.32.1.tar.gz"
sha256: "f3c9a527d884c635834fe7d79b3de959b00783bf9446280ea274d996f0335825"
"2.32.0":
url: "https://github.com/rui314/mold/archive/refs/tags/v2.32.0.tar.gz"
sha256: "4b7e4146ea0f52be9adae8b417399f3676a041e65b55e3f25f088120d30a320b"
"2.31.0":
url: "https://github.com/rui314/mold/archive/refs/tags/v2.31.0.tar.gz"
sha256: "3dc3af83a5d22a4b29971bfad17261851d426961c665480e2ca294e5c74aa1e5"
"2.4.0":
url: "https://github.com/rui314/mold/archive/refs/tags/v2.4.0.tar.gz"
sha256: "be65f3d785d32ece7b3204ecaa57810847fdd25c232cf704cbfff2dafb1ac107"
"2.0.0":
url: "https://github.com/rui314/mold/archive/refs/tags/v2.0.0.tar.gz"
sha256: "2ae8a22db09cbff626df74c945079fa29c1e5f60bbe02502dcf69191cf43527b"
"1.11.0":
url: "https://github.com/rui314/mold/archive/refs/tags/v1.11.0.tar.gz"
sha256: "99318eced81b09a77e4c657011076cc8ec3d4b6867bd324b8677974545bc4d6f"
patches:
"2.40.1":
- patch_file: "patches/2.40.1/0001-patch-enforce-c-11-for-tbb.patch"
patch_description: "Fix bundled oneTBB build by enforcing C++11 standard"
patch_type: "conan"

125
mold/all/conanfile.py Normal file
View File

@@ -0,0 +1,125 @@
import os
from conan import ConanFile
from conan.tools.build import check_min_cppstd
from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout, CMakeDeps
from conan.tools.files import copy, get, rmdir, apply_conandata_patches, export_conandata_patches
from conan.errors import ConanInvalidConfiguration
from conan.tools.scm import Version
from conan.tools.env import VirtualBuildEnv
required_conan_version = ">2.0"
class MoldConan(ConanFile):
name = "mold"
description = (
"mold is a faster drop-in replacement for existing Unix linkers. "
"It is several times faster than the LLVM lld linker."
)
license = ("AGPL-3.0", "MIT")
url = "https://github.com/conan-io/conan-center-index"
homepage = "https://github.com/rui314/mold/"
topics = ("ld", "linkage", "compilation", "pre-built")
package_type = "application"
settings = "os", "arch", "compiler", "build_type"
options = {
"with_mimalloc": [True, False],
}
default_options = {
"with_mimalloc": False,
}
def configure(self):
if Version(self.version) < "2.0.0":
self.license = "AGPL-3.0"
else:
self.license = "MIT"
def layout(self):
cmake_layout(self, src_folder="src")
def requirements(self):
self.requires("zlib/[>=1.2.11 <2]")
self.requires("xxhash/0.8.2")
if self.options.with_mimalloc:
self.requires("mimalloc/2.1.2")
if Version(self.version) < "2.2.0":
# Newer versions use vendored-in BLAKE3
self.requires("openssl/[>=1.1 <4]")
def package_id(self):
del self.info.settings.compiler
def validate_build(self):
# perform these checks in validate_build() - since the compiler is removed from the package_id,
# this lets the compatibility plugin consider the executable built with other compilers
if Version(self.version) >= "2.34.0":
# mold has required C+20 since 1.4.1. However, C++20 features are used for the first time in 2.34.0.
check_min_cppstd(self, 20)
if self.settings.compiler in ["gcc", "clang", "intel-cc"] and self.settings.compiler.libcxx != "libstdc++11":
raise ConanInvalidConfiguration('Mold can only be built with libstdc++11; specify mold:compiler.libcxx=libstdc++11 in your build profile')
if self.settings.compiler == "msvc":
raise ConanInvalidConfiguration(f'{self.name} can not be built on {self.settings.os}.')
if self.settings.compiler == "gcc" and Version(self.settings.compiler.version) < "10":
raise ConanInvalidConfiguration("GCC version 10 or higher required")
if self.settings.compiler in ('clang', 'apple-clang') and Version(self.settings.compiler.version) < "12":
raise ConanInvalidConfiguration("Clang version 12 or higher required")
if Version(self.version) >= "2.34.0" and self.settings.compiler == "apple-clang" and Version(self.settings.compiler.version) < "14":
raise ConanInvalidConfiguration("Apple-Clang version 14 or higher required due to C++20 features")
if self.settings.compiler == "apple-clang" and "armv8" == self.settings.arch :
raise ConanInvalidConfiguration(f'{self.name} is still not supported by Mac M1.')
if Version(self.version) == "2.33.0" and self.settings.compiler == "apple-clang" and Version(self.settings.compiler.version) < "14":
raise ConanInvalidConfiguration(f'{self.ref} doesn\'t support Apple-Clang < 14.')
def build_requirements(self):
self.tool_requires("cmake/[>=3.18.0 <4]")
def export_sources(self):
export_conandata_patches(self)
def source(self):
get(self, **self.conan_data["sources"][self.version], strip_root=True)
apply_conandata_patches(self)
def generate(self):
tc = CMakeToolchain(self)
tc.variables["MOLD_USE_MIMALLOC"] = self.options.with_mimalloc
tc.variables["MOLD_USE_SYSTEM_MIMALLOC"] = True
tc.variables["MOLD_USE_SYSTEM_TBB"] = False # see https://github.com/conan-io/conan-center-index/pull/23575#issuecomment-2059154281
tc.variables["CMAKE_INSTALL_LIBEXECDIR"] = "libexec"
tc.generate()
cd = CMakeDeps(self)
cd.generate()
vbe = VirtualBuildEnv(self)
vbe.generate()
def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()
def package(self):
cmake = CMake(self)
cmake.install()
copy(self, "LICENSE", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses"))
rmdir(self, os.path.join(self.package_folder, "lib", "cmake"))
rmdir(self, os.path.join(self.package_folder, "share"))
def package_info(self):
self.cpp_info.includedirs = []
self.cpp_info.libdirs = []
self.cpp_info.frameworkdirs = []
self.cpp_info.resdirs = []
if self.settings.os in ["Linux", "FreeBSD"]:
self.cpp_info.system_libs = ["m", "pthread", "dl"]
bindir = os.path.join(self.package_folder, "bin")
mold_executable = os.path.join(bindir, "mold")
self.conf_info.define("user.mold:path", mold_executable)
self.buildenv_info.define_path("MOLD_ROOT", bindir)
self.buildenv_info.define("LD", mold_executable)

View File

@@ -0,0 +1,28 @@
From 2f29fc752620180d88e82792adb2ff8a1d886bd1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tim=20Friedrich=20Br=C3=BCggemann?=
<tim.brueggemann@dampsoft.de>
Date: Tue, 17 Jun 2025 09:48:43 +0200
Subject: [PATCH] patch: Enforce C++11 for TBB
---
third-party/tbb/CMakeLists.txt | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/third-party/tbb/CMakeLists.txt b/third-party/tbb/CMakeLists.txt
index 12273b3e..21c4e2ef 100644
--- a/third-party/tbb/CMakeLists.txt
+++ b/third-party/tbb/CMakeLists.txt
@@ -77,9 +77,7 @@ include(CMakeDependentOption)
# ---------------------------------------------------------------------------------------------------------
# Handle C++ standard version.
if (NOT MSVC) # no need to cover MSVC as it uses C++14 by default.
- if (NOT CMAKE_CXX_STANDARD)
- set(CMAKE_CXX_STANDARD 11)
- endif()
+ set(CMAKE_CXX_STANDARD 11)
if (CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION) # if standard option was detected by CMake
set(CMAKE_CXX_STANDARD_REQUIRED ON)
--
2.25.1

View File

@@ -0,0 +1,13 @@
from conan import ConanFile
from conan.tools.build import can_run
class MoldTestConan(ConanFile):
settings = "os", "compiler", "build_type", "arch"
def requirements(self):
self.requires(self.tested_reference_str)
def test(self):
if can_run(self):
self.run("mold -v", env="conanrun")

23
mold/config.yml Normal file
View File

@@ -0,0 +1,23 @@
versions:
"2.41.0":
folder: all
"2.40.1":
folder: all
"2.36.0":
folder: all
"2.34.1":
folder: all
"2.33.0":
folder: all
"2.32.1":
folder: all
"2.32.0":
folder: all
"2.31.0":
folder: all
"2.4.0":
folder: all
"2.0.0":
folder: all
"1.11.0":
folder: all