From ca4ab4b64d4e1fa5d978cfb2110e61135003e949 Mon Sep 17 00:00:00 2001 From: rnv Date: Mon, 15 Feb 2016 19:24:41 +0300 Subject: [PATCH] Fix compilation with NumPy/SciPy. --- CMakeLists.txt | 9 +--- cmake_files/CMakeLists.txt | 2 +- cmake_files/FindSalomeNumPySciPy.cmake | 52 ++++++++++++++++++++++++ cmake_files/FindSalomePythonInterp.cmake | 31 -------------- src/MEDCoupling_Swig/CMakeLists.txt | 7 ++-- src/MEDLoader/Swig/CMakeLists.txt | 5 ++- src/MEDPartitioner_Swig/CMakeLists.txt | 5 ++- src/ParaMEDMEM_Swig/CMakeLists.txt | 5 ++- src/RENUMBER_Swig/CMakeLists.txt | 5 ++- 9 files changed, 70 insertions(+), 51 deletions(-) create mode 100644 cmake_files/FindSalomeNumPySciPy.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 22e4adb21..7bdd64ffe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -117,18 +117,11 @@ ENDIF(MEDCOUPLING_ENABLE_RENUMBER) IF(MEDCOUPLING_ENABLE_PYTHON) FIND_PACKAGE(SalomePythonInterp) FIND_PACKAGE(SalomePythonLibs) + FIND_PACKAGE(SalomeNumPySciPy) FIND_PACKAGE(SalomeSWIG) SALOME_LOG_OPTIONAL_PACKAGE(PythonInterp MEDCOUPLING_ENABLE_PYTHON) SALOME_LOG_OPTIONAL_PACKAGE(PythonLibs MEDCOUPLING_ENABLE_PYTHON) SALOME_LOG_OPTIONAL_PACKAGE(SWIG MEDCOUPLING_ENABLE_PYTHON) - # Set the extra flags for SWIG for numpy and scipy - SET(SWIG_EXTRA_FLAGS_FOR_NUMPYANDSCIPY) - IF(NUMPY_FOUND) - SET(SWIG_EXTRA_FLAGS_FOR_NUMPYANDSCIPY "-DWITH_NUMPY") - ENDIF(NUMPY_FOUND) - IF(SCIPY_FOUND) - SET(SWIG_EXTRA_FLAGS_FOR_NUMPYANDSCIPY "${SWIG_EXTRA_FLAGS_FOR_NUMPYANDSCIPY};-DWITH_SCIPY") - ENDIF(SCIPY_FOUND) ENDIF(MEDCOUPLING_ENABLE_PYTHON) IF(MEDCOUPLING_BUILD_DOC) diff --git a/cmake_files/CMakeLists.txt b/cmake_files/CMakeLists.txt index a44071bb0..1e4aeaa29 100644 --- a/cmake_files/CMakeLists.txt +++ b/cmake_files/CMakeLists.txt @@ -34,9 +34,9 @@ SET(admlocal_cmake_DATA FindSalomeMetis.cmake FindSalomeMPI.cmake FindSalomeParMetis.cmake -# FindSalomePython.cmake FindSalomePythonLibs.cmake FindSalomePythonInterp.cmake + FindSalomeNumPySciPy.cmake FindSalomeScotch.cmake FindSalomeSphinx.cmake FindSalomeSWIG.cmake diff --git a/cmake_files/FindSalomeNumPySciPy.cmake b/cmake_files/FindSalomeNumPySciPy.cmake new file mode 100644 index 000000000..f88a20bec --- /dev/null +++ b/cmake_files/FindSalomeNumPySciPy.cmake @@ -0,0 +1,52 @@ +# Copyright (C) 2013-2015 CEA/DEN, EDF R&D, OPEN CASCADE +# +# 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, or (at your option) any later version. +# +# 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 +# +# Author: Roman NIKOLAEV +# +# Looking for an installation of NumPy and SciPy, and if found the following variables are set +# NUMPY_INCLUDE_DIR - NumPy header location +# NUMPY_DEFINITIONS - NumPy compiler flags +# SCIPY_DEFINITIONS - SciPy compiler flags +# SCIPY_VERSION - SciPy version +# + +IF(SALOMEPYTHONINTERP_FOUND) + # Numpy + EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "import numpy ; import sys ; sys.stdout.write(numpy.get_include())" OUTPUT_VARIABLE NUMPY_INCLUDE_DIR ERROR_QUIET ) + IF(NUMPY_INCLUDE_DIR) + SET(NUMPY_FOUND TRUE) + ENDIF(NUMPY_INCLUDE_DIR) + IF(NUMPY_FOUND) + SET(NUMPY_DEFINITIONS -DWITH_NUMPY) + MESSAGE(STATUS "NumPy found : ${NUMPY_INCLUDE_DIR}") + ELSE(NUMPY_FOUND) + MESSAGE(STATUS "NumPy not found.") + ENDIF(NUMPY_FOUND) + + # SciPy detection + EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "import scipy ; import sys ; sys.stdout.write(scipy.version.version)" OUTPUT_VARIABLE SCIPY_VERSION ERROR_QUIET ) + IF(SCIPY_VERSION) + SET(SCIPY_FOUND TRUE) + ENDIF(SCIPY_VERSION) + IF(SCIPY_FOUND) + MESSAGE(STATUS "Scipy found : Version ${SCIPY_VERSION}") + SET(SCIPY_DEFINITIONS -DWITH_SCIPY) + ELSE(SCIPY_FOUND) + MESSAGE(STATUS "SciPy not found.") + ENDIF(SCIPY_FOUND) +ENDIF() \ No newline at end of file diff --git a/cmake_files/FindSalomePythonInterp.cmake b/cmake_files/FindSalomePythonInterp.cmake index 9028f26ce..8b20e14cc 100644 --- a/cmake_files/FindSalomePythonInterp.cmake +++ b/cmake_files/FindSalomePythonInterp.cmake @@ -23,11 +23,6 @@ # # !! Please read the generic detection procedure in SalomeMacros.cmake !! # -# We also look for an installation of NumPy, and if found the following variables are set -# NUMPY_INCLUDE_DIR - NumPy header location -# NUMPY_DEFINITIONS - compiler flag -# and are automatically appended to PYTHON_INCLUDE_DIRS (and PYTHON_DEFINITIONS resp.) -# # Make sure the detection of both libs and interpreter (if both needed) occur in the correct order: IF(SALOMEPYTHONLIBS_FOUND AND NOT SALOMEPYTHONINTERP_FOUND) @@ -45,32 +40,6 @@ SALOME_FIND_PACKAGE_AND_DETECT_CONFLICTS(PythonInterp PYTHON_EXECUTABLE 1) IF(SALOMEPYTHONINTERP_FOUND) SET(PYTHON_PYTHONPATH "${PYTHON_ROOT_DIR}/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}") - - ## - ## Specifics -- NumPy/SciPy detection - ## - - # Numpy - EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "import numpy ; import sys ; sys.stdout.write(numpy.get_include())" OUTPUT_VARIABLE NUMPY_INCLUDE_DIR ERROR_QUIET ) - IF(NUMPY_INCLUDE_DIR) - SET(NUMPY_FOUND TRUE) - ENDIF(NUMPY_INCLUDE_DIR) - IF(NUMPY_FOUND) - SET(PYTHON_INCLUDE_DIRS ${NUMPY_INCLUDE_DIR} ${PYTHON_INCLUDE_DIRS}) - SET(PYTHON_DEFINITIONS "${PYTHON_DEFINITIONS} -DWITH_NUMPY") - MESSAGE(STATUS "NumPy found : ${NUMPY_INCLUDE_DIR}") - ELSE(NUMPY_FOUND) - MESSAGE(STATUS "NumPy not found.") - ENDIF(NUMPY_FOUND) - # SciPy detection - EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "import scipy ; import sys ; sys.stdout.write(scipy.version.version)" OUTPUT_VARIABLE SCIPY_VERSION ERROR_QUIET ) - IF(SCIPY_VERSION) - SET(SCIPY_FOUND TRUE) - ENDIF(SCIPY_VERSION) - IF(SCIPY_FOUND) - MESSAGE(STATUS "Scipy found : Version ${SCIPY_VERSION}") - ENDIF(SCIPY_FOUND) - SALOME_ACCUMULATE_ENVIRONMENT(PATH ${PYTHON_EXECUTABLE}) SALOME_ACCUMULATE_ENVIRONMENT(PYTHONPATH ${PYTHON_PYTHONPATH}) ENDIF() diff --git a/src/MEDCoupling_Swig/CMakeLists.txt b/src/MEDCoupling_Swig/CMakeLists.txt index 9a026431d..bfed34b68 100644 --- a/src/MEDCoupling_Swig/CMakeLists.txt +++ b/src/MEDCoupling_Swig/CMakeLists.txt @@ -19,11 +19,11 @@ INCLUDE(${SWIG_USE_FILE}) -ADD_DEFINITIONS(${PYTHON_DEFINITIONS}) +ADD_DEFINITIONS(${PYTHON_DEFINITIONS} ${NUMPY_DEFINITIONS} ${SCIPY_DEFINITIONS}) SET_SOURCE_FILES_PROPERTIES(MEDCoupling.i PROPERTIES CPLUSPLUS ON) SET_SOURCE_FILES_PROPERTIES(MEDCoupling.i PROPERTIES SWIG_DEFINITIONS "-shadow") -SET(SWIG_MODULE_MEDCoupling_EXTRA_FLAGS ${SWIG_EXTRA_FLAGS_FOR_NUMPYANDSCIPY}) +SET(SWIG_MODULE_MEDCoupling_EXTRA_FLAGS "${NUMPY_DEFINITIONS};${SCIPY_DEFINITIONS}") SET (MEDCoupling_SWIG_DPYS_FILES MEDCouplingCommon.i @@ -59,6 +59,7 @@ SET (MC_Swig_interf INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_DIRS} + ${NUMPY_INCLUDE_DIR} ${PTHREAD_INCLUDE_DIR} # pthread dependancy due to python2.7 library ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} @@ -90,7 +91,7 @@ SWIG_LINK_LIBRARIES(MEDCoupling ${PYTHON_LIBRARIES} ${PLATFORM_LIBS} medcoupling SET_SOURCE_FILES_PROPERTIES(MEDCouplingRemapper.i PROPERTIES CPLUSPLUS ON) SET_SOURCE_FILES_PROPERTIES(MEDCouplingRemapper.i PROPERTIES SWIG_DEFINITIONS "-shadow") -SET(SWIG_MODULE_MEDCouplingRemapper_EXTRA_FLAGS ${SWIG_EXTRA_FLAGS_FOR_NUMPYANDSCIPY}) +SET(SWIG_MODULE_MEDCouplingRemapper_EXTRA_FLAGS "${NUMPY_DEFINITIONS};${SCIPY_DEFINITIONS}") # _ABR_ Ensure dependency mechanism on all SWIG files and headers SET (SWIG_MODULE_MEDCouplingRemapper_EXTRA_DEPS ${MEDCoupling_SWIG_DPYS_FILES} diff --git a/src/MEDLoader/Swig/CMakeLists.txt b/src/MEDLoader/Swig/CMakeLists.txt index 84888e2af..2ad33efb2 100644 --- a/src/MEDLoader/Swig/CMakeLists.txt +++ b/src/MEDLoader/Swig/CMakeLists.txt @@ -21,11 +21,11 @@ FIND_PACKAGE(SWIG REQUIRED) INCLUDE(${SWIG_USE_FILE}) -ADD_DEFINITIONS(${PYTHON_DEFINITIONS}) +ADD_DEFINITIONS(${PYTHON_DEFINITIONS} ${NUMPY_DEFINITIONS} ${SCIPY_DEFINITIONS}) SET_SOURCE_FILES_PROPERTIES(MEDLoader.i PROPERTIES CPLUSPLUS ON) SET_SOURCE_FILES_PROPERTIES(MEDLoader.i PROPERTIES SWIG_DEFINITIONS "-shadow") -SET(SWIG_MODULE_MEDLoader_EXTRA_FLAGS ${SWIG_EXTRA_FLAGS_FOR_NUMPYANDSCIPY}) +SET(SWIG_MODULE_MEDLoader_EXTRA_FLAGS "${NUMPY_DEFINITIONS};${SCIPY_DEFINITIONS}") SET (MEDLoader_SWIG_DPYS_FILES MEDLoaderCommon.i @@ -33,6 +33,7 @@ SET (MEDLoader_SWIG_DPYS_FILES INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_DIRS} + ${NUMPY_INCLUDE_DIR} ${MEDFILE_INCLUDE_DIRS} ${HDF5_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR} diff --git a/src/MEDPartitioner_Swig/CMakeLists.txt b/src/MEDPartitioner_Swig/CMakeLists.txt index 78ab03066..60dce229a 100644 --- a/src/MEDPartitioner_Swig/CMakeLists.txt +++ b/src/MEDPartitioner_Swig/CMakeLists.txt @@ -19,11 +19,11 @@ INCLUDE(${SWIG_USE_FILE}) -ADD_DEFINITIONS(${PYTHON_DEFINITIONS} ${HDF5_DEFINITIONS} ${MEDFILE_DEFINITIONS} ) +ADD_DEFINITIONS(${PYTHON_DEFINITIONS} ${HDF5_DEFINITIONS} ${MEDFILE_DEFINITIONS} ${NUMPY_DEFINITIONS} ${SCIPY_DEFINITIONS}) SET_SOURCE_FILES_PROPERTIES(MEDPartitioner.i PROPERTIES CPLUSPLUS ON) SET_SOURCE_FILES_PROPERTIES(MEDPartitioner.i PROPERTIES SWIG_DEFINITIONS "-shadow") -SET(SWIG_MODULE_MEDPartitioner_EXTRA_FLAGS "${SWIG_EXTRA_FLAGS_FOR_NUMPYANDSCIPY};-DWITHOUT_AUTOFIELD") +SET(SWIG_MODULE_MEDPartitioner_EXTRA_FLAGS "${NUMPY_DEFINITIONS};${SCIPY_DEFINITIONS};-DWITHOUT_AUTOFIELD") SET (MEDPartitioner_SWIG_DPYS_FILES MEDPartitionerCommon.i) @@ -31,6 +31,7 @@ SET (MEDPartitioner_SWIG_DPYS_FILES INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_DIRS} ${PTHREAD_INCLUDE_DIR} # pthread dependancy due to python2.7 library + ${NUMPY_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${HDF5_INCLUDE_DIRS} diff --git a/src/ParaMEDMEM_Swig/CMakeLists.txt b/src/ParaMEDMEM_Swig/CMakeLists.txt index 3edfd4d86..fcef11f15 100644 --- a/src/ParaMEDMEM_Swig/CMakeLists.txt +++ b/src/ParaMEDMEM_Swig/CMakeLists.txt @@ -17,20 +17,21 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -ADD_DEFINITIONS(${PYTHON_DEFINITIONS}) +ADD_DEFINITIONS(${PYTHON_DEFINITIONS} ${NUMPY_DEFINITIONS} ${SCIPY_DEFINITIONS}) FIND_PACKAGE(SWIG REQUIRED) INCLUDE(${SWIG_USE_FILE}) SET_SOURCE_FILES_PROPERTIES(ParaMEDMEM.i PROPERTIES CPLUSPLUS ON) SET_SOURCE_FILES_PROPERTIES(ParaMEDMEM.i PROPERTIES SWIG_DEFINITIONS "-shadow") -SET(SWIG_MODULE_ParaMEDMEM_EXTRA_FLAGS ${SWIG_EXTRA_FLAGS_FOR_NUMPYANDSCIPY}) +SET(SWIG_MODULE_ParaMEDMEM_EXTRA_FLAGS "${NUMPY_DEFINITIONS};${SCIPY_DEFINITIONS}") SET (ParaMEDMEM_SWIG_DPYS_FILES ParaMEDMEM.typemap) INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_DIRS} + ${NUMPY_INCLUDE_DIR} ${MEDFILE_INCLUDE_DIRS} ${HDF5_INCLUDE_DIRS} ${MPI_INCLUDE_DIRS} diff --git a/src/RENUMBER_Swig/CMakeLists.txt b/src/RENUMBER_Swig/CMakeLists.txt index 1640b5dd5..da3b86391 100644 --- a/src/RENUMBER_Swig/CMakeLists.txt +++ b/src/RENUMBER_Swig/CMakeLists.txt @@ -19,11 +19,11 @@ INCLUDE(${SWIG_USE_FILE}) -ADD_DEFINITIONS(${PYTHON_DEFINITIONS}) +ADD_DEFINITIONS(${PYTHON_DEFINITIONS} ${NUMPY_DEFINITIONS} ${SCIPY_DEFINITIONS}) SET_SOURCE_FILES_PROPERTIES(MEDRenumber.i PROPERTIES CPLUSPLUS ON) SET_SOURCE_FILES_PROPERTIES(MEDRenumber.i PROPERTIES SWIG_DEFINITIONS "-shadow") -SET(SWIG_MODULE_MEDRenumber_EXTRA_FLAGS "${SWIG_EXTRA_FLAGS_FOR_NUMPYANDSCIPY};-DWITHOUT_AUTOFIELD") +SET(SWIG_MODULE_MEDRenumber_EXTRA_FLAGS "${NUMPY_DEFINITIONS};${SCIPY_DEFINITIONS};-DWITHOUT_AUTOFIELD") IF(Boost_FOUND) SET(SWIG_MODULE_MEDRenumber_EXTRA_FLAGS -DHAS_BOOST ${SWIG_MODULE_MEDRenumber_EXTRA_FLAGS}) @@ -40,6 +40,7 @@ INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_DIRS} ${PTHREAD_INCLUDE_DIR} # pthread dependancy due to python2.7 library ${CMAKE_CURRENT_SOURCE_DIR} + ${NUMPY_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../RENUMBER ${CMAKE_CURRENT_SOURCE_DIR}/../MEDCoupling_Swig -- 2.39.2