From 34676a567ea553e52139425243ae23bb2869accb Mon Sep 17 00:00:00 2001 From: Esteban DUGUEPEROUX Date: Fri, 13 Jun 2025 08:55:58 +0200 Subject: [PATCH] #6803: Update IfcOffsetCurveByDistance to be compitable on Windows with MSVC and C++20 In addition add option to be able to build IfcOpenShell against other C++ standard than C++17 --- .github/workflows/ci-ifcopenshell-docker.yml | 1 + .github/workflows/ci.yml | 1 + .github/workflows/release.yml | 1 + cmake/CMakeLists.txt | 1 - conda/build.bat | 1 + conda/build.sh | 1 + nix/build-all.py | 1 + src/ifcgeom/mapping/IfcOffsetCurveByDistance.cpp | 4 ++-- 8 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-ifcopenshell-docker.yml b/.github/workflows/ci-ifcopenshell-docker.yml index e03bd8a929..cdc2e173b4 100644 --- a/.github/workflows/ci-ifcopenshell-docker.yml +++ b/.github/workflows/ci-ifcopenshell-docker.yml @@ -44,6 +44,7 @@ jobs: cmake \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -DCMAKE_CXX_STANDARD=17 \ -DCMAKE_INSTALL_PREFIX=$PWD/install/ \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=/usr \ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index de0a211a85..aed1223646 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -82,6 +82,7 @@ jobs: cmake \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -DCMAKE_CXX_STANDARD=17 \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=/usr \ -DCMAKE_SYSTEM_PREFIX_PATH=/usr \ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5690af06b5..93ecaf11d8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -46,6 +46,7 @@ jobs: mkdir build && cd build cmake \ -DCMAKE_INSTALL_PREFIX=$PWD/install/ \ + -DCMAKE_CXX_STANDARD=17 \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=/usr \ -DCMAKE_SYSTEM_PREFIX_PATH=/usr \ diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 7bb1eedc23..fcd1be8b2c 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -18,7 +18,6 @@ ################################################################################ cmake_minimum_required(VERSION 3.21) -set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # not necessary, but encouraged set(CMAKE_EXPORT_COMPILE_COMMANDS ON) diff --git a/conda/build.bat b/conda/build.bat index 2d2a2d734f..388e5cd746 100644 --- a/conda/build.bat +++ b/conda/build.bat @@ -9,6 +9,7 @@ set LIBXML2="%LIBRARY_PREFIX%/lib/libxml2.lib" cmake -G "Ninja" ^ -D SCHEMA_VERSIONS="2x3;4;4x1;4x3_add2" ^ -D CMAKE_BUILD_TYPE:STRING=Release ^ + -D CMAKE_CXX_STANDARD=17 ^ -D CMAKE_INSTALL_PREFIX:FILEPATH="%LIBRARY_PREFIX%" ^ -D CMAKE_PREFIX_PATH:FILEPATH="%LIBRARY_PREFIX%" ^ -D CMAKE_SYSTEM_PREFIX_PATH:FILEPATH="%LIBRARY_PREFIX%" ^ diff --git a/conda/build.sh b/conda/build.sh index cd7ab0f5cf..b17bc87159 100644 --- a/conda/build.sh +++ b/conda/build.sh @@ -16,6 +16,7 @@ cmake ${CMAKE_ARGS} -G Ninja \ -DSCHEMA_VERSIONS="2x3;4;4x1;4x3_add2" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=$PREFIX \ + -DCMAKE_CXX_STANDARD=17 \ ${CMAKE_PLATFORM_FLAGS[@]} \ -DCMAKE_PREFIX_PATH=$PREFIX \ -DCMAKE_SYSTEM_PREFIX_PATH=$PREFIX \ diff --git a/nix/build-all.py b/nix/build-all.py index c1087647d4..2b594620bf 100644 --- a/nix/build-all.py +++ b/nix/build-all.py @@ -842,6 +842,7 @@ os.makedirs(executables_dir, exist_ok=True) cmake_args = [ + "-DCMAKE_CXX_STANDARD=" "17", "-DUSE_MMAP=" "OFF", "-DBUILD_EXAMPLES=" "OFF", "-DBUILD_SHARED_LIBS=" +OFF_ON[not BUILD_STATIC], diff --git a/src/ifcgeom/mapping/IfcOffsetCurveByDistance.cpp b/src/ifcgeom/mapping/IfcOffsetCurveByDistance.cpp index e6d3afdfce..e42cc840a6 100644 --- a/src/ifcgeom/mapping/IfcOffsetCurveByDistance.cpp +++ b/src/ifcgeom/mapping/IfcOffsetCurveByDistance.cpp @@ -97,9 +97,9 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcOffsetCurveByDistances* inst double dp = *(*prev)->DistanceAlong()->as(); #endif if ((dp < 0.0 || basis_curve_length < dp) - or + || (dn < 0.0 || basis_curve_length < dn) - or + || (dn < dp) ) {