Skip to content

Commit d755d26

Browse files
authored
CMake-only computation of whether librt is needed. (#374)
1 parent c4854d2 commit d755d26

File tree

3 files changed

+11
-19
lines changed

3 files changed

+11
-19
lines changed

CMakeLists.txt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@ MESSAGE(STATUS "CMake v${CMAKE_VERSION}")
1616

1717
IF (CMAKE_SYSTEM_NAME STREQUAL "Linux")
1818
# If using older glibc, need to link with -lrt. See clock_getres(2).
19-
EXECUTE_PROCESS(
20-
COMMAND ${PROJECT_SOURCE_DIR}/print-glibc-version.sh ${CMAKE_C_COMPILER}
21-
OUTPUT_VARIABLE GLIBC_VERSION)
22-
IF(NOT GLIBC_VERSION EQUAL "" AND GLIBC_VERSION VERSION_LESS 2.17)
23-
SET(LIBS ${LIBS} rt)
24-
ENDIF()
19+
include(CheckSymbolExists)
20+
check_symbol_exists(clock_getres "time.h" HAS_clock_getres_WITHOUT_LIBRT)
21+
22+
if(NOT HAS_clock_getres_WITHOUT_LIBRT)
23+
find_library(RT_LIBRARY rt)
24+
set(NEED_LIBRT_FOR_clock_getres ON)
25+
endif()
2526
ELSEIF (CMAKE_SYSTEM_NAME STREQUAL "Android")
2627
# for android-ndk >= r19b
2728
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY "BOTH")

print-glibc-version.sh

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/liblsquic/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,10 @@ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DXXH_HEADER_NAME=\\\"lsquic_xxhash.h\\\"")
119119
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSQPACK_ENC_LOGGER_HEADER=\\\"lsquic_qpack_enc_logger.h\\\"")
120120
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSQPACK_DEC_LOGGER_HEADER=\\\"lsquic_qpack_dec_logger.h\\\"")
121121

122+
if(NEED_LIBRT_FOR_clock_getres)
123+
target_link_libraries(lsquic PRIVATE ${RT_LIBRARY})
124+
endif()
125+
122126
IF(LSQUIC_SHARED_LIB)
123127
add_library(lsquic SHARED ${lsquic_STAT_SRCS})
124128
TARGET_LINK_LIBRARIES(lsquic PRIVATE ${BORINGSSL_LIB_ssl} ${BORINGSSL_LIB_crypto} ${ZLIB_LIB})

0 commit comments

Comments
 (0)