Commit Graph
336 Commits
Author SHA1 Message Date
Magne Sjaastad b6704429cd Scope GRPC/ODB/OpenVDS/HDF5 build flags to avoid full rebuilds
- Remove unused SOURCE_GROUP_HEADER_FILES from GrpcInterface CMakeLists
- Scope the following defines to the files that need it ENABLE_GRPC, USE_ODB_API , USE_OPENVDS, USE_HDF5 
- RifOdbReader.cpp copied an odb_InstanceRepository by value, which
  fails to compile under MSVC's strict conformance mode due to an
  ambiguous implicit copy constructor in the vendor headers (diamond
  inheritance). Use a reference instead, since it was only ever read
  from.
2026-10-02 12:24:29 +02:00
Magne Sjaastad 2120a13d63 #14654 Fix Linux Release build defining NO_DEBUG instead of NDEBUG
* #14654 Fix Linux Release build defining NO_DEBUG instead of NDEBUG

CMAKE_CXX_FLAGS_RELEASE was overwritten with -DNO_DEBUG on Linux in
both CMakeLists.txt and Fwk/CMakeLists.txt. NO_DEBUG is not a standard
macro, so NDEBUG was never defined in Linux Release builds.

As a result, cafAssert.h fell back to CAF_ENABLE_ASSERTS 1, keeping
CAF_ASSERT (and standard assert()) active in Release and aborting the
app, even though RESINSIGHT_ENABLE_ASSERTS_IN_RELEASE defaults to OFF.
Windows and macOS Release builds were unaffected.

Drop the override entirely so CMake supplies its default Release
flags (-O3 -DNDEBUG) on Linux, matching Windows and macOS.

Also simplify CEE_USE_QT5/CEE_USE_QT6 handling: set them directly
instead of via option() with malformed NOT DEFINED(...) guards.

Fixed missing initialization in VfpValueSelection and WellPathCellIntersectionInfo
2026-09-14 14:17:33 +02:00
Magne Sjaastad 3052d3d554 Select RHEL8 vcpkg-configuration.json via CMake instead of renaming the tracked file
* Select RHEL8 vcpkg-configuration.json via CMake instead of renaming the tracked file

RHEL8 CI jobs previously ran 'cp vcpkg-configuration-rhel8.json vcpkg-configuration.json'
before configuring, temporarily overwriting the tracked default configuration
in the checkout. The vcpkg toolchain file only defaults VCPKG_MANIFEST_DIR to
CMAKE_SOURCE_DIR when it is not already defined, and reads it while processing
project(), so setting VCPKG_MANIFEST_DIR earlier -- before project() -- lets
vcpkg read a different vcpkg-configuration.json without ever touching the
tracked file.

Add a RESINSIGHT_VCPKG_PROFILE cache variable, implemented in the new
cmake/ResInsightVcpkgProfile.cmake (included from the root CMakeLists.txt
before project(), which is required for VCPKG_MANIFEST_DIR to take effect).
When set (e.g. to 'rhel8'), it copies vcpkg.json and
vcpkg-configuration-<profile>.json into a profile-specific directory under
the build tree and points VCPKG_MANIFEST_DIR there. The copy is regenerated on
every configure, so it can never drift from the root vcpkg.json.

overlay-ports/overlay-triplets entries (e.g. 'ThirdParty/vcpkg-overlay-ports')
are resolved by vcpkg relative to the directory vcpkg-configuration.json lives
in, so repo-relative 'ThirdParty/...' paths are rewritten to absolute paths
right after the copy is generated, keeping them valid from the new location.

Update the RHEL8 workflows and Dockerfile.rhel8 build-warmup stage to pass
-DRESINSIGHT_VCPKG_PROFILE=rhel8 instead of the cp step, and update
vcpkg-readme.md to describe the new mechanism.

* #14733 Use x64-linux-release vcpkg triplet explicitly in RHEL8 CI

