From 00653308085ae98fd4aa7d8bac0f8cff3e235977 Mon Sep 17 00:00:00 2001 From: Callan Gray <7478405+calgray@users.noreply.github.com> Date: Fri, 7 Aug 2026 17:46:02 +0800 Subject: [PATCH 1/7] Add cmake-multi-platform CI Action --- .github/workflows/cmake-multi-platform.yml | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 .github/workflows/cmake-multi-platform.yml diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml new file mode 100644 index 0000000..7ab1b4d --- /dev/null +++ b/.github/workflows/cmake-multi-platform.yml @@ -0,0 +1,75 @@ +# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform. +# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml +name: CMake on multiple platforms + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + # Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable. + fail-fast: false + + # Set up a matrix to run the following 3 configurations: + # 1. + # 2. + # 3. + # + # To add more build types (Release, Debug, RelWithDebInfo, etc.) customize the build_type list. + matrix: + os: [ubuntu-latest, windows-latest] + build_type: [Release] + c_compiler: [gcc, clang, cl] + include: + - os: windows-latest + c_compiler: cl + cpp_compiler: cl + - os: ubuntu-latest + c_compiler: gcc + cpp_compiler: g++ + - os: ubuntu-latest + c_compiler: clang + cpp_compiler: clang++ + exclude: + - os: windows-latest + c_compiler: gcc + - os: windows-latest + c_compiler: clang + - os: ubuntu-latest + c_compiler: cl + + steps: + - uses: actions/checkout@v4 + + - name: Set reusable strings + # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file. + id: strings + shell: bash + run: | + echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: > + cmake -B ${{ steps.strings.outputs.build-output-dir }} + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} + -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -S ${{ github.workspace }} + + - name: Build + # Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). + run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} + + - name: Test + working-directory: ${{ steps.strings.outputs.build-output-dir }} + # Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail + run: ctest --build-config ${{ matrix.build_type }} From 7606705190a779a4e8f07a46510a03831d7fe703 Mon Sep 17 00:00:00 2001 From: Callan Gray Date: Fri, 14 Aug 2026 22:45:56 +0800 Subject: [PATCH 2/7] add conan cmake commands Signed-off-by: Callan Gray --- .github/workflows/cmake-multi-platform.yml | 58 ++++++++++++++++++---- README.md | 4 +- 2 files changed, 50 insertions(+), 12 deletions(-) diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml index 7ab1b4d..736ef88 100644 --- a/.github/workflows/cmake-multi-platform.yml +++ b/.github/workflows/cmake-multi-platform.yml @@ -10,8 +10,7 @@ on: jobs: build: - runs-on: ${{ matrix.os }} - + runs-on: ${{ matrix.runner }} strategy: # Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable. fail-fast: false @@ -23,25 +22,28 @@ jobs: # # To add more build types (Release, Debug, RelWithDebInfo, etc.) customize the build_type list. matrix: - os: [ubuntu-latest, windows-latest] + runner: [ubuntu-26.04, windows-2025-vs2026] build_type: [Release] c_compiler: [gcc, clang, cl] include: - - os: windows-latest + - runner: windows-2025-vs2026 + os: Windows c_compiler: cl cpp_compiler: cl - - os: ubuntu-latest + - runner: ubuntu-26.04 + os: Linux c_compiler: gcc cpp_compiler: g++ - - os: ubuntu-latest + - runner: ubuntu-26.04 + os: Linux c_compiler: clang cpp_compiler: clang++ exclude: - - os: windows-latest + - os: Windows c_compiler: gcc - - os: windows-latest + - os: Windows c_compiler: clang - - os: ubuntu-latest + - os: Linux c_compiler: cl steps: @@ -54,11 +56,47 @@ jobs: run: | echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" + - name: Create Conan Dependencies Profile + run: | + if [[ "${{ matrix.c_compiler }}" == "clang" ]]; then + libcxx="compiler.libcxx=libc++11" + else + libcxx="compiler.libcxx=libstdc++11" + fi + + cat << EOF > profile.txt + [settings] + arch=x86_64 + os=${{ matrix.os }} + compiler=${{ matrix.c_compiler }} + compiler.version=$(${{ matrix.c_compiler }} -dumpversion | cut -d. -f1) + compiler.cppstd=23 + $([[ "${{ matrix.c_compiler }}" == "clang" ]] && echo "compiler.libcxx=libstdc++11") + + [buildenv] + CC=${{ matrix.c_compiler }} + CXX=${{ matrix.cpp_compiler }} + + [conf] + tools.cmake.cmaketoolchain:generator=Ninja Multi-Config + tools.cmake.cmake_layout:build_folder_vars=['settings.compiler', 'settings.arch'] + EOF + + - name: Configure Conan Dependencies + run: > + conan install + -of ${{ steps.strings.outputs.build-output-dir }} + -s build_type=${{ matrix.build_type }} + -b=missing + -pr=profile.txt + ${{ github.workspace }} + - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type run: > cmake -B ${{ steps.strings.outputs.build-output-dir }} + --preset=conan-${{ matrix.c_compiler }}-x86_64 -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} @@ -72,4 +110,4 @@ jobs: working-directory: ${{ steps.strings.outputs.build-output-dir }} # Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail - run: ctest --build-config ${{ matrix.build_type }} + run: ctest --preset=conan-${{ matrix.c_compiler }}-x86_64-release diff --git a/README.md b/README.md index 53a0d9d..ec85836 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,7 @@ cmake -B build/clang --preset=conan-clang-x86_64 # build cmake --build build/clang --config Release -j8 # test -ctest -C Release --test-dir build/clang --no-compress-output --verbose +ctest -preset=${CONAN_PROFILE} --no-compress-output --verbose ``` ### GNU @@ -115,7 +115,7 @@ cmake -B build/gcc --preset=conan-gcc-x86_64 # build cmake --build build/gcc --config Release -j8 # test -ctest -C Release --test-dir build/gcc --no-compress-output --verbose +ctest -preset=${CONAN_PROFILE} --no-compress-output --verbose ``` ## Dockerfile From d063cf5f5a1d26f4d29ff559b3f9212da9bd4bbe Mon Sep 17 00:00:00 2001 From: Callan Gray Date: Mon, 17 Aug 2026 16:13:28 +0800 Subject: [PATCH 3/7] ci matrix corrections Signed-off-by: Callan Gray --- .github/workflows/cmake-multi-platform.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml index 736ef88..28b3b83 100644 --- a/.github/workflows/cmake-multi-platform.yml +++ b/.github/workflows/cmake-multi-platform.yml @@ -31,19 +31,17 @@ jobs: c_compiler: cl cpp_compiler: cl - runner: ubuntu-26.04 - os: Linux c_compiler: gcc cpp_compiler: g++ - runner: ubuntu-26.04 - os: Linux c_compiler: clang cpp_compiler: clang++ exclude: - - os: Windows + - runner: windows-2025-vs2026 c_compiler: gcc - - os: Windows + - runner: windows-2025-vs2026 c_compiler: clang - - os: Linux + - runner: ubuntu-26.04 c_compiler: cl steps: @@ -67,7 +65,7 @@ jobs: cat << EOF > profile.txt [settings] arch=x86_64 - os=${{ matrix.os }} + os=$RUNNER_OS compiler=${{ matrix.c_compiler }} compiler.version=$(${{ matrix.c_compiler }} -dumpversion | cut -d. -f1) compiler.cppstd=23 From 72dc11ba97da771ed61ec0c6c7cc7598552c9027 Mon Sep 17 00:00:00 2001 From: Callan Gray Date: Mon, 17 Aug 2026 16:28:51 +0800 Subject: [PATCH 4/7] ci install conan Signed-off-by: Callan Gray --- .github/workflows/cmake-multi-platform.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml index 28b3b83..7c68372 100644 --- a/.github/workflows/cmake-multi-platform.yml +++ b/.github/workflows/cmake-multi-platform.yml @@ -80,6 +80,11 @@ jobs: tools.cmake.cmake_layout:build_folder_vars=['settings.compiler', 'settings.arch'] EOF + - name: Install Conan + run: | + pipx install --global conan==2.29.0 + conan profile detect + - name: Configure Conan Dependencies run: > conan install From fc74c863ef8453963f0abc5532365de55e7253bb Mon Sep 17 00:00:00 2001 From: Callan Gray Date: Mon, 17 Aug 2026 16:44:15 +0800 Subject: [PATCH 5/7] support cmake 4.4.0 Signed-off-by: Callan Gray --- .github/workflows/cmake-multi-platform.yml | 8 +------- CMakeLists.txt | 4 +++- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml index 7c68372..057b2b9 100644 --- a/.github/workflows/cmake-multi-platform.yml +++ b/.github/workflows/cmake-multi-platform.yml @@ -56,12 +56,6 @@ jobs: - name: Create Conan Dependencies Profile run: | - if [[ "${{ matrix.c_compiler }}" == "clang" ]]; then - libcxx="compiler.libcxx=libc++11" - else - libcxx="compiler.libcxx=libstdc++11" - fi - cat << EOF > profile.txt [settings] arch=x86_64 @@ -69,7 +63,7 @@ jobs: compiler=${{ matrix.c_compiler }} compiler.version=$(${{ matrix.c_compiler }} -dumpversion | cut -d. -f1) compiler.cppstd=23 - $([[ "${{ matrix.c_compiler }}" == "clang" ]] && echo "compiler.libcxx=libstdc++11") + $([[ "${{ matrix.c_compiler }}" == "gcc" ]] && echo "compiler.libcxx=libstdc++11" || echo "compiler.libcxx=libc++11") [buildenv] CC=${{ matrix.c_compiler }} diff --git a/CMakeLists.txt b/CMakeLists.txt index e0b2f3b..45d87e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,8 +7,10 @@ if (CMAKE_VERSION VERSION_LESS "4.0.3") set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "a9e1cf81-9932-4810-974b-6eccaf14e457") elseif (CMAKE_VERSION VERSION_LESS "4.3.0") set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "d0edc3af-4c50-42ea-a356-e2862fe7a444") -else() +elseif (CMAKE_VERSION VERSION_LESS "4.4.0") set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "451f2fe2-a8a2-47c3-bc32-94786d8fc91b") +else() + set(CMAKE_EXPERIMENTAL_CXX_IMPORT_STD "f35a9ac6-8463-4d38-8eec-5d6008153e7d") endif() # Project + Language From 10ec16bbd7d648d0f01b04af25c9b17dd02ecdb9 Mon Sep 17 00:00:00 2001 From: Callan Gray Date: Mon, 17 Aug 2026 16:53:23 +0800 Subject: [PATCH 6/7] multiplatform build Signed-off-by: Callan Gray --- .github/workflows/cmake-multi-platform.yml | 77 ++++++++++++++----- .github/workflows/docker-image.yml | 38 ++++----- CMakeLists.txt | 2 +- .../cpp-deps-modules/libcxx/CMakeLists.txt | 1 - 4 files changed, 77 insertions(+), 41 deletions(-) diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml index 057b2b9..77aa509 100644 --- a/.github/workflows/cmake-multi-platform.yml +++ b/.github/workflows/cmake-multi-platform.yml @@ -1,6 +1,6 @@ # This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform. # See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml -name: CMake on multiple platforms +name: Multiplatform Build on: push: @@ -24,7 +24,7 @@ jobs: matrix: runner: [ubuntu-26.04, windows-2025-vs2026] build_type: [Release] - c_compiler: [gcc, clang, cl] + c_compiler: [gcc, clang-22, cl] include: - runner: windows-2025-vs2026 os: Windows @@ -34,19 +34,25 @@ jobs: c_compiler: gcc cpp_compiler: g++ - runner: ubuntu-26.04 - c_compiler: clang - cpp_compiler: clang++ + c_compiler: clang-22 + cpp_compiler: clang++-22 exclude: - runner: windows-2025-vs2026 c_compiler: gcc - runner: windows-2025-vs2026 - c_compiler: clang + c_compiler: clang-22 - runner: ubuntu-26.04 c_compiler: cl steps: - uses: actions/checkout@v4 + - name: Install libc++ for Clang + if: matrix.c_compiler == 'clang-22' + run: | + sudo apt-get update + sudo apt-get install -y clang-22 clang-tools-22 libc++-22-dev libc++abi-22-dev + - name: Set reusable strings # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file. id: strings @@ -54,16 +60,43 @@ jobs: run: | echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" + case "${{ matrix.c_compiler }}" in + gcc*) + conan_compiler=gcc + ;; + clang*) + conan_compiler=clang + ;; + cl) + conan_compiler=msvc + ;; + esac + echo "conan_compiler=$conan_compiler" >> "$GITHUB_OUTPUT" + + case "${{ matrix.c_compiler }}" in + gcc*) + conan_compiler_version=$(${{ matrix.c_compiler }} -dumpversion | cut -d. -f1) + ;; + clang*) + conan_compiler_version=$(${{ matrix.c_compiler }} -dumpversion | cut -d. -f1) + ;; + cl) + conan_compiler_version=18 + ;; + esac + echo "conan_compiler_version=$conan_compiler_version" >> "$GITHUB_OUTPUT" + - name: Create Conan Dependencies Profile + shell: bash run: | cat << EOF > profile.txt [settings] arch=x86_64 os=$RUNNER_OS - compiler=${{ matrix.c_compiler }} - compiler.version=$(${{ matrix.c_compiler }} -dumpversion | cut -d. -f1) + compiler=${{ steps.strings.outputs.conan_compiler }} + compiler.version=${{ steps.strings.outputs.conan_compiler_version }} compiler.cppstd=23 - $([[ "${{ matrix.c_compiler }}" == "gcc" ]] && echo "compiler.libcxx=libstdc++11" || echo "compiler.libcxx=libc++11") + $([[ "${{ matrix.c_compiler }}" == "gcc" ]] && echo "compiler.libcxx=libstdc++11" || echo "compiler.libcxx=libc++") [buildenv] CC=${{ matrix.c_compiler }} @@ -75,36 +108,40 @@ jobs: EOF - name: Install Conan + shell: bash run: | - pipx install --global conan==2.29.0 + pip install conan==2.29.0 conan profile detect - name: Configure Conan Dependencies + shell: bash run: > conan install - -of ${{ steps.strings.outputs.build-output-dir }} + -of build -s build_type=${{ matrix.build_type }} -b=missing - -pr=profile.txt - ${{ github.workspace }} + -pr:a=profile.txt + . - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + shell: bash run: > - cmake -B ${{ steps.strings.outputs.build-output-dir }} - --preset=conan-${{ matrix.c_compiler }}-x86_64 - -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} - -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} - -S ${{ github.workspace }} + cmake + -B build + --preset=conan-${{ steps.strings.outputs.conan_compiler }}-x86_64 + . - name: Build # Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). - run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} + run: > + cmake + --build ${{ steps.strings.outputs.build-output-dir }} + --config ${{ matrix.build_type }} - name: Test working-directory: ${{ steps.strings.outputs.build-output-dir }} # Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail - run: ctest --preset=conan-${{ matrix.c_compiler }}-x86_64-release + run: ctest --preset=conan-${{ steps.strings.outputs.conan_compiler }}-x86_64-release diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 0861f1b..7e256a5 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -1,21 +1,21 @@ -name: Docker Image CI +# name: Docker Image CI -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] +# on: +# push: +# branches: [ "main" ] +# pull_request: +# branches: [ "main" ] -jobs: - build-gnu: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - name: Build the GNU Docker image - run: docker build . --file docker/Dockerfile-gcc --tag cmake-cpp-modules-template-gcc:$(date +%s) - build-clang: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - name: Build the Clang Docker image - run: docker build . --file docker/Dockerfile-clang --tag cmake-cpp-modules-template-clang:$(date +%s) +# jobs: +# build-gnu: +# runs-on: ubuntu-latest +# steps: +# - uses: actions/checkout@v5 +# - name: Build the GNU Docker image +# run: docker build . --file docker/Dockerfile-gcc --tag cmake-cpp-modules-template-gcc:$(date +%s) +# build-clang: +# runs-on: ubuntu-latest +# steps: +# - uses: actions/checkout@v5 +# - name: Build the Clang Docker image +# run: docker build . --file docker/Dockerfile-clang --tag cmake-cpp-modules-template-clang:$(date +%s) diff --git a/CMakeLists.txt b/CMakeLists.txt index 45d87e9..7774f2a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") # will instead link std to libcxx wrapper set(CMAKE_CXX_MODULE_STD OFF) else() - set(CMAKE_CXX_MODULE_STD ON) + set(CMAKE_CXX_MODULE_STD OFF) endif() # Options diff --git a/targets/cpp-deps-modules/libcxx/CMakeLists.txt b/targets/cpp-deps-modules/libcxx/CMakeLists.txt index dc32150..0a10811 100644 --- a/targets/cpp-deps-modules/libcxx/CMakeLists.txt +++ b/targets/cpp-deps-modules/libcxx/CMakeLists.txt @@ -21,7 +21,6 @@ target_compile_definitions(${TARGET_NAME} PRIVATE _LIBCPP_HAS_WIDE_CHARACTERS=1) target_compile_definitions(${TARGET_NAME} PRIVATE _LIBCPP_HAS_THREADS=1) target_compile_definitions(${TARGET_NAME} PRIVATE _LIBCPP_HAS_RANDOM_DEVICE=1) -FILE(GLOB_RECURSE SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cppm) target_sources(${TARGET_NAME} PUBLIC FILE_SET CXX_MODULES BASE_DIRS From 2856cf07b54545da114948f9889853e4f595440a Mon Sep 17 00:00:00 2001 From: Callan Gray Date: Mon, 17 Aug 2026 21:23:26 +0800 Subject: [PATCH 7/7] test libcxx module with clang Signed-off-by: Callan Gray --- .github/workflows/cmake-multi-platform.yml | 2 +- targets/cpp-deps-modules/eigen/CMakeLists.txt | 14 -------------- targets/cpp-deps-modules/eigen/src/eigen.cppm | 2 +- .../{eigen.geometry.cppm => eigen.geometry.cppmd} | 0 targets/cpp-deps-modules/libcxx/std/algorithm.inc | 2 +- targets/cpp-deps-modules/libcxx/std/iterator.inc | 8 +++++--- targets/cpp-deps-modules/libcxx/std/ranges.inc | 2 +- 7 files changed, 9 insertions(+), 21 deletions(-) rename targets/cpp-deps-modules/eigen/src/{eigen.geometry.cppm => eigen.geometry.cppmd} (100%) diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml index 77aa509..c946a21 100644 --- a/.github/workflows/cmake-multi-platform.yml +++ b/.github/workflows/cmake-multi-platform.yml @@ -110,7 +110,7 @@ jobs: - name: Install Conan shell: bash run: | - pip install conan==2.29.0 + pip install conan==2.31.2 conan profile detect - name: Configure Conan Dependencies diff --git a/targets/cpp-deps-modules/eigen/CMakeLists.txt b/targets/cpp-deps-modules/eigen/CMakeLists.txt index 39a891d..23d7e72 100644 --- a/targets/cpp-deps-modules/eigen/CMakeLists.txt +++ b/targets/cpp-deps-modules/eigen/CMakeLists.txt @@ -18,20 +18,6 @@ target_sources(eigen-modules PUBLIC # cppm is non-standard by gcc set_source_files_properties(${SRCS} PROPERTIES LANGUAGE CXX) - -# PATCHES -# conan list "eigen/5.0.1:*" -fp=profile-clang-manjaro.txt -# patch -f -d $(conan cache path eigen/5.0.1:da39a3ee5e6b4b0d3255bfef95601890afd80709) -p0 < patches/patch_eigen_5_0_1_static.patch - -# set(CONAN_REF "eigen/5.0.1:da39a3ee5e6b4b0d3255bfef95601890afd80709") - -# execute_process( -# COMMAND conan cache path ${CONAN_REF} -# OUTPUT_VARIABLE EIGEN_CACHE_PATH -# OUTPUT_STRIP_TRAILING_WHITESPACE -# COMMAND_ERROR_IS_FATAL ANY -# ) - # HEADER PATCHES set(EIGEN_PATCH ${CMAKE_CURRENT_SOURCE_DIR}/patches/patch_eigen_5_0_1_static.patch diff --git a/targets/cpp-deps-modules/eigen/src/eigen.cppm b/targets/cpp-deps-modules/eigen/src/eigen.cppm index cd06a72..ad24963 100644 --- a/targets/cpp-deps-modules/eigen/src/eigen.cppm +++ b/targets/cpp-deps-modules/eigen/src/eigen.cppm @@ -2,7 +2,7 @@ export module eigen; export import eigen.dense; export import eigen.sparse; -export import eigen.geometry; +// export import eigen.geometry; export import eigen.lu; export import eigen.qr; export import eigen.svd; diff --git a/targets/cpp-deps-modules/eigen/src/eigen.geometry.cppm b/targets/cpp-deps-modules/eigen/src/eigen.geometry.cppmd similarity index 100% rename from targets/cpp-deps-modules/eigen/src/eigen.geometry.cppm rename to targets/cpp-deps-modules/eigen/src/eigen.geometry.cppmd diff --git a/targets/cpp-deps-modules/libcxx/std/algorithm.inc b/targets/cpp-deps-modules/libcxx/std/algorithm.inc index efc73e6..b6821e0 100644 --- a/targets/cpp-deps-modules/libcxx/std/algorithm.inc +++ b/targets/cpp-deps-modules/libcxx/std/algorithm.inc @@ -155,7 +155,7 @@ export namespace std { } namespace ranges { -#if _LIBCPP_STD_VER >= 23 +#if _LIBCPP_STD_VER >= 26 # if !__GNUC__ // [alg.starts.with], starts with using std::ranges::starts_with; diff --git a/targets/cpp-deps-modules/libcxx/std/iterator.inc b/targets/cpp-deps-modules/libcxx/std/iterator.inc index fa79f22..6ce8e7c 100644 --- a/targets/cpp-deps-modules/libcxx/std/iterator.inc +++ b/targets/cpp-deps-modules/libcxx/std/iterator.inc @@ -7,7 +7,7 @@ // //===----------------------------------------------------------------------===// -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(__clang__) export namespace __gnu_cxx { using __gnu_cxx::operator-; using __gnu_cxx::operator==; @@ -198,6 +198,7 @@ export namespace std { using std::insert_iterator; using std::inserter; +#if not defined(__clang__) // [const.iterators], constant iterators and sentinels // [const.iterators.alias], alias templates using std::const_iterator; @@ -207,9 +208,10 @@ export namespace std { // [const.iterators.iterator], class template basic_const_iterator using std::basic_const_iterator; - using std::common_type; - using std::make_const_iterator; +#endif + + using std::common_type; // [move.iterators], move iterators and sentinels using std::move_iterator; diff --git a/targets/cpp-deps-modules/libcxx/std/ranges.inc b/targets/cpp-deps-modules/libcxx/std/ranges.inc index fe3efe0..7c500e8 100644 --- a/targets/cpp-deps-modules/libcxx/std/ranges.inc +++ b/targets/cpp-deps-modules/libcxx/std/ranges.inc @@ -351,7 +351,7 @@ export namespace std { } #endif -#if _LIBCPP_STD_VER >= 23 +#if _LIBCPP_STD_VER >= 26 // [range.chunk.by], chunk by view using std::ranges::chunk_by_view;