summaryrefslogtreecommitdiffstats
path: root/third_party/usrsctp/BUILD.gn
blob: 76e47ca9e3b801c8204b9ecf627e74ca5fb6c51e (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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/crypto.gni")

config("usrsctp_config") {
  include_dirs = [
    "usrsctplib",
    "usrsctplib/netinet",
  ]
}

static_library("usrsctp") {
  sources = [
    "usrsctplib/netinet/sctp.h",
    "usrsctplib/netinet/sctp_asconf.c",
    "usrsctplib/netinet/sctp_asconf.h",
    "usrsctplib/netinet/sctp_auth.c",
    "usrsctplib/netinet/sctp_auth.h",
    "usrsctplib/netinet/sctp_bsd_addr.c",
    "usrsctplib/netinet/sctp_bsd_addr.h",
    "usrsctplib/netinet/sctp_callout.c",
    "usrsctplib/netinet/sctp_callout.h",
    "usrsctplib/netinet/sctp_cc_functions.c",
    "usrsctplib/netinet/sctp_constants.h",
    "usrsctplib/netinet/sctp_crc32.c",
    "usrsctplib/netinet/sctp_crc32.h",
    "usrsctplib/netinet/sctp_header.h",
    "usrsctplib/netinet/sctp_indata.c",
    "usrsctplib/netinet/sctp_indata.h",
    "usrsctplib/netinet/sctp_input.c",
    "usrsctplib/netinet/sctp_input.h",
    "usrsctplib/netinet/sctp_lock_userspace.h",
    "usrsctplib/netinet/sctp_os.h",
    "usrsctplib/netinet/sctp_os_userspace.h",
    "usrsctplib/netinet/sctp_output.c",
    "usrsctplib/netinet/sctp_output.h",
    "usrsctplib/netinet/sctp_pcb.c",
    "usrsctplib/netinet/sctp_pcb.h",
    "usrsctplib/netinet/sctp_peeloff.c",
    "usrsctplib/netinet/sctp_peeloff.h",
    "usrsctplib/netinet/sctp_process_lock.h",
    "usrsctplib/netinet/sctp_sha1.c",
    "usrsctplib/netinet/sctp_sha1.h",
    "usrsctplib/netinet/sctp_ss_functions.c",
    "usrsctplib/netinet/sctp_structs.h",
    "usrsctplib/netinet/sctp_sysctl.c",
    "usrsctplib/netinet/sctp_sysctl.h",
    "usrsctplib/netinet/sctp_timer.c",
    "usrsctplib/netinet/sctp_timer.h",
    "usrsctplib/netinet/sctp_uio.h",
    "usrsctplib/netinet/sctp_userspace.c",
    "usrsctplib/netinet/sctp_usrreq.c",
    "usrsctplib/netinet/sctp_var.h",
    "usrsctplib/netinet/sctputil.c",
    "usrsctplib/netinet/sctputil.h",
    "usrsctplib/netinet6/sctp6_usrreq.c",
    "usrsctplib/netinet6/sctp6_var.h",
    "usrsctplib/user_atomic.h",
    "usrsctplib/user_environment.c",
    "usrsctplib/user_environment.h",
    "usrsctplib/user_inpcb.h",
    "usrsctplib/user_ip6_var.h",
    "usrsctplib/user_ip_icmp.h",
    "usrsctplib/user_malloc.h",
    "usrsctplib/user_mbuf.c",
    "usrsctplib/user_mbuf.h",
    "usrsctplib/user_queue.h",
    "usrsctplib/user_recv_thread.c",
    "usrsctplib/user_recv_thread.h",
    "usrsctplib/user_route.h",
    "usrsctplib/user_socket.c",
    "usrsctplib/user_socketvar.h",
    "usrsctplib/user_uma.h",
    "usrsctplib/usrsctp.h",
  ]

  defines = [
    "SCTP_PROCESS_LEVEL_LOCKS",
    "SCTP_SIMPLE_ALLOCATOR",
    "__Userspace__",

    # "SCTP_DEBUG", # Uncomment for SCTP debugging.
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [ "//build/config/compiler:no_chromium_code" ]
  configs += [ "//build/config/compiler:no_incompatible_pointer_warnings" ]

  public_configs = [ ":usrsctp_config" ]

  if (use_openssl) {
    defines += [ "SCTP_USE_OPENSSL_SHA1" ]
  } else {
    defines += [ "SCTP_USE_NSS_SHA1" ]
  }

  if (is_linux || is_android) {
    defines += [ "__Userspace_os_Linux" ]
  } else if (is_mac || is_ios) {
    defines += [
      "HAVE_SA_LEN",
      "HAVE_SCONN_LEN",
      "__APPLE_USE_RFC_2292",
      "__Userspace_os_Darwin",
    ]
  }

  if (is_win) {
    defines += [
      "__Userspace_os_Windows",

      # Manually setting WINVER and _WIN32_WINNT is needed because Chrome
      # sets WINVER to a newer version of  windows. But compiling usrsctp
      # this way would is incompatible  with windows XP.
      "WINVER=0x0502",
      "_WIN32_WINNT=0x0502",
    ]
    configs -= [ "//build/config/win:winver" ]
  } else {
    defines += [ "NON_WINDOWS_DEFINE" ]
  }

  deps = [
    "//crypto:platform",
  ]
}