From 0c675b8c842fa0c7fa0f8733e22d90efc060959a Mon Sep 17 00:00:00 2001 From: Edward Thomson Date: Tue, 22 Oct 2024 10:01:44 +0100 Subject: [PATCH] cmake: enforce USE_HTTP_PARSER validity When `-DUSE_HTTP_PARSER=...` is specified, ensure that the specified HTTP Parser is valid, do not fallback to builtin. Restore `-DUSE_HTTP_PARSER=system` for backcompatibility. --- CMakeLists.txt | 4 ++-- cmake/{FindHTTPParser.cmake => FindHTTP_Parser.cmake} | 0 cmake/SelectHTTPParser.cmake | 8 +++++--- 3 files changed, 7 insertions(+), 5 deletions(-) rename cmake/{FindHTTPParser.cmake => FindHTTP_Parser.cmake} (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index f99a69c43..8f524e6a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,8 +34,8 @@ option(USE_SSH "Enable SSH support. Can be set to a specific bac option(USE_HTTPS "Enable HTTPS support. Can be set to a specific backend" ON) option(USE_SHA1 "Enable SHA1. Can be set to CollisionDetection(ON)/HTTPS" ON) option(USE_SHA256 "Enable SHA256. Can be set to HTTPS/Builtin" ON) -option(USE_GSSAPI "Link with libgssapi for SPNEGO auth" OFF) - set(USE_HTTP_PARSER "" CACHE STRING "Specifies the HTTP Parser implementation; either system or builtin.") +option(USE_GSSAPI "Link with libgssapi for SPNEGO auth" OFF) + set(USE_HTTP_PARSER "" CACHE STRING "Specifies the HTTP Parser implementation. One of http-parser, llhttp, or builtin. (Defaults to builtin.)") # set(USE_XDIFF "" CACHE STRING "Specifies the xdiff implementation; either system or builtin.") set(REGEX_BACKEND "" CACHE STRING "Regular expression implementation. One of regcomp_l, pcre2, pcre, regcomp, or builtin.") option(USE_BUNDLED_ZLIB "Use the bundled version of zlib. Can be set to one of Bundled(ON)/Chromium. The Chromium option requires a x86_64 processor with SSE4.2 and CLMUL" OFF) diff --git a/cmake/FindHTTPParser.cmake b/cmake/FindHTTP_Parser.cmake similarity index 100% rename from cmake/FindHTTPParser.cmake rename to cmake/FindHTTP_Parser.cmake diff --git a/cmake/SelectHTTPParser.cmake b/cmake/SelectHTTPParser.cmake index 4fc1f6968..e547e2d01 100644 --- a/cmake/SelectHTTPParser.cmake +++ b/cmake/SelectHTTPParser.cmake @@ -1,6 +1,6 @@ # Optional external dependency: http-parser -if(USE_HTTP_PARSER STREQUAL "http-parser") - find_package(HTTPParser) +if(USE_HTTP_PARSER STREQUAL "http-parser" OR USE_HTTP_PARSER STREQUAL "system") + find_package(HTTP_Parser) if(HTTP_PARSER_FOUND AND HTTP_PARSER_VERSION_MAJOR EQUAL 2) list(APPEND LIBGIT2_SYSTEM_INCLUDES ${HTTP_PARSER_INCLUDE_DIRS}) @@ -23,10 +23,12 @@ elseif(USE_HTTP_PARSER STREQUAL "llhttp") else() message(FATAL_ERROR "llhttp support was requested but not found") endif() -else() +elseif(USE_HTTP_PARSER STREQUAL "" OR USE_HTTP_PARSER STREQUAL "builtin") add_subdirectory("${PROJECT_SOURCE_DIR}/deps/llhttp" "${PROJECT_BINARY_DIR}/deps/llhttp") list(APPEND LIBGIT2_DEPENDENCY_INCLUDES "${PROJECT_SOURCE_DIR}/deps/llhttp") list(APPEND LIBGIT2_DEPENDENCY_OBJECTS "$") set(GIT_HTTPPARSER_BUILTIN 1) add_feature_info(http-parser ON "using bundled parser") +else() + message(FATAL_ERROR "unknown http-parser: ${USE_HTTP_PARSER}") endif()