The RHEL8 CI workflows and the Docker image's warmup/vcpkg-cache stages
did not set VCPKG_TARGET_TRIPLET/VCPKG_HOST_TRIPLET, so vcpkg fell back
to its plain x64-linux default triplet, which builds both debug and
release variants of every dependency even though the CI build is
Release-only. Set both to x64-linux-release consistently across the
image's vcpkg install, the warmup CMake configure, and the two
consuming workflows so the baked binary cache and the CI configure use
matching ABI hashes and skip the unused debug builds.
2026-09-11 22:49:16 +02:00
magnesj 3f7aee5972 #14720 Probe std::stacktrace by linking instead of trusting the feature macro
libstdc++ defines __cpp_lib_stacktrace from GCC 13 on, but the implementation
lives in libstdc++exp, which some distributions do not ship (Red Hat's
gcc-toolset among them). The header-only feature test then reports the feature
as present and the link fails with undefined references to
std::__stacktrace_impl::_S_current.

Add cmake/StdStacktrace.cmake, which probes the feature by actually linking:
first with no extra library, then with stdc++exp. The result selects the link
library through RESINSIGHT_STACKTRACE_LIBRARIES, or defines
RIA_HAS_STD_STACKTRACE=0 project-wide when neither links, so the crash handler
compiles out its stack-trace capture and logs the signal only.

RiaMainTools.cpp and RiaOpenTelemetryManager.h now honour a
RIA_HAS_STD_STACKTRACE definition from the build system and only include
<stacktrace> when the feature is enabled.

