Lekensteyn added a comment.

In https://reviews.llvm.org/D47817#1155717, @mgorny wrote:

> > This would be the first user of pkg-config here. I am not sure if this 
> > would be the best fix. Usually you cannot (easily) recompile libc and 
> > override it, but for external libs such as libtirpc this should be more 
> > doable (I think).
>
> I don't think libtirpc's include path is expected to be predictable by 
> design. I think it's something distro maintainers have to choose to avoid 
> collision with headers that (used to be) installed by glibc. In any case, I 
> can't think of a better solution than pkg-config here (libtirpc doesn't come 
> with CMake modules).


On Arch (libtirpc-1.0.3-2), Debian (libtirpc-dev 0.2.5-1.2 in sid), Gentoo 
(libtirpc-1.0.3), the include files happen to be installed in 
/usr/include/libtirpc, so it seems pretty consistent. So you could consider 
writing a `cmake/Modules/FindLibtirpc.cmake` module that looks like:

  # sets Libtirpc_FOUND Libtirpc_INCLUDE_DIRS
  
  find_path(Libtirpc_INCLUDE_DIR
    NAMES rpc/xdr.h
    PATH_SUFFIXES tirpc
  )
  include(FindPackageHandleStandardArgs)
  find_package_handle_standard_args(Libtirpc REQUIRED_VARS Libtirpc_INCLUDE_DIR)
  if(Libtirpc_FOUND)
    set(Libtirpc_INCLUDE_DIRS ${Libtirpc_INCLUDE_DIR})
  endif()

then you can use `find_package(Libtirpc)` without depending on `pkg-config`.

> libtirpc case never could have worked.

The reason for that is probably because of 
lib/sanitizer_common/sanitizer_platform.h saying:

  // Assume obsolete RPC headers are available by default
  #if !defined(HAVE_RPC_XDR_H) && !defined(HAVE_TIRPC_RPC_XDR_H)
  # define HAVE_RPC_XDR_H (SANITIZER_LINUX && !SANITIZER_ANDROID)
  # define HAVE_TIRPC_RPC_XDR_H 0
  #endif

That should probably be addressed too.


Repository:
  rCRT Compiler Runtime

https://reviews.llvm.org/D47817



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to