aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorJia Tan <jiat0218@gmail.com>2023-09-12 22:36:12 +0800
committerJia Tan <jiat0218@gmail.com>2023-10-31 01:03:25 +0800
commita70e96d2da761b8b3a77bf14e08002d871e5950b (patch)
tree86b9f052d205849feb7547a68e9e630b4e37dbaa /CMakeLists.txt
parentCMake: Fix unconditionally defining HAVE_CLOCK_MONOTONIC. (diff)
downloadxz-a70e96d2da761b8b3a77bf14e08002d871e5950b.tar.xz
CMake: Fix time.h checks not running on second CMake run.
If CMake was configured more than once, HAVE_CLOCK_GETTIME and HAVE_CLOCK_MONOTONIC would not be set as compile definitions. The check for librt being needed to provide HAVE_CLOCK_GETTIME was also simplified.
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt18
1 files changed, 10 insertions, 8 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f17fe081..d81fefe0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -150,24 +150,26 @@ tuklib_integer(ALL)
# Check for clock_gettime(). Do this before checking for threading so
# that we know there if CLOCK_MONOTONIC is available.
-if(NOT WIN32 AND NOT DEFINED HAVE_CLOCK_GETTIME)
+if(NOT WIN32)
check_symbol_exists(clock_gettime time.h HAVE_CLOCK_GETTIME)
+
if(NOT HAVE_CLOCK_GETTIME)
# With glibc <= 2.17 or Solaris 10 this needs librt.
- unset(HAVE_CLOCK_GETTIME CACHE)
-
+ # Add librt for the next check for HAVE_CLOCK_GETTIME. If it is
+ # found after including the library, we know that librt is required.
list(INSERT CMAKE_REQUIRED_LIBRARIES 0 rt)
- check_symbol_exists(clock_gettime time.h HAVE_CLOCK_GETTIME)
+ check_symbol_exists(clock_gettime time.h HAVE_CLOCK_GETTIME_LIBRT)
- # If it was found now, add it to all targets and keep it
- # in CMAKE_REQUIRED_LIBRARIES for further tests too.
- if(HAVE_CLOCK_GETTIME)
+ # If it was found now, add librt to all targets and keep it in
+ # CMAKE_REQUIRED_LIBRARIES for further tests too.
+ if(HAVE_CLOCK_GETTIME_LIBRT)
link_libraries(rt)
else()
list(REMOVE_AT CMAKE_REQUIRED_LIBRARIES 0)
endif()
endif()
- if(HAVE_CLOCK_GETTIME)
+
+ if(HAVE_CLOCK_GETTIME OR HAVE_CLOCK_GETTIME_LIBRT)
add_compile_definitions(HAVE_CLOCK_GETTIME)
# Check if CLOCK_MONOTONIC is available for clock_gettime().