Create a new ApplicationExe project for the executable
6
.github/workflows/ResInsightWithCache.yml
vendored
@ -208,12 +208,12 @@ jobs:
|
|||||||
- name: Run Unit Tests
|
- name: Run Unit Tests
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
cmakebuild/ApplicationCode/ResInsight --unittest
|
cmakebuild/ApplicationExeCode/ResInsight --unittest
|
||||||
- name: Run pytest
|
- name: Run pytest
|
||||||
env:
|
env:
|
||||||
RESINSIGHT_EXECUTABLE: ${{ runner.workspace }}/ResInsight/cmakebuild/ApplicationCode/ResInsight
|
RESINSIGHT_EXECUTABLE: ${{ runner.workspace }}/ResInsight/cmakebuild/ApplicationExeCode/ResInsight
|
||||||
run: |
|
run: |
|
||||||
cd ApplicationCode/GrpcInterface/Python/rips
|
cd GrpcInterface/Python/rips
|
||||||
${{ steps.python-path.outputs.PYTHON_EXECUTABLE }} -m pytest --console
|
${{ steps.python-path.outputs.PYTHON_EXECUTABLE }} -m pytest --console
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
|
@ -5,7 +5,7 @@ on:
|
|||||||
env:
|
env:
|
||||||
NINJA_VERSION: 1.9.0
|
NINJA_VERSION: 1.9.0
|
||||||
BUILD_TYPE: Release
|
BUILD_TYPE: Release
|
||||||
BUILDCACHE_VERSION: 0.18.0
|
BUILDCACHE_VERSION: 0.23.0
|
||||||
BUILDCACHE_DIR: ${{ github.workspace }}/buildcache_dir
|
BUILDCACHE_DIR: ${{ github.workspace }}/buildcache_dir
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@ -19,6 +19,9 @@ jobs:
|
|||||||
name: "Ubuntu 20.04",
|
name: "Ubuntu 20.04",
|
||||||
os: ubuntu-20.04,
|
os: ubuntu-20.04,
|
||||||
cc: "gcc", cxx: "g++",
|
cc: "gcc", cxx: "g++",
|
||||||
|
vcpkg-response-file: vcpkg_x64-linux.txt,
|
||||||
|
vcpkg-triplet: x64-linux,
|
||||||
|
cmake-toolchain: 'ThirdParty/vcpkg/scripts/buildsystems/vcpkg.cmake'
|
||||||
}
|
}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@ -42,7 +45,7 @@ jobs:
|
|||||||
if ("${{ runner.os }}" STREQUAL "Windows")
|
if ("${{ runner.os }}" STREQUAL "Windows")
|
||||||
set(buildcache_suffix "win-msvc.zip")
|
set(buildcache_suffix "win-msvc.zip")
|
||||||
elseif ("${{ runner.os }}" STREQUAL "Linux")
|
elseif ("${{ runner.os }}" STREQUAL "Linux")
|
||||||
set(buildcache_suffix "linux.zip")
|
set(buildcache_suffix "linux.tar.gz")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(buildcache_version $ENV{BUILDCACHE_VERSION})
|
set(buildcache_version $ENV{BUILDCACHE_VERSION})
|
||||||
@ -52,7 +55,7 @@ jobs:
|
|||||||
|
|
||||||
if (NOT "${{ runner.os }}" STREQUAL "Windows")
|
if (NOT "${{ runner.os }}" STREQUAL "Windows")
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND chmod +x bin/buildcache
|
COMMAND chmod +x buildcache/bin/buildcache
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -67,54 +70,49 @@ jobs:
|
|||||||
uses: actions/cache@v2
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ env.BUILDCACHE_DIR }}
|
path: ${{ env.BUILDCACHE_DIR }}
|
||||||
key: ${{ matrix.config.name }}-manual-paths-cache-v02-${{ steps.cache_timestamp_string.outputs.timestamp }}
|
key: ${{ matrix.config.name }}-cache-v02-${{ steps.cache_timestamp_string.outputs.timestamp }}
|
||||||
- name: Create Folder for buildcache
|
- name: Create Folder for buildcache
|
||||||
run: New-Item ${{ env.BUILDCACHE_DIR }} -ItemType "directory" -Force
|
run: New-Item ${{ env.BUILDCACHE_DIR }} -ItemType "directory" -Force
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
- name: Add buildcache to system path
|
- name: Add buildcache to system path
|
||||||
run: echo "::add-path::${{ github.workspace }}/bin"
|
run: echo "${{github.workspace}}/buildcache/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8
|
||||||
|
shell: pwsh
|
||||||
|
|
||||||
- name: Cache Qt
|
- name: Cache Qt
|
||||||
id: cache-qt
|
id: cache-qt
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ github.workspace }}/Qt/
|
path: ${{ github.workspace }}/Qt/
|
||||||
key: ${{ matrix.config.os }}-QtCache-v02
|
key: ${{ matrix.config.os }}-QtCache-v03
|
||||||
- name: Install Qt
|
- name: Install Qt
|
||||||
uses: jurplel/install-qt-action@v2
|
uses: jurplel/install-qt-action@v2
|
||||||
with:
|
with:
|
||||||
version: 5.9.9
|
version: 5.9.9
|
||||||
modules: qtscript
|
modules: qtscript qtcharts
|
||||||
dir: '${{ github.workspace }}/Qt/'
|
dir: '${{ github.workspace }}/Qt/'
|
||||||
cached: ${{ steps.cache-qt.outputs.cache-hit }}
|
cached: ${{ steps.cache-qt.outputs.cache-hit }}
|
||||||
- name: Install Linux dependencies
|
- name: Install Linux dependencies
|
||||||
if: "contains( matrix.config.os, 'ubuntu')"
|
if: "contains( matrix.config.os, 'ubuntu')"
|
||||||
run: sudo apt-get install libxkbcommon-x11-0 libgl1-mesa-dev mesa-common-dev libglfw3-dev libglu1-mesa-dev libhdf5-dev libboost-filesystem-dev libeigen3-dev
|
run: sudo apt-get install libxkbcommon-x11-0 libgl1-mesa-dev mesa-common-dev libglfw3-dev libglu1-mesa-dev libhdf5-dev
|
||||||
- name: Cache vcpkg artifacts
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ${{ github.workspace }}/ThirdParty/vcpkg/
|
|
||||||
# Ensure the cache is invalidated any time vcpkg version changes, or a different set of packages is being used.
|
|
||||||
key: ${{ hashFiles('.git/modules/ThirdParty/vcpkg/HEAD') }}-${{ runner.os }}-vcpkg-v04
|
|
||||||
- name: Get Python executable path
|
- name: Get Python executable path
|
||||||
id: python-path
|
id: python-path
|
||||||
run: echo "::set-output name=PYTHON_EXECUTABLE::$(python -c 'import sys; import pathlib; print (pathlib.PurePath(sys.executable).as_posix())')"
|
run: echo "::set-output name=PYTHON_EXECUTABLE::$(python -c 'import sys; import pathlib; print (pathlib.PurePath(sys.executable).as_posix())')"
|
||||||
- name: Print Python path
|
- name: Print Python path
|
||||||
run: echo ${{ steps.python-path.outputs.PYTHON_EXECUTABLE }}
|
run: echo ${{ steps.python-path.outputs.PYTHON_EXECUTABLE }}
|
||||||
- name: Install Python dependencies
|
|
||||||
run: |
|
- name: Set vcpkg's response file path used as part of cache's key.
|
||||||
${{ steps.python-path.outputs.PYTHON_EXECUTABLE }} -m pip install --upgrade pip
|
uses: lukka/set-shell-env@master
|
||||||
${{ steps.python-path.outputs.PYTHON_EXECUTABLE }} -m pip install grpcio-tools
|
with:
|
||||||
${{ steps.python-path.outputs.PYTHON_EXECUTABLE }} -m pip install pytest
|
VCPKGRESPONSEFILE: ${{ github.workspace }}/${{ matrix.config.vcpkg-response-file }}
|
||||||
- name: Setup vcpkg
|
- name: Run vcpkg
|
||||||
uses: lukka/run-vcpkg@v5
|
uses: lukka/run-vcpkg@v5
|
||||||
id: runvcpkg
|
id: runvcpkg
|
||||||
with:
|
with:
|
||||||
|
vcpkgArguments: '@${{ github.workspace }}/${{ matrix.config.vcpkg-response-file }}'
|
||||||
vcpkgDirectory: '${{ github.workspace }}/ThirdParty/vcpkg'
|
vcpkgDirectory: '${{ github.workspace }}/ThirdParty/vcpkg'
|
||||||
setupOnly: true
|
# Ensure the cache key changes any time the content of the response file changes.
|
||||||
- name: Run vcpkg
|
appendedCacheKey: ${{ hashFiles(env.VCPKGRESPONSEFILE) }}
|
||||||
shell: bash
|
|
||||||
run: $VCPKG_ROOT/vcpkg install grpc:x64-linux
|
|
||||||
- name: Configure
|
- name: Configure
|
||||||
shell: cmake -P {0}
|
shell: cmake -P {0}
|
||||||
run: |
|
run: |
|
||||||
@ -149,9 +147,11 @@ jobs:
|
|||||||
-D RESINSIGHT_INCLUDE_APPLICATION_UNIT_TESTS=true
|
-D RESINSIGHT_INCLUDE_APPLICATION_UNIT_TESTS=true
|
||||||
-D RESINSIGHT_TREAT_WARNINGS_AS_ERRORS=true
|
-D RESINSIGHT_TREAT_WARNINGS_AS_ERRORS=true
|
||||||
-D RESINSIGHT_ENABLE_GRPC=true
|
-D RESINSIGHT_ENABLE_GRPC=true
|
||||||
|
-D Eigen3_DIR=${{ github.workspace }}/ThirdParty/vcpkg/installed/x64-linux/share/eigen3
|
||||||
|
-D Boost_INCLUDE_DIR=${{ github.workspace }}/ThirdParty/vcpkg/installed/x64-linux/include
|
||||||
-D RESINSIGHT_GRPC_INSTALL_PREFIX=${{ github.workspace }}/ThirdParty/vcpkg/installed/x64-linux
|
-D RESINSIGHT_GRPC_INSTALL_PREFIX=${{ github.workspace }}/ThirdParty/vcpkg/installed/x64-linux
|
||||||
-D RESINSIGHT_GRPC_PYTHON_EXECUTABLE=${{ steps.python-path.outputs.PYTHON_EXECUTABLE }}
|
-D RESINSIGHT_GRPC_PYTHON_EXECUTABLE=${{ steps.python-path.outputs.PYTHON_EXECUTABLE }}
|
||||||
-D RESINSIGHT_GRPC_DOWNLOAD_PYTHON_MODULE=false
|
-D RESINSIGHT_GRPC_DOWNLOAD_PYTHON_MODULE=true
|
||||||
-D VCPKG_AUTO_INSTALL=false
|
-D VCPKG_AUTO_INSTALL=false
|
||||||
-G Ninja
|
-G Ninja
|
||||||
RESULT_VARIABLE result
|
RESULT_VARIABLE result
|
||||||
@ -184,14 +184,20 @@ jobs:
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
- name: Stats for buildcache
|
- name: Stats for buildcache
|
||||||
run: ${{ github.workspace }}/bin/buildcache -s
|
run: ${{ github.workspace }}/buildcache/bin/buildcache -s
|
||||||
|
|
||||||
- name: (Linux) Run Unit Tests
|
- name: Run Unit Tests
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
cmakebuild/ApplicationCode/ResInsight --unittest
|
cmakebuild/ApplicationExeCode/ResInsight --unittest
|
||||||
|
- name: Run pytest
|
||||||
|
env:
|
||||||
|
RESINSIGHT_EXECUTABLE: ${{ runner.workspace }}/ResInsight/cmakebuild/ApplicationExeCode/ResInsight
|
||||||
|
run: |
|
||||||
|
cd GrpcInterface/Python/rips
|
||||||
|
${{ steps.python-path.outputs.PYTHON_EXECUTABLE }} -m pytest --console
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: ResInsight-manual-${{ matrix.config.name }}
|
name: ResInsight-${{ matrix.config.name }}
|
||||||
path: ${{ runner.workspace }}/ResInsight/cmakebuild/install
|
path: ${{ runner.workspace }}/ResInsight/cmakebuild/install
|
||||||
|
9
.github/workflows/clang-format.yml
vendored
@ -11,9 +11,14 @@ jobs:
|
|||||||
sudo apt install clang-format
|
sudo apt install clang-format
|
||||||
clang-format --version
|
clang-format --version
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: Check format - ApplicationCode
|
- name: Check format - ApplicationLibCode
|
||||||
run: |
|
run: |
|
||||||
cd ApplicationCode
|
cd ApplicationLibCode
|
||||||
|
find -name *.h -o -name *.cpp -o -name *.inl | xargs clang-format -i
|
||||||
|
git diff
|
||||||
|
- name: Check format - ApplicationExeCode
|
||||||
|
run: |
|
||||||
|
cd ApplicationExeCode
|
||||||
find -name *.h -o -name *.cpp -o -name *.inl | xargs clang-format -i
|
find -name *.h -o -name *.cpp -o -name *.inl | xargs clang-format -i
|
||||||
git diff
|
git diff
|
||||||
- name: Check format - AppFwk
|
- name: Check format - AppFwk
|
||||||
|
9
.github/workflows/cmake-format.yml
vendored
@ -10,9 +10,14 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
python3 -m pip install --user cmakelang
|
python3 -m pip install --user cmakelang
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: Check format - ApplicationCode
|
- name: Check format - ApplicationLibCode
|
||||||
run: |
|
run: |
|
||||||
cd ApplicationCode
|
cd ApplicationLibCode
|
||||||
|
find -name CMake*.txt | xargs ~/.local/bin/cmake-format -c ${{ github.workspace }}/cmake/cmake-format.py -i
|
||||||
|
git diff
|
||||||
|
- name: Check format - ApplicationExeCode
|
||||||
|
run: |
|
||||||
|
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
|
git diff
|
||||||
- name: Check format - AppFwk
|
- name: Check format - AppFwk
|
||||||
|
2
.github/workflows/spell-check.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: sobolevn/misspell-fixer-action@master
|
- uses: sobolevn/misspell-fixer-action@master
|
||||||
with:
|
with:
|
||||||
options: '-rsvnuR ApplicationCode/'
|
options: '-rsvnuR ApplicationLibCode/'
|
||||||
- uses: peter-evans/create-pull-request@v3
|
- uses: peter-evans/create-pull-request@v3
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
^ApplicationCode/ReservoirDataModel/RigWellLogFile.cpp:28:aswell
|
^ApplicationLibCode/ReservoirDataModel/RigWellLogFile.cpp:28:aswell
|
||||||
^ApplicationCode/ReservoirDataModel/RigLasFileExporter.cpp:33:aswell
|
^ApplicationLibCode/ReservoirDataModel/RigLasFileExporter.cpp:33:aswell
|
||||||
^ApplicationCode/Resources/EastView.svg
|
^ApplicationExeCode/Resources/EastView.svg
|
||||||
^ApplicationCode/Resources/NorthView.svg
|
^ApplicationExeCode/Resources/NorthView.svg
|
||||||
^ApplicationCode/Resources/SouthView.svg
|
^ApplicationExeCode/Resources/SouthView.svg
|
||||||
^ApplicationCode/Resources/WestView.svg
|
^ApplicationExeCode/Resources/WestView.svg
|
||||||
|
79
ApplicationExeCode/.clang-format
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
---
|
||||||
|
Language: Cpp
|
||||||
|
# BasedOnStyle: LLVM
|
||||||
|
AccessModifierOffset: -4
|
||||||
|
AlignAfterOpenBracket: Align
|
||||||
|
AlignConsecutiveAssignments: true
|
||||||
|
AlignConsecutiveDeclarations: true
|
||||||
|
AlignEscapedNewlinesLeft: true
|
||||||
|
AlignOperands: true
|
||||||
|
AlignTrailingComments: false
|
||||||
|
AllowAllParametersOfDeclarationOnNextLine: false
|
||||||
|
AllowShortBlocksOnASingleLine: false
|
||||||
|
AllowShortCaseLabelsOnASingleLine: false
|
||||||
|
AllowShortIfStatementsOnASingleLine: true
|
||||||
|
AllowShortFunctionsOnASingleLine: InlineOnly
|
||||||
|
AllowShortLoopsOnASingleLine: false
|
||||||
|
AlwaysBreakAfterDefinitionReturnType: None
|
||||||
|
AlwaysBreakAfterReturnType: None
|
||||||
|
AlwaysBreakBeforeMultilineStrings: false
|
||||||
|
AlwaysBreakTemplateDeclarations: true
|
||||||
|
BinPackArguments: false
|
||||||
|
BinPackParameters: false
|
||||||
|
BreakBeforeBinaryOperators: None
|
||||||
|
BreakBeforeBraces: Allman
|
||||||
|
BreakBeforeTernaryOperators: true
|
||||||
|
BreakConstructorInitializersBeforeComma: true
|
||||||
|
BreakAfterJavaFieldAnnotations: false
|
||||||
|
BreakStringLiterals: true
|
||||||
|
ColumnLimit: 120
|
||||||
|
CommentPragmas: '^ IWYU pragma:'
|
||||||
|
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||||
|
ConstructorInitializerIndentWidth: 4
|
||||||
|
ContinuationIndentWidth: 4
|
||||||
|
Cpp11BracedListStyle: true
|
||||||
|
DerivePointerAlignment: false
|
||||||
|
DisableFormat: false
|
||||||
|
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
|
||||||
|
IncludeCategories:
|
||||||
|
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
|
||||||
|
Priority: 2
|
||||||
|
- Regex: '^(<|"(gtest|isl|json)/)'
|
||||||
|
Priority: 3
|
||||||
|
- Regex: '.*'
|
||||||
|
Priority: 1
|
||||||
|
IncludeIsMainRegex: '$'
|
||||||
|
IndentCaseLabels: true
|
||||||
|
IndentWidth: 4
|
||||||
|
IndentWrappedFunctionNames: true
|
||||||
|
JavaScriptQuotes: Leave
|
||||||
|
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||||
|
MacroBlockBegin: ''
|
||||||
|
MacroBlockEnd: ''
|
||||||
|
MaxEmptyLinesToKeep: 1
|
||||||
|
NamespaceIndentation: Inner
|
||||||
|
PenaltyBreakAssignment: 13
|
||||||
|
PenaltyBreakBeforeFirstCallParameter: 10000
|
||||||
|
PenaltyBreakComment: 20
|
||||||
|
PenaltyBreakFirstLessLess: 12
|
||||||
|
PenaltyBreakString: 100
|
||||||
|
PenaltyExcessCharacter: 5
|
||||||
|
PenaltyReturnTypeOnItsOwnLine: 30
|
||||||
|
PointerAlignment: Left
|
||||||
|
ReflowComments: true
|
||||||
|
SortIncludes: true
|
||||||
|
SpaceAfterCStyleCast: false
|
||||||
|
SpaceAfterTemplateKeyword: true
|
||||||
|
SpaceBeforeAssignmentOperators: true
|
||||||
|
SpaceBeforeParens: ControlStatements
|
||||||
|
SpaceInEmptyParentheses: false
|
||||||
|
SpacesBeforeTrailingComments: 1
|
||||||
|
SpacesInAngles: false
|
||||||
|
SpacesInContainerLiterals: false
|
||||||
|
SpacesInCStyleCastParentheses: false
|
||||||
|
SpacesInParentheses: true
|
||||||
|
SpacesInSquareBrackets: false
|
||||||
|
Standard: Cpp11
|
||||||
|
TabWidth: 4
|
||||||
|
UseTab: Never
|
||||||
|
...
|
5
ApplicationExeCode/.clang-tidy
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
Checks: '-*,modernize-use-nullptr,modernize-use-override,modernize-deprecated-headers'
|
||||||
|
HeaderFilterRegex: ''
|
||||||
|
AnalyzeTemporaryDtors: false
|
||||||
|
...
|
714
ApplicationExeCode/CMakeLists.txt
Normal file
@ -0,0 +1,714 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.12)
|
||||||
|
|
||||||
|
project(ApplicationExeCode)
|
||||||
|
|
||||||
|
# set packaging dir
|
||||||
|
if(NOT CPACK_PACKAGE_DIRECTORY)
|
||||||
|
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR}/packages)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(RESINSIGHT_ENABLE_UNITY_BUILD)
|
||||||
|
message("Cmake Unity build is enabled on : ${PROJECT_NAME}")
|
||||||
|
set(CMAKE_UNITY_BUILD true)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||||
|
set(CMAKE_CXX_FLAGS
|
||||||
|
"${CMAKE_CXX_FLAGS} -Wno-deprecated -Wno-deprecated-declarations")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Open GL
|
||||||
|
find_package(OpenGL)
|
||||||
|
|
||||||
|
find_package(
|
||||||
|
Qt5
|
||||||
|
COMPONENTS Core
|
||||||
|
QUIET)
|
||||||
|
|
||||||
|
if(Qt5Core_FOUND)
|
||||||
|
find_package(
|
||||||
|
Qt5
|
||||||
|
COMPONENTS Core
|
||||||
|
Gui
|
||||||
|
OpenGL
|
||||||
|
Network
|
||||||
|
Script
|
||||||
|
Widgets
|
||||||
|
Xml
|
||||||
|
Concurrent
|
||||||
|
PrintSupport
|
||||||
|
Svg
|
||||||
|
OPTIONAL_COMPONENTS Charts)
|
||||||
|
set(QT_LIBRARIES
|
||||||
|
Qt5::Core
|
||||||
|
Qt5::Gui
|
||||||
|
Qt5::Network
|
||||||
|
Qt5::OpenGL
|
||||||
|
Qt5::Script
|
||||||
|
Qt5::Widgets
|
||||||
|
Qt5::Xml
|
||||||
|
Qt5::Concurrent
|
||||||
|
Qt5::PrintSupport
|
||||||
|
Qt5::Svg)
|
||||||
|
if(Qt5Charts_FOUND)
|
||||||
|
list(APPEND QT_LIBRARIES Qt5::Charts)
|
||||||
|
endif(Qt5Charts_FOUND)
|
||||||
|
endif(Qt5Core_FOUND)
|
||||||
|
|
||||||
|
if(MSVC)
|
||||||
|
# Avoid Qt warnings about macro redefinitions for math constants
|
||||||
|
add_definitions(-D_USE_MATH_DEFINES)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ##############################################################################
|
||||||
|
# Defining all the source (and header) files
|
||||||
|
# ##############################################################################
|
||||||
|
|
||||||
|
set(CODE_HEADER_FILES)
|
||||||
|
|
||||||
|
set(CODE_SOURCE_FILES RiaMain.cpp)
|
||||||
|
|
||||||
|
if(RESINSIGHT_ENABLE_GRPC)
|
||||||
|
list(APPEND CODE_HEAD_FILES RiaGrpcConsoleApplication.h
|
||||||
|
RiaGrpcGuiApplication.h)
|
||||||
|
list(APPEND CODE_SOURCE_FILES RiaGrpcConsoleApplication.cpp
|
||||||
|
RiaGrpcGuiApplication.cpp)
|
||||||
|
|
||||||
|
list(APPEND QT_MOC_HEADERS RiaGrpcConsoleApplication.h
|
||||||
|
RiaGrpcGuiApplication.h)
|
||||||
|
|
||||||
|
# Find Protobuf installation Looks for protobuf-config.cmake file installed by
|
||||||
|
# Protobuf's cmake installation.
|
||||||
|
set(protobuf_MODULE_COMPATIBLE ON)
|
||||||
|
find_package(Protobuf CONFIG 3.0 QUIET)
|
||||||
|
|
||||||
|
if(Protobuf_FOUND)
|
||||||
|
# Find gRPC installation Looks for gRPCConfig.cmake file installed by gRPC's
|
||||||
|
# cmake installation.
|
||||||
|
find_package(gRPC CONFIG REQUIRED)
|
||||||
|
set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf)
|
||||||
|
set(_GRPC_GRPCPP_UNSECURE gRPC::grpc++_unsecure gRPC::grpc_unsecure
|
||||||
|
gRPC::gpr)
|
||||||
|
set(GRPC_LINK_LIBRARIES ${_GRPC_GRPCPP_UNSECURE} ${_PROTOBUF_LIBPROTOBUF})
|
||||||
|
else()
|
||||||
|
set(RESINSIGHT_GRPC_INSTALL_PREFIX
|
||||||
|
""
|
||||||
|
CACHE PATH "gRPC : Install prefix for gRPC")
|
||||||
|
set(ENV{PKG_CONFIG_PATH} "${RESINSIGHT_GRPC_INSTALL_PREFIX}/lib/pkgconfig")
|
||||||
|
find_package(PkgConfig REQUIRED)
|
||||||
|
pkg_check_modules(
|
||||||
|
GRPC
|
||||||
|
REQUIRED
|
||||||
|
grpc
|
||||||
|
grpc++_unsecure>=1.20
|
||||||
|
grpc_unsecure
|
||||||
|
gpr
|
||||||
|
protobuf
|
||||||
|
libcares)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
list(APPEND CPP_SOURCES ${CODE_SOURCE_FILES})
|
||||||
|
|
||||||
|
# ##############################################################################
|
||||||
|
# Qt specifics: Moc, ui, resources
|
||||||
|
# ##############################################################################
|
||||||
|
|
||||||
|
# NOTE! Resources in subfolders must append to QRC_FILES using the following
|
||||||
|
# statement set( QRC_FILES ${QRC_FILES}
|
||||||
|
# ${CMAKE_CURRENT_SOURCE_DIR}/Resources/myLibrary.qrc PARENT_SCOPE )
|
||||||
|
|
||||||
|
set(QRC_FILES ${QRC_FILES} Resources/ResInsight.qrc)
|
||||||
|
|
||||||
|
# Runs RCC and MOC on specified files
|
||||||
|
qt5_add_resources(QRC_FILES_CPP ${QRC_FILES})
|
||||||
|
qt5_wrap_cpp(MOC_SOURCE_FILES ${QT_MOC_HEADERS})
|
||||||
|
|
||||||
|
# Adding resource (RC) files for Windows
|
||||||
|
if(MSVC)
|
||||||
|
set(WIN_RESOURCE Resources/ResInsight.rc)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ##############################################################################
|
||||||
|
# Set up the main executable with its source files
|
||||||
|
# ##############################################################################
|
||||||
|
|
||||||
|
# Default behaviour for a Qt application is a console application, resulting in
|
||||||
|
# a console window always being launced at startup The following statement is
|
||||||
|
# used to control this behaviour set_target_properties( MY_TARGET PROPERTIES
|
||||||
|
# LINK_FLAGS_DEBUG "/SUBSYSTEM:WINDOWS") This setting i not honored by Cmake -
|
||||||
|
# http://public.kitware.com/Bug/view.php?id=14326 We use the following
|
||||||
|
# workaround described in the bug report ADD_EXECUTABLE(${TARGET_NAME} WIN32
|
||||||
|
# ${SRC}) See CMake symbol WIN32_EXECUTABLE for details
|
||||||
|
|
||||||
|
if(MSVC)
|
||||||
|
set(EXE_FILES WIN32)
|
||||||
|
elseif(APPLE)
|
||||||
|
set(EXE_FILES MACOSX_BUNDLE)
|
||||||
|
endif()
|
||||||
|
set(EXE_FILES
|
||||||
|
${EXE_FILES}
|
||||||
|
${CPP_SOURCES}
|
||||||
|
${MOC_SOURCE_FILES}
|
||||||
|
${FORM_FILES_CPP}
|
||||||
|
${QRC_FILES_CPP}
|
||||||
|
${WIN_RESOURCE}
|
||||||
|
${HEADER_FILES}
|
||||||
|
${REFERENCED_CMAKE_FILES}
|
||||||
|
.clang-format
|
||||||
|
.clang-tidy)
|
||||||
|
|
||||||
|
add_executable(ResInsight ${EXE_FILES})
|
||||||
|
|
||||||
|
option(RESINSIGHT_ENABLE_PRECOMPILED_HEADERS "Use Precompiled Headers" OFF)
|
||||||
|
mark_as_advanced(FORCE RESINSIGHT_ENABLE_PRECOMPILED_HEADERS)
|
||||||
|
if(RESINSIGHT_ENABLE_PRECOMPILED_HEADERS)
|
||||||
|
message("Precompiled Headers is enabled on : ${PROJECT_NAME}")
|
||||||
|
target_precompile_headers(ResInsight PRIVATE pch.h)
|
||||||
|
|
||||||
|
set_source_files_properties(
|
||||||
|
${ResInsight_SOURCE_DIR}/ThirdParty/gtest/gtest-all.cc
|
||||||
|
PROPERTIES SKIP_PRECOMPILE_HEADERS ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
|
set_target_properties(
|
||||||
|
ResInsight
|
||||||
|
PROPERTIES
|
||||||
|
COMPILE_FLAGS
|
||||||
|
"-Wall -Wno-unused-parameter -Wno-reorder -Wno-parentheses -Wno-switch")
|
||||||
|
# Treat warnings as errors if asked to do so
|
||||||
|
if(RESINSIGHT_TREAT_WARNINGS_AS_ERRORS)
|
||||||
|
set_target_properties(
|
||||||
|
ResInsight
|
||||||
|
PROPERTIES
|
||||||
|
COMPILE_FLAGS
|
||||||
|
"-Wall -Wno-unused-parameter -Wno-reorder -Wno-parentheses -Wno-switch -Werror"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||||
|
set_target_properties(
|
||||||
|
ResInsight
|
||||||
|
PROPERTIES
|
||||||
|
COMPILE_FLAGS
|
||||||
|
"-Wall -Wno-unused-parameter -Wno-reorder -Wno-parentheses -Wno-switch -Wno-delete-abstract-non-virtual-dtor -Wno-undefined-var-template -Wno-invalid-source-encoding -Wno-enum-compare -Wno-call-to-pure-virtual-from-ctor-dtor -Wno-unused-variable -Wno-unused-private-field -Wno-unused-lambda-capture -Wno-delete-non-abstract-non-virtual-dtor -Wno-braced-scalar-init -Wno-tautological-constant-out-of-range-compare"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(MSVC)
|
||||||
|
# The following warnings are supposed to be used in ResInsight, but
|
||||||
|
# temporarily disabled to avoid too much noise warning C4245: 'return':
|
||||||
|
# conversion from 'int' to 'size_t', signed/unsigned mismatch warning C4005:
|
||||||
|
# Macro redefinition for math constants (M_PI, M_SQRT2 etc)
|
||||||
|
|
||||||
|
# If possible, the following command is supposed to be the final target
|
||||||
|
# set_target_properties(ResInsight PROPERTIES COMPILE_FLAGS "/W3 /wd4190
|
||||||
|
# /wd4100 /wd4127")
|
||||||
|
|
||||||
|
set(BUILD_FLAGS_FOR_MSVC "/wd4190 /wd4100 /wd4127 /wd4245 /wd4005")
|
||||||
|
|
||||||
|
if(Qt5Core_VERSION_STRING GREATER_EQUAL 5.10)
|
||||||
|
# Disable warning for deprecated functions in newer versions of Qt
|
||||||
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-3-c4996?view=msvc-160
|
||||||
|
set(BUILD_FLAGS_FOR_MSVC "${BUILD_FLAGS_FOR_MSVC} /wd4996")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_CXX_COMPILER_VERSION LESS_EQUAL 19.14)
|
||||||
|
# The following warning is generated over 800 times from a qwt header only
|
||||||
|
# using VS2015 Disabling temporarily warning C4505 'function' : unreferenced
|
||||||
|
# local function has been removed
|
||||||
|
set(BUILD_FLAGS_FOR_MSVC "${BUILD_FLAGS_FOR_MSVC} /wd4505")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "BUILD_FLAGS_FOR_MSVC ${BUILD_FLAGS_FOR_MSVC}")
|
||||||
|
set_target_properties(ResInsight PROPERTIES COMPILE_FLAGS
|
||||||
|
${BUILD_FLAGS_FOR_MSVC})
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ##############################################################################
|
||||||
|
# Application icon for MacOS X bundle
|
||||||
|
# ##############################################################################
|
||||||
|
|
||||||
|
if(APPLE)
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT Resources/ResInsight.icns
|
||||||
|
COMMAND
|
||||||
|
sips -s format icns ${CMAKE_CURRENT_SOURCE_DIR}/Resources/AppLogo48x48.png
|
||||||
|
--out ${CMAKE_CURRENT_BINARY_DIR}/Resources/ResInsight.icns
|
||||||
|
COMMENT Converting application icon)
|
||||||
|
add_custom_target(
|
||||||
|
ResInsight-icns
|
||||||
|
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Resources/ResInsight.icns)
|
||||||
|
add_dependencies(ResInsight ResInsight-icns)
|
||||||
|
set_target_properties(
|
||||||
|
ResInsight PROPERTIES MACOSX_BUNDLE_ICON_FILE
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/Resources/ResInsight.icns)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(RESINSIGHT_ENABLE_GRPC)
|
||||||
|
list(APPEND THIRD_PARTY_LIBRARIES ${GRPC_LINK_LIBRARIES})
|
||||||
|
|
||||||
|
if(MSVC)
|
||||||
|
set_target_properties(ResInsight PROPERTIES LINK_FLAGS_RELWITHDEBINFO
|
||||||
|
"/NODEFAULTLIB:MSVCRTD.lib")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ##############################################################################
|
||||||
|
# Set up libraries and dependent projects to link with
|
||||||
|
# ##############################################################################
|
||||||
|
|
||||||
|
message(
|
||||||
|
STATUS "Linking with the following OpenGL libraries: ${OPENGL_LIBRARIES}")
|
||||||
|
message(STATUS "GRPC LIBS: ${GRPC_LINK_LIBRARIES}")
|
||||||
|
|
||||||
|
# According to ivarun rt is needed on OpenSuse, and Fedora. See:
|
||||||
|
# https://github.com/OPM/ResInsight/pull/7
|
||||||
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
|
list(APPEND THIRD_PARTY_LIBRARIES rt)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(LINK_LIBRARIES
|
||||||
|
${THIRD_PARTY_LIBRARIES}
|
||||||
|
${OPENGL_LIBRARIES}
|
||||||
|
${QT_LIBRARIES}
|
||||||
|
${OPM_LIBRARIES}
|
||||||
|
${APP_FWK_LIBRARIES}
|
||||||
|
${VIZ_FWK_LIBRARIES}
|
||||||
|
ApplicationLibCode
|
||||||
|
Commands)
|
||||||
|
|
||||||
|
if(RESINSIGHT_ENABLE_GRPC)
|
||||||
|
list(APPEND LINK_LIBRARIES GrpcInterface)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(DEFINED GRPC_LIBRARY_DIRS)
|
||||||
|
target_link_directories(ResInsight PRIVATE ${GRPC_LIBRARY_DIRS})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_link_libraries(ResInsight ${LINK_LIBRARIES})
|
||||||
|
|
||||||
|
# ##############################################################################
|
||||||
|
# Unity builds
|
||||||
|
# ##############################################################################
|
||||||
|
|
||||||
|
set(UNITY_EXCLUDE_FILES
|
||||||
|
# forever is used as variable name, and this symbol is defined by Qt and
|
||||||
|
# used in precompiled headers
|
||||||
|
${ResInsight_SOURCE_DIR}/ThirdParty/gtest/gtest-all.cc
|
||||||
|
qrc_cafAnimControl.cpp
|
||||||
|
qrc_ResInsight.cpp
|
||||||
|
qrc_cafCommandFeatures.cpp
|
||||||
|
# Exclude files including opm-common
|
||||||
|
ProjectDataModel/RimVfpTableExtractor.cpp
|
||||||
|
ProjectDataModel/RimVfpPlot.cpp)
|
||||||
|
|
||||||
|
if(RESINSIGHT_ENABLE_UNITY_BUILD)
|
||||||
|
foreach(fileToExclude ${UNITY_EXCLUDE_FILES})
|
||||||
|
set_source_files_properties(${fileToExclude}
|
||||||
|
PROPERTIES SKIP_UNITY_BUILD_INCLUSION TRUE)
|
||||||
|
endforeach(fileToExclude)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ##############################################################################
|
||||||
|
# Copy Dlls on MSVC
|
||||||
|
# ##############################################################################
|
||||||
|
if(MSVC)
|
||||||
|
|
||||||
|
if(NOT ${RESINSIGHT_ODB_API_DIR} EQUAL "")
|
||||||
|
set(RESINSIGHT_USE_ODB_API 1)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Odb Dlls
|
||||||
|
if(RESINSIGHT_USE_ODB_API)
|
||||||
|
# Find all the dlls
|
||||||
|
file(GLOB RI_ALL_ODB_DLLS ${RESINSIGHT_ODB_API_DIR}/lib/*.dll)
|
||||||
|
|
||||||
|
# Strip off the path
|
||||||
|
foreach(aDLL ${RI_ALL_ODB_DLLS})
|
||||||
|
get_filename_component(filenameWithExt ${aDLL} NAME)
|
||||||
|
list(APPEND RI_ODB_DLLS ${filenameWithExt})
|
||||||
|
endforeach(aDLL)
|
||||||
|
|
||||||
|
foreach(aDLL ${RI_ODB_DLLS})
|
||||||
|
list(APPEND RI_DLL_FILENAMES ${RESINSIGHT_ODB_API_DIR}/lib/${aDLL})
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# HDF5 Dlls
|
||||||
|
if(RESINSIGHT_FOUND_HDF5)
|
||||||
|
set(HDF5_DLL_NAMES hdf5 hdf5_cpp szip zlib)
|
||||||
|
foreach(HDF5_DLL_NAME ${HDF5_DLL_NAMES})
|
||||||
|
list(APPEND RI_DLL_FILENAMES
|
||||||
|
${RESINSIGHT_HDF5_DIR}/bin/${HDF5_DLL_NAME}.dll)
|
||||||
|
endforeach(HDF5_DLL_NAME)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endif(MSVC)
|
||||||
|
|
||||||
|
# Copy to target directory
|
||||||
|
foreach(FILE_TO_COPY ${RI_DLL_FILENAMES})
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ResInsight
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${FILE_TO_COPY}
|
||||||
|
$<TARGET_FILE_DIR:ResInsight>)
|
||||||
|
if(_unityTargetName)
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${_unityTargetName}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${FILE_TO_COPY}
|
||||||
|
$<TARGET_FILE_DIR:ResInsight>)
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
# Generate Python code in a target that is part of ALL_BUILD and depends on
|
||||||
|
# ResInsight
|
||||||
|
if(RESINSIGHT_ENABLE_GRPC)
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT
|
||||||
|
${CMAKE_SOURCE_DIR}/GrpcInterface/Python/rips/generated/resinsight_classes.py
|
||||||
|
COMMAND
|
||||||
|
ResInsight ARGS --console --generate
|
||||||
|
${CMAKE_SOURCE_DIR}/GrpcInterface/Python/rips/generated/resinsight_classes.py
|
||||||
|
DEPENDS ResInsight
|
||||||
|
COMMENT
|
||||||
|
"Generating ${CMAKE_SOURCE_DIR}/GrpcInterface/Python/rips/generated/resinsight_classes.py"
|
||||||
|
)
|
||||||
|
add_custom_target(
|
||||||
|
ResInsightPythonClasses ALL
|
||||||
|
DEPENDS
|
||||||
|
${CMAKE_SOURCE_DIR}/GrpcInterface/Python/rips/generated/resinsight_classes.py
|
||||||
|
)
|
||||||
|
add_dependencies(ResInsightPythonClasses ResInsight)
|
||||||
|
|
||||||
|
endif(RESINSIGHT_ENABLE_GRPC)
|
||||||
|
|
||||||
|
# ##############################################################################
|
||||||
|
# Install
|
||||||
|
# ##############################################################################
|
||||||
|
|
||||||
|
# bundle libraries together with private installation
|
||||||
|
if(RESINSIGHT_PRIVATE_INSTALL)
|
||||||
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
|
# tell binary to first attempt to load libraries from its own directory
|
||||||
|
set(RESINSIGHT_INSTALL_RPATH "\$ORIGIN")
|
||||||
|
|
||||||
|
if(${RESINSIGHT_USE_ODB_API})
|
||||||
|
# This is a "hack" to make ResInsight runtime find the ODB so files used
|
||||||
|
# when compiling. statoil wanted it this way, but we should probbly make a
|
||||||
|
# different installoptions that does things this way, and really do copy
|
||||||
|
# them when doing PRIVATE_INSTALL
|
||||||
|
set(RESINSIGHT_INSTALL_RPATH ${RESINSIGHT_INSTALL_RPATH}
|
||||||
|
${RESINSIGHT_ODB_API_DIR}/lib)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(EXISTS ${RESINSIGHT_ERT_EXTERNAL_LIB_ROOT})
|
||||||
|
# append the external ERT lib root
|
||||||
|
set(RESINSIGHT_INSTALL_RPATH ${RESINSIGHT_INSTALL_RPATH}
|
||||||
|
${RESINSIGHT_ERT_EXTERNAL_LIB_ROOT})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# message("RESINSIGHT_INSTALL_RPATH : " "${RESINSIGHT_INSTALL_RPATH}")
|
||||||
|
|
||||||
|
set_target_properties(ResInsight PROPERTIES INSTALL_RPATH
|
||||||
|
"${RESINSIGHT_INSTALL_RPATH}")
|
||||||
|
|
||||||
|
# bundle Qt5 libraries
|
||||||
|
option(RESINSIGHT_QT5_BUNDLE_LIBRARIES "Bundle Qt5 libraries" OFF)
|
||||||
|
mark_as_advanced(FORCE RESINSIGHT_QT5_BUNDLE_LIBRARIES)
|
||||||
|
if(RESINSIGHT_QT5_BUNDLE_LIBRARIES)
|
||||||
|
message(STATUS "Bundling of Qt5 libraries is enabled")
|
||||||
|
|
||||||
|
# Get root directory
|
||||||
|
get_property(
|
||||||
|
_filepath
|
||||||
|
TARGET "Qt5::Core"
|
||||||
|
PROPERTY LOCATION_RELEASE)
|
||||||
|
get_filename_component(_dir ${_filepath} PATH)
|
||||||
|
|
||||||
|
foreach(qtlib ${QT_LIBRARIES})
|
||||||
|
get_target_property(FILE_NAME_FULL_PATH ${qtlib} LOCATION)
|
||||||
|
message(STATUS "${qtlib} location on disk - ${FILE_NAME_FULL_PATH}")
|
||||||
|
get_filename_component(FILE_NAME_WE ${FILE_NAME_FULL_PATH} NAME_WE)
|
||||||
|
message(STATUS "${FILE_NAME_WE} name without ext - ${FILE_NAME_WE}")
|
||||||
|
|
||||||
|
list(APPEND QT_INSTALL_FILES_WITHOUT_EXTENSION ${FILE_NAME_WE})
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
# XcbQpa is used by libXcb.so required by platform plugin xcb
|
||||||
|
list(APPEND QT_INSTALL_FILES_WITHOUT_EXTENSION libQt5XcbQpa libQt5DBus)
|
||||||
|
|
||||||
|
# append icu
|
||||||
|
list(APPEND QT_INSTALL_FILES_WITHOUT_EXTENSION libicu*)
|
||||||
|
|
||||||
|
foreach(installfile ${QT_INSTALL_FILES_WITHOUT_EXTENSION})
|
||||||
|
file(GLOB FILE_AND_SYMLINKS ${_dir}/${installfile}.so*)
|
||||||
|
install(
|
||||||
|
FILES ${FILE_AND_SYMLINKS}
|
||||||
|
DESTINATION ${RESINSIGHT_INSTALL_FOLDER}
|
||||||
|
OPTIONAL)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
set(QT_PLUGIN_PATH "$ENV{QT_PLUGIN_PATH}")
|
||||||
|
if(QT_PLUGIN_PATH STREQUAL "")
|
||||||
|
set(QT_PLUGIN_PATH "${_dir}/qt5/plugins/")
|
||||||
|
endif()
|
||||||
|
message(STATUS "QT_PLUGIN_PATH : ${QT_PLUGIN_PATH}")
|
||||||
|
|
||||||
|
# include platform files
|
||||||
|
install(FILES ${QT_PLUGIN_PATH}/platforms/libqxcb.so
|
||||||
|
DESTINATION ${RESINSIGHT_INSTALL_FOLDER}/platforms/)
|
||||||
|
install(FILES ${QT_PLUGIN_PATH}/imageformats/libqsvg.so
|
||||||
|
DESTINATION ${RESINSIGHT_INSTALL_FOLDER}/imageformats/)
|
||||||
|
install(FILES ${QT_PLUGIN_PATH}/iconengines/libqsvgicon.so
|
||||||
|
DESTINATION ${RESINSIGHT_INSTALL_FOLDER}/iconengines/)
|
||||||
|
|
||||||
|
# Required by xcb module used to create OpenGL widgets
|
||||||
|
install(
|
||||||
|
FILES ${QT_PLUGIN_PATH}/xcbglintegrations/libqxcb-egl-integration.so
|
||||||
|
DESTINATION ${RESINSIGHT_INSTALL_FOLDER}/plugins/xcbglintegrations/
|
||||||
|
OPTIONAL)
|
||||||
|
install(
|
||||||
|
FILES ${QT_PLUGIN_PATH}/xcbglintegrations/libqxcb-glx-integration.so
|
||||||
|
DESTINATION ${RESINSIGHT_INSTALL_FOLDER}/plugins/xcbglintegrations/
|
||||||
|
OPTIONAL)
|
||||||
|
|
||||||
|
endif(RESINSIGHT_QT5_BUNDLE_LIBRARIES)
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||||
|
# put a .exe.local file in the target directory to pick up DLLs from there
|
||||||
|
install(
|
||||||
|
CODE "exec_program (\"${CMAKE_COMMAND}\" ARGS -E touch \$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}ResInsight${CMAKE_EXECUTABLE_SUFFIX}.local)"
|
||||||
|
)
|
||||||
|
|
||||||
|
set(RESINSIGHT_FILES ${RI_DLL_FILENAMES})
|
||||||
|
|
||||||
|
if(WIN32
|
||||||
|
AND TARGET Qt5::qmake
|
||||||
|
AND NOT TARGET Qt5::windeployqt)
|
||||||
|
get_target_property(_qt5_qmake_location Qt5::qmake IMPORTED_LOCATION)
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND "${_qt5_qmake_location}" -query QT_INSTALL_PREFIX
|
||||||
|
RESULT_VARIABLE return_code
|
||||||
|
OUTPUT_VARIABLE qt5_install_prefix
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
|
set(imported_location "${qt5_install_prefix}/bin/windeployqt.exe")
|
||||||
|
|
||||||
|
message(STATUS "QMAKE: ${_qt5_qmake_location}")
|
||||||
|
message(STATUS "QTPREFIX: ${qt5_install_prefix}")
|
||||||
|
|
||||||
|
if(EXISTS ${imported_location})
|
||||||
|
add_executable(Qt5::windeployqt IMPORTED)
|
||||||
|
|
||||||
|
set_target_properties(Qt5::windeployqt PROPERTIES IMPORTED_LOCATION
|
||||||
|
${imported_location})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# TODO(wjwwood): find a way to make this optional or to run without
|
||||||
|
# "deploying" the necessary dlls and stuff to the bin folder. see:
|
||||||
|
# https://stackoverflow.com/questions/41193584/deploy-all-qt-dependencies-when-building#41199492
|
||||||
|
if(TARGET Qt5::windeployqt)
|
||||||
|
# execute windeployqt in a tmp directory after build
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ResInsight
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E remove_directory
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/windeployqt"
|
||||||
|
COMMAND set PATH=%PATH%$<SEMICOLON>${qt5_install_prefix}/bin
|
||||||
|
COMMAND
|
||||||
|
Qt5::windeployqt --no-compiler-runtime --no-system-d3d-compiler
|
||||||
|
--no-quick-import --no-translations --verbose 0 --dir
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/windeployqt"
|
||||||
|
"$<TARGET_FILE_DIR:ResInsight>/$<TARGET_FILE_NAME:ResInsight>")
|
||||||
|
|
||||||
|
# Qt DLLs
|
||||||
|
message(STATUS "Creating post build step for copying Qt DLLs")
|
||||||
|
|
||||||
|
# copy all files in the windeployqt directory to the installation
|
||||||
|
# directory
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ResInsight
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND
|
||||||
|
${CMAKE_COMMAND} -E copy_directory
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/windeployqt/"
|
||||||
|
$<TARGET_FILE_DIR:ResInsight>)
|
||||||
|
|
||||||
|
if(_unityTargetName)
|
||||||
|
foreach(qtlib ${QT_LIBRARIES})
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${_unityTargetName}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND
|
||||||
|
${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:${qtlib}>
|
||||||
|
$<TARGET_FILE_DIR:${_unityTargetName}>)
|
||||||
|
endforeach(qtlib)
|
||||||
|
endif(_unityTargetName)
|
||||||
|
|
||||||
|
# copy deployment directory during installation
|
||||||
|
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/windeployqt/"
|
||||||
|
DESTINATION ${RESINSIGHT_INSTALL_FOLDER})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# install GRPC-related DLLs and resinsight_classes.py
|
||||||
|
if(RESINSIGHT_ENABLE_GRPC)
|
||||||
|
set(ZLIB_DLL "$<IF:$<CONFIG:Debug>,zlibd1,zlib1>")
|
||||||
|
set(GRPC_DLL_NAMES cares ${ZLIB_DLL} abseil_dll)
|
||||||
|
foreach(dllname ${GRPC_DLL_NAMES})
|
||||||
|
install(FILES $<TARGET_FILE_DIR:ResInsight>/${dllname}.dll
|
||||||
|
DESTINATION ${RESINSIGHT_INSTALL_FOLDER})
|
||||||
|
endforeach(dllname ${GRPC_DLL_NAMES})
|
||||||
|
install(
|
||||||
|
FILES
|
||||||
|
${CMAKE_SOURCE_DIR}/GrpcInterface/Python/rips/generated/resinsight_classes.py
|
||||||
|
DESTINATION ${RESINSIGHT_INSTALL_FOLDER}/Python/rips/generated)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# OpenSSL
|
||||||
|
option(RESINSIGHT_BUNDLE_OPENSSL "Bundle the OpenSSL binary DLLs" OFF)
|
||||||
|
mark_as_advanced(FORCE RESINSIGHT_BUNDLE_OPENSSL)
|
||||||
|
|
||||||
|
if(RESINSIGHT_BUNDLE_OPENSSL)
|
||||||
|
find_package(OpenSSL)
|
||||||
|
if(OPENSSL_FOUND)
|
||||||
|
message("OpenSSL include dir: ${OPENSSL_INCLUDE_DIR}")
|
||||||
|
set(OPENSSL_BIN_DIR ${OPENSSL_INCLUDE_DIR})
|
||||||
|
string(REPLACE "include" "bin" OPENSSL_BIN_DIR ${OPENSSL_BIN_DIR})
|
||||||
|
message("OpenSSL binary dir: ${OPENSSL_BIN_DIR}")
|
||||||
|
|
||||||
|
install(FILES ${OPENSSL_BIN_DIR}/libcrypto-1_1-x64.dll
|
||||||
|
DESTINATION ${RESINSIGHT_INSTALL_FOLDER})
|
||||||
|
install(FILES ${OPENSSL_BIN_DIR}/libssl-1_1-x64.dll
|
||||||
|
DESTINATION ${RESINSIGHT_INSTALL_FOLDER})
|
||||||
|
endif(OPENSSL_FOUND)
|
||||||
|
endif(RESINSIGHT_BUNDLE_OPENSSL)
|
||||||
|
|
||||||
|
# Boost
|
||||||
|
find_package(Boost REQUIRED filesystem system)
|
||||||
|
|
||||||
|
get_property(
|
||||||
|
_filepath
|
||||||
|
TARGET "Boost::filesystem"
|
||||||
|
PROPERTY LOCATION_RELEASE)
|
||||||
|
message("_filepath: ${_filepath}")
|
||||||
|
|
||||||
|
# The location of Boost is based on the file structure as installed by vcpkg
|
||||||
|
# The DLLs are located in the /bin folder
|
||||||
|
get_filename_component(_dir ${_filepath} PATH)
|
||||||
|
string(REPLACE "/lib" "/bin" _dir ${_dir})
|
||||||
|
|
||||||
|
# Use file clobbing, as the dlls are decorated with local compiler info
|
||||||
|
file(GLOB RI_BOOST_DLLS ${_dir}/boost_filesystem*.dll)
|
||||||
|
|
||||||
|
message("RI_BOOST_DLLS : ${RI_BOOST_DLLS}")
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES ${RI_BOOST_DLLS}
|
||||||
|
DESTINATION ${RESINSIGHT_INSTALL_FOLDER}
|
||||||
|
CONFIGURATIONS Debug Release RelWithDebInfo)
|
||||||
|
|
||||||
|
# CRT
|
||||||
|
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP ON)
|
||||||
|
set(CMAKE_INSTALL_OPENMP_LIBRARIES ON)
|
||||||
|
include(InstallRequiredSystemLibraries)
|
||||||
|
install(PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}
|
||||||
|
DESTINATION ${RESINSIGHT_INSTALL_FOLDER})
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
install(TARGETS ResInsight DESTINATION ${RESINSIGHT_INSTALL_FOLDER})
|
||||||
|
|
||||||
|
install(FILES ${RESINSIGHT_FILES} DESTINATION ${RESINSIGHT_INSTALL_FOLDER})
|
||||||
|
|
||||||
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
|
install(
|
||||||
|
FILES ${CMAKE_CURRENT_SOURCE_DIR}/resinsight
|
||||||
|
DESTINATION ${RESINSIGHT_INSTALL_FOLDER}
|
||||||
|
PERMISSIONS
|
||||||
|
OWNER_READ
|
||||||
|
OWNER_WRITE
|
||||||
|
OWNER_EXECUTE
|
||||||
|
GROUP_READ
|
||||||
|
GROUP_EXECUTE
|
||||||
|
WORLD_READ
|
||||||
|
WORLD_EXECUTE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
else(RESINSIGHT_PRIVATE_INSTALL)
|
||||||
|
# binaries go in /usr/bin
|
||||||
|
install(TARGETS ResInsight DESTINATION bin)
|
||||||
|
# license go in /usr/share/doc
|
||||||
|
install(FILES ${RESINSIGHT_LICENSE_FILES} DESTINATION share/doc/ResInsight)
|
||||||
|
# no bundled libraries for system install application icon
|
||||||
|
install(
|
||||||
|
FILES ${CMAKE_CURRENT_SOURCE_DIR}/Resources/AppLogo48x48.png
|
||||||
|
DESTINATION share/icons/hicolor/48x48/apps
|
||||||
|
RENAME ResInsight.png)
|
||||||
|
# desktop environment icon; remember to call `update-desktop-database` in
|
||||||
|
# package post-install scripts
|
||||||
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/resinsight.desktop.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/resinsight.desktop @ONLY)
|
||||||
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/resinsight.desktop
|
||||||
|
DESTINATION share/applications)
|
||||||
|
endif(RESINSIGHT_PRIVATE_INSTALL)
|
||||||
|
|
||||||
|
# ##############################################################################
|
||||||
|
# Installation packaging
|
||||||
|
# ##############################################################################
|
||||||
|
|
||||||
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
|
set(CPACK_GENERATOR TGZ)
|
||||||
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||||
|
set(CPACK_GENERATOR ZIP)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Handling of system name on Windows
|
||||||
|
if(${CMAKE_SYSTEM_NAME} MATCHES Windows)
|
||||||
|
if(CMAKE_CL_64)
|
||||||
|
set(CPACK_SYSTEM_NAME win64)
|
||||||
|
else()
|
||||||
|
set(CPACK_SYSTEM_NAME win32)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Append el5 when compiled on RHEL5 and el6 if compiled on RHEL6
|
||||||
|
string(REGEX MATCH "el[6,7,8]?" RESINSIGHT_RHEL_SYSTEM_NAME ${CMAKE_SYSTEM})
|
||||||
|
|
||||||
|
set(RESINSIGHT_PACKAGE_NAME "ResInsight")
|
||||||
|
|
||||||
|
set(RESINSIGHT_PACKAGE_NAME "${RESINSIGHT_PACKAGE_NAME}-${STRPRODUCTVER}")
|
||||||
|
|
||||||
|
if(NOT ${RESINSIGHT_ODB_API_DIR} EQUAL "")
|
||||||
|
set(RESINSIGHT_PACKAGE_NAME "${RESINSIGHT_PACKAGE_NAME}_odb")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT ${OCTAVE_VERSION_STRING} EQUAL "")
|
||||||
|
set(RESINSIGHT_PACKAGE_NAME
|
||||||
|
"${RESINSIGHT_PACKAGE_NAME}_oct-${OCTAVE_VERSION_STRING}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(RESINSIGHT_BUNDLE_OPENSSL AND OPENSSL_FOUND)
|
||||||
|
set(RESINSIGHT_PACKAGE_NAME "${RESINSIGHT_PACKAGE_NAME}_openssl")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Append el5 when compiled on RHEL5 and el6 if compiled on RHEL6
|
||||||
|
if(NOT "${RESINSIGHT_RHEL_SYSTEM_NAME}" STREQUAL "")
|
||||||
|
set(RESINSIGHT_PACKAGE_NAME
|
||||||
|
"${RESINSIGHT_PACKAGE_NAME}_${RESINSIGHT_RHEL_SYSTEM_NAME}")
|
||||||
|
else()
|
||||||
|
set(RESINSIGHT_PACKAGE_NAME "${RESINSIGHT_PACKAGE_NAME}_${CPACK_SYSTEM_NAME}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# message("RESINSIGHT_PACKAGE_NAME : " ${RESINSIGHT_PACKAGE_NAME})
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME ${RESINSIGHT_PACKAGE_NAME})
|
||||||
|
|
||||||
|
include(CPack)
|
Before Width: | Height: | Size: 817 B After Width: | Height: | Size: 817 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 750 B After Width: | Height: | Size: 750 B |
Before Width: | Height: | Size: 813 B After Width: | Height: | Size: 813 B |
Before Width: | Height: | Size: 860 B After Width: | Height: | Size: 860 B |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 386 B After Width: | Height: | Size: 386 B |
Before Width: | Height: | Size: 517 B After Width: | Height: | Size: 517 B |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 869 B After Width: | Height: | Size: 869 B |
Before Width: | Height: | Size: 651 B After Width: | Height: | Size: 651 B |
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 331 B After Width: | Height: | Size: 331 B |
Before Width: | Height: | Size: 317 B After Width: | Height: | Size: 317 B |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 592 B After Width: | Height: | Size: 592 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 850 B After Width: | Height: | Size: 850 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 340 B |
Before Width: | Height: | Size: 780 B After Width: | Height: | Size: 780 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 720 B After Width: | Height: | Size: 720 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 352 B After Width: | Height: | Size: 352 B |
Before Width: | Height: | Size: 385 B After Width: | Height: | Size: 385 B |
Before Width: | Height: | Size: 360 B After Width: | Height: | Size: 360 B |
Before Width: | Height: | Size: 430 B After Width: | Height: | Size: 430 B |
Before Width: | Height: | Size: 951 B After Width: | Height: | Size: 951 B |
Before Width: | Height: | Size: 961 B After Width: | Height: | Size: 961 B |
Before Width: | Height: | Size: 683 B After Width: | Height: | Size: 683 B |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 1023 B After Width: | Height: | Size: 1023 B |
Before Width: | Height: | Size: 675 B After Width: | Height: | Size: 675 B |
Before Width: | Height: | Size: 737 B After Width: | Height: | Size: 737 B |
Before Width: | Height: | Size: 851 B After Width: | Height: | Size: 851 B |
Before Width: | Height: | Size: 991 B After Width: | Height: | Size: 991 B |
Before Width: | Height: | Size: 615 B After Width: | Height: | Size: 615 B |
Before Width: | Height: | Size: 845 B After Width: | Height: | Size: 845 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 480 B After Width: | Height: | Size: 480 B |
Before Width: | Height: | Size: 863 B After Width: | Height: | Size: 863 B |
Before Width: | Height: | Size: 685 B After Width: | Height: | Size: 685 B |
Before Width: | Height: | Size: 805 KiB After Width: | Height: | Size: 805 KiB |
Before Width: | Height: | Size: 996 B After Width: | Height: | Size: 996 B |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 474 B After Width: | Height: | Size: 474 B |
Before Width: | Height: | Size: 532 B After Width: | Height: | Size: 532 B |
Before Width: | Height: | Size: 817 B After Width: | Height: | Size: 817 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 406 B |
Before Width: | Height: | Size: 875 B After Width: | Height: | Size: 875 B |
Before Width: | Height: | Size: 758 B After Width: | Height: | Size: 758 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 680 B After Width: | Height: | Size: 680 B |