Packages
hackney
3.0.1
4.7.2
4.7.1
4.7.0
4.6.1
4.6.0
4.5.2
4.5.1
4.5.0
4.4.5
4.4.3
4.4.2
4.4.1
4.4.0
4.3.0
4.2.3
4.2.2
4.2.1
4.2.0
4.1.0
4.0.3
4.0.2
4.0.1
4.0.0
3.2.1
3.2.0
3.1.2
3.1.1
3.1.0
3.0.3
3.0.2
3.0.1
3.0.0
retired
2.0.1
2.0.0
2.0.0-beta.1
1.25.0
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.1
1.20.0
1.19.1
1.19.0
1.18.2
1.18.1
1.18.0
1.17.4
1.17.3
1.17.2
1.17.1
1.17.0
1.16.0
1.15.2
1.15.1
1.15.0
1.14.3
1.14.2
1.14.0
1.13.0
1.12.1
1.12.0
1.11.0
1.10.1
1.10.0
1.9.0
1.8.6
1.8.5
1.8.4
1.8.3
1.8.2
1.8.0
1.7.1
1.7.0
1.6.6
retired
1.6.5
1.6.4
retired
1.6.3
1.6.2
1.6.1
1.6.0
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.10
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.0
1.0.6
1.0.5
1.0.2
1.0.1
0.15.2
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
Simple HTTP client with HTTP/1.1, HTTP/2, and HTTP/3 support
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
c_src/lsquic/src/liblsquic/ls-qpack/CMakeLists.txt
# The following variable can be defined on the command line:
#
# BUILD_SHARED_LIBS
#
# The following environment variables will be taken into account when running
# cmake for the first time:
#
# CFLAGS
# LDFLAGS
cmake_minimum_required(VERSION 3.1)
project(ls-qpack
LANGUAGES C
HOMEPAGE_URL "https://github.com/litespeedtech/ls-qpack"
DESCRIPTION "QPACK compression library for use with HTTP/3"
VERSION 2.6.2)
option(LSQPACK_TESTS "Build tests")
option(LSQPACK_BIN "Build binaries" ON)
option(LSQPACK_XXH "Include XXH" ON)
option(BUILD_SHARED_LIBS OFF)
# Use `cmake -DBUILD_SHARED_LIBS=OFF` to build a static library.
add_library(ls-qpack "")
add_library(ls-qpack::ls-qpack ALIAS ls-qpack)
set_target_properties(ls-qpack PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR})
target_include_directories(ls-qpack PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>
)
target_sources(ls-qpack PRIVATE lsqpack.c)
if(LSQPACK_XXH)
target_include_directories(ls-qpack PRIVATE deps/xxhash/)
target_sources(ls-qpack PRIVATE deps/xxhash/xxhash.c)
set(LSQPACK_DEPENDS "")
else()
find_package(xxHash CONFIG)
if(NOT xxHash_FOUND)
find_package(PkgConfig REQUIRED)
pkg_check_modules(LS_QPACK_XXH REQUIRED IMPORTED_TARGET libxxhash GLOBAL)
add_library(xxHash::xxhash ALIAS PkgConfig::LS_QPACK_XXH)
endif()
target_link_libraries(ls-qpack PRIVATE xxHash::xxhash)
set(LSQPACK_DEPENDS "libxxhash")
endif()
if(WIN32 OR EMSCRIPTEN)
target_include_directories(ls-qpack PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/wincompat>
$<INSTALL_INTERFACE:include>
)
endif()
if(MSVC)
target_compile_options(ls-qpack PRIVATE
/Wall
/wd4100 # unreffed parameter
/wd4200 # zero-sized array
# Apparently this C99 construct is not supported properly by VS:
# https://stackoverflow.com/questions/1064930/struct-initializer-typedef-with-visual-studio
/wd4204 # non-constant aggregate initializer
/wd4255 # no function prototype (getopt)
/wd4334 # result of 32-bit shift implicitly converted to 64 bits
/wd4820 # padding
/wd4668 # undefined macro
/wd4710 # not inlined by default
/wd4996 # unsafe function
/wd4061 # enum is not explicitly handled by a case
/wd5045 # Compiler will insert Spectre mitigation for memory load
)
else()
target_compile_options(ls-qpack PRIVATE
-Wall
-Wextra
-Wno-unused-parameter
-fno-omit-frame-pointer
)
endif()
IF (CMAKE_SYSTEM_NAME STREQUAL Windows)
IF (LSQPACK_TESTS OR LSQPACK_BIN)
FIND_PATH(GETOPT_INCLUDE_DIR NAMES getopt.h)
IF (GETOPT_INCLUDE_DIR)
INCLUDE_DIRECTORIES(${GETOPT_INCLUDE_DIR})
ELSE()
MESSAGE(FATAL_ERROR "getopt.h was not found")
ENDIF()
FIND_LIBRARY(GETOPT_LIB getopt)
IF(GETOPT_LIB)
MESSAGE(STATUS "Found getopt: ${GETOPT_LIB}")
ELSE()
MESSAGE(STATUS "getopt not found")
ENDIF()
ENDIF()
ENDIF()
IF(DEFINED LSXPACK_MAX_STRLEN)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSXPACK_MAX_STRLEN=${LSXPACK_MAX_STRLEN}")
ENDIF()
IF (CMAKE_BUILD_TYPE STREQUAL MinSizeRel)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLS_QPACK_USE_LARGE_TABLES=0")
ENDIF()
IF(LSQPACK_TESTS)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSQPACK_DEVEL_MODE=1")
ENDIF()
INCLUDE(CheckCCompilerFlag)
CHECK_C_COMPILER_FLAG(-Wno-implicit-fallthrough HAS_NO_IMPLICIT_FALLTHROUGH)
IF (HAS_NO_IMPLICIT_FALLTHROUGH)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-implicit-fallthrough")
ENDIF()
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} $ENV{EXTRA_CFLAGS}")
MESSAGE(STATUS "Compiler flags: ${CMAKE_C_FLAGS}")
if(LSQPACK_TESTS)
enable_testing()
add_subdirectory(test)
endif()
# The executables are used within the test suite as well.
if(LSQPACK_BIN OR LSQPACK_TESTS)
add_subdirectory(bin)
endif()
include(GNUInstallDirs)
configure_file(lsqpack.pc.in lsqpack.pc @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/lsqpack.pc"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
configure_file(ls-qpack-config.cmake.in ls-qpack-config.cmake @ONLY)
install(TARGETS ls-qpack EXPORT ls-qpack-config
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ls-qpack-config.cmake"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ls-qpack)
install(
EXPORT ls-qpack-config
FILE ls-qpack-targets.cmake
NAMESPACE ls-qpack::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ls-qpack
)
install(FILES lsqpack.h lsxpack_header.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
if(LSQPACK_BIN)
install(TARGETS
encode-int
fuzz-decode
interop-decode
interop-encode
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
if(WIN32 OR EMSCRIPTEN)
install(DIRECTORY wincompat/sys DESTINATION include)
endif()