xref: /freebsd/sys/contrib/openzfs/config/user-libfetch.m4 (revision e92ffd9b626833ebdbf2742c8ffddc6cd94b963e)
116038816SMartin Matuskadnl #
216038816SMartin Matuskadnl # Check for a libfetch - either fetch(3) or libcurl.
316038816SMartin Matuskadnl #
416038816SMartin Matuskadnl # There are two configuration dimensions:
516038816SMartin Matuskadnl #   * fetch(3) vs libcurl
616038816SMartin Matuskadnl #   * static vs dynamic
716038816SMartin Matuskadnl #
816038816SMartin Matuskadnl # fetch(3) is only dynamic.
916038816SMartin Matuskadnl # We use sover 6, which first appeared in FreeBSD 8.0-RELEASE.
1016038816SMartin Matuskadnl #
1116038816SMartin Matuskadnl # libcurl development packages include curl-config(1) – we want:
1216038816SMartin Matuskadnl #   * HTTPS support
1316038816SMartin Matuskadnl #   * version at least 7.16 (October 2006), for sover 4
1416038816SMartin Matuskadnl #   * to decide if it's static or not
1516038816SMartin Matuskadnl #
1616038816SMartin MatuskaAC_DEFUN([ZFS_AC_CONFIG_USER_LIBFETCH], [
1716038816SMartin Matuska	AC_MSG_CHECKING([for libfetch])
1816038816SMartin Matuska	LIBFETCH_LIBS=
1916038816SMartin Matuska	LIBFETCH_IS_FETCH=0
2016038816SMartin Matuska	LIBFETCH_IS_LIBCURL=0
2116038816SMartin Matuska	LIBFETCH_DYNAMIC=0
2216038816SMartin Matuska	LIBFETCH_SONAME=
2316038816SMartin Matuska	have_libfetch=
2416038816SMartin Matuska
2516038816SMartin Matuska	saved_libs="$LIBS"
2616038816SMartin Matuska	LIBS="$LIBS -lfetch"
2716038816SMartin Matuska	AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2816038816SMartin Matuska		#include <sys/param.h>
2916038816SMartin Matuska		#include <stdio.h>
3016038816SMartin Matuska		#include <fetch.h>
3116038816SMartin Matuska	]], [fetchGetURL("", "");])], [
3216038816SMartin Matuska		have_libfetch=1
3316038816SMartin Matuska		LIBFETCH_IS_FETCH=1
3416038816SMartin Matuska		LIBFETCH_DYNAMIC=1
35*e92ffd9bSMartin Matuska		LIBFETCH_SONAME="libfetch.so.6"
3616038816SMartin Matuska		LIBFETCH_LIBS="-ldl"
3716038816SMartin Matuska		AC_MSG_RESULT([fetch(3)])
3816038816SMartin Matuska	], [])
3916038816SMartin Matuska	LIBS="$saved_libs"
4016038816SMartin Matuska
4116038816SMartin Matuska	if test -z "$have_libfetch"; then
4216038816SMartin Matuska		if curl-config --protocols 2>/dev/null | grep -q HTTPS &&
4316038816SMartin Matuska		    test "$(printf "%u" "0x$(curl-config --vernum)")" -ge "$(printf "%u" "0x071000")"; then
4416038816SMartin Matuska			have_libfetch=1
4516038816SMartin Matuska			LIBFETCH_IS_LIBCURL=1
4616038816SMartin Matuska			if test "$(curl-config --built-shared)" = "yes"; then
4716038816SMartin Matuska				LIBFETCH_DYNAMIC=1
48*e92ffd9bSMartin Matuska				LIBFETCH_SONAME="libcurl.so.4"
4916038816SMartin Matuska				LIBFETCH_LIBS="-ldl"
5016038816SMartin Matuska				AC_MSG_RESULT([libcurl])
5116038816SMartin Matuska			else
5216038816SMartin Matuska				LIBFETCH_LIBS="$(curl-config --libs)"
5316038816SMartin Matuska				AC_MSG_RESULT([libcurl (static)])
5416038816SMartin Matuska			fi
5516038816SMartin Matuska
5616038816SMartin Matuska			CCFLAGS="$CCFLAGS $(curl-config --cflags)"
5716038816SMartin Matuska		fi
5816038816SMartin Matuska	fi
5916038816SMartin Matuska
6016038816SMartin Matuska	if test -z "$have_libfetch"; then
6116038816SMartin Matuska		AC_MSG_RESULT([none])
6216038816SMartin Matuska	fi
6316038816SMartin Matuska
6416038816SMartin Matuska	AC_SUBST([LIBFETCH_LIBS])
6516038816SMartin Matuska	AC_SUBST([LIBFETCH_DYNAMIC])
6616038816SMartin Matuska	AC_SUBST([LIBFETCH_SONAME])
6716038816SMartin Matuska	AC_DEFINE_UNQUOTED([LIBFETCH_IS_FETCH], [$LIBFETCH_IS_FETCH], [libfetch is fetch(3)])
6816038816SMartin Matuska	AC_DEFINE_UNQUOTED([LIBFETCH_IS_LIBCURL], [$LIBFETCH_IS_LIBCURL], [libfetch is libcurl])
6916038816SMartin Matuska	AC_DEFINE_UNQUOTED([LIBFETCH_DYNAMIC], [$LIBFETCH_DYNAMIC], [whether the chosen libfetch is to be loaded at run-time])
70*e92ffd9bSMartin Matuska	AC_DEFINE_UNQUOTED([LIBFETCH_SONAME], ["$LIBFETCH_SONAME"], [soname of chosen libfetch])
7116038816SMartin Matuska])
72