]> SALOME platform Git repositories - tools/eficas.git/blob - CMakeLists.txt
Salome HOME
update version
[tools/eficas.git] / CMakeLists.txt
1 # -*- coding: utf-8 -*-
2 #            CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2025  EDF R&D                  WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
9 #
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 #
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
18 #
19 #
20 # ======================================================================
21
22 cmake_minimum_required ( VERSION 2.8 )
23
24 project ( Eficas CXX C )
25
26 # Definition du chemin d'acces aux modules additionnels
27 set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMakeModules" )
28
29 # Common CMake macros
30 # ===================
31 SET(CONFIGURATION_ROOT_DIR $ENV{CONFIGURATION_ROOT_DIR} CACHE PATH "Path to the Salome CMake configuration files")
32 IF(EXISTS ${CONFIGURATION_ROOT_DIR})
33   LIST(APPEND CMAKE_MODULE_PATH "${CONFIGURATION_ROOT_DIR}/cmake")
34   INCLUDE(SalomeMacros)
35 ELSE()
36   MESSAGE(FATAL_ERROR "We absolutely need the Salome CMake configuration files, please define CONFIGURATION_ROOT_DIR !")
37 ENDIF()
38
39 # Detection de Python
40 find_package ( PythonInterp  REQUIRED )
41 if (PYTHONINTERP_FOUND)
42   string ( RANDOM tmpPyScript )
43   set ( tmpPyScript "${tmpPyScript}.py" )
44   file ( WRITE  ${tmpPyScript}
45 "# Automaticaly generated by CMake. Do NOT edit. Changes will be lost
46 import sys
47 print ('%d.%d' % ( sys.version_info[0], sys.version_info[1] ))
48 " )
49   get_source_file_property ( PYSCRIPT_LOC ${tmpPyScript} LOCATION )
50   execute_process ( COMMAND ${PYTHON_EXECUTABLE} ${PYSCRIPT_LOC}
51                     OUTPUT_VARIABLE PYTHON_VERSION
52                     #ERROR_QUIET
53                     OUTPUT_STRIP_TRAILING_WHITESPACE )
54   file ( REMOVE ${tmpPyScript} )
55 endif (PYTHONINTERP_FOUND)
56 message ( STATUS "Using Python version ${PYTHON_VERSION}" )
57
58 # Versioning
59 # ==========
60 # Project name, upper case
61 STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
62 SET(${PROJECT_NAME_UC}_VERSION 9.11.0)
63 set(${PROJECT_NAME_UC}_SCRIPT_PYTHON "lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages")
64 set(${PROJECT_NAME_UC}_SCRIPT_PYTHON_SALOME "${${PROJECT_NAME_UC}_SCRIPT_PYTHON}/salome")
65
66 SALOME_SETUP_VERSION(${${PROJECT_NAME_UC}_VERSION})
67
68 # Detection de QT5
69 find_package ( Qt5 COMPONENTS Core REQUIRED )
70
71 FIND_PACKAGE(Qt5LinguistTools)
72 GET_TARGET_PROPERTY(QT_LRELEASE_EXECUTABLE Qt5::lrelease LOCATION)
73 MARK_AS_ADVANCED(QT_LRELEASE_EXECUTABLE)
74
75 # Detection de PyQt5
76 if (NOT PYQT5_FOUND)
77   execute_process ( COMMAND ${PYTHON_EXECUTABLE} -c "\"import PyQt5\""
78                     RESULT_VARIABLE _res
79                     OUTPUT_VARIABLE _trashout
80                     ERROR_VARIABLE  _trasherr
81                   )
82   if (NOT _res)
83     message ( STATUS "Looking for Python package PyQt5 - found" )
84     set ( PYQT5_FOUND 1 CACHE INTERNAL "True if Python package PyQt5 is here" )
85   else (NOT _res)
86     message ( STATUS "Looking for Python package PyQt5 - not found" )
87     set ( PYQT5_FOUND 0 CACHE INTERNAL "True if Python package PyQt5 is here" )
88   endif (NOT _res)
89 endif (NOT PYQT5_FOUND)
90
91 if (NOT PYQT5_FOUND)
92   message ( FATAL_ERROR "Python package PyQt5 is REQUIRED" )
93 endif (NOT PYQT5_FOUND)
94
95 # Detection de PYUIC5
96 find_program ( PYUIC5 NAMES pyuic5
97                DOC  "Path to the pyuic5 compilation tool"
98              )
99 if (NOT PYUIC5)
100   message ( FATAL_ERROR "pyuic5 tool is REQUIRED" )
101 endif (NOT PYUIC5)
102
103 # Definition des options de CMake
104 option ( WITH_ALL_PACKAGES "Install all package files" OFF )
105 option ( WITH_CARMEL       "Install CARMEL files"      OFF )
106 option ( WITH_SEP          "Install SEP files"         OFF )
107 option ( WITH_ZCRACKS      "Install ZCRACKS files"     OFF )
108 option ( WITH_TELEMAC_CATA "Install TELEMAC files"     OFF )
109 option ( IN_SALOME_CONTEXT "Configure Eficas for use in Salome" OFF )
110
111 set ( _OPTIONLIST
112   WITH_CARMEL
113   WITH_TELEMAC_CATA
114   )
115
116 if (WITH_ALL_PACKAGES)
117   foreach ( _opt ${_OPTIONLIST} )
118     set ( ${_opt} ON )
119   endforeach ( _opt )
120 endif (WITH_ALL_PACKAGES)
121
122
123 # Verification: au moins une option doit etre selectionnee
124 set ( _VALIDOPT FALSE )
125 foreach ( _opt ${_OPTIONLIST} )
126   if ( ${_opt} )
127     set ( _VALIDOPT TRUE )
128     string ( REPLACE WITH_ "" _opt2 ${_opt} )
129     message ( STATUS "Will install package ${_opt2}" )
130   endif ( ${_opt} )
131 endforeach ( _opt )
132 if ( NOT ${_VALIDOPT} )
133   message ( FATAL_ERROR "At least one option within ${_OPTIONLIST} must be selected" )
134 endif ( NOT ${_VALIDOPT} )
135
136
137
138 # Parcours recursif des sous-repertoires
139 add_subdirectory ( Accas )
140 add_subdirectory ( Aide )
141 add_subdirectory ( Editeur )
142 add_subdirectory ( Efi2Xsd )
143 add_subdirectory ( Extensions )
144 add_subdirectory ( Ihm )
145 install ( DIRECTORY InterfaceQT4 DESTINATION ${CMAKE_INSTALL_PREFIX} )
146 add_subdirectory ( Noyau )
147 add_subdirectory ( UiQT5 )
148 add_subdirectory ( Validation )
149 add_subdirectory ( convert )
150 add_subdirectory ( generator )
151 add_subdirectory ( Traducteur )
152
153
154 # Installation des fichiers : CARMEL
155 if (WITH_CARMEL)
156   add_subdirectory ( Carmel3D )
157   add_subdirectory ( CarmelCND )
158   add_subdirectory ( CarmelCS )
159 endif (WITH_CARMEL)
160
161
162 # Installation des fichiers : ZCracks
163 if (WITH_ZCRACKS)
164   add_subdirectory ( ZCracks )
165 endif (WITH_ZCRACKS)
166
167 # Installation des fichiers : Telemac
168 if (WITH_TELEMAC_CATA)
169   add_subdirectory ( Telemac )
170 endif (WITH_TELEMAC_CATA)
171
172 if (BUILD_DOC)
173   add_subdirectory ( Doc )
174 endif (BUILD_DOC)
175
176 # Install __init__ for versioning:
177
178
179 INSTALL(CODE "
180   FILE(WRITE ${CMAKE_INSTALL_PREFIX}/${${PROJECT_NAME_UC}_SCRIPT_PYTHON_SALOME}/salome/eficas_tools/__init__.py
181   \"__version__ = '${${PROJECT_NAME_UC}_VERSION}'\n__sha1__ = '${${PROJECT_NAME_UC}_GIT_SHA1}'\"
182   )
183 ")
184
185 ### Local Variables:
186 ### mode: cmake
187 ### End: