From: Richard Shaw Date: Mon, 18 Feb 2019 18:42:30 +0000 (+0100) Subject: CMake/Swig updates for python wrapper X-Git-Tag: v1.5rc1~19 X-Git-Url: http://developer.intra2net.com/git/?p=libftdi;a=commitdiff_plain;h=41871ae234838d2540fc4297295fbec71f57067d CMake/Swig updates for python wrapper libftdi was FTBFS[1] in Fedora Rawhide after a GCC 9.0.X mass rebuild but the problem turned out to be behavior changes[2] in CMake with regards to SWIG[3]. The UseSWIG module in cmake 3.13+ will now use standard target names and not generate the SWIG_MODULE__REAL_NAME variable. Replace the deprecated swig_add_module with swig_add_library. [Refinements from Intra2net: - Use swig_add_library for cmake 3.8+ only - Add cmake version guard for the new CMP0078 policy - Use "NOT CMAKE_VERSION VERSION_LESS" construct to support cmake versions below 3.7.0] [1] https://bugzilla.redhat.com/show_bug.cgi?id=1675275 [2] https://cmake.org/cmake/help/latest/policy/CMP0078.html?highlight=cmp0078 [3] https://cmake.org/cmake/help/latest/module/UseSWIG.html --- diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 376dae6..494f6ff 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -1,3 +1,9 @@ +# swig_add_library behavior changed in cmake 3.13 and SWIG_MODULE__REAL_NAME +# is no longer set by default so set policy to the old behavior. +if(NOT CMAKE_VERSION VERSION_LESS 3.13.0) + cmake_policy(SET CMP0078 OLD) +endif () + # workaround for cmake bug #0013449 if ( NOT DEFINED CMAKE_FIND_ROOT_PATH OR NOT CMAKE_VERSION VERSION_LESS 3.0.0 ) find_package ( SWIG REQUIRED ) @@ -19,7 +25,11 @@ link_directories ( ${CMAKE_CURRENT_BINARY_DIR}/../src ) if ( DOCUMENTATION ) set(CMAKE_SWIG_FLAGS -DDOXYGEN=${DOXYGEN_FOUND}) endif() -swig_add_module ( ftdi1 python ftdi1.i ) +if(NOT CMAKE_VERSION VERSION_LESS 3.8.0) + swig_add_library ( ftdi1 LANGUAGE python SOURCES ftdi1.i ) +else () + swig_add_module ( ftdi1 python ftdi1.i ) +endif() swig_link_libraries ( ftdi1 ftdi1 ) if ( LINK_PYTHON_LIBRARY )