Follow-up to #14045.
2026-09-10 08:33:38 -04:00
JJ 73783a3e0a Update to latest Qt Advanced Docking (#14652)
* Update to latest Qt Advanced Docking, simplifying cmake config and fixing some bugs.
2026-09-01 07:46:30 +02:00
Magne Sjaastad 21694b11e7 #14476 Align CAF_ASSERT with standard assert semantics
CAF_ASSERT was unconditionally active in every build configuration. Make it
follow the semantics of the standard assert(): active in Debug, compiled out in
optimized builds (NDEBUG).

Add the CMake option RESINSIGHT_ENABLE_ASSERTS_IN_RELEASE (default OFF) for
developers who want the asserts to stay active in an optimized build, which is
useful when reproducing a problem in RelWithDebInfo with a debugger attached.

When compiled out, the expression is kept inside an unevaluated sizeof rather
than discarded. It is not evaluated, so there is no run-time cost and no side
effects, but it is still type checked and any variable used only by the assert
still counts as referenced, avoiding a wave of unused-variable warnings.

CAF_ENABLE_ASSERTS is given a default in cafAssert.h so the header stays
self-contained and include order can never silently switch the asserts off.

Document in docs/agents/coding-style.md that CAF_ASSERT is the assert to use,
that CVF_ASSERT is legacy, and that asserts are for broken invariants rather
than for run-time conditions that need real error handling.
2026-08-07 15:05:57 +02:00
jorgenherje 8b5ca4e11b Fixes by cmake-format 2026-08-06 09:14:53 +02:00
Jørgen Herje 086ab43e0a Change ResInsight to use ri-cloud-api as submodule (#14468) 2026-08-06 08:28:00 +02:00
c3e7c05fd6 Initial ri-cloud-api lifecycle management test (#14364)
Co-authored-by: Magne Sjaastad <magne.sjaastad@ceetronsolutions.com>
Co-authored-by: magnesj <1793152+magnesj@users.noreply.github.com>
2026-07-28 09:36:14 +02:00
Magne Sjaastad 2ac1948abe #14245 Remove gsl functions and ThirdParty/gsl folder 2026-06-24 18:47:04 +02:00
Kristian Bendiksen 5ee62c61e1 #14128 Use KD-tree (nanoflann) for fault distance nearest-face search
computeFaultDistances faked a nearest-point query with cvf::BoundingBoxTree,
which only supports box overlap: it grew a cell-sized box until it overlapped a
fault face. For cells far from any fault this did many full tree traversals and
then brute-forced the distance to a large, over-collected candidate set, and the
answer was only approximate. This was slow on grids with ~10 million cells.

The metric is the distance from each cell center to the nearest fault face
center, which is exactly a nearest-point search. Replace the bounding-box tree
and the grow-the-box loop with a nanoflann KD-tree built over the fault face
centers and a single nearest-neighbor query per active cell. A zero-copy adaptor
reads the existing std::vector<cvf::Vec3d> directly. The OpenMP loop is retained
since nanoflann queries are read-only. The result is O(F log F) build plus
O(N log F) queries, the full grid-node array copy is gone, and distances are now
exact rather than approximate.

Add nanoflann as a vcpkg dependency, wired in like Clipper2 as an imported
target.

Refs: https://github.com/OPM/ResInsight/issues/14128
2026-06-08 21:39:08 +02:00
Magne Sjaastad 022d77bef8 macOS: Initial Apple Silicon and x86_64 build support
* Refactor: add MACOSX_BUNDLE option to qt_add_executable in multiple CMakeLists.txt files
* #14045 macOS: Guard std::stacktrace usage and skip ucontext on Apple platforms
* #14045 macOS: Guard std::ispanstream with std::istringstream fallback
* #14045 macOS: Add vcpkg overlay triplets for osx and exclude grpc on osx
* #14045 macOS: CMake macOS build support and openzgy OpenMP-disable patch
* #14045 CI: Add macOS build workflow
* #14045 macOS: Use feature-test macros to detect <stacktrace> and <spanstream>
* #14045 macOS: Make MAX_STIMPLAN_LAYERS constexpr to fix arm64 link error
* #14045 CI: Ship README-macOS.txt with artifact to document Gatekeeper workaround
* #14045 CI: Pin macOS runner to macos-14 and set deployment target to 14.0
* #14045 CI: Move macOS runner to macos-15 and fix README step on configure failure
2026-06-01 12:38:55 +02:00
Magne Sjaastad af5c133736 #13998 Suppress MSVC C4875 deprecation warning from bundled gsl headers 2026-05-19 10:19:15 +02:00
Magne Sjaastad d14144848a #13944 Build: Make find_package imported targets globally visible
Set CMAKE_FIND_PACKAGE_TARGETS_GLOBAL so Qt:: targets pulled in by subdirectory find_package() calls (qwt, cafPdmXml, cafUserInterface, etc.) are visible at consumer scope. Silences Qt 6.10 __qt_internal_walk_libs warnings about OpenGLWidgets, Xml and Svg targets being mentioned but not declared.
2026-05-04 15:28:33 +02:00
Magne Sjaastad e0a3606ae1 Add cafPdm_CompileBench target for compile-time benchmarking
Adds an OBJECT library with UNITY_BUILD OFF to measure per-file compile
cost of PDM field types in isolation. Wired into both Fwk/CMakeLists.txt
and the main CMakeLists.txt (under RESINSIGHT_INCLUDE_APPFWK_TESTS).
Also adds build-bench to .gitignore.
2026-04-08 12:37:36 +02:00
Kristian BendiksenandMagne Sjaastad d80ada607f #11807 Upgrade to Clipper2
Replaces the deprecated Clipper library with the actively maintained Clipper2 library.

Removes the local copy of the Clipper library and uses vcpkg to manage the dependency.

Fixes #11807

Co-authored-by: Magne Sjaastad <magne.sjaastad@ceetronsolutions.com>
2026-01-07 16:07:09 +01:00
Jon Jenssen 51b1bbda6c Update OpenVDS to latest version 3.4.9 2026-01-06 19:21:10 +01:00
JJ 6eea1f023a Update to latest Qt Advanced Docking (#13344)
* Update to latest Qt Advanced Docking
2025-12-15 20:41:08 +01:00
JJ 8f09a9d102 Update OpenVDS to latest version (3.4.8) (#13059)
* Update OpenVDS to latest version (3.4.8)
2025-10-22 13:44:52 +02:00
Magne Sjaastad 4d24b019dc clang: Fix compile warnings and add sanitizer supressions 2025-10-20 09:22:09 +02:00
JJ 79c2c792f4 Add cmake configuration option to disable/enable openvds support (#12805)
* Add cmake configuration option to disable/enable openvds support
2025-08-21 08:31:10 +02:00
magnesj c47d7b13fd Fixes by cmake-format 2025-08-11 07:33:27 +02:00
Santiago Ospina De Los Ríos 11c9066fb3 Install ResInsight Application on macOS
This adds support to install the Application folder when the OS is macOS. In particular, the bundle is being created in the root build directory and installed in the root path of the installation prefix. Additionally, install the ERT libraries in the Contents/Frameworks bundle folder where the RPATH of the is automatically set to find them. Otherwise a link error arises.
2025-08-11 07:27:55 +02:00
Kristian Bendiksen ade8e1d7e6 Remove QT_CHARTS dependency. 2025-07-30 13:39:02 +02:00
Magne Sjaastad af58c8c580 Fix time stamp for build 2025-07-29 11:55:23 +02:00
Magne Sjaastad 61504636b2 Updates CMake version requirements and workflow
Removes the CMake version check that caused issues with newer CMake versions.

Prints the CMake version in the workflow to aid in debugging.

Sets a minimum CMake policy version in CMakePresets.json. This is required to be able to build with CMake 4
2025-07-08 16:42:17 +02:00
Jon Jenssen ac0afa239d Update OpenVDS library name 2025-07-02 17:16:16 +02:00
Jon Jenssen 6d03d72862 Update OpenVDS version to 3.4.6 (3.4.5 is gone from server) 2025-07-02 17:16:16 +02:00
Magne Sjaastad 21bd5730f5 Move warnings as errors config and use in geomech libs 2025-06-17 14:43:47 +02:00
Magne Sjaastad 13a793f16c #12461 Add support for import of .irap and .gri
* Add surfio as submodule and create importer with tests
* Update compile fix when mio.h is included in multiple compile units
* Move file tools into RifFileTools
2025-05-28 09:50:45 +02:00
Magne Sjaastad 5e37c58d18 Hide some CMake warnings 2025-05-15 15:59:07 +02:00
Magne Sjaastad a958912378 Update opm-common
* Update opm-common
Include fix for tNavigator summary import
* Build opm-common from source
* Remove binary caching of opm-common
The caching is no longer required as a clean build takes minutes. In a previous version the build time was up to an hour on some systems.
2025-05-14 06:57:25 +02:00
Magne 57017a166c Add minimum requirements for CMake, gcc and clang
On Linux, link with stdc++exp
Define requirements in README
2025-05-09 15:54:28 +02:00
Magne Sjaastad ea75da8cf0 Bump minimum requirement to c++23 2025-04-25 15:23:28 +02:00
Kristian Bendiksen 7908c8186f Refactor: simplify VTK surface parsing using pugixml 2025-03-07 10:34:48 +01:00
Magne Sjaastad e73cd624d1 Avoid warning when using buildcache on Windows 2025-02-11 07:40:27 +01:00
Magne Sjaastad 1627ada696 Bump minimum required CMake to 3.26
* Bump minimum required CMake to 3.26

Recently, dependencies using vcpkg was updated, including boost 1.86. When boost 1.86 is linked by ResInsight, the minimum required CMake version is 3.26.

It is possible to manage dependencies manually without using vcpkg. In this case, the ResInsight build might work with a lower CMake requirement. This scenario is not tested by the ResInsight team.

* Use minimum required version of CMake when building on GitHub Action
2025-01-27 11:16:32 +01:00
Magne Sjaastad 3f08901379 Use updated opm-common
* Update opm-common submodule and use branch development https://github.com/CeetronSolutions/opm-common/tree/development

* Add cmake-format of ThirdParty/custom-opm-common/CMakeLists.txt

* Add boost-test

* Update generated files and simplify CMake configuration

Add -D_USE_MATH_DEFINES to CMake to avoid multiple local defines
Introduce flag CREATE_OPM_COMMON_KEYWORDS used to generate C++ files JSON files. This enables use also in MSVC. Remove obsolete direct include of source files.

* Update generated ESMRY test file

There was a invalid extra : postfix for some keywords like NEWTON and other N* keywords. When creating ESRMY using updated opm-common fix this issue.

* Update URL for custom-opm-common
2025-01-22 08:34:46 +01:00
Magne Sjaastad 2d4cefc29d Avoid using latest release when downloading custom-opm-common 2025-01-20 14:28:56 +01:00
Magne Sjaastad ba1224c9de #12063 Update link for download of OpenVDS
Temporary fix for download of packages from OpenVDS
2025-01-14 16:14:08 +01:00
jonjenssen 039d9f0f6b Update to OpenVDS 3.4.5 2025-01-06 11:27:23 +01:00
Magne Sjaastad 53a31c88c9 Add support for use of precompiled Octave binaries on Windows 2024-12-05 19:30:03 +01:00
Magne Sjaastad 3fac7d2045 Add message in CMake for download of OpenVDS 2024-11-29 15:43:38 +01:00
jonjenssen 10ce20074b Update to OpenVDS 3.4.4 for improved segy importer 2024-11-29 06:34:50 +01:00
Magne Sjaastad 2814b92055 Qt6: Adjustments (#11804)
* Qt6: Avoid insertWidget, use addWidget
In Qt6, the insertWidget function checks if the index parameter is valid based on current widgets present in the layout. This is error prone, and use addWidget to avoid manual counting of index.

* Disable use of Qt keyword foreach

* Replace use of QRegExp with QRegularExpression
Replace use of QRegExp with QRegularExpression
Remove dependency on qt5compat module
Simplify an expression based on review

* Remove Qt5 ifdefs

* Guard access out of bounds seen in debug build

* Avoid reuse of string variable

* Disconnect all signals from the QOpenGLContext
The call stack when this assert happens indicates that there are more signals to be disconnected from the object. Crash is fixed by disconnecting all signals.

Assert seen in debug build:

ASSERT failure in caf::Viewer: "Called object is not of the correct type (class destructor may have already run)", file C:\Qt\6.6.3\msvc2019_64\include\QtCore/qobjectdefs_impl.h, line 130

* Fix issue related to delete of a linked view
Guard null pointer use in view linker. Remove complicated cleanup in destructor in Rim3dVew.
2024-10-28 13:09:18 +01:00
Magne Sjaastad bb047e82d3 #11827 Use FetchContent_MakeAvailable
FetchContent_Populate() is deprecated
2024-10-28 13:08:18 +01:00
Magne Sjaastad ca4a7b9000 Remove obsolete code related to Qt5
* Remove bundling of openssl1.1
* Remove obsolete compile flags
* Remove use of obsolete RimCommandObject
* Use QColor::isValidColorName
QColor::isValidColor is deprecated in Qt 6.6, QColor::isValidColorName was introduced in 6.4

* Make sure debug DLLs are copied when required
* Remove Qt5 from AppFwk
* Remove obsolete copy of Qt  DLLs
2024-10-07 10:16:48 +02:00
Magne Sjaastad b9448c2430 Additional Openssl adjustments 2024-10-04 15:28:42 +02:00
212f5bf5ae Add support for Qt6 and disable Qt5
Required changes to use Qt6 and disable support for Qt5. There are still some adjustments related to Qt6 to be done, but these changes are not required to make Qt6 compile on relevant systems.

* Build system changes Qt6
* Override enterEvent
* Update QKeySequence
* QtChart changes
* Use QScreen to instepct dotsPerInch
* Add app->quit()
* Required updates for code related to QString
* Use RiaQDateTimeTools
* Required changes related to regular expressions
* Support compile on Qt  < 6.5
When version < 6.5 is found, qt_generate_deploy_app_script() is disabled. Compilation of ResInsight will work, but the install target will be incomplete.
* Octave: add missing header.
* Qt Advanced Docking: force Qt6 where both Qt5 and Qt6 is available.

---------

Co-authored-by: magnesj <1793152+magnesj@users.noreply.github.com>
Co-authored-by: Kristian Bendiksen <kristian.bendiksen@gmail.com>
2024-09-30 11:21:17 +02:00
Kristian Bendiksen 69d947309a Ubuntu 24.04 support: modernize pip install, and silence gcc 13 warnings. 2024-09-27 14:42:53 +02:00