0000964: Patch to allow use of external PyCXX
This commit is contained in:
108
cMake/FindPyCXX.cmake
Normal file
108
cMake/FindPyCXX.cmake
Normal file
@@ -0,0 +1,108 @@
|
||||
# Locate PyCXX headers and source files
|
||||
|
||||
# This module defines
|
||||
# PYCXX_INCLUDE_DIR
|
||||
# PYCXX_SOURCE_DIR
|
||||
# PYCXX_FOUND
|
||||
# PYCXX_SOURCES
|
||||
#
|
||||
# The PYCXX_*_DIR variables can be set to tell this module where
|
||||
# the files are.
|
||||
|
||||
|
||||
# There's no standard location for PyCXX.
|
||||
#
|
||||
# The authors' example is to put it in "~\" [sic].
|
||||
#
|
||||
# Ubuntu puts the includes into /usr/include/python2.7/CXX and sources into
|
||||
# /usr/share/python2.7/CXX.
|
||||
#
|
||||
# The Zultron Fedora RPM does the same as Ubuntu.
|
||||
|
||||
set(PYCXX_FOUND "YES")
|
||||
|
||||
# find the header directory
|
||||
if(PYCXX_INCLUDE_DIR)
|
||||
# headers better be in there
|
||||
if(NOT EXISTS "${PYCXX_INCLUDE_DIR}/CXX/Config.hxx")
|
||||
if(PYCXX_FIND_REQUIRED)
|
||||
MESSAGE(FATAL_ERROR
|
||||
"PyCXX: could not find CXX/Config.hxx in PYCXX_INCLUDE_DIR "
|
||||
"${PYCXX_INCLUDE_DIR}")
|
||||
else(PYCXX_FIND_REQUIRED)
|
||||
MESSAGE(WARNING
|
||||
"PyCXX: could not find CXX/Config.hxx in PYCXX_INCLUDE_DIR "
|
||||
"${PYCXX_INCLUDE_DIR}")
|
||||
unset(PYCXX_FOUND)
|
||||
endif(PYCXX_FIND_REQUIRED)
|
||||
endif(NOT EXISTS "${PYCXX_INCLUDE_DIR}/CXX/Config.hxx")
|
||||
else(PYCXX_INCLUDE_DIR)
|
||||
# check in 'standard' places
|
||||
find_path(PYCXX_INCLUDE_DIR CXX/Config.hxx
|
||||
${PYTHON_INCLUDE_DIR}
|
||||
"${CMAKE_CURRENT_LIST_DIR}/..")
|
||||
if(NOT PYCXX_INCLUDE_DIR)
|
||||
if(PYCXX_FIND_REQUIRED)
|
||||
MESSAGE(FATAL_ERROR
|
||||
"PyCXX not found; please set PYCXX_INCLUDE_DIR to "
|
||||
"the location of CXX/Config.hxx")
|
||||
else(PYCXX_FIND_REQUIRED)
|
||||
MESSAGE(STATUS "PyCXX not found")
|
||||
unset(PYCXX_FOUND)
|
||||
endif(PYCXX_FIND_REQUIRED)
|
||||
endif(NOT PYCXX_INCLUDE_DIR)
|
||||
endif(PYCXX_INCLUDE_DIR)
|
||||
|
||||
# find the sources directory
|
||||
if(PYCXX_SOURCE_DIR)
|
||||
# source directory specified, they'd better be there
|
||||
if(NOT EXISTS "${PYCXX_SOURCE_DIR}/cxxextensions.c")
|
||||
if(PYCXX_FIND_REQUIRED)
|
||||
MESSAGE(FATAL_ERROR
|
||||
"PyCXX: cxxextensions.c not found in PYCXX_INCLUDE_DIR "
|
||||
"${PYCXX_INCLUDE_DIR}")
|
||||
else(PYCXX_FIND_REQUIRED)
|
||||
MESSAGE(WARNING
|
||||
"PyCXX: cxxextensions.c not found in PYCXX_INCLUDE_DIR "
|
||||
"${PYCXX_INCLUDE_DIR}")
|
||||
unset(PYCXX_FOUND)
|
||||
endif(PYCXX_FIND_REQUIRED)
|
||||
endif(NOT EXISTS "${PYCXX_SOURCE_DIR}/cxxextensions.c")
|
||||
else(PYCXX_SOURCE_DIR)
|
||||
# check in 'standard' places
|
||||
find_path(PYCXX_SOURCE_DIR cxxextensions.c
|
||||
"${PYCXX_INCLUDE_DIR}/CXX"
|
||||
"${PYCXX_INCLUDE_DIR}/Src"
|
||||
"${PYTHON_INCLUDE_DIR}/CXX"
|
||||
"${PYTHON_INCLUDE_DIR}/Src"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../Src"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../CXX")
|
||||
if(NOT PYCXX_SOURCE_DIR)
|
||||
if(PYCXX_FIND_REQUIRED)
|
||||
MESSAGE(FATAL_ERROR
|
||||
"PyCXX not found; please set PYCXX_SOURCE_DIR to "
|
||||
"the location of cxxextensions.c")
|
||||
else(PYCXX_FIND_REQUIRED)
|
||||
MESSAGE(STATUS "PyCXX not found")
|
||||
unset(PYCXX_FOUND)
|
||||
endif(PYCXX_FIND_REQUIRED)
|
||||
endif(NOT PYCXX_SOURCE_DIR)
|
||||
endif(PYCXX_SOURCE_DIR)
|
||||
|
||||
# see what we've got
|
||||
if(PYCXX_FOUND)
|
||||
MESSAGE(STATUS "PyCXX found:")
|
||||
MESSAGE(STATUS " Headers: ${PYCXX_INCLUDE_DIR}")
|
||||
MESSAGE(STATUS " Sources: ${PYCXX_SOURCE_DIR}")
|
||||
|
||||
# Build the list of sources for convenience
|
||||
set(PYCXX_SOURCES
|
||||
${PYCXX_SOURCE_DIR}/cxxextensions.c
|
||||
${PYCXX_SOURCE_DIR}/cxx_extensions.cxx
|
||||
${PYCXX_SOURCE_DIR}/cxxsupport.cxx
|
||||
${PYCXX_SOURCE_DIR}/IndirectPythonInterface.cxx
|
||||
)
|
||||
else(PYCXX_FOUND)
|
||||
MESSAGE(STATUS "PyCXX not found")
|
||||
endif(PYCXX_FOUND)
|
||||
|
||||
Reference in New Issue
Block a user