summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2014-04-24 12:31:27 -0700
committerJunio C Hamano <gitster@pobox.com>2014-04-24 12:31:27 -0700
commite42552135a2a396f37053a89f44952ea907870b2 (patch)
treecd3018e60a25867289953230a2aef720f59309de
parent779792a5f24bb4e8049c4f88ad752e70d4a8a080 (diff)
parentd5067112db68fcc8c7b13c769c896b17480cb5b0 (diff)
downloadgit-e42552135a2a396f37053a89f44952ea907870b2.tar.gz
Merge branch 'db/make-with-curl'
Ask curl-config how to link with the curl library, instead of having only a limited configurability knobs in the Makefile. * db/make-with-curl: Makefile: allow static linking against libcurl Makefile: use curl-config to determine curl flags
-rw-r--r--Makefile45
1 files changed, 33 insertions, 12 deletions
diff --git a/Makefile b/Makefile
index a53f3a8326..74a929b6d4 100644
--- a/Makefile
+++ b/Makefile
@@ -34,8 +34,15 @@ all::
# git-http-push are not built, and you cannot use http:// and https://
# transports (neither smart nor dumb).
#
+# Define CURL_CONFIG to the path to a curl-config binary other than the
+# default 'curl-config'.
+#
+# Define CURL_STATIC to statically link libcurl. Only applies if
+# CURL_CONFIG is used.
+#
# Define CURLDIR=/foo/bar if your curl header and library files are in
-# /foo/bar/include and /foo/bar/lib directories.
+# /foo/bar/include and /foo/bar/lib directories. This overrides CURL_CONFIG,
+# but is less robust.
#
# Define NO_EXPAT if you do not have expat installed. git-http-push is
# not built, and you cannot push using http:// and https:// transports (dumb).
@@ -143,9 +150,11 @@ all::
#
# Define NEEDS_SSL_WITH_CRYPTO if you need -lssl when using -lcrypto (Darwin).
#
-# Define NEEDS_SSL_WITH_CURL if you need -lssl with -lcurl (Minix).
+# Define NEEDS_SSL_WITH_CURL if you need -lssl with -lcurl (Minix). Only used
+# if CURLDIR is set.
#
-# Define NEEDS_IDN_WITH_CURL if you need -lidn when using -lcurl (Minix).
+# Define NEEDS_IDN_WITH_CURL if you need -lidn when using -lcurl (Minix). Only
+# used if CURLDIR is set.
#
# Define NEEDS_LIBICONV if linking with libc is not enough (Darwin).
#
@@ -1121,18 +1130,30 @@ else
# Try "-Wl,-rpath=$(CURLDIR)/$(lib)" in such a case.
BASIC_CFLAGS += -I$(CURLDIR)/include
CURL_LIBCURL = -L$(CURLDIR)/$(lib) $(CC_LD_DYNPATH)$(CURLDIR)/$(lib) -lcurl
+ ifdef NEEDS_SSL_WITH_CURL
+ CURL_LIBCURL += -lssl
+ ifdef NEEDS_CRYPTO_WITH_SSL
+ CURL_LIBCURL += -lcrypto
+ endif
+ endif
+ ifdef NEEDS_IDN_WITH_CURL
+ CURL_LIBCURL += -lidn
+ endif
else
- CURL_LIBCURL = -lcurl
- endif
- ifdef NEEDS_SSL_WITH_CURL
- CURL_LIBCURL += -lssl
- ifdef NEEDS_CRYPTO_WITH_SSL
- CURL_LIBCURL += -lcrypto
+ CURL_CONFIG ?= curl-config
+ BASIC_CFLAGS += $(shell $(CURL_CONFIG) --cflags)
+ ifdef CURL_STATIC
+ CURL_LIBCURL = $(shell $(CURL_CONFIG) --static-libs)
+ ifeq "$(CURL_LIBCURL)" ""
+ $(error libcurl not detected or not compiled with static support)
+ endif
+ else
+ CURL_LIBCURL = $(shell $(CURL_CONFIG) --libs)
+ ifeq "$(CURL_LIBCURL)" ""
+ $(error libcurl not detected; try setting CURLDIR)
+ endif
endif
endif
- ifdef NEEDS_IDN_WITH_CURL
- CURL_LIBCURL += -lidn
- endif
REMOTE_CURL_PRIMARY = git-remote-http$X
REMOTE_CURL_ALIASES = git-remote-https$X git-remote-ftp$X git-remote-ftps$X