summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/FindWrapRt.cmake27
-rw-r--r--src/corelib/CMakeLists.txt1
-rw-r--r--src/corelib/configure.cmake4
-rwxr-xr-xutil/cmake/configurejson2cmake.py1
4 files changed, 32 insertions, 1 deletions
diff --git a/cmake/FindWrapRt.cmake b/cmake/FindWrapRt.cmake
new file mode 100644
index 0000000000..221399b259
--- /dev/null
+++ b/cmake/FindWrapRt.cmake
@@ -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}")
+
diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt
index eaa2ab8654..c56b003137 100644
--- a/src/corelib/CMakeLists.txt
+++ b/src/corelib/CMakeLists.txt
@@ -231,6 +231,7 @@ add_qt_module(Core
tools/qvsnprintf.cpp
LIBRARIES
WrapDoubleConversion
+ WrapRt
tinycbor Threads::Threads ZLIB::ZLIB
QtHarfBuzz
PUBLIC_LIBRARIES Qt::Platform
diff --git a/src/corelib/configure.cmake b/src/corelib/configure.cmake
index 7836577e5c..a8acac8f81 100644
--- a/src/corelib/configure.cmake
+++ b/src/corelib/configure.cmake
@@ -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"
diff --git a/util/cmake/configurejson2cmake.py b/util/cmake/configurejson2cmake.py
index 27a72202d2..03902f1648 100755
--- a/util/cmake/configurejson2cmake.py
+++ b/util/cmake/configurejson2cmake.py
@@ -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),