Salome HOME
Merge from BR_PORTING_VTK6 01/03/2013
[modules/gui.git] / CMakeLists.txt
index a03543dd252ab1a56ca819917bf1d040edad3676..3fe5f77b1999857524751d9f781fa105e9b2cd17 100755 (executable)
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+PROJECT(SALOME_GUI)
 
-CMAKE_MINIMUM_REQUIRED(VERSION 2.4.7 FATAL_ERROR)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8 FATAL_ERROR)
 
 IF(COMMAND cmake_policy)
   cmake_policy(SET CMP0003 NEW)
 ENDIF(COMMAND cmake_policy)
 
+IF(APPLE)
+  SET(CMAKE_C_COMPILER gcc)
+  SET(CMAKE_CXX_COMPILER g++)
+  # because default is clang(llvm) with mountain lion at least
+ENDIF(APPLE)
+
 # Temporary definitions
 SET(DOXYGEN_IS_OK 0)
 IF(WINDOWS)
  SET(CPPUNIT_IS_OK 0)
 ENDIF(WINDOWS)
-SET(GUI_ENABLE_CORBA ON)
-SET(ENABLE_VTKVIEWER ON)
-SET(ENABLE_SALOMEOBJECT ON)
-SET(ENABLE_OCCVIEWER ON)
-SET(ENABLE_GLVIEWER ON)
-SET(ENABLE_PLOT2DVIEWER ON)
-SET(ENABLE_PYCONSOLE ON)
-SET(ENABLE_SUPERVGRAPHVIEWER ON)
-SET(ENABLE_QXGRAPHVIEWER ON)
+
+#Defining all options first
+option(SALOME_USE_MPI "Use MPI containers" OFF)
+option(SALOME_USE_CORBA "Use distribute application with components" ON)
+option(SALOME_USE_DOC "Generate documentation" ON)
+option(SALOME_USE_TEST "Generate test" OFF)
+OPTION(SALOME_USE_VTKVIEWER "Enable VTK visualization (Mandatory in classic configurations)" ON)
+OPTION(SALOME_USE_SALOMEOBJECT "Enable Salome Object (Mandatory in classic configurations)" ON)
+OPTION(SALOME_USE_OCCVIEWER "Enable OCC visualization (Mandatory in classic configurations)" ON)
+OPTION(SALOME_USE_GLVIEWER "Enable OpenGL visualization (Mandatory in classic configurations)" ON)
+OPTION(SALOME_USE_PLOT2DVIEWER "Enable Plot2D visualization (Mandatory in classic configurations)" ON)
+OPTION(SALOME_USE_PYCONSOLE "Enable Python GUI interface (Mandatory in classic configurations)" ON)
+OPTION(SALOME_USE_SUPERVGRAPHVIEWER "Enable Supervision visualization (Mandatory in classic configurations)" ON)
+OPTION(SALOME_USE_QXGRAPHVIEWER "Enable QX graph visualization (Mandatory in classic configurations)" ON)
 
 ENABLE_TESTING()
 SET(VERSION "7.0.0")
 SET(VERSION_DEV "1")
 
