Skip to content

Commit 49b6345

Browse files
committed
cmake: default to BUILD_PYCSDIFF=ON only if python-devel is installed
1 parent 8c01ee1 commit 49b6345

File tree

1 file changed

+31
-17
lines changed

1 file changed

+31
-17
lines changed

src/CMakeLists.txt

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,35 @@ install(TARGETS
8585
cstrans-df-run
8686
DESTINATION bin)
8787

88+
# check for python libs (e.g. python3-devel on Fedora)
89+
find_package(PythonLibs)
90+
if ("${PYTHON_LIBRARY}" STREQUAL "PYTHON_LIBRARY-NOTFOUND")
91+
set(BUILD_PYCSDIFF_DEFAULT OFF)
92+
else()
93+
set(BUILD_PYCSDIFF_DEFAULT ON)
94+
endif()
95+
8896
# pycsdiff - python binding of csdiff
89-
option(BUILD_PYCSDIFF "Set to ON to enable python binding" ON)
97+
option(BUILD_PYCSDIFF "Set to ON to enable python binding"
98+
${BUILD_PYCSDIFF_DEFAULT})
9099
if (BUILD_PYCSDIFF)
91100
set(BOOST_PYTHON_LIB_NAME "boost_python"
92101
CACHE STRING "Name of the boost_python library")
93102

103+
# query PYTHON_SITEARCH
104+
find_package(PythonInterp REQUIRED)
105+
execute_process(COMMAND ${PYTHON_EXECUTABLE}
106+
-c "import sysconfig; print(sysconfig.get_paths()['platlib'])"
107+
RESULT_VARIABLE PYTHON_SITEARCH_STATUS
108+
OUTPUT_VARIABLE PYTHON_SITEARCH
109+
OUTPUT_STRIP_TRAILING_WHITESPACE)
110+
if("${PYTHON_SITEARCH_STATUS}" EQUAL 0)
111+
message(STATUS "PYTHON_SITEARCH: ${PYTHON_SITEARCH}")
112+
else()
113+
message(FATAL_ERROR "
114+
failed to query PYTHON_SITEARCH")
115+
endif()
116+
94117
# boost_python3 is used on RHEL-8.
95118
# boost_python310 is used on Fedora 35.
96119
find_library(BOOST_PYTHON NAMES ${BOOST_PYTHON_LIB_NAME}
@@ -104,26 +127,17 @@ if (BUILD_PYCSDIFF)
104127

105128
message(STATUS "BOOST_PYTHON: ${BOOST_PYTHON}")
106129

107-
# query PYTHON_INCLUDE_DIR
108-
find_package(PythonInterp REQUIRED)
109-
find_package(PythonLibs REQUIRED)
110-
message(STATUS "PYTHON_INCLUDE_DIR: ${PYTHON_INCLUDE_DIR}")
111-
if(NOT EXISTS "${PYTHON_INCLUDE_DIR}/pyconfig.h")
130+
# verify PYTHON_LIBRARY
131+
if ("${PYTHON_LIBRARY}" STREQUAL "PYTHON_LIBRARY-NOTFOUND")
112132
message(FATAL_ERROR "
113-
${PYTHON_INCLUDE_DIR}/pyconfig.h does not exits")
133+
python libraries not found, unable to build pycsdiff")
114134
endif()
115135

116-
# query PYTHON_SITEARCH
117-
execute_process(COMMAND ${PYTHON_EXECUTABLE}
118-
-c "import sysconfig; print(sysconfig.get_paths()['platlib'])"
119-
RESULT_VARIABLE PYTHON_SITEARCH_STATUS
120-
OUTPUT_VARIABLE PYTHON_SITEARCH
121-
OUTPUT_STRIP_TRAILING_WHITESPACE)
122-
if("${PYTHON_SITEARCH_STATUS}" EQUAL 0)
123-
message(STATUS "PYTHON_SITEARCH: ${PYTHON_SITEARCH}")
124-
else()
136+
# verify PYTHON_INCLUDE_DIR
137+
message(STATUS "PYTHON_INCLUDE_DIR: ${PYTHON_INCLUDE_DIR}")
138+
if(NOT EXISTS "${PYTHON_INCLUDE_DIR}/pyconfig.h")
125139
message(FATAL_ERROR "
126-
failed to query PYTHON_SITEARCH")
140+
${PYTHON_INCLUDE_DIR}/pyconfig.h does not exits")
127141
endif()
128142

129143
message(STATUS "python binding enabled, the pycsdiff module will be built!")

0 commit comments

Comments
 (0)