X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=CMakeLists.txt;h=6e39cbacd50c59960848636096785585b0df8753;hb=9df16add25fa2f4c5f0eb9cb31ac53ac1b36e85c;hp=eeb3e46c93cbe3defeb746e4c677227d7d7567a8;hpb=849328b50313161b117532514a943d9321802fe4;p=modules%2Fparavis.git diff --git a/CMakeLists.txt b/CMakeLists.txt index eeb3e46c..6e39cbac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2010-2015 CEA/DEN, EDF R&D +# Copyright (C) 2010-2021 CEA/DEN, EDF R&D # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -18,34 +18,38 @@ # CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8 FATAL_ERROR) INCLUDE(CMakeDependentOption) + +# Project name +# ============ +# original PROJECT(SalomePARAVIS C CXX) +# upper case +STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC) IF(WIN32) STRING( REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replacementFlags ${CMAKE_SHARED_LINKER_FLAGS_DEBUG} ) SET( CMAKE_SHARED_LINKER_FLAGS_DEBUG "${replacementFlags}" ) ENDIF(WIN32) -# Ensure a proper linker behavior: -CMAKE_POLICY(SET CMP0003 NEW) +# Common CMake macros +# =================== +SET(CONFIGURATION_ROOT_DIR $ENV{CONFIGURATION_ROOT_DIR} CACHE PATH "Path to the Salome CMake configuration files") +IF(EXISTS ${CONFIGURATION_ROOT_DIR}) + LIST(APPEND CMAKE_MODULE_PATH "${CONFIGURATION_ROOT_DIR}/cmake") + INCLUDE(SalomeMacros NO_POLICY_SCOPE) +ELSE() + MESSAGE(FATAL_ERROR "We absolutely need the Salome CMake configuration files, please define CONFIGURATION_ROOT_DIR !") +ENDIF() # Versioning # =========== -# Project name, upper case -STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC) - -SET(${PROJECT_NAME_UC}_MAJOR_VERSION 7) -SET(${PROJECT_NAME_UC}_MINOR_VERSION 7) -SET(${PROJECT_NAME_UC}_PATCH_VERSION 0) -SET(${PROJECT_NAME_UC}_VERSION - ${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION}) -SET(${PROJECT_NAME_UC}_VERSION_DEV 1) +SALOME_SETUP_VERSION(9.7.0 DEVELOPMENT) +MESSAGE(STATUS "Building ${PROJECT_NAME_UC} ${${PROJECT_NAME_UC}_VERSION} from \"${${PROJECT_NAME_UC}_GIT_SHA1}\"") # Find KERNEL # =========== SET(KERNEL_ROOT_DIR $ENV{KERNEL_ROOT_DIR} CACHE PATH "Path to the Salome KERNEL") IF(EXISTS ${KERNEL_ROOT_DIR}) - LIST(APPEND CMAKE_MODULE_PATH "${KERNEL_ROOT_DIR}/salome_adm/cmake_files") - INCLUDE(SalomeMacros) FIND_PACKAGE(SalomeKERNEL REQUIRED) ADD_DEFINITIONS(${KERNEL_DEFINITIONS}) INCLUDE_DIRECTORIES(${KERNEL_INCLUDE_DIRS}) @@ -58,25 +62,15 @@ ENDIF(EXISTS ${KERNEL_ROOT_DIR}) INCLUDE(SalomeSetupPlatform) # From KERNEL # Always build libraries as shared objects: SET(BUILD_SHARED_LIBS TRUE) -# Local macros: -LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/adm_local/cmake_files") - -# Detect GUI root dir (but doesn't find GUI yet! See below) -# =================== -SET(GUI_ROOT_DIR $ENV{GUI_ROOT_DIR} CACHE PATH "Path to the Salome GUI") -IF(EXISTS ${GUI_ROOT_DIR}) - LIST(APPEND CMAKE_MODULE_PATH "${GUI_ROOT_DIR}/adm_local/cmake_files") -ELSE() - MESSAGE(FATAL_ERROR "We absolutely need a Salome GUI, please define GUI_ROOT_DIR") -ENDIF() # User options # ============ OPTION(SALOME_BUILD_DOC "Generate SALOME GUI documentation" ON) OPTION(SALOME_BUILD_TESTS "Build SALOME tests" ON) -OPTION(SALOME_PARAVIS_ALL_TEST "Add all tests for Salome PARAVIS module" OFF) +CMAKE_DEPENDENT_OPTION(SALOME_PARAVIS_NO_VISU_TESTS "Suppress GUI features testing" OFF + "SALOME_BUILD_TESTS" OFF) OPTION(SALOME_PARAVIS_BUILD_PLUGINS "Build PARAVIS plugins (MEDReader, etc ...)" ON) -OPTION(SALOME_PARAVIS_BUILD_CORBA_PLUGINS "Build PARAVIS CORBA plugins (ParaMEDCorba -- this requires the SALOME MED module)" ON) +OPTION(SALOME_PARAVIS_BUILD_CORBA_PLUGINS "Build PARAVIS CORBA plugins (ParaMEDCorba -- this requires the SALOME FIELDS module)" ON) OPTION(SALOME_PARAVIS_USE_GEOM_SOURCE "Import a GEOMETRY object to PARAVIS via its Corba IOR" OFF) OPTION(SALOME_PARAVIS_USE_SMESH_SOURCE "Import a MESH object to PARAVIS via its Corba IOR" OFF) CMAKE_DEPENDENT_OPTION(SALOME_LIGHT_ONLY "Build SALOME Light only (no CORBA)" OFF @@ -91,8 +85,8 @@ CMAKE_DEPENDENT_OPTION(SALOME_LIGHT_ONLY "Build SALOME Light only (no CORBA)" OF ## ## From KERNEL: ## - -FIND_PACKAGE(SalomePython REQUIRED) +FIND_PACKAGE(SalomePythonInterp REQUIRED) +FIND_PACKAGE(SalomePythonLibs REQUIRED) IF(NOT SALOME_LIGHT_ONLY) FIND_PACKAGE(SalomeOmniORB REQUIRED) @@ -107,66 +101,61 @@ IF(SALOME_BUILD_DOC) SALOME_LOG_OPTIONAL_PACKAGE(Sphinx SALOME_BUILD_DOC) ENDIF() -## -## From GUI: part 1 (Qt must be checked before ParaView) -## -IF (NOT SALOME_GUI_BUILD_WITH_QT5) - FIND_PACKAGE(SalomeQt4 REQUIRED COMPONENTS QtCore QtGui QtXml QtHelp) - # This search for qhelpgenerator is required here - # to avoid detecting native one due to bug in ParaViewMacros.cmake - FIND_PROGRAM(QT_HELP_GENERATOR - qhelpgenerator - PATHS "${QT_BINARY_DIR}" - NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH - DOC "qhelpgenerator used to compile Qt help project files") - MARK_AS_ADVANCED(QT_HELP_GENERATOR) +# Find GUI +# =================== +SET(GUI_ROOT_DIR $ENV{GUI_ROOT_DIR} CACHE PATH "Path to the Salome GUI") +IF(EXISTS ${GUI_ROOT_DIR}) + # We should skip detection of VTK (done automatically from GUI) as we need to detect ParaView instead; + # otherwise ParaView targets are not found + SET(OMIT_DETECT_PACKAGE_VTK ON) + FIND_PACKAGE(SalomeGUI REQUIRED) + SALOME_GUI_WITH_CORBA() # check whether GUI builded with CORBA + SALOME_GUI_MODE(SALOME_USE_SALOMEOBJECT SALOME_USE_PVVIEWER) + ADD_DEFINITIONS(${GUI_DEFINITIONS}) + INCLUDE_DIRECTORIES(${GUI_INCLUDE_DIRS}) ELSE() - FIND_PACKAGE(SalomeQt5 REQUIRED) + MESSAGE(FATAL_ERROR "We absolutely need a Salome GUI, please define GUI_ROOT_DIR") ENDIF() ## -## Specific to ParaViS: +## From GUI ## -FIND_PACKAGE(SalomeParaView REQUIRED) +FIND_PACKAGE(SalomeQt5 REQUIRED) +## +## Specific to ParaViS: +## -# GUI itself has to be loaded AFTER ParaView: the ParaView config doesn't mix -# well with the VTK one (and GUI loads VTK): -FIND_PACKAGE(SalomeGUI REQUIRED) -SALOME_GUI_WITH_CORBA() # check whether GUI builded with CORBA -SALOME_GUI_MODE(SALOME_USE_SALOMEOBJECT SALOME_USE_PVVIEWER) -ADD_DEFINITIONS(${GUI_DEFINITIONS}) -INCLUDE_DIRECTORIES(${GUI_INCLUDE_DIRS}) +FIND_PACKAGE(SalomeParaView REQUIRED) ## ## From MEDCoupling / MEDFile / or MEDModule (if CORBA plugin required): ## +SET(SALOME_PARAVIS_BUILD_INSITU OFF) IF(SALOME_PARAVIS_BUILD_PLUGINS) - # If CORBA plugins required, take in MED module + # If CORBA plugins required, take in MED module IF(SALOME_PARAVIS_BUILD_CORBA_PLUGINS) - SET(MED_ROOT_DIR $ENV{MED_ROOT_DIR} CACHE PATH "Path to the SALOME MED module") - IF(EXISTS ${MED_ROOT_DIR}) - LIST(APPEND CMAKE_MODULE_PATH "${MED_ROOT_DIR}/adm_local/cmake_files") - FIND_PACKAGE(SalomeMED) - SALOME_LOG_OPTIONAL_PACKAGE(SalomeMED SALOME_PARAVIS_BUILD_CORBA_PLUGINS) + SET(FIELDS_ROOT_DIR $ENV{FIELDS_ROOT_DIR} CACHE PATH "Path to the SALOME FIELDS module") + IF(EXISTS ${FIELDS_ROOT_DIR}) + FIND_PACKAGE(SalomeFIELDS) + SALOME_LOG_OPTIONAL_PACKAGE(SalomeFIELDS SALOME_PARAVIS_BUILD_CORBA_PLUGINS) + IF(SALOME_USE_MPI) + SET(SALOME_PARAVIS_BUILD_INSITU ON) + ENDIF(SALOME_USE_MPI) ENDIF() ELSE(SALOME_PARAVIS_BUILD_CORBA_PLUGINS) SET(MEDCOUPLING_ROOT_DIR $ENV{MEDCOUPLING_ROOT_DIR} CACHE PATH "Path to the MEDCoupling tool") - IF(EXISTS ${MEDCOUPLING_ROOT_DIR}) - LIST(APPEND CMAKE_MODULE_PATH "${MEDCOUPLING_ROOT_DIR}/cmake_files") - ENDIF() FIND_PACKAGE(SalomeMEDCoupling) # will load MEDFile SALOME_LOG_OPTIONAL_PACKAGE(MEDCoupling SALOME_PARAVIS_BUILD_PLUGINS) - ENDIF() + ENDIF() ENDIF(SALOME_PARAVIS_BUILD_PLUGINS) - ## ## From GEOM ## + IF(SALOME_PARAVIS_BUILD_PLUGINS AND SALOME_PARAVIS_USE_GEOM_SOURCE) SET(GEOM_ROOT_DIR $ENV{GEOM_ROOT_DIR} CACHE PATH "Path to the Salome GEOM") IF(EXISTS ${GEOM_ROOT_DIR}) - LIST(APPEND CMAKE_MODULE_PATH "${GEOM_ROOT_DIR}/adm_local/cmake_files") FIND_PACKAGE(SalomeGEOM REQUIRED COMPONENTS GEOMClient SalomeIDLGEOM OCC2VTK) ELSE() MESSAGE(WARNING "Salome GEOM is absolutely needed to import GEOM objects to PARAVIS. @@ -189,7 +178,6 @@ IF(SALOME_PARAVIS_BUILD_PLUGINS AND SALOME_PARAVIS_USE_SMESH_SOURCE) IF(NOT SALOME_PARAVIS_USE_GEOM_SOURCE) SET(GEOM_ROOT_DIR $ENV{GEOM_ROOT_DIR} CACHE PATH "Path to the Salome GEOM") IF(EXISTS ${GEOM_ROOT_DIR}) - LIST(APPEND CMAKE_MODULE_PATH "${GEOM_ROOT_DIR}/adm_local/cmake_files") FIND_PACKAGE(SalomeGEOM REQUIRED COMPONENTS SalomeIDLGEOM ) ELSE() MESSAGE(WARNING "Salome GEOM is absolutely needed to import MESH objects to PARAVIS. @@ -201,7 +189,6 @@ IF(SALOME_PARAVIS_BUILD_PLUGINS AND SALOME_PARAVIS_USE_SMESH_SOURCE) ENDIF() SET(SMESH_ROOT_DIR $ENV{SMESH_ROOT_DIR} CACHE PATH "Path to the Salome SMESH") IF(SALOME_PARAVIS_USE_GEOM_SOURCE AND EXISTS ${SMESH_ROOT_DIR}) - LIST(APPEND CMAKE_MODULE_PATH "${SMESH_ROOT_DIR}/adm_local/cmake_files") FIND_PACKAGE(SalomeSMESH REQUIRED) ELSE() MESSAGE(WARNING "Salome MESH is absolutely needed to import MESH objects to PARAVIS. @@ -268,7 +255,6 @@ SALOME_ACCUMULATE_ENVIRONMENT(PV_PLUGIN_PATH NOCHECK ${CMAKE_INSTALL_PREFIX}/lib # Sources # ======== ADD_SUBDIRECTORY(src) -ADD_SUBDIRECTORY(adm_local) ADD_SUBDIRECTORY(resources) IF(SALOME_BUILD_DOC) @@ -279,10 +265,10 @@ IF(SALOME_BUILD_TESTS AND NOT SALOME_LIGHT_ONLY) ENDIF() ADD_SUBDIRECTORY(bin) ADD_SUBDIRECTORY(examples) +ADD_SUBDIRECTORY(idl) # Header configuration # ==================== -SALOME_XVERSION(${PROJECT_NAME}) SALOME_CONFIGURE_FILE(PARAVIS_version.h.in PARAVIS_version.h INSTALL ${SALOME_INSTALL_HEADERS}) # Configuration export @@ -306,7 +292,7 @@ ENDIF() # Ensure the variables are always defined for the configure: SET(KERNEL_ROOT_DIR "${KERNEL_ROOT_DIR}") SET(GUI_ROOT_DIR "${GUI_ROOT_DIR}") -SET(MED_ROOT_DIR "${MED_ROOT_DIR}") +SET(FIELDS_ROOT_DIR "${FIELDS_ROOT_DIR}") SET(MEDFILE_ROOT_DIR "${MEDFILE_ROOT_DIR}") SET(MEDCOUPLING_ROOT_DIR "${MEDCOUPLING_ROOT_DIR}") SET(GEOM_ROOT_DIR "${GEOM_ROOT_DIR}") @@ -321,7 +307,7 @@ CONFIGURE_PACKAGE_CONFIG_FILE(${PROJECT_NAME}Config.cmake.in ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake INSTALL_DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}" PATH_VARS CONF_INCLUDE_DIRS SALOME_INSTALL_CMAKE_LOCAL CMAKE_INSTALL_PREFIX - KERNEL_ROOT_DIR GUI_ROOT_DIR MED_ROOT_DIR MEDFILE_ROOT_DIR MEDCOUPLING_ROOT_DIR GEOM_ROOT_DIR SMESH_ROOT_DIR) + KERNEL_ROOT_DIR GUI_ROOT_DIR FIELDS_ROOT_DIR MEDFILE_ROOT_DIR MEDCOUPLING_ROOT_DIR GEOM_ROOT_DIR SMESH_ROOT_DIR) # - in the install tree (VSR 16/08/2013: TEMPORARILY COMMENT THIS - TO REMOVE?): # Get the relative path of the include directory so @@ -331,7 +317,7 @@ CONFIGURE_PACKAGE_CONFIG_FILE(${PROJECT_NAME}Config.cmake.in # ${PROJECT_BINARY_DIR}/to_install/${PROJECT_NAME}Config.cmake # INSTALL_DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}" # PATH_VARS CONF_INCLUDE_DIRS SALOME_INSTALL_CMAKE_LOCAL CMAKE_INSTALL_PREFIX -# KERNEL_ROOT_DIR GUI_ROOT_DIR MED_ROOT_DIR MEDFILE_ROOT_DIR) +# KERNEL_ROOT_DIR GUI_ROOT_DIR FIELDS_ROOT_DIR MEDFILE_ROOT_DIR) WRITE_BASIC_PACKAGE_VERSION_FILE(${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake VERSION ${${PROJECT_NAME_UC}_VERSION} @@ -348,3 +334,8 @@ IF(NOT SALOME_LIGHT_ONLY) INSTALL(EXPORT ${PROJECT_NAME}TargetGroup DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}" FILE ${PROJECT_NAME}Targets.cmake) ENDIF() + +# Application tests +INSTALL(FILES CTestTestfileInstall.cmake + DESTINATION ${SALOME_INSTALL_SCRIPT_SCRIPTS}/test + RENAME CTestTestfile.cmake)