Commit de178d36ffd01ca0ba4262becedbd36df8529088

Edward Thomson 2021-11-10T21:49:20

cmake: refactor http_parser selection Move http_parser selection into its own cmake module.

diff --git a/cmake/SelectHTTPParser.cmake b/cmake/SelectHTTPParser.cmake
new file mode 100644
index 0000000..a1724a7
--- /dev/null
+++ b/cmake/SelectHTTPParser.cmake
@@ -0,0 +1,19 @@
+# Optional external dependency: http-parser
+if(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})
+		list(APPEND LIBGIT2_LIBS ${HTTP_PARSER_LIBRARIES})
+		list(APPEND LIBGIT2_PC_LIBS "-lhttp_parser")
+		add_feature_info(http-parser ON "http-parser support (system)")
+	else()
+		message(FATAL_ERROR "http-parser support was requested but not found")
+	endif()
+else()
+	message(STATUS "http-parser version 2 was not found or disabled; using bundled 3rd-party sources.")
+	add_subdirectory("${libgit2_SOURCE_DIR}/deps/http-parser" "${libgit2_BINARY_DIR}/deps/http-parser")
+	list(APPEND LIBGIT2_INCLUDES "${libgit2_SOURCE_DIR}/deps/http-parser")
+	list(APPEND LIBGIT2_OBJECTS "$<TARGET_OBJECTS:http-parser>")
+	add_feature_info(http-parser ON "http-parser support (bundled)")
+endif()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 30abfef..72b22c8 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -113,6 +113,8 @@ endif()
 
 include(SelectHTTPSBackend)
 include(SelectHashes)
+include(SelectHTTPParser)
+
 target_sources(git2internal PRIVATE ${SRC_SHA1})
 
 # Specify regular expression implementation
@@ -167,26 +169,6 @@ else()
 	message(FATAL_ERROR "The REGEX_BACKEND option provided is not supported")
 endif()
 
-# Optional external dependency: http-parser
-if(USE_HTTP_PARSER STREQUAL "system")
-	find_package(HTTPParser)
-
-	if(HTTP_PARSER_FOUND AND HTTP_PARSER_VERSION_MAJOR EQUAL 2)
-		list(APPEND LIBGIT2_SYSTEM_INCLUDES ${HTTP_PARSER_INCLUDE_DIRS})
-		list(APPEND LIBGIT2_LIBS ${HTTP_PARSER_LIBRARIES})
-		list(APPEND LIBGIT2_PC_LIBS "-lhttp_parser")
-		add_feature_info(http-parser ON "http-parser support (system)")
-	else()
-		message(FATAL_ERROR "http-parser support was requested but not found")
-	endif()
-else()
-	message(STATUS "http-parser version 2 was not found or disabled; using bundled 3rd-party sources.")
-	add_subdirectory("${libgit2_SOURCE_DIR}/deps/http-parser" "${libgit2_BINARY_DIR}/deps/http-parser")
-	list(APPEND LIBGIT2_INCLUDES "${libgit2_SOURCE_DIR}/deps/http-parser")
-	list(APPEND LIBGIT2_OBJECTS "$<TARGET_OBJECTS:http-parser>")
-	add_feature_info(http-parser ON "http-parser support (bundled)")
-endif()
-
 # Optional external dependency: zlib
 SanitizeBool(USE_BUNDLED_ZLIB)
 if(USE_BUNDLED_ZLIB STREQUAL ON)