Re: Rawhide CMake broken?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* Tom Stellard:

> On 8/2/21 8:38 PM, Richard Shaw wrote:
>> I'm trying to fix vigra to work with OpenEXR 3 via the CONFIG method.
>> In the OpenEXR config it has a "find_dependency(Threads REQUIRED)"
>> and there's no complaint, but then building fails[1] with no such
>> library as "Threads::Threads" which means it's not getting
>> translated into the library name, presumable libpthread.so.0.
>> I added a "Find(Threads)" just to see what's up and that is failing
>> even though the library is provided by the glibc package which is
>> definitely installed!
>> Anyone else have any ideas?
>> 
>
> Could this be related to merging libpthread.so into libc.so?
>
> https://fedoraproject.org/wiki/Changes/GNUToolchainF35#Scope

Right.  I think the unqualified use of Threads::Threads is not correct
according to FindThreads.

<https://cmake.org/cmake/help/latest/module/FindThreads.html> says:

    Threads::Threads
    
        The thread library, if found.
  
But FindThreads does not really make an effort to find the thread
library (possibly empty) if it determines that is is not needed:

    # Check if pthread functions are in normal C library.
    # We list some pthread functions in PTHREAD_C_CXX_TEST_SOURCE test code.
    # If the pthread functions already exist in C library, we could just use
    # them instead of linking to the additional pthread library.
    if(CMAKE_C_COMPILER_LOADED)
      CHECK_C_SOURCE_COMPILES("${PTHREAD_C_CXX_TEST_SOURCE}" CMAKE_HAVE_LIBC_PTHREAD)
    elseif(CMAKE_CXX_COMPILER_LOADED)
      CHECK_CXX_SOURCE_COMPILES("${PTHREAD_C_CXX_TEST_SOURCE}" CMAKE_HAVE_LIBC_PTHREAD)
    endif()
    if(CMAKE_HAVE_LIBC_PTHREAD)
      set(CMAKE_THREAD_LIBS_INIT "")
      set(CMAKE_HAVE_THREADS_LIBRARY 1)
      set(Threads_FOUND TRUE)

This suggests that CMAKE_THREAD_LIBS_INIT is actually the variable to
use without a conditional check.  That seems to be what other packages
use.  Its documentation matches this:

    CMAKE_THREAD_LIBS_INIT
    
        The thread library to use. This may be empty if the thread
        functions are provided by the system libraries and no special
        flags are needed to use them.


Thanks,
Florian
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux