Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ludwigschwardt/f22e09d458aebd84c59de3013d0671ec to your computer and use it in GitHub Desktop.
Save ludwigschwardt/f22e09d458aebd84c59de3013d0671ec to your computer and use it in GitHub Desktop.
Add improved CMake FindPython routines to casacore 3.1.0
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