native-hdr-histogram
Version:
node.js bindings for hdr histogram C implementation
75 lines (66 loc) • 2.28 kB
Plain Text
find_package(ZLIB REQUIRED)
find_package(Threads REQUIRED)
include(CheckLibraryExists)
check_library_exists(m ceil "" HAVE_LIBM)
check_library_exists(rt clock_gettime "" HAVE_LIBRT)
set(HDR_HISTOGRAM_SOURCES
hdr_encoding.c
hdr_histogram.c
hdr_histogram_log.c
hdr_interval_recorder.c
hdr_thread.c
hdr_time.c
hdr_writer_reader_phaser.c)
set(HDR_HISTOGRAM_PRIVATE_HEADERS
hdr_atomic.h
hdr_encoding.h
hdr_endian.h
hdr_tests.h)
set(HDR_HISTOGRAM_PUBLIC_HEADERS
hdr_histogram.h
hdr_histogram_log.h
hdr_interval_recorder.h
hdr_thread.h
hdr_time.h
hdr_writer_reader_phaser.h)
function(hdr_histogram_add_library NAME LIBRARY_TYPE DO_INSTALL)
add_library(${NAME} ${LIBRARY_TYPE}
${HDR_HISTOGRAM_SOURCES}
${HDR_HISTOGRAM_PRIVATE_HEADERS}
${HDR_HISTOGRAM_PUBLIC_HEADERS})
target_link_libraries(${NAME}
PRIVATE
ZLIB::ZLIB
Threads::Threads
$<$<BOOL:${HAVE_LIBM}>:m>
$<$<BOOL:${HAVE_LIBRT}>:rt>
$<$<BOOL:${WIN32}>:ws2_32>)
target_include_directories(${NAME}
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
if(DO_INSTALL)
install(
TARGETS ${NAME}
EXPORT ${PROJECT_NAME}-targets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
endfunction()
option(HDR_HISTOGRAM_BUILD_SHARED "Build shared library" ON)
option(HDR_HISTOGRAM_INSTALL_SHARED "Install shared library" ON)
if(HDR_HISTOGRAM_BUILD_SHARED)
hdr_histogram_add_library(hdr_histogram SHARED ${HDR_HISTOGRAM_INSTALL_SHARED})
set_target_properties(hdr_histogram PROPERTIES
VERSION ${HDR_VERSION}
SOVERSION ${HDR_SOVERSION})
endif()
option(HDR_HISTOGRAM_BUILD_STATIC "Build static library" ON)
option(HDR_HISTOGRAM_INSTALL_STATIC "Install static library" ON)
if(HDR_HISTOGRAM_BUILD_STATIC)
hdr_histogram_add_library(hdr_histogram_static STATIC ${HDR_HISTOGRAM_INSTALL_STATIC})
endif()
install(
FILES ${HDR_HISTOGRAM_PUBLIC_HEADERS}
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hdr)