# Copyright (C) 2012-2013 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 # License as published by the Free Software Foundation; either # version 2.1 of the License. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8 FATAL_ERROR) IF(COMMAND cmake_policy) cmake_policy(SET CMP0003 NEW) ENDIF(COMMAND cmake_policy) ENABLE_TESTING() SET(VERSION "7.2.0") SET(VERSION_DEV "0") SET(WITH_MEDMEMGUI "0") #Defining all options first option(SALOME_USE_MPI "Use MPI containers" OFF) SET(KERNEL_ROOT_DIR $ENV{KERNEL_ROOT_DIR}) IF(KERNEL_ROOT_DIR) FILE(TO_CMAKE_PATH $ENV{KERNEL_ROOT_DIR} KERNEL_ROOT_DIR) SET(MED_ENABLE_KERNEL ON) # directories for packages detection SET(SALOME_MACROS_DIR ${KERNEL_ROOT_DIR}/salome_adm/cmake_files) LIST(APPEND CMAKE_MODULE_PATH "${SALOME_MACROS_DIR}") INCLUDE(SalomeMacros) INCLUDE(SalomeSetupPlatform) FIND_PACKAGE(SalomeKERNEL) # Try first to find medfile version using the new CMake first FIND_PACKAGE(SalomeMedfile QUIET) IF(medfile_FOUND) MESSAGE(STATUS "Found Medfile in config mode (new CMake version of medfile)") # Backward compat: SET(MED_ENABLE_MED3 ON) SET(MED3_INCLUDE_DIRS "${MEDFILE_INCLUDE_DIRS}") SET(MED3_LIBS_C_ONLY "${MEDFILE_C_LIBRARIES}") ELSE() # if not found, revert to the old logic: FIND_PACKAGE(MEDFILE REQUIRED) SET(MED_ENABLE_MED3 ON) ENDIF() FIND_PACKAGE(SalomePThread) FIND_PACKAGE(SalomePython) SET(PYTHON_LIBS ${PYTHON_LIBRARIES}) FIND_PACKAGE(SalomeOmniORB) SET(OMNIORB_LIBS ${OMNIORB_LIBRARIES}) IF(SALOME_USE_MPI) FIND_PACKAGE(SalomeMPI) SET(MPI_IS_OK 1) ENDIF() FIND_PACKAGE(SalomeHDF5) FIND_PACKAGE(SalomeBoost) FIND_PACKAGE(SalomeLibXml2) # Backward compat: SET(LIBXML_INCLUDE_DIRS "${LIBXML2_INCLUDE_DIR}") SET(LIBXML_LIBS "${LIBXML2_LIBRARIES}") FIND_PACKAGE(SalomeSWIG) SET(SWIG_STATUS TRUE) FIND_PACKAGE(SalomeCppUnit) SET(CPPUNIT_IS_OK ON) SET(CPPUNIT_LIBS "${CPPUNIT_LIBRARIES}") FIND_PACKAGE(SalomeDoxygen) FIND_PACKAGE(SalomeSphinx) SET(GUI_ROOT_DIR $ENV{GUI_ROOT_DIR}) FILE(TO_CMAKE_PATH "$ENV{GUI_ROOT_DIR}" GUI_ROOT_DIR) IF(GUI_ROOT_DIR) LIST(APPEND CMAKE_MODULE_PATH "${GUI_ROOT_DIR}/adm_local/cmake_files") SET(MED_ENABLE_GUI ON) FIND_PACKAGE(SalomeGUI) FIND_PACKAGE(SalomeCAS) FIND_PACKAGE(SalomeOpenGL) FIND_PACKAGE(SalomeQt4) FIND_PACKAGE(SalomeQwt) FIND_PACKAGE(SalomePyQt4) ENDIF(GUI_ROOT_DIR) ELSE(KERNEL_ROOT_DIR) SET(SALOME_MACROS_DIR ${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files) LIST(APPEND CMAKE_MODULE_PATH "${SALOME_MACROS_DIR}") # TODO: the macros below should be loaded with a FIND_PACKAGE(), and should be sync'd with # what has been done in KERNEL + GUI: INCLUDE(FindPLATFORM) if(SALOME_USE_MPI) INCLUDE(FindMPI) endif(SALOME_USE_MPI) INCLUDE(FindMEDFILE) INCLUDE(FindBOOST) INCLUDE(FindCPPUNIT) INCLUDE(FindHDF5) INCLUDE(FindPYTHON) INCLUDE(FindLIBXML2) INCLUDE(FindPTHREADS) INCLUDE(FindSWIG) #INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindMEDFILE.cmake) ENDIF(KERNEL_ROOT_DIR) # TODO: write those in the new format, and load them via FIND_PACKAGE(): INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindPARMETIS.cmake) INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindMETIS.cmake) INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindSCOTCH.cmake) INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindSPLITTER.cmake) INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindRENUMBER.cmake) IF(WIN32) INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindXDR.cmake) ENDIF(WIN32) EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "import sys; t=sys.argv[-1].split(\".\") ; t[:]=(int(elt) for elt in t) ; sys.stdout.write(\"0x%02x%02x%02x\"%tuple(t))" ${VERSION} OUTPUT_VARIABLE XVERSION) # TODO: adjust to the global SALOME install dirs exposed from KERNEL: SET(MED_salomebin_BINS bin/salome) SET(MED_salomelib_LIBS lib/salome) SET(MED_salomeidl_IDLS idl/salome) SET(KERNEL_salomeidl_IDLS ${MED_salomeidl_IDLS}) SET(MED_salomeinclude_HEADERS include/salome) SET(MED_salomeres_DATA share/salome/resources/med) SET(MED_salomeres_SCRIPTS share/salome/resources/med) SET(MED_salomescript_SCRIPTS bin/salome) SET(MED_salomescript_DATA bin/salome) SET(MED_salomescript_PYTHON bin/salome) SET(MED_appliskel_SCRIPTS bin/salome/appliskel) SET(MED_appliskel_PYTHON bin/salome/appliskel) SET(MED_pythondir lib/python${PYTHON_VERSION}/site-packages) SET(MED_salomepythondir ${MED_pythondir}/salome) SET(MED_sharedpkgpython_PYTHON ${MED_salomepythondir}/shared_modules) SET(MED_admlocalcmake adm_local/cmake_files) SET(KERNEL_salomescript_PYTHON ${MED_salomescript_PYTHON}) SET(KERNEL_salomepythondir ${MED_salomepythondir}) IF(MED_ENABLE_KERNEL) ADD_SUBDIRECTORY(idl) ELSE(MED_ENABLE_KERNEL) ADD_SUBDIRECTORY(adm_local_without_kernel) ENDIF(MED_ENABLE_KERNEL) ADD_SUBDIRECTORY(adm_local) ADD_SUBDIRECTORY(src) ADD_SUBDIRECTORY(doc) ADD_SUBDIRECTORY(resources) ADD_SUBDIRECTORY(bin) SET(input ${CMAKE_CURRENT_SOURCE_DIR}/MED_version.h.in) SET(output ${CMAKE_CURRENT_BINARY_DIR}/MED_version.h) MESSAGE(STATUS "Creation of ${output}") CONFIGURE_FILE(${input} ${output} @ONLY) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/MED_version.h DESTINATION ${MED_salomeinclude_HEADERS})