From 534384356e8b79a61993bba3e38a8e9cb5ad1ff8 Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Sun, 25 Jan 2026 23:10:00 +0000 Subject: [PATCH 01/12] GiteaCI Reviewed-on: https://git.romainboullard.com/BigfootDev/ConanPackages/pulls/1 Co-authored-by: Romain BOULLARD Co-committed-by: Romain BOULLARD --- .gitea/workflows/ci.yml | 70 +++++++++++++ .gitlab-ci.yml | 123 ----------------------- eastl/all/conanfile.py | 2 +- vulkan-validationlayers/all/conanfile.py | 2 +- 4 files changed, 72 insertions(+), 125 deletions(-) create mode 100644 .gitea/workflows/ci.yml delete mode 100644 .gitlab-ci.yml diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..8fd248c --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,70 @@ +name: Conan Packaging + +on: + push: + branches: + - '**' + workflow_dispatch: + +env: + CCACHE_BASEDIR: ${{ github.workspace }} + +jobs: + conan-packages: + runs-on: ubuntu-latest + timeout-minutes: 120 + container: + image: git.romainboullard.com/bigfootdev/linuxcppbuilder:${{ github.ref_name }} + strategy: + matrix: + package: [ + { name: "eabase", version: "01082025", location: "all", needs_pkg: "" }, + { name: "eastl", version: "3.27.01", location: "all", needs_pkg: "eabase" }, + { name: "pixelmatch-cpp17", version: "1.0.3", location: "all", needs_pkg: "" }, + { name: "lodepng", version: "cci.20250727", location: "all", needs_pkg: "" }, + { name: "stduuid", version: "1.2.3", location: "all", needs_pkg: "" }, + { name: "flatbuffers", version: "25.12.19", location: "all", needs_pkg: "" }, + { name: "vulkan-memory-allocator", version: "3.3.0", location: "all", needs_pkg: "" }, + { name: "vulkan-utility-libraries", version: "1.4.313.0", location: "all", needs_pkg: "" }, + { name: "vulkan-validationlayers", version: "1.4.313.0", location: "all", needs_pkg: "vulkan-utility-libraries" }, + { name: "shaderc", version: "2025.3", location: "all", needs_pkg: "" }, + { name: "unordered_dense", version: "4.8.1", location: "all", needs_pkg: "" }, + { name: "mimalloc", version: "3.1.5", location: "all", needs_pkg: "" }, + { name: "meshoptimizer", version: "1.0", location: "all", needs_pkg: "" }, + { name: "sqlite3", version: "3.51.0", location: "all", needs_pkg: "" }, + { name: "rapidhash", version: "3.0", location: "all", needs_pkg: "" } + ] + steps: + - name: Set BRANCH_NAME + run: echo "BRANCH_NAME=$(echo $GITHUB_REF_NAME | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV + + - name: Install Node.js + run: apt-get update && apt-get install -y nodejs + + - name: Checkout repository + uses: actions/checkout@v6 + with: + submodules: recursive + + - name: Show ccache stats before + run: ccache --zero-stats + + - name: Run Conan packaging + run: | + echo "Building ${{ matrix.package.name }}@${{ matrix.package.version }}" + CONAN_LOGIN_USERNAME=${{ secrets.GITLAB_CONAN_USER }} \ + CONAN_PASSWORD=${{ secrets.GITLAB_CONAN_PASSWORD }} \ + conan create ./${{ matrix.package.name }}/${{ matrix.package.location }} \ + --version=${{ matrix.package.version }} \ + --user=bigfootdev \ + --channel=${{ env.BRANCH_NAME }} \ + -pr:b=./clang -pr:h=./clang \ + --build=missing --remote=bigfootpackages + + CONAN_LOGIN_USERNAME=${{ secrets.GITLAB_CONAN_USER }} \ + CONAN_PASSWORD=${{ secrets.GITLAB_CONAN_PASSWORD }} \ + conan upload ${{ matrix.package.name }}/${{ matrix.package.version }}@bigfootdev/${{ env.BRANCH_NAME }} \ + --only-recipe --remote=bigfootpackages + + - name: Show ccache stats after + run: ccache --show-stats diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 9f074a7..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,123 +0,0 @@ -variables: - GIT_SUBMODULE_STRATEGY: recursive - -stages: - - packaging - -.Packaging: - variables: - PACKAGE: 'Unknown' - VERSION: 'Unknown' - LOCATION: 'all' - CCACHE_BASEDIR: $CI_PROJECT_DIR - image: registry.gitlab.com/bigfootdev/docker/linuxcppbuilder:main - stage: packaging - before_script: - - ccache --zero-stats - script: - - CONAN_LOGIN_USERNAME=${GITLAB_CONAN_USER} CONAN_PASSWORD=${GITLAB_CONAN_PASSWORD} conan create ./$PACKAGE/$LOCATION --version=$VERSION -pr:b=./clang -pr:h=./clang --build=missing --remote=bigfootpackages - - CONAN_LOGIN_USERNAME=${GITLAB_CONAN_USER} CONAN_PASSWORD=${GITLAB_CONAN_PASSWORD} conan upload $PACKAGE/$VERSION@ --only-recipe --remote=bigfootpackages - after_script: - - ccache --show-stats - dependencies: [] - tags: - - linux - - c++ - - bigfootdev - only: - variables: - - $CI_COMMIT_REF_PROTECTED - -PackageEABase: - extends: .Packaging - variables: - PACKAGE: 'eabase' - VERSION: '01082025' - -PackageEASTL: - extends: .Packaging - variables: - PACKAGE: 'eastl' - VERSION: '3.27.01' - needs: - - PackageEABase - -PackagePixelMatch: - extends: .Packaging - variables: - PACKAGE: 'pixelmatch-cpp17' - VERSION: '1.0.3' - -PackageLodePNG: - extends: .Packaging - variables: - PACKAGE: 'lodepng' - VERSION: 'cci.20250727' - -PackageStduuid: - extends: .Packaging - variables: - PACKAGE: 'stduuid' - VERSION: '1.2.3' - -PackageFlatbuffers: - extends: .Packaging - variables: - PACKAGE: 'flatbuffers' - VERSION: '25.12.19' - -PackageVulkanMemoryAllocator: - extends: .Packaging - variables: - PACKAGE: 'vulkan-memory-allocator' - VERSION: '3.3.0' - -PackageVulkanUtilityLibraries: - extends: .Packaging - variables: - PACKAGE: 'vulkan-utility-libraries' - VERSION: '1.4.313.0' - -PackageVulkanValidationLayers: - extends: .Packaging - variables: - PACKAGE: 'vulkan-validationlayers' - VERSION: '1.4.313.0' - needs: - - PackageVulkanUtilityLibraries - -PackageShaderC: - extends: .Packaging - variables: - PACKAGE: 'shaderc' - VERSION: '2025.3' - -PackageUnorderedDense: - extends: .Packaging - variables: - PACKAGE: 'unordered_dense' - VERSION: '4.8.1' - -PackageMimalloc: - extends: .Packaging - variables: - PACKAGE: 'mimalloc' - VERSION: '3.1.5' - -PackageMeshOptimizer: - extends: .Packaging - variables: - PACKAGE: 'meshoptimizer' - VERSION: '1.0' - -PackageSQLite3: - extends: .Packaging - variables: - PACKAGE: 'sqlite3' - VERSION: '3.51.0' - -PackageRapidHash: - extends: .Packaging - variables: - PACKAGE: 'rapidhash' - VERSION: '3.0' diff --git a/eastl/all/conanfile.py b/eastl/all/conanfile.py index 4be20e1..9e45435 100644 --- a/eastl/all/conanfile.py +++ b/eastl/all/conanfile.py @@ -74,7 +74,7 @@ class EastlConan(ConanFile): def requirements(self): if self.version >= "3.27.00": - self.requires("eabase/01082025", transitive_headers=True) + self.requires(f"eabase/01082025@{self.user}/{self.channel}", transitive_headers=True) elif self.version == "3.21.23": self.requires("eabase/18082024", transitive_headers=True) else: diff --git a/vulkan-validationlayers/all/conanfile.py b/vulkan-validationlayers/all/conanfile.py index 6dc2159..ac14de8 100644 --- a/vulkan-validationlayers/all/conanfile.py +++ b/vulkan-validationlayers/all/conanfile.py @@ -103,7 +103,7 @@ class VulkanValidationLayersConan(ConanFile): self.requires("robin-hood-hashing/3.11.5") self.requires(self._require("spirv-headers")) if Version(conan_version).minor >= "1.4.313": - self.requires(self._require("vulkan-utility-libraries"), transitive_headers=True) + self.requires(f"{self._require("vulkan-utility-libraries")}@{self.user}/{self.channel}", transitive_headers=True) if Version(conan_version).major < "2": # TODO: set private=True, once the issue is resolved https://github.com/conan-io/conan/issues/9390 self.requires(self._require("spirv-tools"), private=not hasattr(self, "settings_build")) -- 2.49.1 From 65be0a9face78cecf2cccdea6ca1b7b926f65bcf Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Mon, 26 Jan 2026 04:56:09 +0000 Subject: [PATCH 02/12] Fix secrets Reviewed-on: https://git.romainboullard.com/BigfootDev/ConanPackages/pulls/2 Co-authored-by: Romain BOULLARD Co-committed-by: Romain BOULLARD --- .gitea/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 8fd248c..99a1caf 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -52,8 +52,8 @@ jobs: - name: Run Conan packaging run: | echo "Building ${{ matrix.package.name }}@${{ matrix.package.version }}" - CONAN_LOGIN_USERNAME=${{ secrets.GITLAB_CONAN_USER }} \ - CONAN_PASSWORD=${{ secrets.GITLAB_CONAN_PASSWORD }} \ + CONAN_LOGIN_USERNAME=${{ secrets.ARTIFACTORY_USER }} \ + CONAN_PASSWORD=${{ secrets.ARTIFACTORY_PASSWORD }} \ conan create ./${{ matrix.package.name }}/${{ matrix.package.location }} \ --version=${{ matrix.package.version }} \ --user=bigfootdev \ @@ -61,8 +61,8 @@ jobs: -pr:b=./clang -pr:h=./clang \ --build=missing --remote=bigfootpackages - CONAN_LOGIN_USERNAME=${{ secrets.GITLAB_CONAN_USER }} \ - CONAN_PASSWORD=${{ secrets.GITLAB_CONAN_PASSWORD }} \ + CONAN_LOGIN_USERNAME=${{ secrets.ARTIFACTORY_USER }} \ + CONAN_PASSWORD=${{ secrets.ARTIFACTORY_PASSWORD }} \ conan upload ${{ matrix.package.name }}/${{ matrix.package.version }}@bigfootdev/${{ env.BRANCH_NAME }} \ --only-recipe --remote=bigfootpackages -- 2.49.1 From 030bf0a590cce63cef84cfc161dc83e6364e802c Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Mon, 26 Jan 2026 06:02:47 +0100 Subject: [PATCH 03/12] Fix environment variables for ci run --- .gitea/workflows/ci.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 99a1caf..40e17ce 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -15,6 +15,9 @@ jobs: timeout-minutes: 120 container: image: git.romainboullard.com/bigfootdev/linuxcppbuilder:${{ github.ref_name }} + env: + ARTIFACTORY_USER: ${{ secrets.ARTIFACTORY_USER }} + ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} strategy: matrix: package: [ @@ -52,7 +55,7 @@ jobs: - name: Run Conan packaging run: | echo "Building ${{ matrix.package.name }}@${{ matrix.package.version }}" - CONAN_LOGIN_USERNAME=${{ secrets.ARTIFACTORY_USER }} \ + CONAN_LOGIN_USERNAME=${ARTIFACTORY_USER} \ CONAN_PASSWORD=${{ secrets.ARTIFACTORY_PASSWORD }} \ conan create ./${{ matrix.package.name }}/${{ matrix.package.location }} \ --version=${{ matrix.package.version }} \ @@ -61,8 +64,8 @@ jobs: -pr:b=./clang -pr:h=./clang \ --build=missing --remote=bigfootpackages - CONAN_LOGIN_USERNAME=${{ secrets.ARTIFACTORY_USER }} \ - CONAN_PASSWORD=${{ secrets.ARTIFACTORY_PASSWORD }} \ + CONAN_LOGIN_USERNAME=${ARTIFACTORY_USER} \ + CONAN_PASSWORD=${ARTIFACTORY_PASSWORD} \ conan upload ${{ matrix.package.name }}/${{ matrix.package.version }}@bigfootdev/${{ env.BRANCH_NAME }} \ --only-recipe --remote=bigfootpackages -- 2.49.1 From 4689d0a002d1a17bd35ac5cba934e336de8c2d13 Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Mon, 26 Jan 2026 06:03:44 +0100 Subject: [PATCH 04/12] Fix password --- .gitea/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 40e17ce..8ed5f97 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -56,7 +56,7 @@ jobs: run: | echo "Building ${{ matrix.package.name }}@${{ matrix.package.version }}" CONAN_LOGIN_USERNAME=${ARTIFACTORY_USER} \ - CONAN_PASSWORD=${{ secrets.ARTIFACTORY_PASSWORD }} \ + CONAN_PASSWORD=${ARTIFACTORY_PASSWORD} \ conan create ./${{ matrix.package.name }}/${{ matrix.package.location }} \ --version=${{ matrix.package.version }} \ --user=bigfootdev \ -- 2.49.1 From 451568113a598c461622f72f155e9e1566d5d117 Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Wed, 28 Jan 2026 15:28:12 +0100 Subject: [PATCH 05/12] Friendlier naming --- .gitea/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 8ed5f97..9791e61 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -37,6 +37,7 @@ jobs: { name: "sqlite3", version: "3.51.0", location: "all", needs_pkg: "" }, { name: "rapidhash", version: "3.0", location: "all", needs_pkg: "" } ] + name: "Package ${{matrix.package.name }}/${{ matrix.package.version }}" steps: - name: Set BRANCH_NAME run: echo "BRANCH_NAME=$(echo $GITHUB_REF_NAME | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV -- 2.49.1 From edff40e77a1673caf38d9dc0068e11f772fabff1 Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Wed, 11 Feb 2026 14:04:58 +0100 Subject: [PATCH 06/12] Add packages and update others --- .gitea/workflows/ci.yml | 6 +- assimp/5.x/conan_deps.cmake | 43 +++ assimp/5.x/conandata.yml | 10 + assimp/5.x/conanfile.py | 329 +++++++++++++++++++++++ assimp/5.x/test_package/CMakeLists.txt | 11 + assimp/5.x/test_package/conanfile.py | 29 ++ assimp/5.x/test_package/test_package.c | 17 ++ assimp/5.x/test_package/test_package.cpp | 16 ++ assimp/config.yml | 7 + cli11/all/conandata.yml | 43 +++ cli11/all/conanfile.py | 96 +++++++ cli11/all/test_package/CMakeLists.txt | 9 + cli11/all/test_package/conanfile.py | 26 ++ cli11/all/test_package/test_package.cpp | 11 + cli11/config.yml | 29 ++ mimalloc/all/conandata.yml | 3 + mimalloc/config.yml | 2 + 17 files changed, 685 insertions(+), 2 deletions(-) create mode 100644 assimp/5.x/conan_deps.cmake create mode 100644 assimp/5.x/conandata.yml create mode 100644 assimp/5.x/conanfile.py create mode 100644 assimp/5.x/test_package/CMakeLists.txt create mode 100644 assimp/5.x/test_package/conanfile.py create mode 100644 assimp/5.x/test_package/test_package.c create mode 100644 assimp/5.x/test_package/test_package.cpp create mode 100644 assimp/config.yml create mode 100644 cli11/all/conandata.yml create mode 100644 cli11/all/conanfile.py create mode 100644 cli11/all/test_package/CMakeLists.txt create mode 100644 cli11/all/test_package/conanfile.py create mode 100644 cli11/all/test_package/test_package.cpp create mode 100644 cli11/config.yml diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 9791e61..73d9fab 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -32,10 +32,12 @@ jobs: { name: "vulkan-validationlayers", version: "1.4.313.0", location: "all", needs_pkg: "vulkan-utility-libraries" }, { name: "shaderc", version: "2025.3", location: "all", needs_pkg: "" }, { name: "unordered_dense", version: "4.8.1", location: "all", needs_pkg: "" }, - { name: "mimalloc", version: "3.1.5", location: "all", needs_pkg: "" }, + { name: "mimalloc", version: "3.2.8", location: "all", needs_pkg: "" }, { name: "meshoptimizer", version: "1.0", location: "all", needs_pkg: "" }, { name: "sqlite3", version: "3.51.0", location: "all", needs_pkg: "" }, - { name: "rapidhash", version: "3.0", location: "all", needs_pkg: "" } + { name: "rapidhash", version: "3.0", location: "all", needs_pkg: "" }, + { name: "cli11", version: "2.6.1", location: "all", needs_pkg: "" }, + { name: "assimp", version: "6.0.4", location: "all", needs_pkg: "" } ] name: "Package ${{matrix.package.name }}/${{ matrix.package.version }}" steps: diff --git a/assimp/5.x/conan_deps.cmake b/assimp/5.x/conan_deps.cmake new file mode 100644 index 0000000..11760a3 --- /dev/null +++ b/assimp/5.x/conan_deps.cmake @@ -0,0 +1,43 @@ +find_package(minizip REQUIRED CONFIG) +link_libraries(minizip::minizip) + +find_package(pugixml REQUIRED CONFIG) +link_libraries(pugixml::pugixml) + +find_package(utf8cpp REQUIRED CONFIG) +link_libraries(utf8cpp::utf8cpp) + +find_package(ZLIB REQUIRED CONFIG) +link_libraries(ZLIB::ZLIB) + +if(WITH_CLIPPER) + find_package(clipper REQUIRED CONFIG) + link_libraries(clipper::clipper) +endif() +if(WITH_DRACO) + find_package(draco REQUIRED CONFIG) + link_libraries(draco::draco) + add_definitions(-DASSIMP_ENABLE_DRACO) +endif() +if(WITH_KUBAZIP) + find_package(zip REQUIRED CONFIG) + link_libraries(zip::zip) +endif() +if(WITH_OPENDDL) + find_package(openddlparser REQUIRED CONFIG) + link_libraries(openddlparser::openddlparser) +endif() +if(WITH_POLY2TRI) + find_package(poly2tri REQUIRED CONFIG) + link_libraries(poly2tri::poly2tri) +endif() +if(WITH_PUGIXML) +endif() +if(WITH_RAPIDJSON) + find_package(RapidJSON REQUIRED CONFIG) + link_libraries(rapidjson::rapidjson) +endif() +if(WITH_STB) + find_package(stb REQUIRED CONFIG) + link_libraries(stb::stb) +endif() diff --git a/assimp/5.x/conandata.yml b/assimp/5.x/conandata.yml new file mode 100644 index 0000000..ef917c0 --- /dev/null +++ b/assimp/5.x/conandata.yml @@ -0,0 +1,10 @@ +sources: + "6.0.4": + url: "https://github.com/assimp/assimp/archive/refs/tags/v6.0.4.tar.gz" + sha256: "afa5487efdd285661afa842c85187cd8c541edad92e8d4aa85be4fca7476eccc" + "6.0.2": + url: "https://github.com/assimp/assimp/archive/refs/tags/v6.0.2.tar.gz" + sha256: "d1822d9a19c9205d6e8bc533bf897174ddb360ce504680f294170cc1d6319751" + "5.4.3": + url: "https://github.com/assimp/assimp/archive/refs/tags/v5.4.3.tar.gz" + sha256: "66dfbaee288f2bc43172440a55d0235dfc7bf885dda6435c038e8000e79582cb" diff --git a/assimp/5.x/conanfile.py b/assimp/5.x/conanfile.py new file mode 100644 index 0000000..ceba4f5 --- /dev/null +++ b/assimp/5.x/conanfile.py @@ -0,0 +1,329 @@ +from pathlib import Path + +from conan import ConanFile +from conan.tools.build import stdcpp_library, check_min_cppstd +from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout +from conan.tools.env import VirtualBuildEnv +from conan.tools.files import collect_libs, copy, get, replace_in_file, rmdir, save +from conan.tools.microsoft import is_msvc, is_msvc_static_runtime +from conan.tools.scm import Version +import os + +required_conan_version = ">=2" + + +class AssimpConan(ConanFile): + name = "assimp" + url = "https://github.com/conan-io/conan-center-index" + homepage = "https://github.com/assimp/assimp" + description = ( + "A library to import and export various 3d-model-formats including " + "scene-post-processing to generate missing render data." + ) + topics = ("assimp", "3d", "game development", "3mf", "collada") + license = "BSD-3-Clause" + package_type = "library" + settings = "os", "arch", "compiler", "build_type" + options = { + "shared": [True, False], + "fPIC": [True, False], + "double_precision": [True, False], + } + default_options = { + "shared": False, + "fPIC": True, + "double_precision": False, + } + + _format_option_map = { + "with_3d": ("ASSIMP_BUILD_3D_IMPORTER", "5.0.0"), + "with_3ds": ("ASSIMP_BUILD_3DS_IMPORTER", "5.0.0"), + "with_3ds_exporter": ("ASSIMP_BUILD_3DS_EXPORTER", "5.0.0"), + "with_3mf": ("ASSIMP_BUILD_3MF_IMPORTER", "5.0.0"), + "with_3mf_exporter": ("ASSIMP_BUILD_3MF_EXPORTER", "5.0.0"), + "with_ac": ("ASSIMP_BUILD_AC_IMPORTER", "5.0.0"), + "with_amf": ("ASSIMP_BUILD_AMF_IMPORTER", "5.0.0"), + "with_ase": ("ASSIMP_BUILD_ASE_IMPORTER", "5.0.0"), + "with_assbin": ("ASSIMP_BUILD_ASSBIN_IMPORTER", "5.0.0"), + "with_assbin_exporter": ("ASSIMP_BUILD_ASSBIN_EXPORTER", "5.0.0"), + "with_assxml_exporter": ("ASSIMP_BUILD_ASSXML_EXPORTER", "5.0.0"), + "with_assjson_exporter": ("ASSIMP_BUILD_ASSJSON_EXPORTER", "5.0.0"), + "with_b3d": ("ASSIMP_BUILD_B3D_IMPORTER", "5.0.0"), + "with_blend": ("ASSIMP_BUILD_BLEND_IMPORTER", "5.0.0"), + "with_bvh": ("ASSIMP_BUILD_BVH_IMPORTER", "5.0.0"), + "with_ms3d": ("ASSIMP_BUILD_MS3D_IMPORTER", "5.0.0"), + "with_cob": ("ASSIMP_BUILD_COB_IMPORTER", "5.0.0"), + "with_collada": ("ASSIMP_BUILD_COLLADA_IMPORTER", "5.0.0"), + "with_collada_exporter": ("ASSIMP_BUILD_COLLADA_EXPORTER", "5.0.0"), + "with_csm": ("ASSIMP_BUILD_CSM_IMPORTER", "5.0.0"), + "with_dxf": ("ASSIMP_BUILD_DXF_IMPORTER", "5.0.0"), + "with_fbx": ("ASSIMP_BUILD_FBX_IMPORTER", "5.0.0"), + "with_fbx_exporter": ("ASSIMP_BUILD_FBX_EXPORTER", "5.0.0"), + "with_gltf": ("ASSIMP_BUILD_GLTF_IMPORTER", "5.0.0"), + "with_gltf_exporter": ("ASSIMP_BUILD_GLTF_EXPORTER", "5.0.0"), + "with_hmp": ("ASSIMP_BUILD_HMP_IMPORTER", "5.0.0"), + "with_ifc": ("ASSIMP_BUILD_IFC_IMPORTER", "5.0.0"), + "with_irr": ("ASSIMP_BUILD_IRR_IMPORTER", "5.0.0"), + "with_irrmesh": ("ASSIMP_BUILD_IRRMESH_IMPORTER", "5.0.0"), + "with_lwo": ("ASSIMP_BUILD_LWO_IMPORTER", "5.0.0"), + "with_lws": ("ASSIMP_BUILD_LWS_IMPORTER", "5.0.0"), + "with_md2": ("ASSIMP_BUILD_MD2_IMPORTER", "5.0.0"), + "with_md3": ("ASSIMP_BUILD_MD3_IMPORTER", "5.0.0"), + "with_md5": ("ASSIMP_BUILD_MD5_IMPORTER", "5.0.0"), + "with_mdc": ("ASSIMP_BUILD_MDC_IMPORTER", "5.0.0"), + "with_mdl": ("ASSIMP_BUILD_MDL_IMPORTER", "5.0.0"), + "with_mmd": ("ASSIMP_BUILD_MMD_IMPORTER", "5.0.0"), + "with_ndo": ("ASSIMP_BUILD_NDO_IMPORTER", "5.0.0"), + "with_nff": ("ASSIMP_BUILD_NFF_IMPORTER", "5.0.0"), + "with_obj": ("ASSIMP_BUILD_OBJ_IMPORTER", "5.0.0"), + "with_obj_exporter": ("ASSIMP_BUILD_OBJ_EXPORTER", "5.0.0"), + "with_off": ("ASSIMP_BUILD_OFF_IMPORTER", "5.0.0"), + "with_ogre": ("ASSIMP_BUILD_OGRE_IMPORTER", "5.0.0"), + "with_opengex": ("ASSIMP_BUILD_OPENGEX_IMPORTER", "5.0.0"), + "with_opengex_exporter": ("ASSIMP_BUILD_OPENGEX_EXPORTER", "5.0.0"), + "with_pbrt_exporter": ("ASSIMP_BUILD_PBRT_EXPORTER", "5.1.0"), + "with_ply": ("ASSIMP_BUILD_PLY_IMPORTER", "5.0.0"), + "with_ply_exporter": ("ASSIMP_BUILD_PLY_EXPORTER", "5.0.0"), + "with_q3bsp": ("ASSIMP_BUILD_Q3BSP_IMPORTER", "5.0.0"), + "with_q3d": ("ASSIMP_BUILD_Q3D_IMPORTER", "5.0.0"), + "with_raw": ("ASSIMP_BUILD_RAW_IMPORTER", "5.0.0"), + "with_sib": ("ASSIMP_BUILD_SIB_IMPORTER", "5.0.0"), + "with_smd": ("ASSIMP_BUILD_SMD_IMPORTER", "5.0.0"), + "with_step": ("ASSIMP_BUILD_STEP_IMPORTER", "5.0.0"), + "with_step_exporter": ("ASSIMP_BUILD_STEP_EXPORTER", "5.0.0"), + "with_stl": ("ASSIMP_BUILD_STL_IMPORTER", "5.0.0"), + "with_stl_exporter": ("ASSIMP_BUILD_STL_EXPORTER", "5.0.0"), + "with_terragen": ("ASSIMP_BUILD_TERRAGEN_IMPORTER", "5.0.0"), + "with_x": ("ASSIMP_BUILD_X_IMPORTER", "5.0.0"), + "with_x_exporter": ("ASSIMP_BUILD_X_EXPORTER", "5.0.0"), + "with_x3d": ("ASSIMP_BUILD_X3D_IMPORTER", "5.0.0"), + "with_x3d_exporter": ("ASSIMP_BUILD_X3D_EXPORTER", "5.0.0"), + "with_xgl": ("ASSIMP_BUILD_XGL_IMPORTER", "5.0.0"), + "with_m3d": ("ASSIMP_BUILD_M3D_IMPORTER", "5.1.0"), + "with_m3d_exporter": ("ASSIMP_BUILD_M3D_EXPORTER", "5.1.0"), + "with_iqm": ("ASSIMP_BUILD_IQM_IMPORTER", "5.2.0"), + } + options.update(dict.fromkeys(_format_option_map, [True, False])) + default_options.update(dict.fromkeys(_format_option_map, True)) + + def export_sources(self): + copy(self, "conan_deps.cmake", self.recipe_folder, os.path.join(self.export_sources_folder, "src")) + + def config_options(self): + if self.settings.os == "Windows": + del self.options.fPIC + + for option, (_, min_version) in self._format_option_map.items(): + if Version(self.version) < Version(min_version): + delattr(self.options, option) + + def configure(self): + if self.options.shared: + self.options.rm_safe("fPIC") + + def layout(self): + cmake_layout(self, src_folder="src") + + @property + def _depends_on_kuba_zip(self): + return self.options.with_3mf_exporter + + @property + def _depends_on_poly2tri(self): + return self.options.with_blend or self.options.with_ifc + + @property + def _depends_on_rapidjson(self): + return self.options.with_gltf or self.options.with_gltf_exporter + + @property + def _depends_on_draco(self): + return self.options.with_gltf or self.options.with_gltf_exporter + + @property + def _depends_on_clipper(self): + return self.options.with_ifc + + @property + def _depends_on_stb(self): + return self.options.with_m3d or self.options.with_m3d_exporter or \ + self.options.with_pbrt_exporter + + @property + def _depends_on_openddlparser(self): + return self.options.with_opengex + + def requirements(self): + # TODO: unvendor others libs: + # - Open3DGC + self.requires("minizip/1.2.13") + self.requires("pugixml/1.14") + self.requires("utfcpp/4.0.1") + self.requires("zlib/[>=1.2.11 <2]") + if self._depends_on_kuba_zip: + self.requires("kuba-zip/0.3.0") + if self._depends_on_poly2tri: + self.requires("poly2tri/cci.20130502") + if self._depends_on_rapidjson: + self.requires("rapidjson/cci.20230929") + if self._depends_on_draco: + self.requires("draco/1.5.6") + if self._depends_on_clipper: + self.requires("clipper/6.4.2") + if self._depends_on_stb: + self.requires("stb/cci.20230920") + if self._depends_on_openddlparser: + self.requires("openddl-parser/0.5.1") + + def validate_build(self): + check_min_cppstd(self, 17) + + def validate(self): + check_min_cppstd(self, 11) + + def build_requirements(self): + self.tool_requires("cmake/[>=3.22]") + + def source(self): + get(self, **self.conan_data["sources"][self.version], strip_root=True) + self._patch_sources() + + def generate(self): + tc = CMakeToolchain(self) + tc.variables["ASSIMP_ANDROID_JNIIOSYSTEM"] = False + tc.variables["ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT"] = False + tc.variables["ASSIMP_BUILD_ALL_EXPORTERS_BY_DEFAULT"] = False + tc.variables["ASSIMP_BUILD_ASSIMP_TOOLS"] = False + tc.variables["ASSIMP_BUILD_DOCS"] = False + tc.variables["ASSIMP_BUILD_DRACO"] = False + tc.variables["ASSIMP_BUILD_FRAMEWORK"] = False + tc.variables["ASSIMP_BUILD_MINIZIP"] = False + tc.variables["ASSIMP_BUILD_SAMPLES"] = False + tc.variables["ASSIMP_BUILD_TESTS"] = False + tc.variables["ASSIMP_BUILD_ZLIB"] = False + tc.variables["ASSIMP_DOUBLE_PRECISION"] = self.options.double_precision + tc.variables["ASSIMP_HUNTER_ENABLED"] = False + tc.variables["ASSIMP_IGNORE_GIT_HASH"] = True + tc.variables["ASSIMP_INJECT_DEBUG_POSTFIX"] = False + tc.variables["ASSIMP_INSTALL"] = True + tc.variables["ASSIMP_INSTALL_PDB"] = False + tc.variables["ASSIMP_NO_EXPORT"] = False + tc.variables["ASSIMP_OPT_BUILD_PACKAGES"] = False + tc.variables["ASSIMP_RAPIDJSON_NO_MEMBER_ITERATOR"] = False + tc.variables["ASSIMP_UBSAN"] = False + tc.variables["ASSIMP_WARNINGS_AS_ERRORS"] = False + tc.variables["USE_STATIC_CRT"] = is_msvc_static_runtime(self) + tc.cache_variables["ASSIMP_BUILD_USE_CCACHE"] = False + + for option, (definition, _) in self._format_option_map.items(): + value = self.options.get_safe(option) + if value is not None: + tc.variables[definition] = value + if self.settings.os == "Windows": + tc.preprocessor_definitions["NOMINMAX"] = 1 + + tc.cache_variables["CMAKE_PROJECT_Assimp_INCLUDE"] = "conan_deps.cmake" + tc.cache_variables["WITH_CLIPPER"] = self._depends_on_clipper + tc.cache_variables["WITH_DRACO"] = self._depends_on_draco + tc.cache_variables["WITH_KUBAZIP"] = self._depends_on_kuba_zip + tc.cache_variables["WITH_OPENDDL"] = self._depends_on_openddlparser + tc.cache_variables["WITH_POLY2TRI"] = self._depends_on_poly2tri + tc.cache_variables["WITH_RAPIDJSON"] = self._depends_on_rapidjson + tc.cache_variables["WITH_STB"] = self._depends_on_stb + tc.generate() + + cd = CMakeDeps(self) + cd.set_property("rapidjson", "cmake_target_name", "rapidjson::rapidjson") + cd.set_property("utfcpp", "cmake_target_name", "utf8cpp::utf8cpp") + cd.generate() + + def _patch_sources(self): + # Don't force several compiler and linker flags + for pattern in [ + "-fPIC", + "-g ", + "SET(CMAKE_POSITION_INDEPENDENT_CODE ON)", + 'SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /D_DEBUG /Zi /Od")', + 'SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG:FULL /PDBALTPATH:%_PDB% /OPT:REF /OPT:ICF")', + ]: + replace_in_file(self, os.path.join(self.source_folder, "CMakeLists.txt"), pattern, "") + + for pattern in ["-Werror", "/WX"]: + replace_in_file(self, os.path.join(self.source_folder, "CMakeLists.txt"), pattern, "") + replace_in_file(self, os.path.join(self.source_folder, "code", "CMakeLists.txt"), pattern, "") + + # Make sure vendored libs are not used by accident by removing their subdirs + allow_vendored = ["Open3DGC", "earcut-hpp"] + for contrib_dir in Path(self.source_folder).joinpath("contrib").iterdir(): + if contrib_dir.is_dir() and contrib_dir.name not in allow_vendored: + rmdir(self, contrib_dir) + + # Do not include add vendored library sources to the build + # https://github.com/assimp/assimp/blob/v5.3.1/code/CMakeLists.txt#L1151-L1159 + code_cmakelists = Path(self.source_folder).joinpath("code", "CMakeLists.txt") + content = code_cmakelists.read_text(encoding="utf-8") + for vendored_lib in [ + "unzip_compile", + "Poly2Tri", + "Clipper", + "openddl_parser", + # "open3dgc", + "ziplib", + "Pugixml", + "stb", + ]: + content = content.replace("${%s_SRCS}" % vendored_lib, "") + code_cmakelists.write_text(content, encoding="utf-8") + + # Make vendored headers redirect to external ones. + for contrib_header, include in [ + (os.path.join("clipper", "clipper.hpp"), "polyclipping/clipper.hpp"), + (os.path.join("poly2tri", "poly2tri", "poly2tri.h"), "poly2tri/poly2tri.h"), + (os.path.join("stb", "stb_image.h"), "stb_image.h"), + (os.path.join("utf8cpp", "source", "utf8.h"), "utf8.h"), + (os.path.join("zip", "src", "zip.h"), "zip/zip.h"), + ]: + save(self, os.path.join(self.source_folder, "contrib", contrib_header), + f"#include <{include}>\n") + rmdir(self, os.path.join(self.source_folder, "contrib", "utf8cpp")) + + # minizip is provided via conan_deps.cmake, no need to use pkgconfig + replace_in_file(self, os.path.join(self.source_folder, "CMakeLists.txt"), + "use_pkgconfig(UNZIP minizip)", "set(UNZIP_FOUND TRUE)") + + # ZLIB is unvendored, no need to install it + # https://github.com/assimp/assimp/blob/v5.3.1/CMakeLists.txt#L483-L487 + # https://github.com/assimp/assimp/blob/v5.1.6/CMakeLists.txt#L463-L466 + replace_in_file(self, os.path.join(self.source_folder, "CMakeLists.txt"), + "INSTALL( TARGETS zlib", "set(_ #") + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def package(self): + copy(self, "LICENSE", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses")) + cmake = CMake(self) + cmake.install() + rmdir(self, os.path.join(self.package_folder, "lib", "cmake")) + rmdir(self, os.path.join(self.package_folder, "lib", "pkgconfig")) + + def package_info(self): + self.cpp_info.set_property("cmake_file_name", "assimp") + self.cpp_info.set_property("cmake_target_name", "assimp::assimp") + self.cpp_info.set_property("pkg_config_name", "assimp") + # Always ever just 1 library, but with some suffix variations + # that make it hard to map manually + self.cpp_info.libs = collect_libs(self) + if is_msvc(self) and self.options.shared: + self.cpp_info.defines.append("ASSIMP_DLL") + if self.settings.os in ["Linux", "FreeBSD"]: + self.cpp_info.system_libs = ["rt", "m", "pthread"] + elif self.settings.os == "WindowsStore": + self.cpp_info.system_libs.append("advapi32") + self.cpp_info.defines.append("WindowsStore") + if not self.options.shared: + libcxx = stdcpp_library(self) + if libcxx: + self.cpp_info.system_libs.append(libcxx) diff --git a/assimp/5.x/test_package/CMakeLists.txt b/assimp/5.x/test_package/CMakeLists.txt new file mode 100644 index 0000000..600f67a --- /dev/null +++ b/assimp/5.x/test_package/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.15) +project(test_package LANGUAGES C CXX) + +find_package(assimp REQUIRED CONFIG) + +add_executable(${PROJECT_NAME} test_package.cpp) +target_link_libraries(${PROJECT_NAME} PRIVATE assimp::assimp) +target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11) + +add_executable(${PROJECT_NAME}_c test_package.c) +target_link_libraries(${PROJECT_NAME}_c PRIVATE assimp::assimp) diff --git a/assimp/5.x/test_package/conanfile.py b/assimp/5.x/test_package/conanfile.py new file mode 100644 index 0000000..dd82a39 --- /dev/null +++ b/assimp/5.x/test_package/conanfile.py @@ -0,0 +1,29 @@ +from conan import ConanFile +from conan.tools.build import can_run +from conan.tools.cmake import CMake, cmake_layout +import os + + +class TestPackageConan(ConanFile): + settings = "os", "arch", "compiler", "build_type" + generators = "CMakeToolchain", "CMakeDeps", "VirtualRunEnv" + test_type = "explicit" + + def layout(self): + cmake_layout(self) + + def requirements(self): + self.requires(self.tested_reference_str) + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def test(self): + if can_run(self): + bin_path = os.path.join(self.cpp.build.bindirs[0], "test_package") + self.run(bin_path, env="conanrun") + + bin_c_path = os.path.join(self.cpp.build.bindirs[0], "test_package_c") + self.run(bin_c_path, env="conanrun") diff --git a/assimp/5.x/test_package/test_package.c b/assimp/5.x/test_package/test_package.c new file mode 100644 index 0000000..1f212b3 --- /dev/null +++ b/assimp/5.x/test_package/test_package.c @@ -0,0 +1,17 @@ +#include + +#include +#include +#include + +int main(int argc, char **argv) { + const C_STRUCT aiScene *scene = aiImportFile("", + aiProcess_CalcTangentSpace | + aiProcess_Triangulate | + aiProcess_JoinIdenticalVertices | + aiProcess_SortByPType); + + aiReleaseImport(scene); + + return 0; +} diff --git a/assimp/5.x/test_package/test_package.cpp b/assimp/5.x/test_package/test_package.cpp new file mode 100644 index 0000000..bf610dc --- /dev/null +++ b/assimp/5.x/test_package/test_package.cpp @@ -0,0 +1,16 @@ +#include + +#include +#include +#include + +int main(int argc, char **argv) { + Assimp::Importer importer; + const aiScene* scene = importer.ReadFile("", + aiProcess_CalcTangentSpace | + aiProcess_Triangulate | + aiProcess_JoinIdenticalVertices | + aiProcess_SortByPType); + + return 0; +} diff --git a/assimp/config.yml b/assimp/config.yml new file mode 100644 index 0000000..f761871 --- /dev/null +++ b/assimp/config.yml @@ -0,0 +1,7 @@ +versions: + "6.0.4": + folder: "5.x" + "6.0.2": + folder: "5.x" + "5.4.3": + folder: "5.x" diff --git a/cli11/all/conandata.yml b/cli11/all/conandata.yml new file mode 100644 index 0000000..442a440 --- /dev/null +++ b/cli11/all/conandata.yml @@ -0,0 +1,43 @@ +sources: + "2.6.1": + url: "https://github.com/CLIUtils/CLI11/archive/v2.6.1.tar.gz" + sha256: "377691f3fac2b340f12a2f79f523c780564578ba3d6eaf5238e9f35895d5ba95" + "2.6.0": + url: "https://github.com/CLIUtils/CLI11/archive/v2.6.0.tar.gz" + sha256: "8c11bc049090a66cb71c3e90350cddaa792b2a45e0a7841799900b95ca38b101" + "2.5.0": + url: "https://github.com/CLIUtils/CLI11/archive/v2.5.0.tar.gz" + sha256: "17e02b4cddc2fa348e5dbdbb582c59a3486fa2b2433e70a0c3bacb871334fd55" + "2.4.2": + url: "https://github.com/CLIUtils/CLI11/archive/v2.4.2.tar.gz" + sha256: "f2d893a65c3b1324c50d4e682c0cdc021dd0477ae2c048544f39eed6654b699a" + "2.4.1": + url: "https://github.com/CLIUtils/CLI11/archive/v2.4.1.tar.gz" + sha256: "73b7ec52261ce8fe980a29df6b4ceb66243bb0b779451dbd3d014cfec9fdbb58" + "2.4.0": + url: "https://github.com/CLIUtils/CLI11/archive/v2.4.0.tar.gz" + sha256: "d2ce8d5318d2a7a7d1120e2a18caac49cd65423d5d4158cbbc0267e6768af522" + "2.3.2": + url: "https://github.com/CLIUtils/CLI11/archive/v2.3.2.tar.gz" + sha256: "aac0ab42108131ac5d3344a9db0fdf25c4db652296641955720a4fbe52334e22" + "2.3.1": + url: "https://github.com/CLIUtils/CLI11/archive/v2.3.1.tar.gz" + sha256: "378da73d2d1d9a7b82ad6ed2b5bda3e7bc7093c4034a1d680a2e009eb067e7b2" + "2.3.0": + url: "https://github.com/CLIUtils/CLI11/archive/v2.3.0.tar.gz" + sha256: "b6e116ca1555e2b7f2743fd41e3bd18149baae791acd98eb653e5b07e0f20561" + "2.2.0": + url: "https://github.com/CLIUtils/CLI11/archive/v2.2.0.tar.gz" + sha256: "d60440dc4d43255f872d174e416705f56ba40589f6eb07727f76376fb8378fd6" + "2.1.2": + url: "https://github.com/CLIUtils/CLI11/archive/v2.1.2.tar.gz" + sha256: "26291377e892ba0e5b4972cdfd4a2ab3bf53af8dac1f4ea8fe0d1376b625c8cb" + "2.1.1": + url: "https://github.com/CLIUtils/CLI11/archive/v2.1.1.tar.gz" + sha256: "d69023d1d0ab6a22be86b4f59d449422bc5efd9121868f4e284d6042e52f682e" + "2.0.0": + url: "https://github.com/CLIUtils/CLI11/archive/v2.0.0.tar.gz" + sha256: "2c672f17bf56e8e6223a3bfb74055a946fa7b1ff376510371902adb9cb0ab6a3" + "1.9.1": + url: "https://github.com/CLIUtils/CLI11/archive/v1.9.1.tar.gz" + sha256: "c780cf8cf3ba5ec2648a7eeb20a47e274493258f38a9b417628e0576f473a50b" diff --git a/cli11/all/conanfile.py b/cli11/all/conanfile.py new file mode 100644 index 0000000..227ff90 --- /dev/null +++ b/cli11/all/conanfile.py @@ -0,0 +1,96 @@ +from conan import ConanFile +from conan.tools.files import get, copy, rmdir +from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout +from conan.tools.build import check_min_cppstd +from conan.tools.scm import Version +import os + +required_conan_version = ">=1.52.0" + +class CLI11Conan(ConanFile): + name = "cli11" + description = "A command line parser for C++11 and beyond." + license = "BSD-3-Clause" + url = "https://github.com/conan-io/conan-center-index" + homepage = "https://github.com/CLIUtils/CLI11" + topics = "cli-parser", "cpp11", "no-dependencies", "cli" + package_type = "header-library" + settings = "os", "arch", "compiler", "build_type" + no_copy_source = True + + options = { + "header_only": [True, False] + } + default_options = { + "header_only": True + } + + @property + def _min_cppstd(self): + return "11" + + @property + def _supports_compilation(self): + return Version(self.version) >= "2.3" + + def configure(self): + if not self._supports_compilation: + # TODO: Back to config_options after Conan 1 freeze + del self.options.header_only + elif not self.options.header_only: + self.package_type = "static-library" + + def layout(self): + cmake_layout(self, src_folder="src") + + def package_id(self): + if not self._supports_compilation or self.info.options.header_only: + self.info.clear() + + def validate(self): + if self.settings.compiler.get_safe("cppstd"): + check_min_cppstd(self, self._min_cppstd) + + def source(self): + get(self, **self.conan_data["sources"][self.version], strip_root=True) + + def generate(self): + tc = CMakeToolchain(self) + if self._supports_compilation: + tc.variables["CLI11_PRECOMPILED"] = not self.options.header_only + tc.variables["CLI11_BUILD_EXAMPLES"] = False + tc.variables["CLI11_BUILD_TESTS"] = False + tc.variables["CLI11_BUILD_DOCS"] = False + tc.generate() + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def package(self): + copy(self, "LICENSE", dst=os.path.join(self.package_folder, "licenses"), src=self.source_folder) + cmake = CMake(self) + cmake.install() + rmdir(self, os.path.join(self.package_folder, "lib", "cmake")) + rmdir(self, os.path.join(self.package_folder, "lib", "pkgconfig")) + # since 2.1.1 + rmdir(self, os.path.join(self.package_folder, "share")) + + def package_info(self): + self.cpp_info.bindirs = [] + self.cpp_info.libdirs = [] + + if self._supports_compilation and not self.options.get_safe("header_only"): + self.cpp_info.libdirs = ["lib"] + self.cpp_info.libs = ["CLI11"] + self.cpp_info.defines = ["CLI11_COMPILE"] + + self.cpp_info.set_property("cmake_file_name", "CLI11") + self.cpp_info.set_property("cmake_target_name", "CLI11::CLI11") + self.cpp_info.set_property("pkg_config_name", "CLI11") + + # TODO: to remove in conan v2 once cmake_find_package_* generators removed + self.cpp_info.names["cmake_find_package"] = "CLI11" + self.cpp_info.names["cmake_find_package_multi"] = "CLI11" + self.cpp_info.names["pkg_config"] = "CLI11" diff --git a/cli11/all/test_package/CMakeLists.txt b/cli11/all/test_package/CMakeLists.txt new file mode 100644 index 0000000..a5cc100 --- /dev/null +++ b/cli11/all/test_package/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.15) +project(test_package LANGUAGES CXX) + +find_package(CLI11 REQUIRED CONFIG) + +add_executable(${CMAKE_PROJECT_NAME} test_package.cpp) +target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE CLI11::CLI11) + +target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11) diff --git a/cli11/all/test_package/conanfile.py b/cli11/all/test_package/conanfile.py new file mode 100644 index 0000000..a9fb966 --- /dev/null +++ b/cli11/all/test_package/conanfile.py @@ -0,0 +1,26 @@ +from conan import ConanFile +from conan.tools.build import can_run +from conan.tools.cmake import cmake_layout, CMake +import os + + +class TestPackageConan(ConanFile): + settings = "os", "arch", "compiler", "build_type" + generators = "CMakeDeps", "CMakeToolchain", "VirtualRunEnv" + test_type = "explicit" + + def requirements(self): + self.requires(self.tested_reference_str) + + def layout(self): + cmake_layout(self) + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def test(self): + if can_run(self): + bin_path = os.path.join(self.cpp.build.bindirs[0], "test_package") + self.run(bin_path, env="conanrun") diff --git a/cli11/all/test_package/test_package.cpp b/cli11/all/test_package/test_package.cpp new file mode 100644 index 0000000..cec812b --- /dev/null +++ b/cli11/all/test_package/test_package.cpp @@ -0,0 +1,11 @@ +#include + +#include + +int main(int argc, char **argv) { + CLI::App app("Test App"); + CLI11_PARSE(app, argc, argv); + + std::cout << app.help() << '\n'; + return 0; +} diff --git a/cli11/config.yml b/cli11/config.yml new file mode 100644 index 0000000..c4f90a5 --- /dev/null +++ b/cli11/config.yml @@ -0,0 +1,29 @@ +versions: + "2.6.1": + folder: all + "2.6.0": + folder: all + "2.5.0": + folder: all + "2.4.2": + folder: all + "2.4.1": + folder: all + "2.4.0": + folder: all + "2.3.2": + folder: all + "2.3.1": + folder: all + "2.3.0": + folder: all + "2.2.0": + folder: all + "2.1.2": + folder: all + "2.1.1": + folder: all + "2.0.0": + folder: all + "1.9.1": + folder: all diff --git a/mimalloc/all/conandata.yml b/mimalloc/all/conandata.yml index 39d5f15..714cd48 100644 --- a/mimalloc/all/conandata.yml +++ b/mimalloc/all/conandata.yml @@ -1,4 +1,7 @@ sources: + "3.2.8": + url: "https://github.com/microsoft/mimalloc/archive/v3.2.8.tar.gz" + sha256: "68163666575518c213a6593850099adce3863b340ca2751103dbd1f253664e05" "3.1.5": url: "https://github.com/microsoft/mimalloc/archive/v3.1.5.tar.gz" sha256: "1c6949032069d5ebea438ec5cedd602d06f40a92ddf0f0d9dcff0993e5f6635c" diff --git a/mimalloc/config.yml b/mimalloc/config.yml index e271b34..b764a88 100644 --- a/mimalloc/config.yml +++ b/mimalloc/config.yml @@ -1,4 +1,6 @@ versions: + "3.2.8": + folder: all "3.1.5": folder: all "2.2.4": -- 2.49.1 From 99959dbefce21b26b0ec5c329a90e0d3e6ca782d Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Wed, 11 Feb 2026 14:09:22 +0100 Subject: [PATCH 07/12] fix Assimp packaging --- .gitea/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 87efa39..8650a94 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -37,7 +37,7 @@ jobs: { name: "sqlite3", version: "3.51.2", location: "all", needs_pkg: "" }, { name: "rapidhash", version: "3.0", location: "all", needs_pkg: "" }, { name: "cli11", version: "2.6.1", location: "all", needs_pkg: "" }, - { name: "assimp", version: "6.0.4", location: "all", needs_pkg: "" } + { name: "assimp", version: "6.0.4", location: "5.x", needs_pkg: "" } ] name: "Package ${{matrix.package.name }}/${{ matrix.package.version }}" steps: -- 2.49.1 From 41c7a31b62fdef0d7df659154340040723a5b3a8 Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Fri, 20 Feb 2026 17:08:14 +0100 Subject: [PATCH 08/12] Add Asan support --- mimalloc/all/conanfile.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mimalloc/all/conanfile.py b/mimalloc/all/conanfile.py index 1f12ff6..740aca8 100644 --- a/mimalloc/all/conanfile.py +++ b/mimalloc/all/conanfile.py @@ -29,6 +29,7 @@ class MimallocConan(ConanFile): "single_object": [True, False], "guarded": [True, False], "win_redirect": [True, False], + "asan": [True, False], } default_options = { "shared": False, @@ -39,6 +40,7 @@ class MimallocConan(ConanFile): "single_object": False, "guarded": False, "win_redirect": False, + "asan": False, } def export_sources(self): @@ -129,6 +131,7 @@ class MimallocConan(ConanFile): tc.variables["MI_WIN_REDIRECT"] = "ON" if self.options.get_safe("win_redirect") else "OFF" tc.variables["MI_INSTALL_TOPLEVEL"] = "ON" tc.variables["MI_GUARDED"] = self.options.get_safe("guarded", False) + tc.variables["MI_TRACK_ASAN"] = "ON" if self.options.get_safe("asan") else "OFF" if Version(self.version) <= "1.7.6": tc.cache_variables["CMAKE_POLICY_VERSION_MINIMUM"] = "3.5" # CMake 4 support tc.generate() -- 2.49.1 From fb870a5028d5731b44e26179802b4339f3cce2c2 Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Fri, 20 Feb 2026 17:09:15 +0100 Subject: [PATCH 09/12] Use local profiles --- .gitea/workflows/ci.yml | 2 +- ConanProfiles/clang | 26 ++++++++++++++++++++++++++ ConanProfiles/clang_coverage | 25 +++++++++++++++++++++++++ ConanProfiles/clangd | 23 +++++++++++++++++++++++ ConanProfiles/msvc | 22 ++++++++++++++++++++++ ConanProfiles/msvc_ccache.cmake | 19 +++++++++++++++++++ ConanProfiles/msvcd | 19 +++++++++++++++++++ 7 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 ConanProfiles/clang create mode 100644 ConanProfiles/clang_coverage create mode 100644 ConanProfiles/clangd create mode 100644 ConanProfiles/msvc create mode 100644 ConanProfiles/msvc_ccache.cmake create mode 100644 ConanProfiles/msvcd diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 8650a94..7b1e425 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -64,7 +64,7 @@ jobs: --version=${{ matrix.package.version }} \ --user=bigfootdev \ --channel=${{ env.BRANCH_NAME }} \ - -pr:b=clang -pr:h=clang \ + -pr:b=./ConanProfiles/clang -pr:h=./ConanProfiles/clang \ --build=missing --remote=bigfootpackages CONAN_LOGIN_USERNAME=${ARTIFACTORY_USER} \ diff --git a/ConanProfiles/clang b/ConanProfiles/clang new file mode 100644 index 0000000..7e55968 --- /dev/null +++ b/ConanProfiles/clang @@ -0,0 +1,26 @@ +[settings] +os=Linux +arch=x86_64 +compiler=clang +compiler.version=20 +compiler.libcxx=libstdc++11 +compiler.cppstd=20 +compiler.cstd=17 +build_type=Release +[conf] +tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'} +tools.cmake.cmaketoolchain:extra_variables*={'BIGFOOT_CXX_FLAGS': {'value': '-Wall;-Wextra;-Wpedantic;-Werror;-ffast-math;-fno-exceptions;-fno-rtti', 'cache': True, 'type': 'STRING', 'docstring': 'CXX flags for Bigfoot', 'force': True}} +tools.cmake.cmaketoolchain:extra_variables*={'BIGFOOT_C_FLAGS': {'value': '-Wall;-Wextra;-Wpedantic;-Werror;-ffast-math', 'cache': True, 'type': 'STRING', 'docstring': 'C flags for Bigfoot', 'force': True}} +tools.cmake.cmaketoolchain:generator=Ninja +tools.system.package_manager:mode=install +tools.system.package_manager:sudo=True +tools.build:compiler_executables={"c": "clang", "cpp": "clang++"} + +tools.build:exelinkflags=["-fuse-ld=mold", "-flto"] +tools.build:sharedlinkflags=["-fuse-ld=mold", "-flto"] + +tools.build:cflags=["-flto"] +tools.build:cxxflags=["-flto"] + +[tool_requires] +!cmake/*: cmake/[>=4.2] \ No newline at end of file diff --git a/ConanProfiles/clang_coverage b/ConanProfiles/clang_coverage new file mode 100644 index 0000000..7e108a2 --- /dev/null +++ b/ConanProfiles/clang_coverage @@ -0,0 +1,25 @@ +[settings] +os=Linux +arch=x86_64 +compiler=clang +compiler.version=20 +compiler.libcxx=libstdc++11 +compiler.cppstd=20 +compiler.cstd=17 +build_type=Debug +[conf] +tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'} +tools.cmake.cmaketoolchain:extra_variables*={'BIGFOOT_CXX_FLAGS': {'value': '-Wall;-Wextra;-Wpedantic;-Werror;-fno-exceptions;-fno-rtti;-fprofile-instr-generate;-fcoverage-mapping', 'cache': True, 'type': 'STRING', 'docstring': 'CXX flags for Bigfoot', 'force': True}} +tools.cmake.cmaketoolchain:extra_variables*={'BIGFOOT_C_FLAGS': {'value': '-Wall;-Wextra;-Wpedantic;-Werror;-fprofile-instr-generate;-fcoverage-mapping', 'cache': True, 'type': 'STRING', 'docstring': 'C flags for Bigfoot', 'force': True}} +tools.cmake.cmaketoolchain:extra_variables*={'BIGFOOT_SHARED_LINK_FLAGS': {'value': '-fprofile-instr-generate', 'cache': True, 'type': 'STRING', 'docstring': 'SHARED link flags for Bigfoot', 'force': True}} +tools.cmake.cmaketoolchain:extra_variables*={'BIGFOOT_EXE_LINK_FLAGS': {'value': '-fprofile-instr-generate', 'cache': True, 'type': 'STRING', 'docstring': 'EXE link flags for Bigfoot', 'force': True}} +tools.cmake.cmaketoolchain:generator=Ninja +tools.system.package_manager:mode=install +tools.system.package_manager:sudo=True +tools.build:compiler_executables={"c": "clang", "cpp": "clang++"} + +tools.build:exelinkflags=["-fuse-ld=mold"] +tools.build:sharedlinkflags=["-fuse-ld=mold"] + +[tool_requires] +!cmake/*: cmake/[>=4.2] \ No newline at end of file diff --git a/ConanProfiles/clangd b/ConanProfiles/clangd new file mode 100644 index 0000000..5314e13 --- /dev/null +++ b/ConanProfiles/clangd @@ -0,0 +1,23 @@ +[settings] +os=Linux +arch=x86_64 +compiler=clang +compiler.version=20 +compiler.libcxx=libstdc++11 +compiler.cppstd=20 +compiler.cstd=17 +build_type=Debug +[conf] +tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'} +tools.cmake.cmaketoolchain:extra_variables*={'BIGFOOT_CXX_FLAGS': {'value': '-Wall;-Wextra;-Wpedantic;-Werror;-ffast-math;-fno-exceptions;-fno-rtti', 'cache': True, 'type': 'STRING', 'docstring': 'CXX flags for Bigfoot', 'force': True}} +tools.cmake.cmaketoolchain:extra_variables*={'BIGFOOT_C_FLAGS': {'value': '-Wall;-Wextra;-Wpedantic;-Werror;-ffast-math', 'cache': True, 'type': 'STRING', 'docstring': 'C flags for Bigfoot', 'force': True}} +tools.cmake.cmaketoolchain:generator=Ninja +tools.system.package_manager:mode=install +tools.system.package_manager:sudo=True +tools.build:compiler_executables={"c": "clang", "cpp": "clang++"} + +tools.build:exelinkflags=["-fuse-ld=mold"] +tools.build:sharedlinkflags=["-fuse-ld=mold"] + +[tool_requires] +!cmake/*: cmake/[>=4.2] \ No newline at end of file diff --git a/ConanProfiles/msvc b/ConanProfiles/msvc new file mode 100644 index 0000000..ba0a8c6 --- /dev/null +++ b/ConanProfiles/msvc @@ -0,0 +1,22 @@ +[settings] +os=Windows +arch=x86_64 +compiler=msvc +compiler.version=195 +compiler.cppstd=20 +compiler.cstd=17 +compiler.runtime=dynamic +build_type=Release +[conf] +tools.cmake.cmaketoolchain:extra_variables={'BIGFOOT_CXX_FLAGS': {'value': '/W4;/WX;/EHs-;/D_HAS_EXCEPTIONS=0;/GR-;/fp:fast', 'cache': True, 'type': 'STRING', 'docstring': 'CXX flags for Bigfoot', 'force': True}} +tools.cmake.cmaketoolchain:extra_variables*={'BIGFOOT_C_FLAGS': {'value': '/W4;/WX;/fp:fast', 'cache': True, 'type': 'STRING', 'docstring': 'C flags for Bigfoot', 'force': True}} +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/msvc_ccache.cmake + +tools.build:exelinkflags=["/LTCG", "/INCREMENTAL:NO"] +tools.build:sharedlinkflags=["/LTCG", "/INCREMENTAL:NO"] + +tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1", "/GL"] +tools.build:cxxflags=["/Zc:preprocessor", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:strictStrings", "/Zc:rvalueCast", "/Zc:hiddenFriend", "/Zc:externConstexpr", "/Zc:ternary", "/GL"] + +[tool_requires] +!cmake/*: cmake/[>=4.2] \ No newline at end of file diff --git a/ConanProfiles/msvc_ccache.cmake b/ConanProfiles/msvc_ccache.cmake new file mode 100644 index 0000000..2818eec --- /dev/null +++ b/ConanProfiles/msvc_ccache.cmake @@ -0,0 +1,19 @@ +# https://github.com/ccache/ccache/wiki/MS-Visual-Studio#usage-with-cmake + +find_program(ccache_exe ccache) +if(ccache_exe) + file(COPY_FILE + ${ccache_exe} ${CMAKE_BINARY_DIR}/cl.exe + ONLY_IF_DIFFERENT) + + # By default Visual Studio generators will use /Zi which is not compatible + # with ccache, so tell Visual Studio to use /Z7 instead. + message(STATUS "Setting MSVC debug information format to 'Embedded'") + set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$:Embedded>") + + set(CMAKE_VS_GLOBALS + "CLToolExe=cl.exe" + "CLToolPath=${CMAKE_BINARY_DIR}" + "UseMultiToolTask=true" + ) +endif() \ No newline at end of file diff --git a/ConanProfiles/msvcd b/ConanProfiles/msvcd new file mode 100644 index 0000000..1caf4c6 --- /dev/null +++ b/ConanProfiles/msvcd @@ -0,0 +1,19 @@ +[settings] +os=Windows +arch=x86_64 +compiler=msvc +compiler.version=195 +compiler.cppstd=20 +compiler.cstd=17 +compiler.runtime=dynamic +build_type=Debug +[conf] +tools.cmake.cmaketoolchain:extra_variables={'BIGFOOT_CXX_FLAGS': {'value': '/W4;/WX;/EHs-;/D_HAS_EXCEPTIONS=0;/GR-;/fp:fast', 'cache': True, 'type': 'STRING', 'docstring': 'CXX flags for Bigfoot', 'force': True}} +tools.cmake.cmaketoolchain:extra_variables*={'BIGFOOT_C_FLAGS': {'value': '/W4;/WX;/fp:fast', 'cache': True, 'type': 'STRING', 'docstring': 'C flags for Bigfoot', 'force': True}} +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/msvc_ccache.cmake + +tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1"] +tools.build:cxxflags=["/Zc:preprocessor", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:strictStrings", "/Zc:rvalueCast", "/Zc:hiddenFriend", "/Zc:externConstexpr", "/Zc:ternary"] + +[tool_requires] +!cmake/*: cmake/[>=4.2] \ No newline at end of file -- 2.49.1 From 5dea03650d4ba63dba177f5a8790caa25533d1c2 Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Fri, 20 Feb 2026 17:47:06 +0100 Subject: [PATCH 10/12] fix asan packaging --- mimalloc/all/conanfile.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/mimalloc/all/conanfile.py b/mimalloc/all/conanfile.py index 740aca8..24caa2d 100644 --- a/mimalloc/all/conanfile.py +++ b/mimalloc/all/conanfile.py @@ -93,6 +93,11 @@ class MimallocConan(ConanFile): raise ConanInvalidConfiguration( f"Currently, {self.ref} doesn't work properly with shared MD builds in CCI. Contributions welcomed") + if self.options.override and \ + self.options.asan: + raise ConanInvalidConfiguration( + "Asan requires Mimalloc to be compiled without override") + # Shared overriding requires dynamic runtime for MSVC: if self.options.override and \ self.options.shared and \ @@ -215,8 +220,13 @@ class MimallocConan(ConanFile): def package_info(self): self.cpp_info.set_property("cmake_file_name", "mimalloc") - self.cpp_info.set_property("cmake_target_name", "mimalloc" if self.options.shared else "mimalloc-static") - + if(self.options.asan): + self.cpp_info.set_property("cmake_target_name", "mimalloc-asan") + elif(self.options.shared): + self.cpp_info.set_property("cmake_target_name", "mimalloc") + else: + self.cpp_info.set_property("cmake_target_name", "mimalloc-static") + if self.options.get_safe("inject"): self.cpp_info.includedirs = [] self.cpp_info.libdirs = [] -- 2.49.1 From 06700d29fb61d32959cd623b0abb2da79a3589ce Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Fri, 20 Feb 2026 18:39:48 +0100 Subject: [PATCH 11/12] separate cmake filename --- mimalloc/all/conanfile.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mimalloc/all/conanfile.py b/mimalloc/all/conanfile.py index 24caa2d..359d689 100644 --- a/mimalloc/all/conanfile.py +++ b/mimalloc/all/conanfile.py @@ -221,11 +221,11 @@ class MimallocConan(ConanFile): def package_info(self): self.cpp_info.set_property("cmake_file_name", "mimalloc") if(self.options.asan): + self.cpp_info.set_property("cmake_file_name", "mimalloc-asan") self.cpp_info.set_property("cmake_target_name", "mimalloc-asan") - elif(self.options.shared): - self.cpp_info.set_property("cmake_target_name", "mimalloc") else: - self.cpp_info.set_property("cmake_target_name", "mimalloc-static") + self.cpp_info.set_property("cmake_file_name", "mimalloc") + self.cpp_info.set_property("cmake_target_name", "mimalloc" if self.options.shared else "mimalloc-static") if self.options.get_safe("inject"): self.cpp_info.includedirs = [] -- 2.49.1 From 103610550aebf0baab41ddb3745c156bab9038c8 Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Fri, 20 Feb 2026 18:41:15 +0100 Subject: [PATCH 12/12] typo --- mimalloc/all/conanfile.py | 1 - 1 file changed, 1 deletion(-) diff --git a/mimalloc/all/conanfile.py b/mimalloc/all/conanfile.py index 359d689..21779db 100644 --- a/mimalloc/all/conanfile.py +++ b/mimalloc/all/conanfile.py @@ -219,7 +219,6 @@ class MimallocConan(ConanFile): return os.path.join(self.package_folder, "lib", "cmake") def package_info(self): - self.cpp_info.set_property("cmake_file_name", "mimalloc") if(self.options.asan): self.cpp_info.set_property("cmake_file_name", "mimalloc-asan") self.cpp_info.set_property("cmake_target_name", "mimalloc-asan") -- 2.49.1