aboutsummaryrefslogtreecommitdiffstats
path: root/config/user-libfetch.m4
blob: f5149fc1a5d715dd6b17a91f62b6839c698a3b08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
dnl #
dnl # Check for a libfetch - either fetch(3) or libcurl.
dnl #
dnl # There are two configuration dimensions:
dnl #   * fetch(3) vs libcurl
dnl #   * static vs dynamic
dnl #
dnl # fetch(3) is only dynamic.
dnl # We use sover 6, which first appeared in FreeBSD 8.0-RELEASE.
dnl #
dnl # libcurl development packages include curl-config(1) – we want:
dnl #   * HTTPS support
dnl #   * version at least 7.16 (October 2006), for sover 4
dnl #   * to decide if it's static or not
dnl #
AC_DEFUN([ZFS_AC_CONFIG_USER_LIBFETCH], [
	AC_MSG_CHECKING([for libfetch])
	LIBFETCH_LIBS=
	LIBFETCH_IS_FETCH=0
	LIBFETCH_IS_LIBCURL=0
	LIBFETCH_DYNAMIC=0
	LIBFETCH_SONAME=
	have_libfetch=

	saved_libs="$LIBS"
	LIBS="$LIBS -lfetch"
	AC_LINK_IFELSE([AC_LANG_PROGRAM([[
		#include <sys/param.h>
		#include <stdio.h>
		#include <fetch.h>
	]], [fetchGetURL("", "");])], [
		have_libfetch=1
		LIBFETCH_IS_FETCH=1
		LIBFETCH_DYNAMIC=1
		LIBFETCH_SONAME='"libfetch.so.6"'
		LIBFETCH_LIBS="-ldl"
		AC_MSG_RESULT([fetch(3)])
	], [])
	LIBS="$saved_libs"

	if test -z "$have_libfetch"; then
		if curl-config --protocols 2>/dev/null | grep -q HTTPS &&
		    test "$(printf "%u" "0x$(curl-config --vernum)")" -ge "$(printf "%u" "0x071000")"; then
			have_libfetch=1
			LIBFETCH_IS_LIBCURL=1
			if test "$(curl-config --built-shared)" = "yes"; then
				LIBFETCH_DYNAMIC=1
				LIBFETCH_SONAME='"libcurl.so.4"'
				LIBFETCH_LIBS="-ldl"
				AC_MSG_RESULT([libcurl])
			else
				LIBFETCH_LIBS="$(curl-config --libs)"
				AC_MSG_RESULT([libcurl (static)])
			fi

			CCFLAGS="$CCFLAGS $(curl-config --cflags)"
		fi
	fi

	if test -z "$have_libfetch"; then
		AC_MSG_RESULT([none])
	fi

	AC_SUBST([LIBFETCH_LIBS])
	AC_SUBST([LIBFETCH_DYNAMIC])
	AC_SUBST([LIBFETCH_SONAME])
	AC_DEFINE_UNQUOTED([LIBFETCH_IS_FETCH], [$LIBFETCH_IS_FETCH], [libfetch is fetch(3)])
	AC_DEFINE_UNQUOTED([LIBFETCH_IS_LIBCURL], [$LIBFETCH_IS_LIBCURL], [libfetch is libcurl])
	AC_DEFINE_UNQUOTED([LIBFETCH_DYNAMIC], [$LIBFETCH_DYNAMIC], [whether the chosen libfetch is to be loaded at run-time])
	AC_DEFINE_UNQUOTED([LIBFETCH_SONAME], [$LIBFETCH_SONAME], [soname of chosen libfetch])
])