Last active
May 24, 2019 16:03
-
-
Save ludwigschwardt/f22e09d458aebd84c59de3013d0671ec to your computer and use it in GitHub Desktop.
Add improved CMake FindPython routines to casacore 3.1.0
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/python/CMakeLists-cmake3.12.txt b/python/CMakeLists-cmake3.12.txt | |
new file mode 100644 | |
index 000000000..7c981f734 | |
--- /dev/null | |
+++ b/python/CMakeLists-cmake3.12.txt | |
@@ -0,0 +1,90 @@ | |
+message(STATUS "Looking for python2 specific environment...") | |
+ | |
+find_package(Python2 REQUIRED COMPONENTS Interpreter Development NumPy) | |
+ | |
+if (Python2_FOUND) | |
+ find_package(Boost REQUIRED) | |
+ if(${Boost_MAJOR_VERSION} EQUAL 1 AND ${Boost_MINOR_VERSION} GREATER 66) | |
+ # Boost>=1.67 Python components require a Python version suffix | |
+ set(BOOST_PYTHON_LIBRARY_NAME | |
+ python${Python2_VERSION_MAJOR}${Python2_VERSION_MINOR} | |
+ CACHE STRING "The name of the boost python library to search for") | |
+ else() | |
+ set(BOOST_PYTHON_LIBRARY_NAME | |
+ python | |
+ CACHE STRING "The name of the boost python library to search for") | |
+ endif() | |
+ find_package(Boost REQUIRED COMPONENTS ${BOOST_PYTHON_LIBRARY_NAME}) | |
+ | |
+ # copy the variables to their final destination | |
+ set(PYTHON2_EXECUTABLE ${Python2_EXECUTABLE} CACHE FILEPATH "Path to Python2 interpreter") | |
+ set(PYTHON2_LIBRARY ${Python2_LIBRARIES} CACHE PATH "Python2 library") | |
+ set(PYTHON2_INCLUDE_DIR ${Python2_INCLUDE_DIRS} CACHE PATH "Python2 include folder") | |
+ set(PYTHON2_FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs ${FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs} CACHE STRING "") | |
+ | |
+ set(PYTHON2_LIBRARIES ${Python2_LIBRARIES} PARENT_SCOPE) | |
+ set(PYTHON2_NUMPY_INCLUDE_DIRS ${Python2_NumPy_INCLUDE_DIRS} PARENT_SCOPE) | |
+ set(PYTHON2_Boost_LIBRARIES ${Boost_LIBRARIES} PARENT_SCOPE) | |
+ set(PYTHON2_Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} PARENT_SCOPE) | |
+ set(PYTHON2_Boost_PYTHON_LIBRARY_RELEASE ${Boost_PYTHON_LIBRARY_RELEASE} PARENT_SCOPE) | |
+ set(PYTHON2_INCLUDE_DIRS ${Python2_INCLUDE_DIRS} PARENT_SCOPE) | |
+ | |
+ # to access the variables here we also need to set them in the local scope | |
+ set(PYTHON2_LIBRARIES ${Python2_LIBRARIES} ) | |
+ set(PYTHON2_NUMPY_INCLUDE_DIRS ${Python2_NumPy_INCLUDE_DIRS} ) | |
+ set(PYTHON2_Boost_LIBRARIES ${Boost_LIBRARIES} ) | |
+ set(PYTHON2_Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ) | |
+ set(PYTHON2_Boost_PYTHON_LIBRARY_RELEASE ${Boost_PYTHON_LIBRARY_RELEASE} ) | |
+ set(PYTHON2_INCLUDE_DIRS ${Python2_INCLUDE_DIRS} ) | |
+endif(Python2_FOUND) | |
+ | |
+ | |
+include_directories (${PYTHON2_Boost_INCLUDE_DIRS} ${PYTHON2_NUMPY_INCLUDE_DIRS} ${PYTHON2_INCLUDE_DIRS}) | |
+ | |
+add_library (casa_python | |
+Converters/PycArray.cc | |
+Converters/PycArrayNP.cc | |
+Converters/PycBasicData.cc | |
+Converters/PycExcp.cc | |
+Converters/PycImport.cc | |
+Converters/PycRecord.cc | |
+Converters/PycValueHolder.cc | |
+) | |
+ | |
+target_link_libraries (casa_python casa_casa ${PYTHON2_Boost_LIBRARIES} ${PYTHON2_LIBRARIES} ${CASACORE_ARCH_LIBS}) | |
+ | |
+install (TARGETS casa_python | |
+RUNTIME DESTINATION bin | |
+LIBRARY DESTINATION lib${LIB_SUFFIX} | |
+ARCHIVE DESTINATION lib${LIB_SUFFIX} | |
+LIBRARY PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE | |
+) | |
+ | |
+install (FILES | |
+Converters/PycArray.h | |
+Converters/PycArrayComCC.h | |
+Converters/PycArrayComH.h | |
+Converters/PycArrayNP.h | |
+Converters/PycBasicData.h | |
+Converters/PycExcp.h | |
+Converters/PycRecord.h | |
+Converters/PycValueHolder.h | |
+Converters/PycArray.tcc | |
+DESTINATION include/casacore/python/Converters | |
+) | |
+ | |
+install (FILES | |
+Converters.h | |
+DESTINATION include/casacore/python | |
+) | |
+ | |
+add_subdirectory (Converters/test ${EXCL_ALL}) | |
diff --git a/python/CMakeLists-older-cmake.txt b/python/CMakeLists-older-cmake.txt | |
new file mode 100644 | |
index 000000000..96411e7d9 | |
--- /dev/null | |
+++ b/python/CMakeLists-older-cmake.txt | |
@@ -0,0 +1,117 @@ | |
+message(STATUS "Looking for python2 specific environment...") | |
+ | |
+# tempororarly set variables used by findpython | |
+if (PYTHON2_EXECUTABLE) | |
+ set(PYTHON_EXECUTABLE ${PYTHON2_EXECUTABLE} CACHE FILEPATH "") | |
+endif() | |
+ | |
+if (PYTHON2_LIBRARY) | |
+ set(PYTHON_LIBRARY ${PYTHON2_LIBRARY} CACHE FILEPATH "") | |
+endif() | |
+ | |
+if (PYTHON2_INCLUDE_DIR) | |
+set(PYTHON_INCLUDE_DIR ${PYTHON2_INCLUDE_DIR} CACHE FILEPATH "") | |
+endif() | |
+ | |
+if (PYTHON2_FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs) | |
+ set(FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs ${PYTHON2_FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs} CACHE FILEPATH "") | |
+endif() | |
+ | |
+# Detect the python properties | |
+set(Python_FIND_VERSION 2) | |
+set(PythonInterp_FIND_VERSION_MAJOR 2) | |
+find_package(Python REQUIRED) | |
+if (PYTHONINTERP_FOUND) | |
+ find_package(Boost REQUIRED) | |
+ if(${Boost_MAJOR_VERSION} EQUAL 1 AND ${Boost_MINOR_VERSION} GREATER 66) | |
+ # Boost>=1.67 Python components require a Python version suffix | |
+ set(BOOST_PYTHON_LIBRARY_NAME | |
+ python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR} | |
+ CACHE STRING "The name of the boost python library to search for") | |
+ else() | |
+ set(BOOST_PYTHON_LIBRARY_NAME | |
+ python | |
+ CACHE STRING "The name of the boost python library to search for") | |
+ endif() | |
+ find_package(Boost REQUIRED COMPONENTS ${BOOST_PYTHON_LIBRARY_NAME}) | |
+ | |
+ find_package (NUMPY REQUIRED) | |
+ | |
+ # copy the variables to their final destination | |
+ set(PYTHON2_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "Path to Python2 interpreter") | |
+ set(PYTHON2_LIBRARY ${PYTHON_LIBRARY} CACHE PATH "Python2 library") | |
+ set(PYTHON2_INCLUDE_DIR ${PYTHON_INCLUDE_DIR} CACHE PATH "Python2 include folder") | |
+ set(PYTHON2_FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs ${FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs} CACHE STRING "") | |
+ | |
+ set(PYTHON2_LIBRARIES ${PYTHON_LIBRARIES} PARENT_SCOPE) | |
+ set(PYTHON2_NUMPY_INCLUDE_DIRS ${NUMPY_INCLUDE_DIRS} PARENT_SCOPE) | |
+ set(PYTHON2_Boost_LIBRARIES ${Boost_LIBRARIES} PARENT_SCOPE) | |
+ set(PYTHON2_Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} PARENT_SCOPE) | |
+ set(PYTHON2_Boost_PYTHON_LIBRARY_RELEASE ${Boost_PYTHON_LIBRARY_RELEASE} PARENT_SCOPE) | |
+ set(PYTHON2_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} PARENT_SCOPE) | |
+ | |
+ # to access the variables here we also need to set them in the local scope | |
+ set(PYTHON2_LIBRARIES ${PYTHON_LIBRARIES} ) | |
+ set(PYTHON2_NUMPY_INCLUDE_DIRS ${NUMPY_INCLUDE_DIRS} ) | |
+ set(PYTHON2_Boost_LIBRARIES ${Boost_LIBRARIES} ) | |
+ set(PYTHON2_Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ) | |
+ set(PYTHON2_Boost_PYTHON_LIBRARY_RELEASE ${Boost_PYTHON_LIBRARY_RELEASE} ) | |
+ set(PYTHON2_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} ) | |
+ | |
+ # Remove cached variable to not confuse user | |
+ unset(PYTHON_EXECUTABLE CACHE) | |
+ unset(PYTHON_LIBRARY CACHE) | |
+ unset(PYTHON_INCLUDE_DIR CACHE) | |
+ unset(FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs CACHE) | |
+endif(PYTHONINTERP_FOUND) | |
+ | |
+ | |
+include_directories (${PYTHON2_Boost_INCLUDE_DIRS} ${PYTHON2_NUMPY_INCLUDE_DIRS} ${PYTHON2_INCLUDE_DIRS}) | |
+ | |
+add_library (casa_python | |
+Converters/PycArray.cc | |
+Converters/PycArrayNP.cc | |
+Converters/PycBasicData.cc | |
+Converters/PycExcp.cc | |
+Converters/PycImport.cc | |
+Converters/PycRecord.cc | |
+Converters/PycValueHolder.cc | |
+) | |
+ | |
+target_link_libraries (casa_python casa_casa ${PYTHON2_Boost_LIBRARIES} ${PYTHON2_LIBRARIES} ${CASACORE_ARCH_LIBS}) | |
+ | |
+install (TARGETS casa_python | |
+RUNTIME DESTINATION bin | |
+LIBRARY DESTINATION lib${LIB_SUFFIX} | |
+ARCHIVE DESTINATION lib${LIB_SUFFIX} | |
+LIBRARY PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE | |
+) | |
+ | |
+install (FILES | |
+Converters/PycArray.h | |
+Converters/PycArrayComCC.h | |
+Converters/PycArrayComH.h | |
+Converters/PycArrayNP.h | |
+Converters/PycBasicData.h | |
+Converters/PycExcp.h | |
+Converters/PycRecord.h | |
+Converters/PycValueHolder.h | |
+Converters/PycArray.tcc | |
+DESTINATION include/casacore/python/Converters | |
+) | |
+ | |
+install (FILES | |
+Converters.h | |
+DESTINATION include/casacore/python | |
+) | |
+ | |
+add_subdirectory (Converters/test ${EXCL_ALL}) | |
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt | |
index f8ece2584..473d77d14 100644 | |
--- a/python/CMakeLists.txt | |
+++ b/python/CMakeLists.txt | |
@@ -1,96 +1,7 @@ | |
-message(STATUS "Looking for python2 specific environment...") | |
- | |
-# tempororarly set variables used by findpython | |
-if (PYTHON2_EXECUTABLE) | |
- set(PYTHON_EXECUTABLE ${PYTHON2_EXECUTABLE} CACHE FILEPATH "") | |
+# It would be nice to use CMAKE_VERSION instead but that requires CMake 2.6.3 | |
+if(${CMAKE_MAJOR_VERSION} GREATER 3 OR | |
+ (${CMAKE_MAJOR_VERSION} EQUAL 3 AND ${CMAKE_MINOR_VERSION} GREATER 11)) | |
+ include (${CMAKE_CURRENT_LIST_DIR}/CMakeLists-cmake3.12.txt) | |
+else() | |
+ include (${CMAKE_CURRENT_LIST_DIR}/CMakeLists-older-cmake.txt) | |
endif() | |
- | |
-if (PYTHON2_LIBRARY) | |
- set(PYTHON_LIBRARY ${PYTHON2_LIBRARY} CACHE FILEPATH "") | |
-endif() | |
- | |
-if (PYTHON2_INCLUDE_DIR) | |
-set(PYTHON_INCLUDE_DIR ${PYTHON2_INCLUDE_DIR} CACHE FILEPATH "") | |
-endif() | |
- | |
-if (PYTHON2_FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs) | |
- set(FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs ${PYTHON2_FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs} CACHE FILEPATH "") | |
-endif() | |
- | |
-# Detect the python properties | |
-set(Python_FIND_VERSION 2) | |
-set(PythonInterp_FIND_VERSION_MAJOR 2) | |
-find_package(Python REQUIRED) | |
-if (PYTHONINTERP_FOUND) | |
- find_package(Boost REQUIRED COMPONENTS python) | |
- find_package (NUMPY REQUIRED) | |
- | |
- # copy the variables to their final destination | |
- set(PYTHON2_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "Path to Python2 interpreter") | |
- set(PYTHON2_LIBRARY ${PYTHON_LIBRARY} CACHE PATH "Python2 library") | |
- set(PYTHON2_INCLUDE_DIR ${PYTHON_INCLUDE_DIR} CACHE PATH "Python2 include folder") | |
- set(PYTHON2_FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs ${FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs} CACHE STRING "") | |
- | |
- set(PYTHON2_LIBRARIES ${PYTHON_LIBRARIES} PARENT_SCOPE) | |
- set(PYTHON2_NUMPY_INCLUDE_DIRS ${NUMPY_INCLUDE_DIRS} PARENT_SCOPE) | |
- set(PYTHON2_Boost_LIBRARIES ${Boost_LIBRARIES} PARENT_SCOPE) | |
- set(PYTHON2_Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} PARENT_SCOPE) | |
- set(PYTHON2_Boost_PYTHON_LIBRARY_RELEASE ${Boost_PYTHON_LIBRARY_RELEASE} PARENT_SCOPE) | |
- set(PYTHON2_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} PARENT_SCOPE) | |
- | |
- # to access the variables here we also need to set them in the local scope | |
- set(PYTHON2_LIBRARIES ${PYTHON_LIBRARIES} ) | |
- set(PYTHON2_NUMPY_INCLUDE_DIRS ${NUMPY_INCLUDE_DIRS} ) | |
- set(PYTHON2_Boost_LIBRARIES ${Boost_LIBRARIES} ) | |
- set(PYTHON2_Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ) | |
- set(PYTHON2_Boost_PYTHON_LIBRARY_RELEASE ${Boost_PYTHON_LIBRARY_RELEASE} ) | |
- set(PYTHON2_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} ) | |
- | |
- # Remove cached variable to not confuse user | |
- unset(PYTHON_EXECUTABLE CACHE) | |
- unset(PYTHON_LIBRARY CACHE) | |
- unset(PYTHON_INCLUDE_DIR CACHE) | |
- unset(FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs CACHE) | |
-endif(PYTHONINTERP_FOUND) | |
- | |
- | |
-include_directories (${PYTHON2_Boost_INCLUDE_DIRS} ${PYTHON2_NUMPY_INCLUDE_DIRS} ${PYTHON2_INCLUDE_DIRS}) | |
- | |
-add_library (casa_python | |
-Converters/PycArray.cc | |
-Converters/PycArrayNP.cc | |
-Converters/PycBasicData.cc | |
-Converters/PycExcp.cc | |
-Converters/PycImport.cc | |
-Converters/PycRecord.cc | |
-Converters/PycValueHolder.cc | |
-) | |
- | |
-target_link_libraries (casa_python casa_casa ${PYTHON2_Boost_LIBRARIES} ${PYTHON2_LIBRARIES} ${CASACORE_ARCH_LIBS}) | |
- | |
-install (TARGETS casa_python | |
-RUNTIME DESTINATION bin | |
-LIBRARY DESTINATION lib${LIB_SUFFIX} | |
-ARCHIVE DESTINATION lib${LIB_SUFFIX} | |
-LIBRARY PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE | |
-) | |
- | |
-install (FILES | |
-Converters/PycArray.h | |
-Converters/PycArrayComCC.h | |
-Converters/PycArrayComH.h | |
-Converters/PycArrayNP.h | |
-Converters/PycBasicData.h | |
-Converters/PycExcp.h | |
-Converters/PycRecord.h | |
-Converters/PycValueHolder.h | |
-Converters/PycArray.tcc | |
-DESTINATION include/casacore/python/Converters | |
-) | |
- | |
-install (FILES | |
-Converters.h | |
-DESTINATION include/casacore/python | |
-) | |
- | |
-add_subdirectory (Converters/test ${EXCL_ALL}) | |
diff --git a/python3/CMakeLists-cmake3.12.txt b/python3/CMakeLists-cmake3.12.txt | |
new file mode 100644 | |
index 000000000..26d5ca533 | |
--- /dev/null | |
+++ b/python3/CMakeLists-cmake3.12.txt | |
@@ -0,0 +1,83 @@ | |
+message(STATUS "Looking for python3 specific environment...") | |
+ | |
+find_package(Python3 REQUIRED COMPONENTS Interpreter Development NumPy) | |
+ | |
+if (Python3_FOUND) | |
+ find_package(Boost REQUIRED) | |
+ if(${Boost_MAJOR_VERSION} EQUAL 1 AND ${Boost_MINOR_VERSION} GREATER 66) | |
+ # Boost>=1.67 Python components require a Python version suffix | |
+ set(BOOST_PYTHON3_LIBRARY_NAME | |
+ python${Python3_VERSION_MAJOR}${Python3_VERSION_MINOR} | |
+ CACHE STRING "The name of the boost python3 library to search for") | |
+ else() | |
+ set(BOOST_PYTHON3_LIBRARY_NAME | |
+ python${Python3_VERSION_MAJOR} | |
+ CACHE STRING "The name of the boost python3 library to search for") | |
+ endif() | |
+ find_package(Boost REQUIRED COMPONENTS ${BOOST_PYTHON3_LIBRARY_NAME}) | |
+ | |
+ # copy the variables to their final destination | |
+ set(PYTHON3_EXECUTABLE ${Python3_EXECUTABLE} CACHE FILEPATH "Path to Python3 interpreter") | |
+ set(PYTHON3_LIBRARY ${Python3_LIBRARIES} CACHE PATH "Python3 library") | |
+ set(PYTHON3_INCLUDE_DIR ${Python3_INCLUDE_DIRS} CACHE PATH "Python3 include folder") | |
+ set(PYTHON3_FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs ${FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs} CACHE STRING "") | |
+ | |
+ set(PYTHON3_LIBRARIES ${Python3_LIBRARIES} PARENT_SCOPE) | |
+ set(PYTHON3_NUMPY_INCLUDE_DIRS ${Python3_NumPy_INCLUDE_DIRS} PARENT_SCOPE) | |
+ set(PYTHON3_Boost_LIBRARIES ${Boost_LIBRARIES} PARENT_SCOPE) | |
+ set(PYTHON3_Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} PARENT_SCOPE) | |
+ set(PYTHON3_Boost_PYTHON_LIBRARY_RELEASE ${Boost_PYTHON_LIBRARY_RELEASE} PARENT_SCOPE) | |
+ set(PYTHON3_INCLUDE_DIRS ${Python3_INCLUDE_DIRS} PARENT_SCOPE) | |
+ | |
+ # to access the variables here we also need to set them in the local scope | |
+ set(PYTHON3_LIBRARIES ${Python3_LIBRARIES} ) | |
+ set(PYTHON3_NUMPY_INCLUDE_DIRS ${Python3_NumPy_INCLUDE_DIRS} ) | |
+ set(PYTHON3_Boost_LIBRARIES ${Boost_LIBRARIES} ) | |
+ set(PYTHON3_Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ) | |
+ set(PYTHON3_Boost_PYTHON_LIBRARY_RELEASE ${Boost_PYTHON_LIBRARY_RELEASE} ) | |
+ set(PYTHON3_INCLUDE_DIRS ${Python3_INCLUDE_DIRS} ) | |
+endif(Python3_FOUND) | |
+ | |
+include_directories (${PYTHON3_Boost_INCLUDE_DIRS} ${PYTHON3_NUMPY_INCLUDE_DIRS} ${PYTHON3_INCLUDE_DIRS}) | |
+ | |
+add_library (casa_python3 | |
+../python/Converters/PycArray.cc | |
+../python/Converters/PycArrayNP.cc | |
+../python/Converters/PycBasicData.cc | |
+../python/Converters/PycExcp.cc | |
+../python/Converters/PycImport.cc | |
+../python/Converters/PycRecord.cc | |
+../python/Converters/PycValueHolder.cc | |
+) | |
+ | |
+ | |
+target_link_libraries (casa_python3 casa_casa ${PYTHON3_Boost_LIBRARIES} ${PYTHON3_LIBRARIES}) | |
+ | |
+install (TARGETS casa_python3 | |
+RUNTIME DESTINATION bin | |
+LIBRARY DESTINATION lib${LIB_SUFFIX} | |
+ARCHIVE DESTINATION lib${LIB_SUFFIX} | |
+LIBRARY PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE | |
+) | |
+ | |
+# don't install headers if python2 cmake logic already installs it | |
+if (NOT BUILD_PYTHON) | |
+ install (FILES | |
+ ../python/Converters/PycArray.h | |
+ ../python/Converters/PycArrayComCC.h | |
+ ../python/Converters/PycArrayComH.h | |
+ ../python/Converters/PycArrayNP.h | |
+ ../python/Converters/PycBasicData.h | |
+ ../python/Converters/PycExcp.h | |
+ ../python/Converters/PycRecord.h | |
+ ../python/Converters/PycValueHolder.h | |
+ ../python/Converters/PycArray.tcc | |
+ DESTINATION include/casacore/python/Converters | |
+ ) | |
+ | |
+ install (FILES | |
+ ../python/Converters.h | |
+ DESTINATION include/casacore/python | |
+ ) | |
+endif (NOT BUILD_PYTHON) | |
+ | |
diff --git a/python3/CMakeLists-older-cmake.txt b/python3/CMakeLists-older-cmake.txt | |
new file mode 100644 | |
index 000000000..8a42cc905 | |
--- /dev/null | |
+++ b/python3/CMakeLists-older-cmake.txt | |
@@ -0,0 +1,113 @@ | |
+message(STATUS "Looking for python3 specific environment...") | |
+ | |
+# tempororarly set variables used by findpython | |
+if (PYTHON3_EXECUTABLE) | |
+ set(PYTHON_EXECUTABLE ${PYTHON3_EXECUTABLE} CACHE FILEPATH "") | |
+endif() | |
+ | |
+if (PYTHON3_LIBRARY) | |
+ set(PYTHON_LIBRARY ${PYTHON3_LIBRARY} CACHE FILEPATH "") | |
+endif() | |
+ | |
+if (PYTHON3_INCLUDE_DIR) | |
+set(PYTHON_INCLUDE_DIR ${PYTHON3_INCLUDE_DIR} CACHE FILEPATH "") | |
+endif() | |
+ | |
+if (PYTHON3_FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs) | |
+ set(FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs ${PYTHON3_FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs} CACHE FILEPATH "") | |
+endif() | |
+ | |
+# Detect the python properties | |
+set(Python_ADDITIONAL_VERSIONS 3.7 3.6 3.5 3.4) | |
+ | |
+find_package(Python REQUIRED) | |
+ | |
+if (PYTHONINTERP_FOUND) | |
+ find_package(Boost REQUIRED) | |
+ if(${Boost_MAJOR_VERSION} EQUAL 1 AND ${Boost_MINOR_VERSION} GREATER 66) | |
+ # Boost>=1.67 Python components require a Python version suffix | |
+ set(BOOST_PYTHON3_LIBRARY_NAME | |
+ python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR} | |
+ CACHE STRING "The name of the boost python3 library to search for") | |
+ else() | |
+ set(BOOST_PYTHON3_LIBRARY_NAME | |
+ python${PYTHON_VERSION_MAJOR} | |
+ CACHE STRING "The name of the boost python3 library to search for") | |
+ endif() | |
+ find_package(Boost REQUIRED COMPONENTS ${BOOST_PYTHON3_LIBRARY_NAME}) | |
+ | |
+ find_package (NUMPY REQUIRED) | |
+ | |
+ # copy the variables to their final destination | |
+ set(PYTHON3_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "Path to Python3 interpreter") | |
+ set(PYTHON3_LIBRARY ${PYTHON_LIBRARY} CACHE PATH "Python3 library") | |
+ set(PYTHON3_INCLUDE_DIR ${PYTHON_INCLUDE_DIR} CACHE PATH "Python3 include folder") | |
+ set(PYTHON3_FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs ${FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs} CACHE STRING "") | |
+ | |
+ set(PYTHON3_LIBRARIES ${PYTHON_LIBRARIES} PARENT_SCOPE) | |
+ set(PYTHON3_NUMPY_INCLUDE_DIRS ${NUMPY_INCLUDE_DIRS} PARENT_SCOPE) | |
+ set(PYTHON3_Boost_LIBRARIES ${Boost_LIBRARIES} PARENT_SCOPE) | |
+ set(PYTHON3_Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} PARENT_SCOPE) | |
+ set(PYTHON3_Boost_PYTHON_LIBRARY_RELEASE ${PYTHON3_Boost_LIBRARIES} PARENT_SCOPE) | |
+ set(PYTHON3_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} PARENT_SCOPE) | |
+ | |
+ # to access the variables here we also need to set them in the local scope | |
+ set(PYTHON3_LIBRARIES ${PYTHON_LIBRARIES} ) | |
+ set(PYTHON3_NUMPY_INCLUDE_DIRS ${NUMPY_INCLUDE_DIRS} ) | |
+ set(PYTHON3_Boost_LIBRARIES ${Boost_LIBRARIES} ) | |
+ set(PYTHON3_Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ) | |
+ set(PYTHON3_Boost_PYTHON_LIBRARY_RELEASE ${Boost_PYTHON_LIBRARY_RELEASE} ) | |
+ set(PYTHON3_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} ) | |
+ | |
+ # Remove cached variable to not confuse user | |
+ unset(PYTHON_EXECUTABLE CACHE) | |
+ unset(PYTHON_LIBRARY CACHE) | |
+ unset(PYTHON_INCLUDE_DIR CACHE) | |
+ unset(FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs CACHE) | |
+endif(PYTHONINTERP_FOUND) | |
+ | |
+ | |
+ | |
+include_directories (${PYTHON3_Boost_INCLUDE_DIRS} ${PYTHON3_NUMPY_INCLUDE_DIRS} ${PYTHON3_INCLUDE_DIRS}) | |
+ | |
+add_library (casa_python3 | |
+../python/Converters/PycArray.cc | |
+../python/Converters/PycArrayNP.cc | |
+../python/Converters/PycBasicData.cc | |
+../python/Converters/PycExcp.cc | |
+../python/Converters/PycImport.cc | |
+../python/Converters/PycRecord.cc | |
+../python/Converters/PycValueHolder.cc | |
+) | |
+ | |
+ | |
+target_link_libraries (casa_python3 casa_casa ${PYTHON3_Boost_LIBRARIES} ${PYTHON3_LIBRARIES}) | |
+ | |
+install (TARGETS casa_python3 | |
+RUNTIME DESTINATION bin | |
+LIBRARY DESTINATION lib${LIB_SUFFIX} | |
+ARCHIVE DESTINATION lib${LIB_SUFFIX} | |
+LIBRARY PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE | |
+) | |
+ | |
+# don't install headers if python2 cmake logic already installs it | |
+if (NOT BUILD_PYTHON) | |
+ install (FILES | |
+ ../python/Converters/PycArray.h | |
+ ../python/Converters/PycArrayComCC.h | |
+ ../python/Converters/PycArrayComH.h | |
+ ../python/Converters/PycArrayNP.h | |
+ ../python/Converters/PycBasicData.h | |
+ ../python/Converters/PycExcp.h | |
+ ../python/Converters/PycRecord.h | |
+ ../python/Converters/PycValueHolder.h | |
+ ../python/Converters/PycArray.tcc | |
+ DESTINATION include/casacore/python/Converters | |
+ ) | |
+ | |
+ install (FILES | |
+ ../python/Converters.h | |
+ DESTINATION include/casacore/python | |
+ ) | |
+endif (NOT BUILD_PYTHON) | |
+ | |
diff --git a/python3/CMakeLists.txt b/python3/CMakeLists.txt | |
index 43003659b..473d77d14 100644 | |
--- a/python3/CMakeLists.txt | |
+++ b/python3/CMakeLists.txt | |
@@ -1,107 +1,7 @@ | |
-message(STATUS "Looking for python3 specific environment...") | |
- | |
-# tempororarly set variables used by findpython | |
-if (PYTHON3_EXECUTABLE) | |
- set(PYTHON_EXECUTABLE ${PYTHON3_EXECUTABLE} CACHE FILEPATH "") | |
+# It would be nice to use CMAKE_VERSION instead but that requires CMake 2.6.3 | |
+if(${CMAKE_MAJOR_VERSION} GREATER 3 OR | |
+ (${CMAKE_MAJOR_VERSION} EQUAL 3 AND ${CMAKE_MINOR_VERSION} GREATER 11)) | |
+ include (${CMAKE_CURRENT_LIST_DIR}/CMakeLists-cmake3.12.txt) | |
+else() | |
+ include (${CMAKE_CURRENT_LIST_DIR}/CMakeLists-older-cmake.txt) | |
endif() | |
- | |
-if (PYTHON3_LIBRARY) | |
- set(PYTHON_LIBRARY ${PYTHON3_LIBRARY} CACHE FILEPATH "") | |
-endif() | |
- | |
-if (PYTHON3_INCLUDE_DIR) | |
-set(PYTHON_INCLUDE_DIR ${PYTHON3_INCLUDE_DIR} CACHE FILEPATH "") | |
-endif() | |
- | |
-if (PYTHON3_FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs) | |
- set(FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs ${PYTHON3_FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs} CACHE FILEPATH "") | |
-endif() | |
- | |
-# Detect the python properties | |
-set(Python_ADDITIONAL_VERSIONS 3.5 3.4) | |
- | |
-find_package(Python REQUIRED) | |
- | |
-if (PYTHONINTERP_FOUND) | |
- if (APPLE) | |
- find_package(Boost REQUIRED COMPONENTS python3) | |
- else () | |
- # NOTE: the name of the python3 version of boost is probably Debian/Ubuntu specific | |
- find_package(Boost REQUIRED COMPONENTS python-py${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}) | |
- endif (APPLE) | |
- | |
- find_package (NUMPY REQUIRED) | |
- | |
- # copy the variables to their final destination | |
- set(PYTHON3_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "Path to Python3 interpreter") | |
- set(PYTHON3_LIBRARY ${PYTHON_LIBRARY} CACHE PATH "Python3 library") | |
- set(PYTHON3_INCLUDE_DIR ${PYTHON_INCLUDE_DIR} CACHE PATH "Python3 include folder") | |
- set(PYTHON3_FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs ${FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs} CACHE STRING "") | |
- | |
- set(PYTHON3_LIBRARIES ${PYTHON_LIBRARIES} PARENT_SCOPE) | |
- set(PYTHON3_NUMPY_INCLUDE_DIRS ${NUMPY_INCLUDE_DIRS} PARENT_SCOPE) | |
- set(PYTHON3_Boost_LIBRARIES ${Boost_LIBRARIES} PARENT_SCOPE) | |
- set(PYTHON3_Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} PARENT_SCOPE) | |
- set(PYTHON3_Boost_PYTHON_LIBRARY_RELEASE ${PYTHON3_Boost_LIBRARIES} PARENT_SCOPE) | |
- set(PYTHON3_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} PARENT_SCOPE) | |
- | |
- # to access the variables here we also need to set them in the local scope | |
- set(PYTHON3_LIBRARIES ${PYTHON_LIBRARIES} ) | |
- set(PYTHON3_NUMPY_INCLUDE_DIRS ${NUMPY_INCLUDE_DIRS} ) | |
- set(PYTHON3_Boost_LIBRARIES ${Boost_LIBRARIES} ) | |
- set(PYTHON3_Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ) | |
- set(PYTHON3_Boost_PYTHON_LIBRARY_RELEASE ${Boost_PYTHON_LIBRARY_RELEASE} ) | |
- set(PYTHON3_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} ) | |
- | |
- # Remove cached variable to not confuse user | |
- unset(PYTHON_EXECUTABLE CACHE) | |
- unset(PYTHON_LIBRARY CACHE) | |
- unset(PYTHON_INCLUDE_DIR CACHE) | |
- unset(FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs CACHE) | |
-endif(PYTHONINTERP_FOUND) | |
- | |
- | |
- | |
-include_directories (${PYTHON3_Boost_INCLUDE_DIRS} ${PYTHON3_NUMPY_INCLUDE_DIRS} ${PYTHON3_INCLUDE_DIRS}) | |
- | |
-add_library (casa_python3 | |
-../python/Converters/PycArray.cc | |
-../python/Converters/PycArrayNP.cc | |
-../python/Converters/PycBasicData.cc | |
-../python/Converters/PycExcp.cc | |
-../python/Converters/PycImport.cc | |
-../python/Converters/PycRecord.cc | |
-../python/Converters/PycValueHolder.cc | |
-) | |
- | |
- | |
-target_link_libraries (casa_python3 casa_casa ${PYTHON3_Boost_LIBRARIES} ${PYTHON3_LIBRARIES}) | |
- | |
-install (TARGETS casa_python3 | |
-RUNTIME DESTINATION bin | |
-LIBRARY DESTINATION lib${LIB_SUFFIX} | |
-ARCHIVE DESTINATION lib${LIB_SUFFIX} | |
-LIBRARY PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE | |
-) | |
- | |
-# don't install headers if python2 cmake logic already installs it | |
-if (NOT BUILD_PYTHON) | |
- install (FILES | |
- ../python/Converters/PycArray.h | |
- ../python/Converters/PycArrayComCC.h | |
- ../python/Converters/PycArrayComH.h | |
- ../python/Converters/PycArrayNP.h | |
- ../python/Converters/PycBasicData.h | |
- ../python/Converters/PycExcp.h | |
- ../python/Converters/PycRecord.h | |
- ../python/Converters/PycValueHolder.h | |
- ../python/Converters/PycArray.tcc | |
- DESTINATION include/casacore/python/Converters | |
- ) | |
- | |
- install (FILES | |
- ../python/Converters.h | |
- DESTINATION include/casacore/python | |
- ) | |
-endif (NOT BUILD_PYTHON) | |
- |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment