File Build-kio_nfs-against-standalone-libtirpc.patch of Package kio-extras5

From 1029148d9ca743ffa4ccff7dfd75069808de7953 Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <asturm@gentoo.org>
Date: Tue, 27 Nov 2018 23:43:18 +0100
Subject: Build kio_nfs against standalone libtirpc

Summary:
Since glibc-2.26, cmake skipped over nfs when standalone tirpc
was installed in tirpc subdir (as done by Debian, Fedora, Arch, Gentoo...)

Use FindTIRPC and make kio_nfs optional that way
FindTIRPC taken from https://phabricator.kde.org/D12761

Test Plan: Built with libtirpc successfully.

Reviewers: #dolphin, dfaure, rdieter, sitter

Subscribers: kde-frameworks-devel, cgiboudeaux, arojas, kfm-devel, meven

Tags: #dolphin, #frameworks

Differential Revision: https://phabricator.kde.org/D17205
---
 CMakeLists.txt     |  9 ++++++---
 nfs/CMakeLists.txt | 15 +++++++++------
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e6069be..3ce1538 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -140,6 +140,11 @@ if(UNIX)
     set_package_properties(Gperf PROPERTIES TYPE OPTIONAL
                            PURPOSE "Needed to build the man kioslave"
                            )
+
+    find_package(TIRPC)
+    set_package_properties(TIRPC PROPERTIES TYPE OPTIONAL
+                           PURPOSE "Needed to build the NFS kioslave"
+                           )
 else()
     # FIXME: on windows we ignore support until trash gets integrated
 endif()
@@ -184,9 +189,7 @@ if(NOT WIN32)
    if(Gperf_FOUND)
      add_subdirectory( man )
    endif()
-   check_include_files(rpc/rpc.h HAVE_RPC_RPC_H)
-   add_feature_info("NFS kioslave" HAVE_RPC_RPC_H "The RPC library is needed to build the NFS kioslave")
-   if(HAVE_RPC_RPC_H)
+   if(TIRPC_FOUND)
      add_subdirectory( nfs )
    endif()
 endif()
diff --git a/nfs/CMakeLists.txt b/nfs/CMakeLists.txt
index 6436e0d..7189b25 100644
--- a/nfs/CMakeLists.txt
+++ b/nfs/CMakeLists.txt
@@ -1,10 +1,12 @@
 ## Check for XDR functions
-include(CheckFunctionExists)
+include(CheckCXXSymbolExists)
 
-CHECK_FUNCTION_EXISTS(xdr_u_int64_t HAVE_XDR_U_INT64_T)
-CHECK_FUNCTION_EXISTS(xdr_uint64_t HAVE_XDR_UINT64_T)
-CHECK_FUNCTION_EXISTS(xdr_u_hyper HAVE_XDR_U_HYPER)
-CHECK_FUNCTION_EXISTS(xdr_u_longlong_t HAVE_XDR_U_LONGLONG_T)
+set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${TIRPC_LIBRARIES})
+set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${TIRPC_INCLUDE_DIRS})
+check_cxx_symbol_exists(xdr_u_int64_t "rpc/xdr.h" HAVE_XDR_U_INT64_T)
+check_cxx_symbol_exists(xdr_uint64_t "rpc/xdr.h" HAVE_XDR_UINT64_T)
+check_cxx_symbol_exists(xdr_u_hyper "rpc/xdr.h" HAVE_XDR_U_HYPER)
+check_cxx_symbol_exists(xdr_u_longlong_t "rpc/xdr.h" HAVE_XDR_U_LONGLONG_T)
 
 if (NOT HAVE_XDR_U_INT64_T AND NOT HAVE_XDR_UINT64_T AND NOT HAVE_XDR_U_HYPER AND NOT HAVE_XDR_U_LONGLONG_T)
     message(FATAL_ERROR "Could not find 64-bit XDR datatype functions!")
@@ -24,9 +26,10 @@ if (HAVE_XDR_U_LONGLONG_T)
 endif (HAVE_XDR_U_LONGLONG_T)
 
 add_definitions(-DTRANSLATION_DOMAIN=\"kio5_nfs\")
+include_directories(${TIRPC_INCLUDE_DIRS})
 
 add_library(kio_nfs MODULE kio_nfs.cpp nfsv2.cpp nfsv3.cpp rpc_nfs3_prot_xdr.c rpc_nfs2_prot_xdr.c)
-target_link_libraries(kio_nfs KF5::KIOCore KF5::I18n Qt5::Network)
+target_link_libraries(kio_nfs KF5::KIOCore KF5::I18n Qt5::Network ${TIRPC_LIBRARIES})
 set_target_properties(kio_nfs PROPERTIES OUTPUT_NAME "nfs")
 
 install(TARGETS kio_nfs DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio)
-- 
cgit v1.1

openSUSE Build Service is sponsored by