You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.3 KiB
93 lines
3.3 KiB
From 429218190bf4bcc90d86f0878e81469b3ae3c389 Mon Sep 17 00:00:00 2001
|
|
From: Veeti Paananen <veeti.paananen@rojekti.fi>
|
|
Date: Thu, 2 May 2013 14:07:22 +0300
|
|
Subject: [PATCH] Build with the system's http-parser installation if available
|
|
|
|
---
|
|
CMakeLists.txt | 15 +++++++++++++--
|
|
deps/cmake/FindHTTP_Parser.cmake | 39 +++++++++++++++++++++++++++++++++++++++
|
|
2 files changed, 52 insertions(+), 2 deletions(-)
|
|
create mode 100644 deps/cmake/FindHTTP_Parser.cmake
|
|
|
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index 9f6b06b..b176035 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -14,6 +14,9 @@
|
|
PROJECT(libgit2 C)
|
|
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
|
|
|
|
+# Add find modules to the path
|
|
+SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/Modules")
|
|
+
|
|
# Build options
|
|
#
|
|
OPTION( SONAME "Set the (SO)VERSION of the target" ON )
|
|
@@ -97,8 +100,16 @@ ELSE ()
|
|
IF (NOT AMIGA)
|
|
FIND_PACKAGE(OpenSSL)
|
|
ENDIF ()
|
|
- FILE(GLOB SRC_HTTP deps/http-parser/*.c)
|
|
- INCLUDE_DIRECTORIES(deps/http-parser)
|
|
+
|
|
+ FIND_PACKAGE(HTTP_Parser QUIET)
|
|
+ IF (HTTP_PARSER_FOUND AND HTTP_PARSER_VERSION_MAJOR EQUAL 2)
|
|
+ INCLUDE_DIRECTORIES(${HTTP_PARSER_INCLUDE_DIRS})
|
|
+ LINK_LIBRARIES(${HTTP_PARSER_LIBRARIES})
|
|
+ ELSE()
|
|
+ MESSAGE("http-parser was not found or is too old; using bundled 3rd-party sources.")
|
|
+ INCLUDE_DIRECTORIES(deps/http-parser)
|
|
+ FILE(GLOB SRC_HTTP deps/http-parser/*.c)
|
|
+ ENDIF()
|
|
ENDIF()
|
|
|
|
# Specify sha1 implementation
|
|
diff --git a/cmake/Modules/FindHTTP_Parser.cmake b/cmake/Modules/FindHTTP_Parser.cmake
|
|
new file mode 100644
|
|
index 0000000..d92bf75
|
|
--- /dev/null
|
|
+++ b/cmake/Modules/FindHTTP_Parser.cmake
|
|
@@ -0,0 +1,39 @@
|
|
+# - Try to find http-parser
|
|
+#
|
|
+# Defines the following variables:
|
|
+#
|
|
+# HTTP_PARSER_FOUND - system has http-parser
|
|
+# HTTP_PARSER_INCLUDE_DIR - the http-parser include directory
|
|
+# HTTP_PARSER_LIBRARIES - Link these to use http-parser
|
|
+# HTTP_PARSER_VERSION_MAJOR - major version
|
|
+# HTTP_PARSER_VERSION_MINOR - minor version
|
|
+# HTTP_PARSER_VERSION_STRING - the version of http-parser found
|
|
+
|
|
+# Find the header and library
|
|
+FIND_PATH(HTTP_PARSER_INCLUDE_DIR NAMES http_parser.h)
|
|
+FIND_LIBRARY(HTTP_PARSER_LIBRARY NAMES http_parser libhttp_parser)
|
|
+
|
|
+# Found the header, read version
|
|
+if (HTTP_PARSER_INCLUDE_DIR AND EXISTS "${HTTP_PARSER_INCLUDE_DIR}/http_parser.h")
|
|
+ FILE(READ "${HTTP_PARSER_INCLUDE_DIR}/http_parser.h" HTTP_PARSER_H)
|
|
+ IF (HTTP_PARSER_H)
|
|
+ STRING(REGEX REPLACE ".*#define[\t ]+HTTP_PARSER_VERSION_MAJOR[\t ]+([0-9]+).*" "\\1" HTTP_PARSER_VERSION_MAJOR "${HTTP_PARSER_H}")
|
|
+ STRING(REGEX REPLACE ".*#define[\t ]+HTTP_PARSER_VERSION_MINOR[\t ]+([0-9]+).*" "\\1" HTTP_PARSER_VERSION_MINOR "${HTTP_PARSER_H}")
|
|
+ SET(HTTP_PARSER_VERSION_STRING "${HTTP_PARSER_VERSION_MAJOR}.${HTTP_PARSER_VERSION_MINOR}")
|
|
+ ENDIF()
|
|
+ UNSET(HTTP_PARSER_H)
|
|
+ENDIF()
|
|
+
|
|
+# Handle the QUIETLY and REQUIRED arguments and set HTTP_PARSER_FOUND
|
|
+# to TRUE if all listed variables are TRUE
|
|
+INCLUDE(FindPackageHandleStandardArgs)
|
|
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(HTTP_Parser REQUIRED_VARS HTTP_PARSER_INCLUDE_DIR HTTP_PARSER_LIBRARY)
|
|
+
|
|
+# Hide advanced variables
|
|
+MARK_AS_ADVANCED(HTTP_PARSER_INCLUDE_DIR HTTP_PARSER_LIBRARY)
|
|
+
|
|
+# Set standard variables
|
|
+IF (HTTP_PARSER_FOUND)
|
|
+ SET(HTTP_PARSER_LIBRARIES ${HTTP_PARSER_LIBRARY})
|
|
+ set(HTTP_PARSER_INCLUDE_DIRS ${HTTP_PARSER_INCLUDE_DIR})
|
|
+ENDIF()
|
|
--
|
|
1.8.1.4
|
|
|