From 82f921324e2d2f48cc60e3eb04769e0f5b531c31 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 20 Oct 2024 16:08:41 +0100 Subject: [PATCH 1/6] Update workflow to include gcc 14, and clang 17, 18, 19 --- .../profiles/gcc/13/armv8-libstdc++11-debug | 7 +++ .conan/profiles/gcc/13/armv8-libstdc++11-msr | 7 +++ .../profiles/gcc/13/armv8-libstdc++11-release | 7 +++ .conan/profiles/gcc/13/armv8-libstdc++11-rwdi | 7 +++ .../profiles/gcc/14/armv8-libstdc++11-debug | 7 +++ .conan/profiles/gcc/14/armv8-libstdc++11-msr | 7 +++ .../profiles/gcc/14/armv8-libstdc++11-release | 7 +++ .conan/profiles/gcc/14/armv8-libstdc++11-rwdi | 7 +++ .conan/profiles/gcc/14/compiler | 7 +++ .conan/profiles/gcc/14/x64-libstdc++11-debug | 7 +++ .conan/profiles/gcc/14/x64-libstdc++11-msr | 7 +++ .../profiles/gcc/14/x64-libstdc++11-release | 7 +++ .conan/profiles/gcc/14/x64-libstdc++11-rwdi | 7 +++ .github/workflows/cmake.yml | 48 +++++++++++++++++++ 14 files changed, 139 insertions(+) create mode 100644 .conan/profiles/gcc/13/armv8-libstdc++11-debug create mode 100644 .conan/profiles/gcc/13/armv8-libstdc++11-msr create mode 100644 .conan/profiles/gcc/13/armv8-libstdc++11-release create mode 100644 .conan/profiles/gcc/13/armv8-libstdc++11-rwdi create mode 100644 .conan/profiles/gcc/14/armv8-libstdc++11-debug create mode 100644 .conan/profiles/gcc/14/armv8-libstdc++11-msr create mode 100644 .conan/profiles/gcc/14/armv8-libstdc++11-release create mode 100644 .conan/profiles/gcc/14/armv8-libstdc++11-rwdi create mode 100644 .conan/profiles/gcc/14/compiler create mode 100644 .conan/profiles/gcc/14/x64-libstdc++11-debug create mode 100644 .conan/profiles/gcc/14/x64-libstdc++11-msr create mode 100644 .conan/profiles/gcc/14/x64-libstdc++11-release create mode 100644 .conan/profiles/gcc/14/x64-libstdc++11-rwdi diff --git a/.conan/profiles/gcc/13/armv8-libstdc++11-debug b/.conan/profiles/gcc/13/armv8-libstdc++11-debug new file mode 100644 index 00000000..e5cfa336 --- /dev/null +++ b/.conan/profiles/gcc/13/armv8-libstdc++11-debug @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/armv8) +include(../../cpp/23) +include(../../config/debug) +include(../../os/current) +include(../../packages/settings) +include(compiler) diff --git a/.conan/profiles/gcc/13/armv8-libstdc++11-msr b/.conan/profiles/gcc/13/armv8-libstdc++11-msr new file mode 100644 index 00000000..f2188604 --- /dev/null +++ b/.conan/profiles/gcc/13/armv8-libstdc++11-msr @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/armv8) +include(../../cpp/23) +include(../../config/min-size-rel) +include(../../os/current) +include(../../packages/settings) +include(compiler) diff --git a/.conan/profiles/gcc/13/armv8-libstdc++11-release b/.conan/profiles/gcc/13/armv8-libstdc++11-release new file mode 100644 index 00000000..97cf4395 --- /dev/null +++ b/.conan/profiles/gcc/13/armv8-libstdc++11-release @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/armv8) +include(../../cpp/23) +include(../../config/release) +include(../../os/current) +include(../../packages/settings) +include(compiler) diff --git a/.conan/profiles/gcc/13/armv8-libstdc++11-rwdi b/.conan/profiles/gcc/13/armv8-libstdc++11-rwdi new file mode 100644 index 00000000..9a59f24d --- /dev/null +++ b/.conan/profiles/gcc/13/armv8-libstdc++11-rwdi @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/armv8) +include(../../cpp/23) +include(../../config/rel-with-deb-info) +include(../../os/current) +include(../../packages/settings) +include(compiler) diff --git a/.conan/profiles/gcc/14/armv8-libstdc++11-debug b/.conan/profiles/gcc/14/armv8-libstdc++11-debug new file mode 100644 index 00000000..e5cfa336 --- /dev/null +++ b/.conan/profiles/gcc/14/armv8-libstdc++11-debug @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/armv8) +include(../../cpp/23) +include(../../config/debug) +include(../../os/current) +include(../../packages/settings) +include(compiler) diff --git a/.conan/profiles/gcc/14/armv8-libstdc++11-msr b/.conan/profiles/gcc/14/armv8-libstdc++11-msr new file mode 100644 index 00000000..f2188604 --- /dev/null +++ b/.conan/profiles/gcc/14/armv8-libstdc++11-msr @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/armv8) +include(../../cpp/23) +include(../../config/min-size-rel) +include(../../os/current) +include(../../packages/settings) +include(compiler) diff --git a/.conan/profiles/gcc/14/armv8-libstdc++11-release b/.conan/profiles/gcc/14/armv8-libstdc++11-release new file mode 100644 index 00000000..97cf4395 --- /dev/null +++ b/.conan/profiles/gcc/14/armv8-libstdc++11-release @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/armv8) +include(../../cpp/23) +include(../../config/release) +include(../../os/current) +include(../../packages/settings) +include(compiler) diff --git a/.conan/profiles/gcc/14/armv8-libstdc++11-rwdi b/.conan/profiles/gcc/14/armv8-libstdc++11-rwdi new file mode 100644 index 00000000..9a59f24d --- /dev/null +++ b/.conan/profiles/gcc/14/armv8-libstdc++11-rwdi @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/armv8) +include(../../cpp/23) +include(../../config/rel-with-deb-info) +include(../../os/current) +include(../../packages/settings) +include(compiler) diff --git a/.conan/profiles/gcc/14/compiler b/.conan/profiles/gcc/14/compiler new file mode 100644 index 00000000..7be6b0e3 --- /dev/null +++ b/.conan/profiles/gcc/14/compiler @@ -0,0 +1,7 @@ +include(../../compiler/gcc) + +[settings] +compiler.version=14 + +[conf] +tools.build:compiler_executables={"c":"gcc-14","cpp":"g++-14"} diff --git a/.conan/profiles/gcc/14/x64-libstdc++11-debug b/.conan/profiles/gcc/14/x64-libstdc++11-debug new file mode 100644 index 00000000..42e44ddf --- /dev/null +++ b/.conan/profiles/gcc/14/x64-libstdc++11-debug @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/x64) +include(../../config/debug) +include(../../os/current) +include(../../packages/settings) +include(compiler) +include(../../cpp/23) diff --git a/.conan/profiles/gcc/14/x64-libstdc++11-msr b/.conan/profiles/gcc/14/x64-libstdc++11-msr new file mode 100644 index 00000000..bf1b357c --- /dev/null +++ b/.conan/profiles/gcc/14/x64-libstdc++11-msr @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/x64) +include(../../config/min-size-rel) +include(../../os/current) +include(../../packages/settings) +include(compiler) +include(../../cpp/23) diff --git a/.conan/profiles/gcc/14/x64-libstdc++11-release b/.conan/profiles/gcc/14/x64-libstdc++11-release new file mode 100644 index 00000000..4fd83e45 --- /dev/null +++ b/.conan/profiles/gcc/14/x64-libstdc++11-release @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/x64) +include(../../config/release) +include(../../os/current) +include(../../packages/settings) +include(compiler) +include(../../cpp/23) diff --git a/.conan/profiles/gcc/14/x64-libstdc++11-rwdi b/.conan/profiles/gcc/14/x64-libstdc++11-rwdi new file mode 100644 index 00000000..eab784d4 --- /dev/null +++ b/.conan/profiles/gcc/14/x64-libstdc++11-rwdi @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/x64) +include(../../config/rel-with-deb-info) +include(../../os/current) +include(../../packages/settings) +include(compiler) +include(../../cpp/23) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index fe156775..9521bedc 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -43,6 +43,12 @@ jobs: compiler: { type: GCC, version: 13, conan: "gcc", cc: "gcc-13", cxx: "g++-13", std: 20 }, lib: "libstdc++11" } + - { + name: "Ubuntu GCC-14", + os: ubuntu-latest, + compiler: { type: GCC, version: 14, conan: "gcc", cc: "gcc-14", cxx: "g++-14", std: 20 }, + lib: "libstdc++11" + } - { name: "Ubuntu Clang-14 + libc++", os: ubuntu-latest, @@ -85,6 +91,48 @@ jobs: }, lib: "libc++", } + - { + name: "Ubuntu Clang-17 + libc++", + os: ubuntu-latest, + compiler: + { + type: CLANG, + version: 17, + conan: "clang", + cc: "clang-17", + cxx: "clang++-17", + std: 20 + }, + lib: "libc++", + } + - { + name: "Ubuntu Clang-18 + libc++", + os: ubuntu-latest, + compiler: + { + type: CLANG, + version: 18, + conan: "clang", + cc: "clang-18", + cxx: "clang++-18", + std: 20 + }, + lib: "libc++", + } + - { + name: "Ubuntu Clang-19 + libc++", + os: ubuntu-latest, + compiler: + { + type: CLANG, + version: 19, + conan: "clang", + cc: "clang-19", + cxx: "clang++-19", + std: 20 + }, + lib: "libc++", + } - { name: "Visual Studio 2019", os: windows-latest, From 63665e3257c5fa34fa3f1ff2459080941e5d3ca3 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 20 Oct 2024 18:36:14 +0100 Subject: [PATCH 2/6] Gcc 14 not yet supported for CI --- .conan/profiles/clang/18/compiler | 7 +++++++ .conan/profiles/clang/18/x64-libc++-debug | 7 +++++++ .conan/profiles/clang/18/x64-libc++-msr | 7 +++++++ .conan/profiles/clang/18/x64-libc++-release | 7 +++++++ .conan/profiles/clang/18/x64-libc++-rwdi | 7 +++++++ .conan/profiles/clang/19/compiler | 7 +++++++ .conan/profiles/clang/19/x64-libc++-debug | 7 +++++++ .conan/profiles/clang/19/x64-libc++-msr | 7 +++++++ .conan/profiles/clang/19/x64-libc++-release | 7 +++++++ .conan/profiles/clang/19/x64-libc++-rwdi | 7 +++++++ .github/workflows/cmake.yml | 12 ++++++------ 11 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 .conan/profiles/clang/18/compiler create mode 100644 .conan/profiles/clang/18/x64-libc++-debug create mode 100644 .conan/profiles/clang/18/x64-libc++-msr create mode 100644 .conan/profiles/clang/18/x64-libc++-release create mode 100644 .conan/profiles/clang/18/x64-libc++-rwdi create mode 100644 .conan/profiles/clang/19/compiler create mode 100644 .conan/profiles/clang/19/x64-libc++-debug create mode 100644 .conan/profiles/clang/19/x64-libc++-msr create mode 100644 .conan/profiles/clang/19/x64-libc++-release create mode 100644 .conan/profiles/clang/19/x64-libc++-rwdi diff --git a/.conan/profiles/clang/18/compiler b/.conan/profiles/clang/18/compiler new file mode 100644 index 00000000..5f35c465 --- /dev/null +++ b/.conan/profiles/clang/18/compiler @@ -0,0 +1,7 @@ +include(../../compiler/clang) + +[settings] +compiler.version=18 + +[conf] +tools.build:compiler_executables={"c":"clang-18","cpp":"clang++-18"} diff --git a/.conan/profiles/clang/18/x64-libc++-debug b/.conan/profiles/clang/18/x64-libc++-debug new file mode 100644 index 00000000..42e44ddf --- /dev/null +++ b/.conan/profiles/clang/18/x64-libc++-debug @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/x64) +include(../../config/debug) +include(../../os/current) +include(../../packages/settings) +include(compiler) +include(../../cpp/23) diff --git a/.conan/profiles/clang/18/x64-libc++-msr b/.conan/profiles/clang/18/x64-libc++-msr new file mode 100644 index 00000000..bf1b357c --- /dev/null +++ b/.conan/profiles/clang/18/x64-libc++-msr @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/x64) +include(../../config/min-size-rel) +include(../../os/current) +include(../../packages/settings) +include(compiler) +include(../../cpp/23) diff --git a/.conan/profiles/clang/18/x64-libc++-release b/.conan/profiles/clang/18/x64-libc++-release new file mode 100644 index 00000000..4fd83e45 --- /dev/null +++ b/.conan/profiles/clang/18/x64-libc++-release @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/x64) +include(../../config/release) +include(../../os/current) +include(../../packages/settings) +include(compiler) +include(../../cpp/23) diff --git a/.conan/profiles/clang/18/x64-libc++-rwdi b/.conan/profiles/clang/18/x64-libc++-rwdi new file mode 100644 index 00000000..eab784d4 --- /dev/null +++ b/.conan/profiles/clang/18/x64-libc++-rwdi @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/x64) +include(../../config/rel-with-deb-info) +include(../../os/current) +include(../../packages/settings) +include(compiler) +include(../../cpp/23) diff --git a/.conan/profiles/clang/19/compiler b/.conan/profiles/clang/19/compiler new file mode 100644 index 00000000..73c0cbce --- /dev/null +++ b/.conan/profiles/clang/19/compiler @@ -0,0 +1,7 @@ +include(../../compiler/clang) + +[settings] +compiler.version=19 + +[conf] +tools.build:compiler_executables={"c":"clang-19","cpp":"clang++-19"} diff --git a/.conan/profiles/clang/19/x64-libc++-debug b/.conan/profiles/clang/19/x64-libc++-debug new file mode 100644 index 00000000..42e44ddf --- /dev/null +++ b/.conan/profiles/clang/19/x64-libc++-debug @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/x64) +include(../../config/debug) +include(../../os/current) +include(../../packages/settings) +include(compiler) +include(../../cpp/23) diff --git a/.conan/profiles/clang/19/x64-libc++-msr b/.conan/profiles/clang/19/x64-libc++-msr new file mode 100644 index 00000000..bf1b357c --- /dev/null +++ b/.conan/profiles/clang/19/x64-libc++-msr @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/x64) +include(../../config/min-size-rel) +include(../../os/current) +include(../../packages/settings) +include(compiler) +include(../../cpp/23) diff --git a/.conan/profiles/clang/19/x64-libc++-release b/.conan/profiles/clang/19/x64-libc++-release new file mode 100644 index 00000000..4fd83e45 --- /dev/null +++ b/.conan/profiles/clang/19/x64-libc++-release @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/x64) +include(../../config/release) +include(../../os/current) +include(../../packages/settings) +include(compiler) +include(../../cpp/23) diff --git a/.conan/profiles/clang/19/x64-libc++-rwdi b/.conan/profiles/clang/19/x64-libc++-rwdi new file mode 100644 index 00000000..eab784d4 --- /dev/null +++ b/.conan/profiles/clang/19/x64-libc++-rwdi @@ -0,0 +1,7 @@ +include(../../default) +include(../../arch/x64) +include(../../config/rel-with-deb-info) +include(../../os/current) +include(../../packages/settings) +include(compiler) +include(../../cpp/23) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 9521bedc..0f6f94ee 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -43,12 +43,12 @@ jobs: compiler: { type: GCC, version: 13, conan: "gcc", cc: "gcc-13", cxx: "g++-13", std: 20 }, lib: "libstdc++11" } - - { - name: "Ubuntu GCC-14", - os: ubuntu-latest, - compiler: { type: GCC, version: 14, conan: "gcc", cc: "gcc-14", cxx: "g++-14", std: 20 }, - lib: "libstdc++11" - } + # - { + # name: "Ubuntu GCC-14", + # os: ubuntu-latest, + # compiler: { type: GCC, version: 14, conan: "gcc", cc: "gcc-14", cxx: "g++-14", std: 20 }, + # lib: "libstdc++11" + # } - { name: "Ubuntu Clang-14 + libc++", os: ubuntu-latest, From fc0b0de2d0b8abc1e9bb581d485fb1ca96a5111f Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 27 Oct 2024 12:19:38 +0000 Subject: [PATCH 3/6] Debug on CI --- .github/workflows/cmake.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 142e8590..8e406991 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -314,6 +314,12 @@ jobs: shell: bash run: echo "CONAN_PRESET=conan-$(echo ${{matrix.configuration}} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 + timeout-minutes: 15 + with: + detached: true + - name: Build if: matrix.settings.os == 'windows-latest' shell: cmd From 72310b719429fad756c1920e155c183d18335d57 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 27 Oct 2024 19:58:05 +0000 Subject: [PATCH 4/6] Clang 19 is the first to support date --- .github/workflows/cmake.yml | 6 ------ .../src/morpheus/core/conversion/adapters/std/chrono.hpp | 4 ++-- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 5b2901e0..6329697c 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -314,12 +314,6 @@ jobs: shell: bash run: echo "CONAN_PRESET=conan-$(echo ${{matrix.configuration}} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV - - name: Setup tmate session - uses: mxschmitt/action-tmate@v3 - timeout-minutes: 15 - with: - detached: true - - name: Build if: matrix.settings.os == 'windows-latest' shell: cmd diff --git a/libraries/core/src/morpheus/core/conversion/adapters/std/chrono.hpp b/libraries/core/src/morpheus/core/conversion/adapters/std/chrono.hpp index e87ee0cf..680408ae 100644 --- a/libraries/core/src/morpheus/core/conversion/adapters/std/chrono.hpp +++ b/libraries/core/src/morpheus/core/conversion/adapters/std/chrono.hpp @@ -17,7 +17,7 @@ #define MORPHEUS_CPP_LIB_CHRONO_FORMATTING \ (((MORPHEUS_COMPILER == MORPHEUS_VISUALSTUDIO_COMPILER) && (__cpp_lib_chrono < 201907L)) || \ ((MORPHEUS_COMPILER == MORPHEUS_GNUC_COMPILER) && (MORPHEUS_COMP_VER < 140000000)) || \ - ((MORPHEUS_COMPILER == MORPHEUS_CLANG_COMPILER) && (MORPHEUS_COMP_VER < 170000000)) || \ + ((MORPHEUS_COMPILER == MORPHEUS_CLANG_COMPILER) && (MORPHEUS_COMP_VER < 190000000)) || \ ((MORPHEUS_COMPILER == MORPHEUS_APPLE_CLANG_COMPILER) && (MORPHEUS_COMP_VER < 150000000))) #if MORPHEUS_CPP_LIB_CHRONO_FORMATTING @@ -256,7 +256,7 @@ struct StringConverter> constexpr auto matchString = [](auto const searchStr) -> exp_ns::expected, std::string_view> { if (auto m = ctre::match(searchStr)) { - return std::chrono::duration(std::stoi(std::string(m.template get<1>().to_view()))); + return std::chrono::duration(std::stoimstd::string(m.template get<1>().to_view()))); } else { return exp_ns::unexpected(std::string_view{"Unable to parse std::chrono::duration"}); From 1e1e63278909444a36e4b0dd94cdea59ea523cac Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Sun, 27 Oct 2024 20:00:59 +0000 Subject: [PATCH 5/6] Fix typo --- .../core/src/morpheus/core/conversion/adapters/std/chrono.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/core/src/morpheus/core/conversion/adapters/std/chrono.hpp b/libraries/core/src/morpheus/core/conversion/adapters/std/chrono.hpp index 680408ae..7c9e53b9 100644 --- a/libraries/core/src/morpheus/core/conversion/adapters/std/chrono.hpp +++ b/libraries/core/src/morpheus/core/conversion/adapters/std/chrono.hpp @@ -256,7 +256,7 @@ struct StringConverter> constexpr auto matchString = [](auto const searchStr) -> exp_ns::expected, std::string_view> { if (auto m = ctre::match(searchStr)) { - return std::chrono::duration(std::stoimstd::string(m.template get<1>().to_view()))); + return std::chrono::duration(std::stoi(std::string(m.template get<1>().to_view()))); } else { return exp_ns::unexpected(std::string_view{"Unable to parse std::chrono::duration"}); From 6eda180caddfb1528a452fa4c248e378eea29fc0 Mon Sep 17 00:00:00 2001 From: Antony Peacock Date: Mon, 28 Oct 2024 08:16:47 +0000 Subject: [PATCH 6/6] Focus on Clang 17 for now --- .github/workflows/cmake.yml | 56 ++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 6329697c..f9f948cd 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -105,34 +105,34 @@ jobs: }, lib: "libc++", } - - { - name: "Ubuntu Clang-18 + libc++", - os: ubuntu-latest, - compiler: - { - type: CLANG, - version: 18, - conan: "clang", - cc: "clang-18", - cxx: "clang++-18", - std: 20 - }, - lib: "libc++", - } - - { - name: "Ubuntu Clang-19 + libc++", - os: ubuntu-latest, - compiler: - { - type: CLANG, - version: 19, - conan: "clang", - cc: "clang-19", - cxx: "clang++-19", - std: 20 - }, - lib: "libc++", - } +# - { +# name: "Ubuntu Clang-18 + libc++", +# os: ubuntu-latest, +# compiler: +# { +# type: CLANG, +# version: 18, +# conan: "clang", +# cc: "clang-18", +# cxx: "clang++-18", +# std: 20 +# }, +# lib: "libc++", +# } +# - { +# name: "Ubuntu Clang-19 + libc++", +# os: ubuntu-latest, +# compiler: +# { +# type: CLANG, +# version: 19, +# conan: "clang", +# cc: "clang-19", +# cxx: "clang++-19", +# std: 20 +# }, +# lib: "libc++", +# } - { name: "Visual Studio 2019", os: windows-latest,