summaryrefslogtreecommitdiff
path: root/third_party/quic/wscript
blob: 6ad6096e47667a37d6dc5c729de6d5839450556c (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
#!/usr/bin/env python

import sys
from waflib import Logs

def configure(conf):
    if not sys.platform.startswith('linux'):
        Logs.warn('libquic requires linux')
        conf.SET_TARGET_TYPE('quic', 'EMPTY')
        return

    if not conf.CONFIG_GET('HAVE_GNUTLS_CB_TLS_SERVER_END_POINT'):
        Logs.warn('libquic requires gnutls 3.7.2')
        conf.SET_TARGET_TYPE('quic', 'EMPTY')
        return

    if not conf.CHECK_HEADERS('linux/tls.h'):
        Logs.warn('libquic requires linux/tls.h')
        conf.SET_TARGET_TYPE('quic', 'EMPTY')
        return

    if not conf.CHECK_DECLS('TLS_CIPHER_AES_GCM_256', headers='linux/tls.h'):
        conf.DEFINE('TLS_CIPHER_AES_GCM_256', 52)

    if not conf.CHECK_DECLS('TLS_CIPHER_AES_CCM_128', headers='linux/tls.h'):
        conf.DEFINE('TLS_CIPHER_AES_CCM_128', 53)

    if not conf.CHECK_DECLS('TLS_CIPHER_CHACHA20_POLY1305', headers='linux/tls.h'):
        conf.DEFINE('TLS_CIPHER_CHACHA20_POLY1305', 54)

    if conf.CHECK_LIBQUIC():
        conf.CHECK_HEADERS('netinet/quic.h', lib='quic')
        conf.CHECK_LIB('quic', shlib=True)
        conf.CHECK_FUNCS_IN('quic_handshake_step', 'quic', headers='netinet/quic.h')
        conf.DEFINE('HAVE_LIBQUIC', '1')
        conf.define('USING_SYSTEM_LIBQUIC', 1)
        return

    conf.ADD_NAMED_CFLAGS('LIBQUIC_UNPICKY_CFLAGS',
                          '-Wno-cast-qual',
                          testflags=True)
    conf.ADD_NAMED_CFLAGS('LIBQUIC_UNPICKY_CFLAGS',
                          '-Wno-error=cast-qual',
                          testflags=True)
    conf.ADD_NAMED_CFLAGS('LIBQUIC_UNPICKY_CFLAGS',
                          '-Wno-error=format-nonliteral',
                          testflags=True)

    conf.DEFINE('HAVE_LIBQUIC', '1')
    return

def build(bld):
    if bld.CONFIG_SET('USING_SYSTEM_LIBQUIC'):
        return

    bld.SAMBA_LIBRARY('quic',
                      source='''
                      libquic_handshake_wrapper.c
                      ''',
                      includes='libquic modules/include/uapi',
                      deps='replace',
                      public_deps='gnutls',
                      cflags_end=bld.env.LIBQUIC_UNPICKY_CFLAGS,
                      private_library=True,
                      enabled=bld.CONFIG_SET('HAVE_LIBQUIC'))
    bld.SAMBA_SUBSYSTEM('libquic', source='', public_deps='quic',
                        enabled=bld.CONFIG_SET('HAVE_LIBQUIC'))