cmake_minimum_required (VERSION 2.8.12) project (ApplicationCode) # Open GL find_package( OpenGL ) if (RESINSIGHT_BUILD_WITH_QT5) find_package(Qt5 COMPONENTS Core QUIET) endif(RESINSIGHT_BUILD_WITH_QT5) if (Qt5Core_FOUND) find_package(Qt5 CONFIG REQUIRED Core Gui OpenGL Network Script Widgets) set(QT_LIBRARIES Qt5::Core Qt5::Gui Qt5::Network Qt5::OpenGL Qt5::Script Qt5::Widgets) else() set (QT_COMPONENTS_REQUIRED QtCore QtGui QtMain QtOpenGl QtNetwork QtScript) find_package(Qt4 COMPONENTS ${QT_COMPONENTS_REQUIRED} REQUIRED) include(${QT_USE_FILE}) endif(Qt5Core_FOUND) # NB: The generated file is written to Cmake binary folder to avoid source tree pollution # This folder is added to include_directories CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/ApplicationCode/Adm/RiaVersionInfo.h.cmake ${CMAKE_BINARY_DIR}/Generated/RiaVersionInfo.h ) if (MSVC AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.11)) # VS 2017 : Disable warnings from from gtest code, using deprecated code related to TR1 add_definitions(-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING) message("Add flag to disable warings from gtest - _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING") endif() include_directories( # required for compilation of gtest, should be refactored ${ResInsight_SOURCE_DIR}/ThirdParty ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/Adm ${CMAKE_CURRENT_SOURCE_DIR}/Application ${CMAKE_CURRENT_SOURCE_DIR}/Application/Tools ${CMAKE_CURRENT_SOURCE_DIR}/Application/Tools/WellPathTools ${CMAKE_CURRENT_SOURCE_DIR}/Commands ${CMAKE_CURRENT_SOURCE_DIR}/Commands/EclipseCommands ${CMAKE_CURRENT_SOURCE_DIR}/FileInterface ${CMAKE_CURRENT_SOURCE_DIR}/SocketInterface ${CMAKE_CURRENT_SOURCE_DIR}/Measurement ${CMAKE_CURRENT_SOURCE_DIR}/ModelVisualization ${CMAKE_CURRENT_SOURCE_DIR}/ModelVisualization/GridBox ${CMAKE_CURRENT_SOURCE_DIR}/ModelVisualization/Intersections ${CMAKE_CURRENT_SOURCE_DIR}/UserInterface ${CMAKE_CURRENT_SOURCE_DIR}/CommandFileInterface ${CMAKE_CURRENT_SOURCE_DIR}/CommandFileInterface/Core ${CMAKE_CURRENT_SOURCE_DIR}/ProjectDataModel ${CMAKE_CURRENT_SOURCE_DIR}/ProjectDataModel/Annotations ${CMAKE_CURRENT_SOURCE_DIR}/ProjectDataModel/Completions ${CMAKE_CURRENT_SOURCE_DIR}/ProjectDataModel/Flow ${CMAKE_CURRENT_SOURCE_DIR}/ProjectDataModel/Measurement ${CMAKE_CURRENT_SOURCE_DIR}/ProjectDataModel/Summary ${CMAKE_CURRENT_SOURCE_DIR}/ResultStatisticsCache ${CMAKE_CURRENT_SOURCE_DIR}/ReservoirDataModel ${CMAKE_CURRENT_SOURCE_DIR}/ReservoirDataModel/Completions ${CMAKE_CURRENT_SOURCE_DIR}/WellPathImportSsihub ${CMAKE_CURRENT_SOURCE_DIR}/GeoMech/OdbReader ${CMAKE_CURRENT_SOURCE_DIR}/GeoMech/GeoMechDataModel ${CMAKE_CURRENT_SOURCE_DIR}/GeoMech/GeoMechVisualization ${CMAKE_BINARY_DIR}/Generated ${CMAKE_CURRENT_BINARY_DIR} ) ############################################################################# # Defining all the source (and header) files ############################################################################# # Use all h files in the subdirectories to make them available in the project file( GLOB_RECURSE HEADER_FILES *.h ) set( SOCKET_INTERFACE_FILES SocketInterface/RiaSocketServer.cpp SocketInterface/RiaProjectInfoCommands.cpp SocketInterface/RiaCaseInfoCommands.cpp SocketInterface/RiaGeometryCommands.cpp SocketInterface/RiaNNCCommands.cpp SocketInterface/RiaPropertyDataCommands.cpp SocketInterface/RiaWellDataCommands.cpp SocketInterface/RiaSocketTools.cpp SocketInterface/RiaSocketDataTransfer.cpp ) list( APPEND CPP_SOURCES ${SOCKET_INTERFACE_FILES} ${UNIT_TEST_FILES} ) list( APPEND REFERENCED_CMAKE_FILES Application/CMakeLists_files.cmake Application/Tools/CMakeLists_files.cmake Application/Tools/WellPathTools/CMakeLists_files.cmake ReservoirDataModel/CMakeLists_files.cmake ReservoirDataModel/CMakeLists_filesNotToUnitTest.cmake ReservoirDataModel/Completions/CMakeLists_files.cmake FileInterface/CMakeLists_files.cmake ProjectDataModel/CMakeLists_files.cmake ProjectDataModel/Summary/CMakeLists_files.cmake ProjectDataModel/Flow/CMakeLists_files.cmake ProjectDataModel/Annotations/CMakeLists_files.cmake ProjectDataModel/Completions/CMakeLists_files.cmake ProjectDataModel/Measurement/CMakeLists_files.cmake GeoMech/GeoMechVisualization/CMakeLists_files.cmake ModelVisualization/CMakeLists_files.cmake ModelVisualization/GridBox/CMakeLists_files.cmake ModelVisualization/Intersections/CMakeLists_files.cmake ModelVisualization/WindowEdgeAxesOverlayItem/CMakeLists_files.cmake UserInterface/CMakeLists_files.cmake Commands/CMakeLists_files.cmake Commands/ApplicationCommands/CMakeLists_files.cmake Commands/AnnotationCommands/CMakeLists_files.cmake Commands/CompletionCommands/CMakeLists_files.cmake Commands/CompletionExportCommands/CMakeLists_files.cmake Commands/CrossSectionCommands/CMakeLists_files.cmake Commands/EclipseCommands/CMakeLists_files.cmake Commands/EclipseCommands/EclipseWell/CMakeLists_files.cmake Commands/ExportCommands/CMakeLists_files.cmake Commands/FlowCommands/CMakeLists_files.cmake Commands/HoloLensCommands/CMakeLists_files.cmake Commands/IntersectionBoxCommands/CMakeLists_files.cmake Commands/IntersectionViewCommands/CMakeLists_files.cmake Commands/MeasurementCommands/CMakeLists_files.cmake Commands/OctaveScriptCommands/CMakeLists_files.cmake Commands/OperationsUsingObjReferences/CMakeLists_files.cmake Commands/SummaryPlotCommands/CMakeLists_files.cmake Commands/ToggleCommands/CMakeLists_files.cmake Commands/ViewLink/CMakeLists_files.cmake Commands/WellLogCommands/CMakeLists_files.cmake Commands/WellPathCommands/CMakeLists_files.cmake CommandFileInterface/CMakeLists_files.cmake CommandFileInterface/Core/CMakeLists_files.cmake Commands/FractureCommands/CMakeLists_files.cmake ) option (RESINSIGHT_INCLUDE_APPLICATION_UNIT_TESTS "Include ApplicationCode Unit Tests" OFF) if (RESINSIGHT_INCLUDE_APPLICATION_UNIT_TESTS) add_definitions(-DUSE_UNIT_TESTS) list( APPEND REFERENCED_CMAKE_FILES UnitTests/CMakeLists_files.cmake ) list( APPEND CPP_SOURCES ${ResInsight_SOURCE_DIR}/ThirdParty/gtest/gtest-all.cc ) endif() # Include source file lists from *.cmake files foreach (referencedfile ${REFERENCED_CMAKE_FILES}) include (${referencedfile}) endforeach (referencedfile) list( APPEND CPP_SOURCES ${CODE_SOURCE_FILES} ) ############################################################################# # Sub-directory projects ############################################################################# add_subdirectory(WellPathImportSsihub) add_subdirectory(ResultStatisticsCache) set( RI_LIBRARIES WellPathImportSsihub ResultStatisticsCache ) # # Odb api # set(RESINSIGHT_ODB_API_DIR "" CACHE PATH "Optional path to the ABAQUS ODB API from Simulia. Needed for support of geomechanical models") if(NOT ${RESINSIGHT_ODB_API_DIR} EQUAL "") add_definitions(-DUSE_ODB_API) add_subdirectory(GeoMech/OdbReader) SET(RESINSIGHT_USE_ODB_API 1) MESSAGE( STATUS "Using ODB-Api from : ${RESINSIGHT_ODB_API_DIR}" ) endif() add_subdirectory(GeoMech/GeoMechDataModel) list( APPEND RI_LIBRARIES RigGeoMechDataModel ) if (RESINSIGHT_USE_ODB_API) list( APPEND RI_LIBRARIES RifOdbReader ) endif() # # HDF5 # if (RESINSIGHT_FOUND_HDF5) list( APPEND CPP_SOURCES FileInterface/RifHdf5Reader.h FileInterface/RifHdf5Reader.cpp ) source_group( "FileInterface" FILES FileInterface/RifHdf5Reader.h FileInterface/RifHdf5Reader.cpp ) add_definitions(-DUSE_HDF5) endif() if (RESINSIGHT_ENABLE_PROTOTYPE_FEATURE_SOURING) add_definitions(-DENABLE_SOURING) endif() ############################################################################# # Qt specifics: Moc, ui, resources ############################################################################# set ( QT_MOC_HEADERS ${QT_MOC_HEADERS} ProjectDataModel/RimMimeData.h ProjectDataModel/RimIntersectionBox.h SocketInterface/RiaSocketServer.h ) if (Qt5Core_FOUND) qt5_wrap_cpp(MOC_SOURCE_FILES ${QT_MOC_HEADERS} ) qt5_wrap_ui( FORM_FILES_CPP ${QT_UI_FILES} ) else() qt4_wrap_cpp(MOC_SOURCE_FILES ${QT_MOC_HEADERS} ) qt4_wrap_ui( FORM_FILES_CPP ${QT_UI_FILES} ) endif() # 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 on specified files if ( NOT CMAKE_AUTOMOC) if (Qt5Core_FOUND) qt5_add_resources( QRC_FILES_CPP ${QRC_FILES} ) else() qt4_add_resources( QRC_FILES_CPP ${QRC_FILES} ) endif(Qt5Core_FOUND) endif(NOT CMAKE_AUTOMOC) # Adding resource (RC) files for Windows if ( MSVC ) set( WIN_RESOURCE Resources/ResInsight.rc ) endif() ################################################################################ # Create source groups - see also included CMakeLists_files.cmake ################################################################################ source_group( "ModelVisualization" FILES ${MODEL_VISUALIZATION_FILES} ) source_group( "SocketInterface" FILES ${SOCKET_INTERFACE_FILES} ) source_group( "UnitTests" FILES ${UNIT_TEST_FILES} ) ############################################################################# # 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} ../ResInsightVersion.cmake ../.clang-format ../.clang-tidy ) add_executable( ResInsight ${EXE_FILES} ) 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 # If possible, the following command is supposed to be the final target # set_target_properties(ResInsight PROPERTIES COMPILE_FLAGS "/W4 /wd4190 /wd4100 /wd4127") set_target_properties(ResInsight PROPERTIES COMPILE_FLAGS "/W4 /wd4190 /wd4100 /wd4127 /wd4245") 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_target_properties(ResInsight PROPERTIES COMPILE_FLAGS "/wd4505") endif() 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 () ############################################################################# # Set up libraries and dependent projects to link with ############################################################################# set( LINK_LIBRARIES ${OPM_LIBRARIES} ${RI_LIBRARIES} ${APP_FWK_LIBRARIES} ${VIZ_FWK_LIBRARIES} ${THIRD_PARTY_LIBRARIES} ${OPENGL_LIBRARIES} ${QT_LIBRARIES} ) # According to ivarun this is needed on OpenSuse, and Fedora. See: https://github.com/OPM/ResInsight/pull/7 if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") list(APPEND EXTERNAL_LINK_LIBRARIES rt ) endif() target_link_libraries( ResInsight ${LINK_LIBRARIES} ${EXTERNAL_LINK_LIBRARIES}) ############################################################################# # cotire ############################################################################# if(RESINSIGHT_ENABLE_COTIRE) set( COTIRE_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 # multiple QRC files are not supported qrc_cafAnimControl.cxx qrc_ResInsight.cxx # mix of cvf and Qt namespaces ModelVisualization/GridBox/RivGridBoxGenerator.cpp ModelVisualization/Intersections/RivIntersectionGeometryGenerator.cpp # exclude file using Eigen ReservoirDataModel/RigCellGeometryTools.cpp ReservoirDataModel/Completions/RigTransmissibilityCondenser.cpp ReservoirDataModel/Completions/RigEclipseToStimPlanCellTransmissibilityCalculator.cpp ReservoirDataModel/Completions/RigEclipseToStimPlanCalculator.cpp # exclude file using SolveSpace Application/Tools/WellPathTools/RiaSCurveCalculator.cpp # QT 5 qrc_cafAnimControl.cpp qrc_ResInsight.cpp ProjectDataModel/RimContourMapView.cpp Commands/CompletionExportCommands/RicExportFractureCompletionsImpl.cpp ) foreach (fileToExclude ${COTIRE_EXCLUDE_FILES}) set_source_files_properties (${fileToExclude} PROPERTIES COTIRE_EXCLUDED TRUE) endforeach(fileToExclude) # disable precompiled headers set_target_properties(ResInsight PROPERTIES COTIRE_ENABLE_PRECOMPILED_HEADER FALSE) cotire(ResInsight) # make sure the unity target is included in the active builds to trigger rebuild before debug get_target_property(_unityTargetName ResInsight COTIRE_UNITY_TARGET_NAME) set_target_properties(${_unityTargetName} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD FALSE) set_target_properties(ResInsight PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE) endif() ############################################################################# # Copy Dlls on MSVC ############################################################################# if (MSVC) # Qt DLLs if (Qt5Core_FOUND) message(STATUS "Creating post build step for copying Qt DLLs") foreach (qtlib ${QT_LIBRARIES}) add_custom_command(TARGET ResInsight POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ ) endforeach(qtlib) else() set (QTLIBLIST QtCore4 QtCored4 QtGui4 QtGuid4 QtOpenGl4 QtOpenGld4 QtNetwork4 QtNetworkd4 QtScript4 QtScriptd4 QtScriptTools4 QtScriptToolsd4) foreach (qtlib ${QTLIBLIST}) list(APPEND RI_DLL_FILENAMES ${QT_BINARY_DIR}/${qtlib}.dll) endforeach( qtlib ) 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}" "${CMAKE_CURRENT_BINARY_DIR}/$") if (_unityTargetName) add_custom_command(TARGET ${_unityTargetName} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FILE_TO_COPY}" "${CMAKE_CURRENT_BINARY_DIR}/$") endif() endforeach() ############################################################################# # Install ############################################################################# set (RESINSIGHT_LICENSE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Adm/LicenseInformation.txt ${CMAKE_CURRENT_SOURCE_DIR}/Adm/gplLicense.txt ) # 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}") 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(Qt5_FOUND AND 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") 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%$${qt5_install_prefix}/bin COMMAND Qt5::windeployqt --dir "${CMAKE_CURRENT_BINARY_DIR}/windeployqt" "$/$" ) # copy deployment directory during installation install( DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/windeployqt/" DESTINATION ${RESINSIGHT_INSTALL_FOLDER} ) endif() # 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() set (RESINSIGHT_FILES ${RESINSIGHT_FILES} ${RESINSIGHT_LICENSE_FILES}) 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[5,6]?" 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_FOUND_HDF5) set (RESINSIGHT_PACKAGE_NAME "${RESINSIGHT_PACKAGE_NAME}_souring") 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)