Include top level cmakelist and fix formatting

This commit is contained in:
Magne Sjaastad 2021-04-29 10:42:16 +02:00 committed by GitHub
parent f3e769ad13
commit 5bc599cd57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 412 additions and 383 deletions

View File

@ -12,18 +12,20 @@ jobs:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Check format - ApplicationLibCode - name: Check format - ApplicationLibCode
run: | run: |
~/.local/bin/cmake-format -c ${{ github.workspace }}/cmake/cmake-format.py -i CMakeLists.txt
cd ApplicationLibCode cd ApplicationLibCode
find -name CMake*.txt | xargs ~/.local/bin/cmake-format -c ${{ github.workspace }}/cmake/cmake-format.py -i find -name CMake*.txt | xargs ~/.local/bin/cmake-format -c ${{ github.workspace }}/cmake/cmake-format.py -i
git diff cd ..
- name: Check format - ApplicationExeCode
run: |
cd ApplicationExeCode cd ApplicationExeCode
find -name CMake*.txt | xargs ~/.local/bin/cmake-format -c ${{ github.workspace }}/cmake/cmake-format.py -i find -name CMake*.txt | xargs ~/.local/bin/cmake-format -c ${{ github.workspace }}/cmake/cmake-format.py -i
git diff cd ..
- name: Check format - AppFwk
run: |
cd Fwk/AppFwk cd Fwk/AppFwk
find -name CMake*.txt | xargs ~/.local/bin/cmake-format -c ${{ github.workspace }}/cmake/cmake-format.py -i find -name CMake*.txt | xargs ~/.local/bin/cmake-format -c ${{ github.workspace }}/cmake/cmake-format.py -i
cd ..
git diff git diff
- uses: peter-evans/create-pull-request@v3 - uses: peter-evans/create-pull-request@v3
with: with:

View File

