diff options
author | Jia Tan <jiat0218@gmail.com> | 2023-09-12 22:36:12 +0800 |
---|---|---|
committer | Jia Tan <jiat0218@gmail.com> | 2023-09-12 22:49:03 +0800 |
commit | 7379bb3eed428c0ae734d0cc4a1fd04359d53f08 (patch) | |
tree | 1614ebaf62be7c3914de330369fd3766085ca9e1 | |
parent | CMake: Fix unconditionally defining HAVE_CLOCK_MONOTONIC. (diff) | |
download | xz-7379bb3eed428c0ae734d0cc4a1fd04359d53f08.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.
-rw-r--r-- | CMakeLists.txt | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 63dd59f7..8ecccde0 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(). |