Salome HOME
Increment version: 8.3.0
[tools/medcoupling.git] / CMakeLists.txt
index 9a5aa8abd0e7743b3d94a434d234bd49d1440146..aad68421adb11cad754f017d8d449acc7c95be43 100644 (file)
@@ -17,7 +17,7 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8.2 FATAL_ERROR)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11 FATAL_ERROR)
 #INCLUDE(CMakeDependentOption)
 PROJECT(MEDCoupling C CXX)
 
@@ -30,14 +30,19 @@ CMAKE_POLICY(SET CMP0003 NEW)
 STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
 
 SET(${PROJECT_NAME_UC}_MAJOR_VERSION 8)
-SET(${PROJECT_NAME_UC}_MINOR_VERSION 0)
+SET(${PROJECT_NAME_UC}_MINOR_VERSION 3)
 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})
 
-# Our own set of macros:
-LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake_files")
-INCLUDE(SalomeMacros)
+# Common CMake macros
+SET(CONFIGURATION_ROOT_DIR $ENV{CONFIGURATION_ROOT_DIR} CACHE PATH "Path to the Salome CMake files")
+IF(EXISTS ${CONFIGURATION_ROOT_DIR})
+  LIST(APPEND CMAKE_MODULE_PATH "${CONFIGURATION_ROOT_DIR}/cmake")
+  INCLUDE(SalomeMacros)
+ELSE()
+  MESSAGE(FATAL_ERROR "We absolutely need the Salome CMake configuration files, please define CONFIGURATION_ROOT_DIR !")
+ENDIF()
 
 # Platform setup
 # ==============
@@ -55,12 +60,34 @@ OPTION(MEDCOUPLING_WITH_FILE_EXAMPLES "Install examples of files containing mesh
 OPTION(MEDCOUPLING_USE_MPI "(Use MPI containers) - For MED this triggers the build of ParaMEDMEM." OFF)
 OPTION(MEDCOUPLING_BUILD_TESTS "Build MED tests." ON)
 OPTION(MEDCOUPLING_BUILD_DOC "Build MED doc." ON)
-CMAKE_DEPENDENT_OPTION(MEDCOUPLING_PARTITIONER_METIS "Enable metis graph library in MEDPartitioner." ON "MEDCOUPLING_ENABLE_PARTITIONER" OFF)
-CMAKE_DEPENDENT_OPTION(MEDCOUPLING_PARTITIONER_SCOTCH "Enable scotch graph library in MEDPartitioner." ON "MEDCOUPLING_ENABLE_PARTITIONER;NOT MEDCOUPLING_USE_MPI" OFF)
-CMAKE_DEPENDENT_OPTION(MEDCOUPLING_PARTITIONER_PARMETIS "Enable parmetis graph library in MEDPartitioner." ON "MEDCOUPLING_ENABLE_PARTITIONER;MEDCOUPLING_USE_MPI" OFF)
+OPTION(MEDCOUPLING_BUILD_STATIC "Build MEDCoupling library in static mode." OFF)
+IF(${MEDCOUPLING_USE_MPI})
+  SET(USE_METIS_NOT_PARMETIS OFF)
+ELSE()
+  SET(USE_METIS_NOT_PARMETIS ON)
+ENDIF()
+CMAKE_DEPENDENT_OPTION(MEDCOUPLING_PARTITIONER_METIS "Enable metis graph library in MEDPartitioner."  ${USE_METIS_NOT_PARMETIS}
+        "MEDCOUPLING_ENABLE_PARTITIONER" OFF)
+CMAKE_DEPENDENT_OPTION(MEDCOUPLING_PARTITIONER_SCOTCH "Enable scotch graph library in MEDPartitioner." ON 
+        "MEDCOUPLING_ENABLE_PARTITIONER;NOT MEDCOUPLING_USE_MPI" OFF)
+CMAKE_DEPENDENT_OPTION(MEDCOUPLING_PARTITIONER_PARMETIS "Enable parmetis graph library in MEDPartitioner." ${MEDCOUPLING_USE_MPI} 
+        "MEDCOUPLING_ENABLE_PARTITIONER;MEDCOUPLING_USE_MPI" OFF)
+SET(XDR_DEFAULT_OPTION ON)
 IF(WIN32)
-  CMAKE_DEPENDENT_OPTION(MEDCOUPLING_MEDLOADER_USE_XDR "Enable use of XDR for SauvReader." ON "NOT MEDCOUPLING_MICROMED" OFF)
-ENDIF(WIN32)
+    SET(XDR_DEFAULT_OPTION OFF)
+ENDIF()
+CMAKE_DEPENDENT_OPTION(MEDCOUPLING_MEDLOADER_USE_XDR "Enable use of XDR for SauvReader." ${XDR_DEFAULT_OPTION} "NOT MEDCOUPLING_MICROMED" OFF)
+
+IF(MEDCOUPLING_BUILD_STATIC)
+    SET(BUILD_SHARED_LIBS 0)
+    SET(CMAKE_POSITION_INDEPENDENT_CODE 1) # -fPIC option
+ELSE()
+    SET(BUILD_SHARED_LIBS 1)
+ENDIF()
+
+IF(${MEDCOUPLING_PARTITIONER_PARMETIS} AND ${MEDCOUPLING_PARTITIONER_METIS})
+    MESSAGE(FATAL_ERROR "ParMetis and Metis are mutually exclusive! Make a choice (options MEDCOUPLING_PARTITIONER_METIS and MEDCOUPLING_PARTITIONER_PARMETIS).")
+ENDIF()
 
 #
 # Set list of prerequisites
@@ -70,13 +97,9 @@ IF(NOT MEDCOUPLING_MICROMED)
   FIND_PACKAGE(SalomeHDF5 REQUIRED)
   FIND_PACKAGE(SalomeMEDFile REQUIRED)
   # XDR stuff
-  IF(NOT WIN32)
-    FIND_PACKAGE(SalomeXDR REQUIRED)
-  ELSE(NOT WIN32)
-    IF(MEDCOUPLING_MEDLOADER_USE_XDR)
+  IF(MEDCOUPLING_MEDLOADER_USE_XDR)
       FIND_PACKAGE(SalomeXDR REQUIRED)
-    ENDIF(MEDCOUPLING_MEDLOADER_USE_XDR)
-  ENDIF(NOT WIN32)
+  ENDIF(MEDCOUPLING_MEDLOADER_USE_XDR)
   # End of XDR Stuff
   IF(MEDCOUPLING_ENABLE_PARTITIONER)
     FIND_PACKAGE(SalomeLibXml2)
@@ -84,12 +107,16 @@ IF(NOT MEDCOUPLING_MICROMED)
     IF(MEDCOUPLING_PARTITIONER_METIS)
       FIND_PACKAGE(SalomeMetis)
       SALOME_LOG_OPTIONAL_PACKAGE(Metis MEDCOUPLING_PARTITIONER_METIS)
-      ADD_DEFINITIONS("-DMED_ENABLE_METIS")
+      IF(SalomeMetis_FOUND)
+         ADD_DEFINITIONS("-DMED_ENABLE_METIS")
+      ENDIF()
     ENDIF(MEDCOUPLING_PARTITIONER_METIS)
     IF(MEDCOUPLING_PARTITIONER_SCOTCH)
       FIND_PACKAGE(SalomeScotch)
       SALOME_LOG_OPTIONAL_PACKAGE(Scotch MEDCOUPLING_PARTITIONER_SCOTCH)
-      ADD_DEFINITIONS("-DMED_ENABLE_SCOTCH")
+      IF(SalomeScotch_FOUND)
+        ADD_DEFINITIONS("-DMED_ENABLE_SCOTCH")
+      ENDIF()
     ENDIF(MEDCOUPLING_PARTITIONER_SCOTCH)
   ENDIF(MEDCOUPLING_ENABLE_PARTITIONER)
 ENDIF(NOT MEDCOUPLING_MICROMED)
@@ -107,7 +134,9 @@ IF(MEDCOUPLING_USE_MPI)
   IF(MEDCOUPLING_PARTITIONER_PARMETIS)
     FIND_PACKAGE(SalomeParMetis)
     SALOME_LOG_OPTIONAL_PACKAGE(ParMetis MEDCOUPLING_PARTITIONER_PARMETIS)
-    ADD_DEFINITIONS("-DMED_ENABLE_PARMETIS")
+    IF (SalomeParMetis_FOUND)
+      ADD_DEFINITIONS("-DMED_ENABLE_PARMETIS")
+    ENDIF()
   ENDIF(MEDCOUPLING_PARTITIONER_PARMETIS)
 ENDIF(MEDCOUPLING_USE_MPI)
 
@@ -190,14 +219,16 @@ IF(WIN32)
 ENDIF(WIN32)
 
 ADD_SUBDIRECTORY(src)
-ADD_SUBDIRECTORY(cmake_files)
+ADD_SUBDIRECTORY(adm_local)
 
 IF(MEDCOUPLING_BUILD_DOC)
   ADD_SUBDIRECTORY(doc)
 ENDIF(MEDCOUPLING_BUILD_DOC)
 
 ADD_SUBDIRECTORY(resources)
-ADD_SUBDIRECTORY(v8_work)
+IF(MEDCOUPLING_ENABLE_PYTHON)
+  ADD_SUBDIRECTORY(v8_work)
+ENDIF()
 
 # Configuration export
 # ====================