CMake: Find librt

Change-Id: Ibc39ba7a385146cd0428b78e12a793f0ddbfae91
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
This commit is contained in:
Tobias Hunger 2018-11-05 14:18:57 +01:00
parent df2975236d
commit bebbb41030
4 changed files with 32 additions and 1 deletions

27
cmake/FindWrapRt.cmake Normal file
View File

@ -0,0 +1,27 @@
include(CheckCXXSourceCompiles)
find_library(LIBRT rt)
set(_libraries "${CMAKE_REQUIRED_LIBRARIES}")
if(LIBRT_FOUND)
list(APPEND CMAKE_REQUIRED_LIBRARIES "${LIBRT}")
endif()
check_cxx_source_compiles("
#include <unistd.h>
#include <time.h>
int main(int argc, char *argv[]) {
timespec ts; clock_gettime(CLOCK_REALTIME, &ts);
}" HAVE_GETTIME)
set(CMAKE_REQUIRED_LIBRARIES "${_libraries}")
unset(_libraries)
add_library(WrapRt INTERFACE)
if (LIBRT_FOUND)
target_link_libraries(WrapRt INTERFACE "${LIBRT}")
endif()
set(WrapRt_FOUND "${HAVE_GETTIME}")

View File

@ -231,6 +231,7 @@ add_qt_module(Core
tools/qvsnprintf.cpp
LIBRARIES
WrapDoubleConversion
WrapRt
tinycbor Threads::Threads ZLIB::ZLIB
QtHarfBuzz
PUBLIC_LIBRARIES Qt::Platform

View File

@ -18,6 +18,8 @@ find_package(Libsystemd)
set_package_properties(Libsystemd PROPERTIES TYPE OPTIONAL)
find_package(Atomic)
set_package_properties(Atomic PROPERTIES TYPE OPTIONAL)
find_package(WrapRt)
set_package_properties(WrapRt PROPERTIES TYPE OPTIONAL)
find_package(PCRE2)
set_package_properties(PCRE2 PROPERTIES TYPE REQUIRED)
@ -340,7 +342,7 @@ closelog();
qt_feature("clock_gettime" PRIVATE
LABEL "clock_gettime()"
CONDITION UNIX AND libs.librt OR FIXME
CONDITION UNIX AND WrapRt_FOUND
)
qt_feature("clock_monotonic" PUBLIC
LABEL "POSIX monotonic clock"

View File

@ -67,6 +67,7 @@ def map_library(lib: str) -> Union[str, LibraryMapping, List[str]]:
'libpng': 'PNG',
'libpng': 'PNG',
'libproxy': 'libproxy',
'librt': 'WrapRt',
'libudev': 'Libudev',
'opengl': LibraryMapping(package="OpenGL", resultVariable="OpenGL_OpenGL"),
'openssl_headers': LibraryMapping(package="OpenSSL", resultVariable="OPENSSL_INCLUDE_DIR", appendFoundSuffix=False),