1 # Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
3 # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 # This library is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU Lesser General Public
8 # License as published by the Free Software Foundation; either
9 # version 2.1 of the License.
11 # This library is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 # Lesser General Public License for more details.
16 # You should have received a copy of the GNU Lesser General Public
17 # License along with this library; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
25 MESSAGE(STATUS "Check for python ...")
29 IF(PYTHON_IS_MANDATORY STREQUAL 0)
30 SET(PYTHON_IS_MANDATORY 0)
31 SET(PYTHON_IS_OPTIONAL 1)
32 ENDIF(PYTHON_IS_MANDATORY STREQUAL 0)
33 IF(PYTHON_IS_OPTIONAL STREQUAL 0)
34 SET(PYTHON_IS_MANDATORY 1)
35 SET(PYTHON_IS_OPTIONAL 0)
36 ENDIF(PYTHON_IS_OPTIONAL STREQUAL 0)
37 IF(NOT PYTHON_IS_MANDATORY AND NOT PYTHON_IS_OPTIONAL)
38 SET(PYTHON_IS_MANDATORY 1)
39 SET(PYTHON_IS_OPTIONAL 0)
40 ENDIF(NOT PYTHON_IS_MANDATORY AND NOT PYTHON_IS_OPTIONAL)
45 IF(WITHOUT_PYTHON OR WITH_PYTHON STREQUAL 0)
47 MESSAGE(STATUS "python disabled from command line.")
48 ENDIF(WITHOUT_PYTHON OR WITH_PYTHON STREQUAL 0)
54 SET(PYTHON_ROOT_USER ${WITH_PYTHON})
56 IF(NOT PYTHON_ROOT_USER)
57 SET(PYTHON_ROOT_USER $ENV{PYTHON_ROOT})
58 ENDIF(NOT PYTHON_ROOT_USER)
59 IF(NOT PYTHON_ROOT_USER)
60 SET(PYTHON_ROOT_USER $ENV{PYTHONHOME})
61 ENDIF(NOT PYTHON_ROOT_USER)
62 IF(NOT PYTHON_ROOT_USER)
63 SET(PYTHON_ROOT_USER /usr)
64 ENDIF(NOT PYTHON_ROOT_USER)
71 SET(PYTHON_FIND_PATHS_OPTION NO_DEFAULT_PATH)
72 ELSE(PYTHON_ROOT_USER)
73 SET(PYTHON_FIND_PATHS_OPTION)
74 ENDIF(PYTHON_ROOT_USER)
81 IF(CMAKE_BUILD_TYPE STREQUAL Release)
82 SET(PYTHON_EXECUTABLE_TO_FIND python)
83 ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
84 SET(PYTHON_EXECUTABLE_TO_FIND python_d)
85 ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
87 SET(PYTHON_EXECUTABLE_TO_FIND python)
89 IF(NOT PYTHON_ROOT_USER)
90 SET(PYTHON_EXECUTABLE_PATHS)
91 ELSE(NOT PYTHON_ROOT_USER)
93 SET(PYTHON_EXECUTABLE_PATHS ${PYTHON_ROOT_USER})
95 SET(PYTHON_EXECUTABLE_PATHS ${PYTHON_ROOT_USER}/bin)
97 ENDIF(NOT PYTHON_ROOT_USER)
98 FIND_PROGRAM(PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE_TO_FIND} PATHS ${PYTHON_EXECUTABLE_PATHS} ${PYTHON_FIND_PATHS_OPTION})
100 MESSAGE(STATUS "python found: ${PYTHON_EXECUTABLE}")
101 IF(PYTHON_EXECUTABLE STREQUAL /usr/bin/python)
102 ELSE(PYTHON_EXECUTABLE STREQUAL /usr/bin/python)
103 SET(PYTHON_ROOT_USER ${PYTHON_EXECUTABLE})
104 GET_FILENAME_COMPONENT(PYTHON_ROOT_USER ${PYTHON_ROOT_USER} PATH)
106 GET_FILENAME_COMPONENT(PYTHON_ROOT_USER ${PYTHON_ROOT_USER} PATH)
108 ENDIF(PYTHON_EXECUTABLE STREQUAL /usr/bin/python)
109 ELSE(PYTHON_EXECUTABLE)
111 MESSAGE(STATUS "${PYTHON_EXECUTABLE_TO_FIND} not found in ${PYTHON_EXECUTABLE_PATHS}, check your PYTHON installation.")
112 ELSE(PYTHON_ROOT_USER)
113 MESSAGE(STATUS "${PYTHON_EXECUTABLE_TO_FIND} not found on system, try to use WITH_PYTHON option or PYTHON_ROOT environment variable.")
114 ENDIF(PYTHON_ROOT_USER)
116 ENDIF(PYTHON_EXECUTABLE)
123 COMMAND ${PYTHON_EXECUTABLE} -c "import sys; sys.stdout.write(sys.version[:3])"
124 OUTPUT_VARIABLE PYTHON_VERSION
132 SET(PYTHON_FIND_PATHS_OPTION NO_DEFAULT_PATH)
133 ELSE(PYTHON_ROOT_USER)
134 SET(PYTHON_FIND_PATHS_OPTION)
135 ENDIF(PYTHON_ROOT_USER)
142 SET(PYTHON_INCLUDE_PATHS ${PYTHON_ROOT_USER}/include ${PYTHON_ROOT_USER}/include/python${PYTHON_VERSION})
143 ELSE(PYTHON_ROOT_USER)
144 SET(PYTHON_INCLUDE_PATHS /usr/include/python${PYTHON_VERSION})
145 ENDIF(PYTHON_ROOT_USER)
146 SET(PYTHON_INCLUDE_TO_FIND Python.h)
147 FIND_PATH(PYTHON_INCLUDE_DIR ${PYTHON_INCLUDE_TO_FIND} PATHS ${PYTHON_INCLUDE_PATHS} ${PYTHON_FIND_PATHS_OPTION})
148 SET(PYTHON_DEFINITIONS)
149 IF(PYTHON_INCLUDE_DIR)
150 SET(PYTHON_INCLUDES -I${PYTHON_INCLUDE_DIR})# to remove
151 SET(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR})
153 IF(CMAKE_BUILD_TYPE STREQUAL Release)
154 ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
155 SET(PYTHON_INCLUDES ${PYTHON_INCLUDES} -DHAVE_DEBUG_PYTHON)# to remove
156 SET(PYTHON_DEFINITIONS "-DHAVE_DEBUG_PYTHON")
157 ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
159 MESSAGE(STATUS "${PYTHON_INCLUDE_TO_FIND} found in ${PYTHON_INCLUDE_DIR}")
160 ELSE(PYTHON_INCLUDE_DIR)
163 MESSAGE(STATUS "${PYTHON_INCLUDE_TO_FIND} not found in ${PYTHON_INCLUDE_PATHS}, check your PYTHON installation.")
164 ELSE(PYTHON_ROOT_USER)
165 MESSAGE(STATUS "${PYTHON_INCLUDE_TO_FIND} not found on system, try to use WITH_PYTHON option or PYTHON_ROOT environment variable.")
166 ENDIF(PYTHON_ROOT_USER)
167 ENDIF(PYTHON_INCLUDE_DIR)
175 SET(PYTHON_LIB_PATHS ${PYTHON_ROOT_USER}/libs)
177 SET(PYTHON_LIB_PATHS ${PYTHON_ROOT_USER}/lib ${PYTHON_ROOT_USER}/lib/python${PYTHON_VERSION}/config)
179 ELSE(PYTHON_ROOT_USER)
180 SET(PYTHON_LIB_PATHS)
181 ENDIF(PYTHON_ROOT_USER)
183 STRING(REPLACE "." "" PYTHON_VERSION_WITHOUT_DOT ${PYTHON_VERSION})
184 IF(CMAKE_BUILD_TYPE STREQUAL Release)
185 FIND_LIBRARY(PYTHON_LIB python${PYTHON_VERSION_WITHOUT_DOT} PATHS ${PYTHON_LIB_PATHS} ${PYTHON_FIND_PATHS_OPTION})
186 ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
187 FIND_LIBRARY(PYTHON_LIB python${PYTHON_VERSION_WITHOUT_DOT}_d PATHS ${PYTHON_LIB_PATHS} ${PYTHON_FIND_PATHS_OPTION})
188 ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
190 FIND_LIBRARY(PYTHON_LIB python${PYTHON_VERSION} PATHS ${PYTHON_LIB_PATHS} ${PYTHON_FIND_PATHS_OPTION})
194 SET(PYTHON_LIBS ${PYTHON_LIBS} ${PYTHON_LIB})
195 MESSAGE(STATUS "python lib found: ${PYTHON_LIB}")
199 MESSAGE(STATUS "python lib not found in ${PYTHON_LIB_PATHS}, check your PYTHON installation.")
200 ELSE(PYTHON_ROOT_USER)
201 MESSAGE(STATUS "python lib not found on system, try to use WITH_PYTHON option or PYTHON_ROOT environment variable.")
202 ENDIF(PYTHON_ROOT_USER)
211 COMMAND ${PYTHON_EXECUTABLE} -c "import numpy ; import sys ; sys.stdout.write(numpy.get_include())"
212 OUTPUT_VARIABLE NUMPY_INCLUDE_DIR
215 IF(NUMPY_INCLUDE_DIR)
217 ENDIF(NUMPY_INCLUDE_DIR)
219 SET(PYTHON_INCLUDES ${PYTHON_INCLUDES} -DWITH_NUMPY -I${NUMPY_INCLUDE_DIR})# to remove
220 SET(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIR})
221 SET(PYTHON_DEFINITIONS "${PYTHON_DEFINITIONS} -DWITH_NUMPY")
222 MESSAGE(STATUS "numpy found : ${NUMPY_INCLUDE_DIR}")
224 MESSAGE(STATUS "numpy not found")
231 SET(PYTHON_CPPFLAGS ${PYTHON_INCLUDES})# to remove
232 SET(PYLOGLEVEL WARNING)
234 IF(PYTHON_IS_MANDATORY)
235 MESSAGE(FATAL_ERROR "python not found ... mandatory ... abort")
236 ELSE(PYTHON_IS_MANDATORY)
237 MESSAGE(STATUS "python not found ... optional ... disabled")
238 ENDIF(PYTHON_IS_MANDATORY)