-SET(KERNEL_ROOT_DIR $ENV{KERNEL_ROOT_DIR})
-IF(KERNEL_ROOT_DIR)
-  STRING(REPLACE "\\" "/" KERNEL_ROOT_DIR ${KERNEL_ROOT_DIR})
-  INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPLATFORM.cmake)
-  INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPYTHON.cmake)
-  INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindOMNIORB.cmake)
-  INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPTHREADS.cmake)
-  INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindMPI.cmake)
-  INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindHDF5.cmake)
-  INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindBOOST.cmake)
-  INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindLIBXML2.cmake)
-  INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindSWIG.cmake)
-  INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindCPPUNIT.cmake)
-  INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindDOXYGEN.cmake)
-  INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindLIBBATCH.cmake)
+SET(BUILD_SHARED_LIBS true)
+
+SET(KERNEL_ROOT_DIR $ENV{KERNEL_ROOT_DIR} CACHE PATH "Path to the Salome KERNEL")
+IF(EXISTS ${KERNEL_ROOT_DIR})
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindKERNEL.cmake)
-ENDIF(KERNEL_ROOT_DIR)
+ELSE(EXISTS ${KERNEL_ROOT_DIR})
+  MESSAGE(FATAL_ERROR "We absolutely need a Salome KERNEL, please define KERNEL_ROOT_DIR")
+ENDIF(EXISTS ${KERNEL_ROOT_DIR})
+
+STRING(REPLACE "\\" "/" KERNEL_ROOT_DIR ${KERNEL_ROOT_DIR})
+
+# directories for packages detection
+SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${KERNEL_ROOT_DIR}/salome_adm/cmake_files ${CMAKE_SOURCE_DIR}/adm_local/cmake_files)
+
+find_package(PLATFORM)
+
+
+# Threads
+SET(CMAKE_THREAD_PREFER_PTHREAD)
+find_package(Threads REQUIRED)
+
+
+# required prerequisites from KERNEL
+
+find_package(SalomePYTHON)
+find_package(SalomeSWIG)
+find_package(SalomeLIBXML2)
+find_package(SalomeHDF5)
+find_package(SalomeBOOST)
+
+# required prerequisites for GUI
+
+find_package(SalomeQT4)
+find_package(SalomeSIP)
+find_package(SalomePYQT4)
+
+# optional prerequisites from KERNEL
+
+if(SALOME_USE_MPI OR HDF5_IS_PARALLEL)
+  find_package(SalomeMPI)
+endif(SALOME_USE_MPI OR HDF5_IS_PARALLEL)
+
+if(SALOME_USE_CORBA)
+  find_package(OMNIORB)
+endif(SALOME_USE_CORBA)
+
+if(SALOME_USE_TEST)
+  find_package(SalomeCPPUNIT)
+endif(SALOME_USE_TEST)
+
+if(SALOME_USE_DOC)
+  find_package(SalomeDOXYGEN)
+  find_package(SalomeSPHINX)
+endif(SALOME_USE_DOC)
+
+if(SALOME_USE_LIBBATCH)
+  find_package(LIBBATCH)
+endif(SALOME_USE_LIBBATCH)
+
+
+# optional prerequisites for GUI
+
+if(SALOME_USE_OCCVIEWER)
+  find_package(SalomeCAS)
+endif(SALOME_USE_OCCVIEWER)
+
+if(SALOME_USE_GLVIEWER)
+  find_package(OpenGL REQUIRED)
+endif(SALOME_USE_GLVIEWER)
+
+if(SALOME_USE_VTKVIEWER)
+  find_package(SalomeVTK)
+endif(SALOME_USE_VTKVIEWER)
 
-INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindCAS.cmake)
-INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindQT4.cmake)
-INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindOPENGL.cmake)
-INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindVTK.cmake)
-INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindQWT.cmake)
-INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindSIPPYQT.cmake)
+if(SALOME_USE_PLOT2DVIEWER)
+  find_package(SalomeQWT)
+endif(SALOME_USE_PLOT2DVIEWER)
 
 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)
@@ -94,7 +159,7 @@ SET(GUI_appliskel_SCRIPTS bin/salome/appliskel)
 
 SET(GUI_appliskel_PYTHON bin/salome/appliskel)
 
-SET(GUI_pythondir lib/python${PYTHON_VERSION}/site-packages)
+SET(GUI_pythondir lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages)
 
 SET(GUI_salomepythondir ${GUI_pythondir}/salome)
 SET(KERNEL_salomepythondir ${GUI_salomepythondir})
@@ -104,9 +169,9 @@ SET(GUI_sharedpkgpython_PYTHON ${GUI_salomepythondir}/shared_modules)
 SET(GUI_admlocalcmake adm_local/cmake_files)
 
 SET(IDLDIR)                        
-IF(GUI_ENABLE_CORBA)
+IF(SALOME_USE_CORBA)
   SET(IDLDIR idl)
-ENDIF(GUI_ENABLE_CORBA)
+ENDIF(SALOME_USE_CORBA)
 
 SET(SUBDIRS
   ${IDLDIR}