Author: rinrab
Date: Thu Aug 8 18:44:01 2024
New Revision: 1919757
URL: http://svn.apache.org/viewvc?rev=1919757&view=rev
Log:
On the 'cmake' branch: Finally, support compilation of Python SWIG bindings.
* build/cmake/Findpy3c.cmake: New CMake module for the py3c library.
* build/generator/templates/targets.cmake.ezt
(swig.python): Add -nofastunpack option to Python SWIG compilation using
SWIG_COMPILE_OPTIONS target property.
* CMakeLists.txt
(python dependency): Rework finding of the package to request the
Development.Embed component if it is required by Python SWIG bindings.
(external-python): aAdd finding of py3c library, create the target with
correct include directories and link it against found py3c library.
Added:
subversion/branches/cmake/build/cmake/Findpy3c.cmake
Modified:
subversion/branches/cmake/CMakeLists.txt
subversion/branches/cmake/build/generator/templates/targets.cmake.ezt
Modified: subversion/branches/cmake/CMakeLists.txt
URL: http://svn.apache.org/viewvc/subversion/branches/cmake/CMakeLists.txt?rev=1919757&r1=1919756&r2=1919757&view=diff
==============================================================================
--- subversion/branches/cmake/CMakeLists.txt (original)
+++ subversion/branches/cmake/CMakeLists.txt Thu Aug 8 18:44:01 2024
@@ -242,7 +242,18 @@ if (SVN_ENABLE_RA_SERF)
add_library(external-serf ALIAS Serf::Serf)
endif()
-find_package(Python COMPONENTS Interpreter REQUIRED)
+### Python
+
+if(SVN_ENABLE_SWIG_PYTHON)
+ find_package(Python REQUIRED COMPONENTS
+ Interpreter
+ Development.Embed
+ )
+else()
+ find_package(Python REQUIRED COMPONENTS
+ Interpreter
+ )
+endif()
if(SVN_ENABLE_SWIG_PERL OR SVN_ENABLE_SWIG_PYTHON OR SVN_ENABLE_SWIG_RUBY)
find_package(SWIG REQUIRED)
@@ -259,6 +270,20 @@ if(SVN_ENABLE_SWIG_PERL OR SVN_ENABLE_SW
add_library(external-swig INTERFACE)
endif()
+if(SVN_ENABLE_SWIG_PYTHON)
+ find_package(py3c REQUIRED)
+
+ add_library(external-python INTERFACE)
+ target_link_libraries(external-python INTERFACE
+ Python::Python
+ Python::py3c
+ )
+ target_include_directories(external-python INTERFACE
+ ${SWIG_INCLUDE_DIRECTORIES}
+ ${CMAKE_CURRENT_SOURCE_DIR}/subversion/bindings/swig/python/libsvn_swig_py
+ )
+endif()
+
function(target_exports target_name)
if (WIN32)
set(def_file_path "${CMAKE_BINARY_DIR}/${target_name}.def")
Added: subversion/branches/cmake/build/cmake/Findpy3c.cmake
URL: http://svn.apache.org/viewvc/subversion/branches/cmake/build/cmake/Findpy3c.cmake?rev=1919757&view=auto
==============================================================================
--- subversion/branches/cmake/build/cmake/Findpy3c.cmake (added)
+++ subversion/branches/cmake/build/cmake/Findpy3c.cmake Thu Aug 8 18:44:01 2024
@@ -0,0 +1,46 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# Findpy3c.cmake -- CMake module for py3c library
+#
+
+find_path(PY3C_INCLUDE_DIR
+ NAMES py3c.h
+ PATH_SUFFIXES
+ "include/py3c"
+)
+
+mark_as_advanced(
+ PY3C_INCLUDE_DIR
+)
+
+include(FindPackageHandleStandardArgs)
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(
+ py3c
+ REQUIRED_VARS
+ PY3C_INCLUDE_DIR
+)
+
+# TODO: Is it okay to put py3c into 'Python' namespace?
+if(py3c_FOUND AND NOT TARGET Python::py3c)
+ add_library(Python::py3c IMPORTED INTERFACE)
+ set_target_properties(Python::py3c PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES ${PY3C_INCLUDE_DIR}
+ )
+endif()
Modified: subversion/branches/cmake/build/generator/templates/targets.cmake.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/cmake/build/generator/templates/targets.cmake.ezt?rev=1919757&r1=1919756&r2=1919757&view=diff
==============================================================================
--- subversion/branches/cmake/build/generator/templates/targets.cmake.ezt (original)
+++ subversion/branches/cmake/build/generator/templates/targets.cmake.ezt Thu Aug 8 18:44:01 2024
@@ -29,7 +29,10 @@ if ([targets.enable_condition])[is targe
set_target_properties([targets.name] PROPERTIES
SWIG_INCLUDE_DIRECTORIES "${SWIG_INCLUDE_DIRECTORIES}"
INCLUDE_DIRECTORIES "${SWIG_INCLUDE_DIRECTORIES}"
- )
+ )[is targets.swig_lang "python"]
+ set_target_properties([targets.name] PROPERTIES
+ SWIG_COMPILE_OPTIONS "-nofastunpack"
+ )[end]
target_link_libraries([targets.name] PRIVATE[for targets.libs]
[targets.libs][end]
external-[targets.swig_lang]
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.