mirror of
https://github.com/moparisthebest/curl
synced 2024-11-10 11:35:07 -05:00
nghttp3: required when ngtcp2 is used for QUIC
- checked for by configure - updated docs/HTTP3.md - shown in the version string Closes #4210
This commit is contained in:
parent
17d1e27d30
commit
d85a1cf11d
93
configure.ac
93
configure.ac
@ -3402,14 +3402,12 @@ if test X"$want_tcp2" != Xno; then
|
|||||||
AC_CHECK_LIB(ngtcp2, ngtcp2_conn_client_new,
|
AC_CHECK_LIB(ngtcp2, ngtcp2_conn_client_new,
|
||||||
[
|
[
|
||||||
AC_CHECK_HEADERS(ngtcp2/ngtcp2.h,
|
AC_CHECK_HEADERS(ngtcp2/ngtcp2.h,
|
||||||
curl_h3_msg="enabled (ngtcp2)"
|
|
||||||
NGTCP2_ENABLED=1
|
NGTCP2_ENABLED=1
|
||||||
AC_DEFINE(USE_NGTCP2, 1, [if ngtcp2 is in use])
|
AC_DEFINE(USE_NGTCP2, 1, [if ngtcp2 is in use])
|
||||||
AC_SUBST(USE_NGTCP2, [1])
|
AC_SUBST(USE_NGTCP2, [1])
|
||||||
CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_TCP2"
|
CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_TCP2"
|
||||||
export CURL_LIBRARY_PATH
|
export CURL_LIBRARY_PATH
|
||||||
AC_MSG_NOTICE([Added $DIR_TCP2 to CURL_LIBRARY_PATH])
|
AC_MSG_NOTICE([Added $DIR_TCP2 to CURL_LIBRARY_PATH])
|
||||||
experimental="$experimental HTTP3"
|
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
dnl not found, revert back to clean variables
|
dnl not found, revert back to clean variables
|
||||||
@ -3429,6 +3427,97 @@ if test X"$want_tcp2" != Xno; then
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
dnl **********************************************************************
|
||||||
|
dnl Check for nghttp3 (HTTP/3 with ngtcp2)
|
||||||
|
dnl **********************************************************************
|
||||||
|
|
||||||
|
OPT_NGHTTP3="yes"
|
||||||
|
|
||||||
|
if test "x$NGTCP2_ENABLED" = "x"; then
|
||||||
|
# without ngtcp2, nghttp3 is of no use for us
|
||||||
|
OPT_NGHTTP3="no"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_ARG_WITH(nghttp3,
|
||||||
|
AC_HELP_STRING([--with-nghttp3=PATH],[Enable nghttp3 usage])
|
||||||
|
AC_HELP_STRING([--without-nghttp3],[Disable nghttp3 usage]),
|
||||||
|
[OPT_NGHTTP3=$withval])
|
||||||
|
case "$OPT_NGHTTP3" in
|
||||||
|
no)
|
||||||
|
dnl --without-nghttp3 option used
|
||||||
|
want_nghttp3="no"
|
||||||
|
;;
|
||||||
|
yes)
|
||||||
|
dnl --with-nghttp3 option used without path
|
||||||
|
want_nghttp3="default"
|
||||||
|
want_nghttp3_path=""
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
dnl --with-nghttp3 option used with path
|
||||||
|
want_nghttp3="yes"
|
||||||
|
want_nghttp3_path="$withval/lib/pkgconfig"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
curl_http3_msg="disabled (--with-nghttp3)"
|
||||||
|
if test X"$want_nghttp3" != Xno; then
|
||||||
|
dnl backup the pre-nghttp3 variables
|
||||||
|
CLEANLDFLAGS="$LDFLAGS"
|
||||||
|
CLEANCPPFLAGS="$CPPFLAGS"
|
||||||
|
CLEANLIBS="$LIBS"
|
||||||
|
|
||||||
|
CURL_CHECK_PKGCONFIG(libnghttp3, $want_nghttp3_path)
|
||||||
|
|
||||||
|
if test "$PKGCONFIG" != "no" ; then
|
||||||
|
LIB_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path])
|
||||||
|
$PKGCONFIG --libs-only-l libnghttp3`
|
||||||
|
AC_MSG_NOTICE([-l is $LIB_NGHTTP3])
|
||||||
|
|
||||||
|
CPP_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path]) dnl
|
||||||
|
$PKGCONFIG --cflags-only-I libnghttp3`
|
||||||
|
AC_MSG_NOTICE([-I is $CPP_NGHTTP3])
|
||||||
|
|
||||||
|
LD_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path])
|
||||||
|
$PKGCONFIG --libs-only-L libnghttp3`
|
||||||
|
AC_MSG_NOTICE([-L is $LD_NGHTTP3])
|
||||||
|
|
||||||
|
LDFLAGS="$LDFLAGS $LD_NGHTTP3"
|
||||||
|
CPPFLAGS="$CPPFLAGS $CPP_NGHTTP3"
|
||||||
|
LIBS="$LIB_NGHTTP3 $LIBS"
|
||||||
|
|
||||||
|
if test "x$cross_compiling" != "xyes"; then
|
||||||
|
DIR_NGHTTP3=`echo $LD_NGHTTP3 | $SED -e 's/-L//'`
|
||||||
|
fi
|
||||||
|
AC_CHECK_LIB(nghttp3, nghttp3_conn_client_new,
|
||||||
|
[
|
||||||
|
AC_CHECK_HEADERS(nghttp3/nghttp3.h,
|
||||||
|
curl_h3_msg="enabled (ngtcp2 + nghttp3)"
|
||||||
|
NGHTTP3_ENABLED=1
|
||||||
|
AC_DEFINE(USE_NGHTTP3, 1, [if nghttp3 is in use])
|
||||||
|
AC_SUBST(USE_NGHTTP3, [1])
|
||||||
|
CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGHTTP3"
|
||||||
|
export CURL_LIBRARY_PATH
|
||||||
|
AC_MSG_NOTICE([Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH])
|
||||||
|
experimental="$experimental HTTP3"
|
||||||
|
)
|
||||||
|
],
|
||||||
|
dnl not found, revert back to clean variables
|
||||||
|
LDFLAGS=$CLEANLDFLAGS
|
||||||
|
CPPFLAGS=$CLEANCPPFLAGS
|
||||||
|
LIBS=$CLEANLIBS
|
||||||
|
)
|
||||||
|
|
||||||
|
else
|
||||||
|
dnl no nghttp3 pkg-config found, deal with it
|
||||||
|
if test X"$want_nghttp3" != Xdefault; then
|
||||||
|
dnl To avoid link errors, we do not allow --with-nghttp3 without
|
||||||
|
dnl a pkgconfig file
|
||||||
|
AC_MSG_ERROR([--with-nghttp3 was specified but could not find nghttp3 pkg-config file.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
dnl Check for quiche (QUIC)
|
dnl Check for quiche (QUIC)
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
|
@ -31,12 +31,42 @@ in the master branch using pull-requests, just like ordinary changes.
|
|||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
1. clone ngtcp2 from git (the draft-22 branch)
|
Build (patched) OpenSSL
|
||||||
2. build and install ngtcp2's custom OpenSSL version (the quic-draft-22 branch)
|
|
||||||
3. build and install nghttp3
|
% git clone --depth 1 -b quic-draft-22 https://github.com/tatsuhiro-t/openssl
|
||||||
4. build and install ngtcp2 according to its instructions
|
% cd openssl
|
||||||
5. configure curl with ngtcp2 support: `./configure --with-ngtcp2=<install prefix>`
|
% ./config enable-tls1_3 --prefix=<somewhere1>
|
||||||
6. build curl "normally"
|
% make
|
||||||
|
% make install_sw
|
||||||
|
|
||||||
|
Build nghttp3
|
||||||
|
|
||||||
|
% cd ..
|
||||||
|
% git clone https://github.com/ngtcp2/nghttp3
|
||||||
|
% cd nghttp3
|
||||||
|
% autoreconf -i
|
||||||
|
% ./configure --prefix=<somewhere2> --enable-lib-only
|
||||||
|
% make
|
||||||
|
% make install
|
||||||
|
|
||||||
|
Build ngtcp2
|
||||||
|
|
||||||
|
% cd ..
|
||||||
|
% git clone -b draft-20 https://github.com/ngtcp2/ngtcp2
|
||||||
|
% cd ngtcp2
|
||||||
|
% autoreconf -i
|
||||||
|
% ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somehere1>/lib" --prefix==<somewhere3>
|
||||||
|
% make
|
||||||
|
% make install
|
||||||
|
|
||||||
|
Build curl
|
||||||
|
|
||||||
|
% cd ..
|
||||||
|
% git clone https://github.com/curl/curl
|
||||||
|
% cd curl
|
||||||
|
% ./buildconf
|
||||||
|
% LDFLAGS="-Wl,-rpath,<somewhere1>/lib" ./configure -with-ssl=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
|
||||||
|
% make
|
||||||
|
|
||||||
## Running
|
## Running
|
||||||
|
|
||||||
|
@ -1055,7 +1055,7 @@ CURLcode Curl_quic_connect(struct connectdata *conn,
|
|||||||
*/
|
*/
|
||||||
int Curl_quic_ver(char *p, size_t len)
|
int Curl_quic_ver(char *p, size_t len)
|
||||||
{
|
{
|
||||||
return msnprintf(p, len, " ngtcp2/blabla");
|
return msnprintf(p, len, " ngtcp2/blabla nghttp3/bloblo");
|
||||||
}
|
}
|
||||||
|
|
||||||
CURLcode Curl_quic_is_connected(struct connectdata *conn, int sockindex,
|
CURLcode Curl_quic_is_connected(struct connectdata *conn, int sockindex,
|
||||||
|
Loading…
Reference in New Issue
Block a user