@ -11,7 +11,10 @@ if (POLICY CMP0077)
endif() endif()
if(UNIX) if(UNIX)
option(RESINSIGHT_PREFER_LEGACY_OPENGL "Link with Legacy OpenGL libraries. This may be necessary in some virtualization environments" ON) option(
RESINSIGHT_PREFER_LEGACY_OPENGL
"Link with Legacy OpenGL libraries. This may be necessary in some virtualization environments"
ON)
if(RESINSIGHT_PREFER_LEGACY_OPENGL) if(RESINSIGHT_PREFER_LEGACY_OPENGL)
set(OpenGL_GL_PREFERENCE LEGACY) set(OpenGL_GL_PREFERENCE LEGACY)
endif() endif()
@ -19,13 +22,16 @@ endif()
set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY USE_FOLDERS ON)
SET(BUILD_SHARED_LIBS OFF CACHE BOOL "ERT: Build shared libraries") set(BUILD_SHARED_LIBS
OFF
CACHE BOOL "ERT: Build shared libraries")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
option(RESINSIGHT_BUNDLE_TESTMODELS "Copy TestModels into the installation" OFF) option(RESINSIGHT_BUNDLE_TESTMODELS "Copy TestModels into the installation" OFF)
option(VCPKG_AUTO_INSTALL "Automatically download build pre-requisites with VCPKG" OFF) option(VCPKG_AUTO_INSTALL
"Automatically download build pre-requisites with VCPKG" OFF)
if(VCPKG_AUTO_INSTALL) if(VCPKG_AUTO_INSTALL)
include(AutoVcpkg) include(AutoVcpkg)
set(AUTO_VCPKG_ROOT "${CMAKE_SOURCE_DIR}/ThirdParty/vcpkg") set(AUTO_VCPKG_ROOT "${CMAKE_SOURCE_DIR}/ThirdParty/vcpkg")
@ -36,9 +42,9 @@ set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_EXTENSIONS OFF)
################################################################################ # ##############################################################################
# Setup the main platform defines # Setup the main platform defines
################################################################################ # ##############################################################################
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
add_definitions(-DCVF_LINUX) add_definitions(-DCVF_LINUX)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
@ -49,15 +55,16 @@ elseif(MSVC)
endif() endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(CMAKE_CXX_FLAGS "-DCVF_LINUX -pipe -Wextra -Woverloaded-virtual -Wformat -Wno-unused-parameter") set(CMAKE_CXX_FLAGS
"-DCVF_LINUX -pipe -Wextra -Woverloaded-virtual -Wformat -Wno-unused-parameter"
)
set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -g3 -O0 -DDEBUG -D_DEBUG") set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -g3 -O0 -DDEBUG -D_DEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNO_DEBUG") set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNO_DEBUG")
endif() endif()
# ##############################################################################
################################################################################
# OpenMP # OpenMP
################################################################################ # ##############################################################################
option(RESINSIGHT_USE_OPENMP "Enable OpenMP parallellization in the code" ON) option(RESINSIGHT_USE_OPENMP "Enable OpenMP parallellization in the code" ON)
if(RESINSIGHT_USE_OPENMP) if(RESINSIGHT_USE_OPENMP)
find_package(OpenMP) find_package(OpenMP)
@ -65,15 +72,16 @@ if (RESINSIGHT_USE_OPENMP)
message(STATUS "Enabling OpenMP support") message(STATUS "Enabling OpenMP support")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS} -DUSE_OPENMP") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS} -DUSE_OPENMP")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS
"${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
else() else()
message(STATUS "Disabling OpenMP support") message(STATUS "Disabling OpenMP support")
endif() endif()
endif() endif()
################################################################################ # ##############################################################################
# ABAQUS ODB # ABAQUS ODB
################################################################################ # ##############################################################################
set(RESINSIGHT_ODB_API_DIR set(RESINSIGHT_ODB_API_DIR
"" ""
CACHE CACHE
@ -86,22 +94,19 @@ if(NOT ${RESINSIGHT_ODB_API_DIR} EQUAL "")
message(STATUS "Using ODB-Api from : ${RESINSIGHT_ODB_API_DIR}") message(STATUS "Using ODB-Api from : ${RESINSIGHT_ODB_API_DIR}")
endif() endif()
# ##############################################################################
################################################################################
# Version number # Version number
################################################################################ # ##############################################################################
include(ResInsightVersion.cmake) include(ResInsightVersion.cmake)
# ##############################################################################
################################################################################
# Octave # Octave
################################################################################ # ##############################################################################
find_package(Octave) find_package(Octave)
################################################################################ # ##############################################################################
# Grpc # Grpc
################################################################################ # ##############################################################################
option(RESINSIGHT_ENABLE_GRPC "Enable the gRPC scripting framework" OFF) option(RESINSIGHT_ENABLE_GRPC "Enable the gRPC scripting framework" OFF)
if(RESINSIGHT_ENABLE_GRPC) if(RESINSIGHT_ENABLE_GRPC)
option( option(
@ -113,53 +118,66 @@ if(RESINSIGHT_ENABLE_GRPC)
add_definitions(-DENABLE_GRPC) add_definitions(-DENABLE_GRPC)
endif() endif()
################################################################################ # ##############################################################################
# Unity Build # Unity Build
################################################################################ # ##############################################################################
# CMAKE_UNITY_BUILD was introduced in CMake 3.16.2 # CMAKE_UNITY_BUILD was introduced in CMake 3.16.2
option(RESINSIGHT_ENABLE_UNITY_BUILD "Experimental speedup of compilation using CMake Unity Build" OFF) option(RESINSIGHT_ENABLE_UNITY_BUILD
"Experimental speedup of compilation using CMake Unity Build" OFF)
mark_as_advanced(FORCE RESINSIGHT_ENABLE_UNITY_BUILD) mark_as_advanced(FORCE RESINSIGHT_ENABLE_UNITY_BUILD)
if(RESINSIGHT_ENABLE_UNITY_BUILD) if(RESINSIGHT_ENABLE_UNITY_BUILD)
set(CAF_ENABLE_UNITY_BUILD true) set(CAF_ENABLE_UNITY_BUILD true)
set(CVF_ENABLE_UNITY_BUILD true) set(CVF_ENABLE_UNITY_BUILD true)
endif() endif()
################################################################################ # ##############################################################################
# ERT # ERT
################################################################################ # ##############################################################################
# Use of CMAKE_CXX_COMPILER_LAUNCHER is not working with libecl. Disable by temporarily setting # Use of CMAKE_CXX_COMPILER_LAUNCHER is not working with libecl. Disable by
# compiler launcher to nothing # temporarily setting compiler launcher to nothing
set(TEMP_CMAKE_CXX_COMPILER_LAUNCHER ${CMAKE_CXX_COMPILER_LAUNCHER}) set(TEMP_CMAKE_CXX_COMPILER_LAUNCHER ${CMAKE_CXX_COMPILER_LAUNCHER})
set(CMAKE_CXX_COMPILER_LAUNCHER) set(CMAKE_CXX_COMPILER_LAUNCHER)
if(NOT MSVC) if(NOT MSVC)
# Linux: Optional configuration of externally installed ERT, requires path to libraries and includes # Linux: Optional configuration of externally installed ERT, requires path to
set(RESINSIGHT_ERT_EXTERNAL_LIB_ROOT "" CACHE PATH "Path to installed ERT libraries") # libraries and includes
set(RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT "" CACHE PATH "Path to installed ERT includes") set(RESINSIGHT_ERT_EXTERNAL_LIB_ROOT
""
CACHE PATH "Path to installed ERT libraries")
set(RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT
""
CACHE PATH "Path to installed ERT includes")
endif() endif()
if(RESINSIGHT_ERT_EXTERNAL_LIB_ROOT OR RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT) if(RESINSIGHT_ERT_EXTERNAL_LIB_ROOT OR RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT)
if (NOT(RESINSIGHT_ERT_EXTERNAL_LIB_ROOT AND RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT)) if(NOT (RESINSIGHT_ERT_EXTERNAL_LIB_ROOT
message(FATAL_ERROR "Both RESINSIGHT_ERT_EXTERNAL_LIB_ROOT and RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT must be defined") AND RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT))
message(
FATAL_ERROR
"Both RESINSIGHT_ERT_EXTERNAL_LIB_ROOT and RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT must be defined"
)
endif() endif()
message(FATAL_ERROR "TODO: Building using and external system installed ERT is broken.") message(
FATAL_ERROR
"TODO: Building using and external system installed ERT is broken.")
list(APPEND ERT_INCLUDE_DIRS list(APPEND ERT_INCLUDE_DIRS ${RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT})
${RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT}
)
list(APPEND ERT_LIBRARIES list(APPEND ERT_LIBRARIES ${RESINSIGHT_ERT_EXTERNAL_LIB_ROOT}/libecl.so)
${RESINSIGHT_ERT_EXTERNAL_LIB_ROOT}/libecl.so
)
else() else()
# Disable install of ERT libs and headers, as Ert code is compiled and linked directly # Disable install of ERT libs and headers, as Ert code is compiled and linked
SET(INSTALL_ERT OFF CACHE BOOL "ERT: Install library") # directly
SET(ERT_USE_OPENMP ${OPENMP_FOUND} CACHE BOOL "ERT: Compile using OpenMP") set(INSTALL_ERT
OFF
CACHE BOOL "ERT: Install library")
set(ERT_USE_OPENMP
${OPENMP_FOUND}
CACHE BOOL "ERT: Compile using OpenMP")
# Remember original state # Remember original state
set(ORIGINAL_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS}) set(ORIGINAL_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
@ -169,34 +187,40 @@ else()
set(BUILD_SHARED_LIBS OFF) set(BUILD_SHARED_LIBS OFF)
set(ERT_HAVE_UNISTD OFF) # If anyone has mingw installed set(ERT_HAVE_UNISTD OFF) # If anyone has mingw installed
else() else()
set(RESINSIGHT_ERT_EXTERNAL_SOURCE_ROOT "" CACHE STRING "Path to ERT CMakeList.txt (source path)") set(RESINSIGHT_ERT_EXTERNAL_SOURCE_ROOT
""
CACHE STRING "Path to ERT CMakeList.txt (source path)")
# Force dynamic linking on other platforms # Force dynamic linking on other platforms Copy of libraries into install
# Copy of libraries into install folder of ResInsight is done a bit further down in this file # folder of ResInsight is done a bit further down in this file
set(BUILD_SHARED_LIBS ON) set(BUILD_SHARED_LIBS ON)
endif() endif()
if(RESINSIGHT_ERT_EXTERNAL_SOURCE_ROOT) if(RESINSIGHT_ERT_EXTERNAL_SOURCE_ROOT)
add_subdirectory(${RESINSIGHT_ERT_EXTERNAL_SOURCE_ROOT} ${CMAKE_BINARY_DIR}/ThirdParty/Ert) add_subdirectory(${RESINSIGHT_ERT_EXTERNAL_SOURCE_ROOT}
${CMAKE_BINARY_DIR}/ThirdParty/Ert)
else() else()
add_subdirectory(ThirdParty/Ert) add_subdirectory(ThirdParty/Ert)
endif() endif()
if(MSVC) if(MSVC)
# libecl : Disable some warnings # libecl : Disable some warnings
set_target_properties(ecl PROPERTIES COMPILE_FLAGS "/wd4244 /wd4267 /wd4013 /wd4190 /wd4018 /wd4477 /wd4098 /wd4293 /wd4305 /wd4020 /wd4028 /wd4715 /wd4245 /wd4804 /wd4100 /wd4456 /wd4458 /wd4090 /wd4297 /wd4701 /wd4101 /wd4702 /wd4457") set_target_properties(
ecl
PROPERTIES
COMPILE_FLAGS
"/wd4244 /wd4267 /wd4013 /wd4190 /wd4018 /wd4477 /wd4098 /wd4293 /wd4305 /wd4020 /wd4028 /wd4715 /wd4245 /wd4804 /wd4100 /wd4456 /wd4458 /wd4090 /wd4297 /wd4701 /wd4101 /wd4702 /wd4457"
)
else() else()
set_target_properties(ecl PROPERTIES COMPILE_FLAGS "-Wno-deprecated -Wno-deprecated-declarations -Wno-clobbered") set_target_properties(
ecl
PROPERTIES COMPILE_FLAGS
"-Wno-deprecated -Wno-deprecated-declarations -Wno-clobbered")
endif() endif()
list(APPEND THIRD_PARTY_LIBRARIES list(APPEND THIRD_PARTY_LIBRARIES ecl)
ecl
)
set_property(TARGET set_property(TARGET catch2 PROPERTY FOLDER "Thirdparty")
catch2
PROPERTY FOLDER "Thirdparty"
)
# Restore original state # Restore original state
set(BUILD_SHARED_LIBS ${ORIGINAL_BUILD_SHARED_LIBS}) set(BUILD_SHARED_LIBS ${ORIGINAL_BUILD_SHARED_LIBS})
@ -206,16 +230,16 @@ endif(RESINSIGHT_ERT_EXTERNAL_LIB_ROOT OR RESINSIGHT_ERT_EXTERNAL_INCLUDE_ROOT)
# restore buildcache when libecl has been configured # restore buildcache when libecl has been configured
set(CMAKE_CXX_COMPILER_LAUNCHER ${TEMP_CMAKE_CXX_COMPILER_LAUNCHER}) set(CMAKE_CXX_COMPILER_LAUNCHER ${TEMP_CMAKE_CXX_COMPILER_LAUNCHER})
##################################### # ##############################################################################
###################################### # ##############################################################################
# Go through required git submodules # # Go through required git submodules #
###################################### # ##############################################################################
list(APPEND THIRD_PARTY_SUBMODULES qwt) list(APPEND THIRD_PARTY_SUBMODULES qwt)
############################################### # ##############################################################################
# Init GIT submodules if they haven't already # # Init GIT submodules if they haven't already #
############################################### # ##############################################################################
find_package(Git QUIET) find_package(Git QUIET)
if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git") if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
# Update submodules as needed # Update submodules as needed
@ -224,26 +248,30 @@ if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
foreach(SUBMODULE ${THIRD_PARTY_SUBMODULES}) foreach(SUBMODULE ${THIRD_PARTY_SUBMODULES})
set(SUBDIR "${PROJECT_SOURCE_DIR}/ThirdParty/${SUBMODULE}") set(SUBDIR "${PROJECT_SOURCE_DIR}/ThirdParty/${SUBMODULE}")
message(STATUS "Initializing GIT submodules") message(STATUS "Initializing GIT submodules")
execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive -- ${SUBDIR} execute_process(
COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive --
${SUBDIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE GIT_SUBMOD_RESULT) RESULT_VARIABLE GIT_SUBMOD_RESULT)
if(NOT GIT_SUBMOD_RESULT EQUAL "0") if(NOT GIT_SUBMOD_RESULT EQUAL "0")
message(FATAL_ERROR "git submodule update --init failed for ${SUBMODULE} with ${GIT_SUBMOD_RESULT}, please checkout submodules") message(
FATAL_ERROR
"git submodule update --init failed for ${SUBMODULE} with ${GIT_SUBMOD_RESULT}, please checkout submodules"
)
endif() endif()
endforeach() endforeach()
endif() endif()
endif() endif()
# ##############################################################################
################################################################################
# buildcache # buildcache
# #
# buildcache will be used if found in path # buildcache will be used if found in path It is required to use compiler flag
# It is required to use compiler flag /Zi to be able to use buildcache # /Zi to be able to use buildcache See
# See https://docs.microsoft.com/en-us/cpp/build/reference/z7-zi-zi-debug-information-format?view=vs-2019 # https://docs.microsoft.com/en-us/cpp/build/reference/z7-zi-zi-debug-information-format?view=vs-2019
# The adjustments of build flags must also be placed after libecl, as the adjustments # The adjustments of build flags must also be placed after libecl, as the
# cause compiler issues for libecl # adjustments cause compiler issues for libecl
################################################################################ # ##############################################################################
find_program(buildcache_program buildcache) find_program(buildcache_program buildcache)
if(buildcache_program) if(buildcache_program)
set(CMAKE_CXX_COMPILER_LAUNCHER "${buildcache_program}") set(CMAKE_CXX_COMPILER_LAUNCHER "${buildcache_program}")
@ -254,7 +282,8 @@ if(buildcache_program)
if(CMAKE_CXX_FLAGS_DEBUG MATCHES "/Zi") if(CMAKE_CXX_FLAGS_DEBUG MATCHES "/Zi")
message(STATUS "Clearing pdb setting") message(STATUS "Clearing pdb setting")
string(REGEX REPLACE "/Zi" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") string(REGEX REPLACE "/Zi" "" CMAKE_CXX_FLAGS_DEBUG
"${CMAKE_CXX_FLAGS_DEBUG}")
endif() endif()
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Z7") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Z7")
@ -263,31 +292,32 @@ else()
message(STATUS "No buildcache found") message(STATUS "No buildcache found")
endif() endif()
################################################################################ # ##############################################################################
# HDF5 # HDF5
################################################################################ # ##############################################################################
if(MSVC) if(MSVC)
set(RESINSIGHT_HDF5_DIR "" CACHE PATH "Windows Only: Optional path to HDF5 libraries on Windows") set(RESINSIGHT_HDF5_DIR
""
CACHE PATH "Windows Only: Optional path to HDF5 libraries on Windows")
endif() endif()
if(MSVC) if(MSVC)
if(NOT ${RESINSIGHT_HDF5_DIR} EQUAL "") if(NOT ${RESINSIGHT_HDF5_DIR} EQUAL "")
list(APPEND EXTERNAL_LINK_LIBRARIES list(APPEND EXTERNAL_LINK_LIBRARIES ${RESINSIGHT_HDF5_DIR}/lib/hdf5.lib
${RESINSIGHT_HDF5_DIR}/lib/hdf5.lib ${RESINSIGHT_HDF5_DIR}/lib/hdf5_cpp.lib)
${RESINSIGHT_HDF5_DIR}/lib/hdf5_cpp.lib
)
set(RESINSIGHT_FOUND_HDF5 1) set(RESINSIGHT_FOUND_HDF5 1)
message(STATUS "Using HDF5 from : ${RESINSIGHT_HDF5_DIR}") message(STATUS "Using HDF5 from : ${RESINSIGHT_HDF5_DIR}")
else() else()
message( WARNING "Use of HDF5 is enabled, but RESINSIGHT_HDF5_DIR is empty. Specify RESINSIGHT_HDF5_DIR to be able to use HDF5" ) message(
WARNING
"Use of HDF5 is enabled, but RESINSIGHT_HDF5_DIR is empty. Specify RESINSIGHT_HDF5_DIR to be able to use HDF5"
)
endif() endif()
else() else()
find_package(HDF5 COMPONENTS CXX) find_package(HDF5 COMPONENTS CXX)
if(HDF5_FOUND) if(HDF5_FOUND)
list(APPEND EXTERNAL_LINK_LIBRARIES list(APPEND EXTERNAL_LINK_LIBRARIES ${HDF5_LIBRARIES})
${HDF5_LIBRARIES}
)
set(RESINSIGHT_FOUND_HDF5 1) set(RESINSIGHT_FOUND_HDF5 1)
message(STATUS "Using HDF5 libraries : ${HDF5_LIBRARIES}") message(STATUS "Using HDF5 libraries : ${HDF5_LIBRARIES}")
@ -303,10 +333,9 @@ else()
endif() # HDF5_FOUND endif() # HDF5_FOUND
endif() # MSVC endif() # MSVC
# ##############################################################################
################################################################################
# Opm # Opm
################################################################################ # ##############################################################################
if(VCPKG_AUTO_INSTALL) if(VCPKG_AUTO_INSTALL)
vcpkg_install(boost-filesystem) vcpkg_install(boost-filesystem)
@ -318,31 +347,32 @@ add_subdirectory(ThirdParty/custom-opm-flowdiag-app)
add_subdirectory(ThirdParty/custom-opm-common) add_subdirectory(ThirdParty/custom-opm-common)
add_subdirectory(ThirdParty/custom-opm-common/custom-opm-parser-tests) add_subdirectory(ThirdParty/custom-opm-common/custom-opm-parser-tests)
list(APPEND OPM_LIBRARIES list(APPEND OPM_LIBRARIES custom-opm-flowdiagnostics custom-opm-flowdiag-app
custom-opm-flowdiagnostics custom-opm-common)
custom-opm-flowdiag-app
custom-opm-common
)
set_property(TARGET set_property(TARGET ${OPM_LIBRARIES} PROPERTY FOLDER "Thirdparty/OPM")
${OPM_LIBRARIES}
PROPERTY FOLDER "Thirdparty/OPM"
)
################################################################################ # ##############################################################################
# NRLib # NRLib
################################################################################ # ##############################################################################
add_subdirectory(ThirdParty/NRLib) add_subdirectory(ThirdParty/NRLib)
list(APPEND THIRD_PARTY_LIBRARIES list(APPEND THIRD_PARTY_LIBRARIES NRLib)
NRLib
)
################################################################################ # ##############################################################################
# Qt # Qt
################################################################################ # ##############################################################################
find_package(Qt5 COMPONENTS Core Gui OpenGL Network Script ScriptTools Widgets OPTIONAL_COMPONENTS Charts) find_package(
Qt5
COMPONENTS Core
Gui
OpenGL
Network
Script
ScriptTools
Widgets
OPTIONAL_COMPONENTS Charts)
if(Qt5Charts_FOUND) if(Qt5Charts_FOUND)
message(STATUS "QtCharts found: ${Qt5Charts_LIBRARIES}") message(STATUS "QtCharts found: ${Qt5Charts_LIBRARIES}")
add_definitions(-DUSE_QTCHARTS) add_definitions(-DUSE_QTCHARTS)
@ -353,9 +383,9 @@ endif()
# Open GL # Open GL
find_package(OpenGL) find_package(OpenGL)
################################################################################ # ##############################################################################
# Qwt # Qwt
################################################################################ # ##############################################################################
add_subdirectory(ThirdParty/qwt) add_subdirectory(ThirdParty/qwt)
@ -368,68 +398,63 @@ if(RESINSIGHT_ENABLE_UNITY_BUILD)
set_property(TARGET custom-opm-common PROPERTY UNITY_BUILD true) set_property(TARGET custom-opm-common PROPERTY UNITY_BUILD true)
endif() endif()
list(APPEND THIRD_PARTY_LIBRARIES list(APPEND THIRD_PARTY_LIBRARIES qwt)
qwt
)
################################################################################ # ##############################################################################
# Nightcharts # Nightcharts
################################################################################ # ##############################################################################
add_subdirectory(ThirdParty/nightcharts) add_subdirectory(ThirdParty/nightcharts)
list(APPEND THIRD_PARTY_LIBRARIES list(APPEND THIRD_PARTY_LIBRARIES nightcharts)
nightcharts
)
################################################################################ # ##############################################################################
# C++ Mathematical Expression Parsing And Evaluation Library # C++ Mathematical Expression Parsing And Evaluation Library
################################################################################ # ##############################################################################
add_subdirectory(ThirdParty/expressionparser) add_subdirectory(ThirdParty/expressionparser)
list(APPEND THIRD_PARTY_LIBRARIES list(APPEND THIRD_PARTY_LIBRARIES expressionparser)
expressionparser
)
################################################################################ # ##############################################################################
# clipper # clipper
################################################################################ # ##############################################################################
add_subdirectory(ThirdParty/clipper) add_subdirectory(ThirdParty/clipper)
list(APPEND THIRD_PARTY_LIBRARIES list(APPEND THIRD_PARTY_LIBRARIES clipper)
clipper
)
################################################################################ # ##############################################################################
# Thirdparty libraries are put in ThirdParty solution folder # Thirdparty libraries are put in ThirdParty solution folder
################################################################################ # ##############################################################################
set_property(TARGET set_property(TARGET ${THIRD_PARTY_LIBRARIES} PROPERTY FOLDER "Thirdparty")
${THIRD_PARTY_LIBRARIES}
PROPERTY FOLDER "Thirdparty"
)
################################################################################ # ##############################################################################
# Vizualization Framework # Vizualization Framework
################################################################################ # ##############################################################################
# Allow use of non-threadsafe reference counter in cvf::Object on systems with no atomics support # Allow use of non-threadsafe reference counter in cvf::Object on systems with
# no atomics support
if(CMAKE_COMPILER_IS_GNUCC) if(CMAKE_COMPILER_IS_GNUCC)
if(NOT DEFINED HAVE_GCC_SYNC_FUNCTIONS) if(NOT DEFINED HAVE_GCC_SYNC_FUNCTIONS)
check_c_source_compiles("int main(int argc, char **argv) { check_c_source_compiles(
"int main(int argc, char **argv) {
int a; int a;
__sync_add_and_fetch(&a, 1); __sync_add_and_fetch(&a, 1);
__sync_fetch_and_add(&a, 1); __sync_fetch_and_add(&a, 1);
__sync_sub_and_fetch(&a, 1); __sync_sub_and_fetch(&a, 1);
__sync_fetch_and_sub(&a, 1); }" HAVE_GCC_SYNC_FUNCTIONS) __sync_fetch_and_sub(&a, 1); }"
HAVE_GCC_SYNC_FUNCTIONS)
endif() endif()
if(HAVE_GCC_SYNC_FUNCTIONS) if(HAVE_GCC_SYNC_FUNCTIONS)
message(STATUS "GCC synchronization functions detected") message(STATUS "GCC synchronization functions detected")
else() else()
message(STATUS "GCC synchronization functions NOT detected, fallback to non threadsafe reference counting") message(
STATUS
"GCC synchronization functions NOT detected, fallback to non threadsafe reference counting"
)
add_definitions(-DCVF_USE_NON_THREADSAFE_REFERENCE_COUNT) add_definitions(-DCVF_USE_NON_THREADSAFE_REFERENCE_COUNT)
endif() endif()
@ -441,23 +466,20 @@ add_subdirectory(${VIZ_MODULES_FOLDER_NAME}/LibRender)
add_subdirectory(${VIZ_MODULES_FOLDER_NAME}/LibViewing) add_subdirectory(${VIZ_MODULES_FOLDER_NAME}/LibViewing)
add_subdirectory(${VIZ_MODULES_FOLDER_NAME}/LibGuiQt) add_subdirectory(${VIZ_MODULES_FOLDER_NAME}/LibGuiQt)
list(APPEND VIZ_FWK_LIBRARIES list(
APPEND
VIZ_FWK_LIBRARIES
LibGuiQt LibGuiQt
LibViewing LibViewing
LibRender LibRender
LibGeometry LibGeometry
LibCore LibCore)
)
set_property(TARGET set_property(TARGET ${VIZ_FWK_LIBRARIES} PROPERTY FOLDER "VizFwk")
${VIZ_FWK_LIBRARIES}
PROPERTY FOLDER "VizFwk"
)
# ##############################################################################
################################################################################
# Application Framework # Application Framework
################################################################################ # ##############################################################################
add_subdirectory(Fwk/AppFwk/cafAnimControl) add_subdirectory(Fwk/AppFwk/cafAnimControl)
add_subdirectory(Fwk/AppFwk/cafViewer) add_subdirectory(Fwk/AppFwk/cafViewer)
@ -482,28 +504,24 @@ set_property(TARGET cafCommandFeatures PROPERTY FOLDER "AppFwk")
add_subdirectory(Fwk/AppFwk/cafTensor) add_subdirectory(Fwk/AppFwk/cafTensor)
add_subdirectory(Fwk/AppFwk/cafHexInterpolator) add_subdirectory(Fwk/AppFwk/cafHexInterpolator)
list(APPEND APP_FWK_LIBRARIES list(
APPEND
APP_FWK_LIBRARIES
cafPdmCore cafPdmCore
cafPdmUiCore cafPdmUiCore
cafPdmXml cafPdmXml
cafProjectDataModel cafProjectDataModel
cafUserInterface cafUserInterface
cafViewer cafViewer
cafAnimControl cafAnimControl
cafCommand cafCommand
cafPdmCvf cafPdmCvf
cafTensor cafTensor
CommonCode CommonCode
cafVizExtensions cafVizExtensions
cafPdmScripting cafPdmScripting)
)
set_property(TARGET set_property(TARGET ${APP_FWK_LIBRARIES} PROPERTY FOLDER "AppFwk")
${APP_FWK_LIBRARIES}
PROPERTY FOLDER "AppFwk"
)
option(RESINSIGHT_INCLUDE_APPFWK_TESTS "Enable AppFwk Tests" OFF) option(RESINSIGHT_INCLUDE_APPFWK_TESTS "Enable AppFwk Tests" OFF)
mark_as_advanced(FORCE RESINSIGHT_INCLUDE_APPFWK_TESTS) mark_as_advanced(FORCE RESINSIGHT_INCLUDE_APPFWK_TESTS)
@ -511,9 +529,11 @@ mark_as_advanced(FORCE RESINSIGHT_INCLUDE_APPFWK_TESTS)
if(RESINSIGHT_INCLUDE_APPFWK_TESTS) if(RESINSIGHT_INCLUDE_APPFWK_TESTS)
# Unit Tests # Unit Tests
add_subdirectory(Fwk/AppFwk/cafProjectDataModel/cafProjectDataModel_UnitTests) add_subdirectory(Fwk/AppFwk/cafProjectDataModel/cafProjectDataModel_UnitTests)
set_property(TARGET cafProjectDataModel_UnitTests PROPERTY FOLDER "AppFwkTests") set_property(TARGET cafProjectDataModel_UnitTests PROPERTY FOLDER
"AppFwkTests")
add_subdirectory(Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafPdmCore_UnitTests) add_subdirectory(
Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafPdmCore_UnitTests)
set_property(TARGET cafPdmCore_UnitTests PROPERTY FOLDER "AppFwkTests") set_property(TARGET cafPdmCore_UnitTests PROPERTY FOLDER "AppFwkTests")
add_subdirectory(Fwk/AppFwk/cafProjectDataModel/cafPdmXml/cafPdmXml_UnitTests) add_subdirectory(Fwk/AppFwk/cafProjectDataModel/cafPdmXml/cafPdmXml_UnitTests)
@ -530,24 +550,24 @@ if (RESINSIGHT_INCLUDE_APPFWK_TESTS)
set_property(TARGET cafTestCvfApplication PROPERTY FOLDER "AppFwkTests") set_property(TARGET cafTestCvfApplication PROPERTY FOLDER "AppFwkTests")
endif() endif()
# ##############################################################################
################################################################################
# Installation settings # Installation settings
################################################################################ # ##############################################################################
set(RESINSIGHT_INSTALL_FOLDER ".") set(RESINSIGHT_INSTALL_FOLDER ".")
# override system install prefix if private installation chosen # override system install prefix if private installation chosen
option (RESINSIGHT_PRIVATE_INSTALL "Linux only: Install the libecl shared libraries along the executable" ON) option(RESINSIGHT_PRIVATE_INSTALL
"Linux only: Install the libecl shared libraries along the executable"
ON)
mark_as_advanced(FORCE RESINSIGHT_PRIVATE_INSTALL) mark_as_advanced(FORCE RESINSIGHT_PRIVATE_INSTALL)
if(RESINSIGHT_PRIVATE_INSTALL) if(RESINSIGHT_PRIVATE_INSTALL)
################################################################################ # ############################################################################
# ERT shared library files # ERT shared library files Install procedure will copy so-files from ERT into
# Install procedure will copy so-files from ERT into same install folder as ResInsight # same install folder as ResInsight
################################################################################ # ############################################################################
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(ERT_SHARED_LIB_FILES set(ERT_SHARED_LIB_FILES
@ -555,7 +575,8 @@ if (RESINSIGHT_PRIVATE_INSTALL)
${CMAKE_BINARY_DIR}/ThirdParty/Ert/${CMAKE_INSTALL_LIBDIR}/libecl.so.2 ${CMAKE_BINARY_DIR}/ThirdParty/Ert/${CMAKE_INSTALL_LIBDIR}/libecl.so.2
${CMAKE_BINARY_DIR}/ThirdParty/Ert/${CMAKE_INSTALL_LIBDIR}/libecl.so.2.4 ${CMAKE_BINARY_DIR}/ThirdParty/Ert/${CMAKE_INSTALL_LIBDIR}/libecl.so.2.4
) )
install(FILES ${ERT_SHARED_LIB_FILES} DESTINATION ${RESINSIGHT_INSTALL_FOLDER} ) install(FILES ${ERT_SHARED_LIB_FILES}
DESTINATION ${RESINSIGHT_INSTALL_FOLDER})
endif() endif()
if(APPLE) if(APPLE)
@ -564,33 +585,36 @@ if (RESINSIGHT_PRIVATE_INSTALL)
${CMAKE_BINARY_DIR}/ThirdParty/Ert/${CMAKE_INSTALL_LIBDIR}/libecl.2.dylib ${CMAKE_BINARY_DIR}/ThirdParty/Ert/${CMAKE_INSTALL_LIBDIR}/libecl.2.dylib
${CMAKE_BINARY_DIR}/ThirdParty/Ert/${CMAKE_INSTALL_LIBDIR}/libecl.2.4.dylib ${CMAKE_BINARY_DIR}/ThirdParty/Ert/${CMAKE_INSTALL_LIBDIR}/libecl.2.4.dylib
) )
install(FILES ${ERT_SHARED_LIB_FILES} DESTINATION ${RESINSIGHT_INSTALL_FOLDER}/ResInsight.app/Contents/MacOS ) install(
FILES ${ERT_SHARED_LIB_FILES}
DESTINATION ${RESINSIGHT_INSTALL_FOLDER}/ResInsight.app/Contents/MacOS)
endif() endif()
endif(RESINSIGHT_PRIVATE_INSTALL) endif(RESINSIGHT_PRIVATE_INSTALL)
if(RESINSIGHT_HDF5_BUNDLE_LIBRARIES) if(RESINSIGHT_HDF5_BUNDLE_LIBRARIES)
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
# find all file names with text hdf5 # find all file names with text hdf5 use file globbing to also copy the
# use file globbing to also copy the symlinks to make sure the dependencies from ResInsight runtime is correct # symlinks to make sure the dependencies from ResInsight runtime is correct
foreach(FILE_TO_COPY ${HDF5_LIBRARIES}) foreach(FILE_TO_COPY ${HDF5_LIBRARIES})
STRING( FIND ${FILE_TO_COPY} "hdf5" POS_IN_STRING ) string(FIND ${FILE_TO_COPY} "hdf5" POS_IN_STRING)
if(${POS_IN_STRING} GREATER -1) if(${POS_IN_STRING} GREATER -1)
file(GLOB FILE_AND_SYMLINKS ${FILE_TO_COPY}*) file(GLOB FILE_AND_SYMLINKS ${FILE_TO_COPY}*)
install(FILES ${FILE_AND_SYMLINKS} DESTINATION ${RESINSIGHT_INSTALL_FOLDER} ) install(FILES ${FILE_AND_SYMLINKS}
DESTINATION ${RESINSIGHT_INSTALL_FOLDER})
endif() endif()
endforeach() endforeach()
endif() endif()
endif(RESINSIGHT_HDF5_BUNDLE_LIBRARIES) endif(RESINSIGHT_HDF5_BUNDLE_LIBRARIES)
if(RESINSIGHT_BUNDLE_TESTMODELS) if(RESINSIGHT_BUNDLE_TESTMODELS)
install(DIRECTORY ${CMAKE_SOURCE_DIR}/TestModels DESTINATION ${RESINSIGHT_INSTALL_FOLDER}) install(DIRECTORY ${CMAKE_SOURCE_DIR}/TestModels
DESTINATION ${RESINSIGHT_INSTALL_FOLDER})
endif() endif()
################################################################################ # ##############################################################################
# Application # Application
################################################################################ # ##############################################################################
add_subdirectory(ApplicationLibCode) add_subdirectory(ApplicationLibCode)
if(RESINSIGHT_ENABLE_GRPC) if(RESINSIGHT_ENABLE_GRPC)
add_subdirectory(GrpcInterface) add_subdirectory(GrpcInterface)
@ -602,27 +626,30 @@ if (OCTAVE_MKOCTFILE)
add_subdirectory(OctavePlugin) add_subdirectory(OctavePlugin)
else(OCTAVE_MKOCTFILE) else(OCTAVE_MKOCTFILE)
message (STATUS "Could not find OCTAVE_MKOCTFILE, skipping OctavePlugin library") message(
STATUS "Could not find OCTAVE_MKOCTFILE, skipping OctavePlugin library")
endif(OCTAVE_MKOCTFILE) endif(OCTAVE_MKOCTFILE)
################################################################################ # ##############################################################################
# Code documentation using Doxygen # Code documentation using Doxygen
################################################################################ # ##############################################################################
option(RESINSIGHT_BUILD_DOCUMENTATION "Use Doxygen to create the HTML based API documentation" OFF) option(RESINSIGHT_BUILD_DOCUMENTATION
"Use Doxygen to create the HTML based API documentation" OFF)
if(RESINSIGHT_BUILD_DOCUMENTATION) if(RESINSIGHT_BUILD_DOCUMENTATION)
FIND_PACKAGE(Doxygen) find_package(Doxygen)
if(NOT DOXYGEN_FOUND) if(NOT DOXYGEN_FOUND)
message(FATAL_ERROR message(
"Doxygen is needed to build the documentation. Please install it correctly") FATAL_ERROR
"Doxygen is needed to build the documentation. Please install it correctly"
)
endif() endif()
# -- Configure the Template Doxyfile for our specific project # -- Configure the Template Doxyfile for our specific project
configure_file(Doxyfile.in configure_file(Doxyfile.in ${PROJECT_BINARY_DIR}/Doxyfile @ONLY IMMEDIATE)
${PROJECT_BINARY_DIR}/Doxyfile @ONLY IMMEDIATE)
# -- Add a custom target to run Doxygen when ever the project is built # -- Add a custom target to run Doxygen when ever the project is built
add_custom_target (Docs add_custom_target(
Docs
COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile
SOURCES ${PROJECT_BINARY_DIR}/Doxyfile) SOURCES ${PROJECT_BINARY_DIR}/Doxyfile)
# IF you do NOT want the documentation to be generated EVERY time you build the project # IF you do NOT want the documentation to be generated EVERY time you build
# then leave out the 'ALL' keyword from the above command. # the project then leave out the 'ALL' keyword from the above command.
endif(RESINSIGHT_BUILD_DOCUMENTATION) endif(RESINSIGHT_BUILD_DOCUMENTATION)