aboutsummaryrefslogtreecommitdiff
path: root/src/service/transport/meson.build
blob: 4dc6a99912f6a1769ee3c35e0f0bcad8e9873d22 (plain) (blame)
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
libgnunettransportapplication_src = ['transport_api2_application.c']
libgnunettransportcore_src = ['transport_api2_core.c']
libgnunettransportcommunicator_src = ['transport_api2_communication.c']
libgnunettransportmonitor_src = ['transport_api2_monitor.c']

gnunetservicetransport_src = ['gnunet-service-transport.c']
gnunetcommunicatortcp_src = ['gnunet-communicator-tcp.c']
gnunetcommunicatorudp_src = ['gnunet-communicator-udp.c']
gnunetcommunicatorunix_src = ['gnunet-communicator-unix.c']

configure_file(input : 'transport.conf.in',
               output : 'transport.conf',
               configuration : cdata,
               install: true,
               install_dir: pkgcfgdir)

configure_file(input : 'gnunet-transport-certificate-creation.in',
               output : 'gnunet-transport-certificate-creation',
               configuration : cdata,
               install: true,
               install_dir: get_option('bindir'))

if get_option('monolith')
  foreach p : libgnunettransportapplication_src + libgnunettransportcore_src + libgnunettransportcommunicator_src + libgnunettransportmonitor_src + gnunetservicetransport_src
    gnunet_src += 'transport/' + p
  endforeach
endif

libgnunettransportapplication = library('gnunettransportapplication',
                                        libgnunettransportapplication_src,
                                        soversion: '0',
                                        version: '0.0.0',
                                        dependencies: libgnunetutil_dep,
                                        include_directories: [incdir, configuration_inc],
                                        install: true,
                                        install_dir: get_option('libdir'))
pkg.generate(libgnunettransportapplication, url: 'https://www.gnunet.org',
             description : 'Provides application APIs for accessing the transport service')
libgnunettransportapplication_dep = declare_dependency(link_with : libgnunettransportapplication)

libgnunettransportcore = library('gnunettransportcore',
                                 libgnunettransportcore_src,
                                 soversion: '0',
                                 version: '0.0.0',
                                 dependencies: libgnunetutil_dep,
                                 include_directories: [incdir, configuration_inc],
                                 install: true,
                                 install_dir: get_option('libdir'))
pkg.generate(libgnunettransportcore, url: 'https://www.gnunet.org',
             description : 'Provides core API for accessing the transport service')
libgnunettransportcore_dep = declare_dependency(link_with : libgnunettransportcore)

libgnunettransportcommunicator = library('gnunettransportcommunicator',
                                         libgnunettransportcommunicator_src,
                                         soversion: '0',
                                         version: '0.0.0',
                                         dependencies: libgnunetutil_dep,
                                         include_directories: [incdir, configuration_inc],
                                         install: true,
                                         install_dir: get_option('libdir'))
pkg.generate(libgnunettransportcommunicator, url: 'https://www.gnunet.org',
             description : 'Provides communicator API for accessing the transport service')
libgnunettransportcommunicator_dep = declare_dependency(link_with : libgnunettransportcommunicator)

libgnunettransportmonitor = library('gnunettransportmonitor',
                                    libgnunettransportmonitor_src,
                                    soversion: '0',
                                    version: '0.0.0',
                                    dependencies: libgnunetutil_dep,
                                    include_directories: [incdir, configuration_inc],
                                    install: true,
                                    install_dir: get_option('libdir'))
pkg.generate(libgnunettransportmonitor, url: 'https://www.gnunet.org',
             description : 'Provides monitor API for accessing the transport service')
libgnunettransportmonitor_dep = declare_dependency(link_with : libgnunettransportmonitor)

libgnunettransporttesting2 = library('gnunettransporttesting2',
                                     [
                                       'transport_api_traits.c',
                                       'transport_api_cmd_connecting_peers.c',
                                       'transport_api_cmd_backchannel_check.c',
                                       'transport_api_cmd_start_peer.c',
                                       'transport_api_cmd_stop_peer.c',
                                       'transport_api_cmd_send_simple.c',
                                       'transport_api_cmd_send_simple_performance.c',
                                       'transport-testing2.c',
                                       'transport-testing-filenames2.c',
                                       'transport-testing-loggers2.c',
                                       'transport-testing-main2.c',
                                       'transport-testing-send2.c',
                                       'transport-testing-communicator.c',
                                     ],
                                     soversion: '0',
                                     version: '0.0.0',
                                     dependencies: [libgnunetutil_dep,
                                                    libgnunettransportcore_dep,
                                                    libgnunettransportapplication_dep,
                                                    libgnunetpeerstore_dep,
                                                    libgnunettesting_dep,
                                                    libgnunethello_dep],
                                     include_directories: [incdir, configuration_inc],
                                     install: true,
                                     install_dir: get_option('libdir'))
libgnunettransporttesting2_dep = declare_dependency(link_with : libgnunettransporttesting2)

executable ('gnunet-service-transport',
            gnunetservicetransport_src,
            dependencies: [libgnunettransportcommunicator_dep,
                           libgnunetpeerstore_dep,
                           libgnunetstatistics_dep,
                           libgnunethello_dep,
                           libgnunetnat_dep,
                           gcrypt_dep,
                           m_dep,
                           libgnunetutil_dep],
            include_directories: [incdir, configuration_inc],
            install: true,
            install_dir: get_option('libdir') / 'gnunet' / 'libexec')

executable ('gnunet-communicator-unix',
            gnunetcommunicatorunix_src,
            dependencies: [libgnunettransportcommunicator_dep,
                           libgnunetpeerstore_dep,
                           libgnunetstatistics_dep,
                           libgnunetnat_dep,
                           gcrypt_dep,
                           libgnunetutil_dep],
            include_directories: [incdir, configuration_inc],
            install: true,
            install_dir: get_option('libdir') / 'gnunet' / 'libexec')
executable ('gnunet-communicator-udp',
            gnunetcommunicatorudp_src,
            dependencies: [libgnunettransportcommunicator_dep,
                           libgnunettransportapplication_dep,
                           libgnunetpeerstore_dep,
                           libgnunetstatistics_dep,
                           libgnunetnat_dep,
                           gcrypt_dep,
                           libgnunetutil_dep],
            include_directories: [incdir, configuration_inc],
            install: true,
            install_dir: get_option('libdir') / 'gnunet' / 'libexec')
executable ('gnunet-communicator-tcp',
            gnunetcommunicatortcp_src,
            dependencies: [libgnunettransportcommunicator_dep,
                           libgnunetpeerstore_dep,
                           libgnunetstatistics_dep,
                           libgnunetnat_dep,
                           gcrypt_dep,
                           libgnunetutil_dep],
            include_directories: [incdir, configuration_inc],
            install: true,
            install_dir: get_option('libdir') / 'gnunet' / 'libexec')
if quic_dep.found() and get_option('experimental')
executable ('gnunet-communicator-quic',
            gnunetcommunicatortcp_src,
            dependencies: [libgnunettransportcommunicator_dep,
                           libgnunetpeerstore_dep,
                           libgnunetstatistics_dep,
                           libgnunetnat_dep,
                           gcrypt_dep,
                           quic_dep,
                           libgnunetutil_dep],
            include_directories: [incdir, configuration_inc],
            install: true,
            install_dir: get_option('libdir') / 'gnunet' / 'libexec')
endif

libgnunettesttransport_cmd_simplesend = library('gnunet_test_transport_plugin_cmd_simple_send',
                                                ['test_transport_plugin_cmd_simple_send.c'],
                                                dependencies: [
                                                  libgnunetutil_dep,
                                                  libgnunettransportapplication_dep,
                                                  libgnunettransporttesting2_dep,
                                                  libgnunettransportcore_dep,
                                                  libgnunettesting_dep,
                                                  libgnunetpeerstore_dep,
                                                  libgnunetstatistics_dep,
                                                  libgnunethello_dep,
                                                  libgnunetarm_dep,
                                                  libgnunetutil_dep
                                                ],
                                                include_directories: [incdir, configuration_inc],
                                                install: true,
                                                install_dir: get_option('libdir')/'gnunet')

libgnunettesttransport_cmd_simplesendbc = library('gnunet_test_transport_plugin_cmd_simple_send_broadcast',
                                                  ['test_transport_plugin_cmd_simple_send_broadcast.c'],
                                                  dependencies: [
                                                    libgnunetutil_dep,
                                                    libgnunettransportapplication_dep,
                                                    libgnunettransporttesting2_dep,
                                                    libgnunettransportcore_dep,
                                                    libgnunettesting_dep,
                                                    libgnunetpeerstore_dep,
                                                    libgnunetstatistics_dep,
                                                    libgnunethello_dep,
                                                    libgnunetarm_dep,
                                                    libgnunetutil_dep
                                                  ],
                                                  include_directories: [incdir, configuration_inc],
                                                  install: true,
                                                  install_dir: get_option('libdir')/'gnunet')

libgnunettesttransport_cmd_simplesenddv = library('gnunet_test_transport_plugin_cmd_simple_send_dv',
                                                  ['test_transport_plugin_cmd_simple_send_dv.c'],
                                                  dependencies: [
                                                    libgnunetutil_dep,
                                                    libgnunettransportapplication_dep,
                                                    libgnunettransporttesting2_dep,
                                                    libgnunettransportcore_dep,
                                                    libgnunettesting_dep,
                                                    libgnunetpeerstore_dep,
                                                    libgnunetstatistics_dep,
                                                    libgnunethello_dep,
                                                    libgnunetarm_dep,
                                                    libgnunetutil_dep
                                                  ],
                                                  include_directories: [incdir, configuration_inc],
                                                  install: true,
                                                  install_dir: get_option('libdir')/'gnunet')

libgnunettesttransport_cmd_simplesendperf = library('gnunet_test_transport_plugin_cmd_simple_send_performance',
                                                    ['test_transport_plugin_cmd_simple_send_performance.c'],
                                                    dependencies: [
                                                      libgnunetutil_dep,
                                                      libgnunettransportapplication_dep,
                                                      libgnunettransporttesting2_dep,
                                                      libgnunettransportcore_dep,
                                                      libgnunettesting_dep,
                                                      libgnunetpeerstore_dep,
                                                      libgnunetstatistics_dep,
                                                      libgnunethello_dep,
                                                      libgnunetarm_dep,
                                                      libgnunetutil_dep
                                                    ],
                                                    include_directories: [incdir, configuration_inc],
                                                    install: true,
                                                    install_dir: get_option('libdir')/'gnunet')

libgnunettesttransport_cmd_udpback = library('gnunet_test_transport_plugin_cmd_udp_backchannel',
                                             ['test_transport_plugin_cmd_udp_backchannel.c'],
                                             dependencies: [
                                               libgnunetutil_dep,
                                               libgnunettransporttesting2_dep,
                                               libgnunettransportapplication_dep,
                                               libgnunettransportcore_dep,
                                               libgnunettesting_dep,
                                               libgnunetpeerstore_dep,
                                               libgnunetstatistics_dep,
                                               libgnunethello_dep,
                                               libgnunetarm_dep,
                                               libgnunetutil_dep
                                             ],
                                             include_directories: [incdir, configuration_inc],
                                             install: true,
                                             install_dir: get_option('libdir')/'gnunet')

libgnunettesttransport_cmd_natupnp = library('gnunet_test_transport_plugin_cmd_nat_upnp',
                                             ['test_transport_plugin_cmd_nat_upnp.c'],
                                             dependencies: [
                                               libgnunetutil_dep,
                                               libgnunettransportapplication_dep,
                                               libgnunettransporttesting2_dep,
                                               libgnunettransportcore_dep,
                                               libgnunettesting_dep,
                                               libgnunetpeerstore_dep,
                                               libgnunetstatistics_dep,
                                               libgnunethello_dep,
                                               libgnunetarm_dep,
                                               libgnunetutil_dep
                                             ],
                                             include_directories: [incdir, configuration_inc],
                                             install: true,
                                             install_dir: get_option('libdir')/'gnunet')

configure_file(input : 'test_transport_defaults.conf',
               output : 'test_transport_defaults.conf',
               copy: true)

foreach p : ['unix', 'tcp', 'udp', 'quic']
  configure_file(input : 'test_communicator_'+p+'_basic_peer1.conf',
                 output : 'test_communicator_'+p+'_basic_peer1.conf',
                 copy: true)
  configure_file(input : 'test_communicator_'+p+'_basic_peer2.conf',
                 output : 'test_communicator_'+p+'_basic_peer2.conf',
                 copy: true)
endforeach

foreach p : ['tcp', 'udp']
  configure_file(input : 'test_communicator_'+p+'_rekey_peer1.conf',
                 output : 'test_communicator_'+p+'_rekey_peer1.conf',
                 copy: true)
  configure_file(input : 'test_communicator_'+p+'_rekey_peer2.conf',
                 output : 'test_communicator_'+p+'_rekey_peer2.conf',
                 copy: true)
endforeach

configure_file(input : 'test_communicator_udp_backchannel_peer1.conf',
               output : 'test_communicator_udp_backchannel_peer1.conf',
               copy: true)
configure_file(input : 'test_communicator_udp_backchannel_peer2.conf',
               output : 'test_communicator_udp_backchannel_peer2.conf',
               copy: true)

configure_file(input : 'test_communicator_tcp_bidirect_peer1.conf',
               output : 'test_communicator_tcp_bidirect_peer1.conf',
               copy: true)
configure_file(input : 'test_communicator_tcp_bidirect_peer2.conf',
               output : 'test_communicator_tcp_bidirect_peer2.conf',
               copy: true)

testcommunicator_basic_unix = executable('test_communicator_basic-unix',
                                         ['test_communicator_basic.c'],
                                         dependencies: [
                                           libgnunetutil_dep,
                                           libgnunettransportapplication_dep,
                                           libgnunettransporttesting2_dep,
                                           libgnunettransportcore_dep,
                                           libgnunettesting_dep,
                                           libgnunetpeerstore_dep,
                                           libgnunetstatistics_dep,
                                           libgnunethello_dep,
                                           libgnunetarm_dep,
                                           libgnunetutil_dep
                                         ],
                                         include_directories: [incdir, configuration_inc],
                                         install: false)
testcommunicator_basic_tcp = executable('test_communicator_basic-tcp',
                                        ['test_communicator_basic.c'],
                                        dependencies: [
                                          libgnunetutil_dep,
                                          libgnunettransportapplication_dep,
                                          libgnunettransporttesting2_dep,
                                          libgnunettransportcore_dep,
                                          libgnunettesting_dep,
                                          libgnunetpeerstore_dep,
                                          libgnunetstatistics_dep,
                                          libgnunethello_dep,
                                          libgnunetarm_dep,
                                          libgnunetutil_dep
                                        ],
                                        include_directories: [incdir, configuration_inc],
                                        install: false)
testcommunicator_basic_udp = executable('test_communicator_basic-udp',
                                        ['test_communicator_basic.c'],
                                        dependencies: [
                                          libgnunetutil_dep,
                                          libgnunettransportapplication_dep,
                                          libgnunettransporttesting2_dep,
                                          libgnunettransportcore_dep,
                                          libgnunettesting_dep,
                                          libgnunetpeerstore_dep,
                                          libgnunetstatistics_dep,
                                          libgnunethello_dep,
                                          libgnunetarm_dep,
                                          libgnunetutil_dep
                                        ],
                                        include_directories: [incdir, configuration_inc],
                                        install: false)
if quic_dep.found() and get_option('experimental')
  testcommunicator_basic_quic = executable('test_communicator_basic-quic',
                                           ['test_communicator_basic.c'],
                                           dependencies: [
                                             libgnunetutil_dep,
                                             libgnunettransportapplication_dep,
                                             libgnunettransporttesting2_dep,
                                             libgnunettransportcore_dep,
                                             libgnunettesting_dep,
                                             libgnunetpeerstore_dep,
                                             libgnunetstatistics_dep,
                                             libgnunethello_dep,
                                             libgnunetarm_dep,
                                             libgnunetutil_dep
                                           ],
                                           include_directories: [incdir, configuration_inc],
                                           install: false)
endif

testcommunicator_rekey_tcp = executable('test_communicator_rekey-tcp',
                                        ['test_communicator_basic.c'],
                                        dependencies: [
                                          libgnunetutil_dep,
                                          libgnunettransportapplication_dep,
                                          libgnunettransporttesting2_dep,
                                          libgnunettransportcore_dep,
                                          libgnunettesting_dep,
                                          libgnunetpeerstore_dep,
                                          libgnunetstatistics_dep,
                                          libgnunethello_dep,
                                          libgnunetarm_dep,
                                          libgnunetutil_dep
                                        ],
                                        include_directories: [incdir, configuration_inc],
                                        install: false)

testcommunicator_rekey_udp = executable('test_communicator_rekey-udp',
                                        ['test_communicator_basic.c'],
                                        dependencies: [
                                          libgnunetutil_dep,
                                          libgnunettransportapplication_dep,
                                          libgnunettransporttesting2_dep,
                                          libgnunettransportcore_dep,
                                          libgnunettesting_dep,
                                          libgnunetpeerstore_dep,
                                          libgnunetstatistics_dep,
                                          libgnunethello_dep,
                                          libgnunetarm_dep,
                                          libgnunetutil_dep
                                        ],
                                        include_directories: [incdir, configuration_inc],
                                        install: false)

testcommunicator_backchannel_udp = executable('test_communicator_backchannel-udp',
                                              ['test_communicator_basic.c'],
                                              dependencies: [
                                                libgnunetutil_dep,
                                                libgnunettransportapplication_dep,
                                                libgnunettransporttesting2_dep,
                                                libgnunettransportcore_dep,
                                                libgnunettesting_dep,
                                                libgnunetpeerstore_dep,
                                                libgnunetstatistics_dep,
                                                libgnunethello_dep,
                                                libgnunetarm_dep,
                                                libgnunetutil_dep
                                              ],
                                              include_directories: [incdir, configuration_inc],
                                              install: false)

testcommunicator_bidirect_tcp = executable('test_communicator_bidirect-tcp',
                                           ['test_communicator_basic.c'],
                                           dependencies: [
                                             libgnunetutil_dep,
                                             libgnunettransportapplication_dep,
                                             libgnunettransporttesting2_dep,
                                             libgnunettransportcore_dep,
                                             libgnunettesting_dep,
                                             libgnunetpeerstore_dep,
                                             libgnunetstatistics_dep,
                                             libgnunethello_dep,
                                             libgnunetarm_dep,
                                             libgnunetutil_dep
                                           ],
                                           include_directories: [incdir, configuration_inc],
                                           install: false)


testtransport_test_names = [
    'test_transport_start_testcase',
    'test_transport_simple_send_performance',
    'test_transport_nat_icmp_tcp',
    'test_transport_nat_upnp',
    'test_transport_simple_send_string',
    'test_transport_simple_send',
    'test_transport_simple_send_broadcast',
    'test_transport_udp_backchannel',
    'test_transport_simple_send_dv_circle',
    'test_transport_simple_send_dv_inverse'
  ]

foreach t : testtransport_test_names

  test_filename = t + '.sh'
  test_file = configure_file(input : test_filename,
                             output : test_filename,
                             copy: true)

  if host_machine.system() != 'darwin'
    test(t, test_file, suite: 'transport', workdir: meson.current_build_dir(), is_parallel: false)
  endif
endforeach

test('test_communicator_basic-unix', testcommunicator_basic_unix,
     workdir: meson.current_build_dir(),
     suite: ['transport', 'communicator'])
test('test_communicator_basic-tcp', testcommunicator_basic_tcp,
     workdir: meson.current_build_dir(),
     suite: ['transport', 'communicator'])
test('test_communicator_basic-udp', testcommunicator_basic_udp,
     workdir: meson.current_build_dir(),
     suite: ['transport', 'communicator'])
if quic_dep.found() and get_option('experimental')
  test('test_communicator_basic-quic', testcommunicator_basic_quic,
       workdir: meson.current_build_dir(),
       suite: ['transport', 'communicator'])
endif
test('test_communicator_rekey-tcp', testcommunicator_rekey_tcp,
     workdir: meson.current_build_dir(),
     suite: ['transport', 'communicator'])
test('test_communicator_rekey-udp', testcommunicator_rekey_udp,
     workdir: meson.current_build_dir(),
     suite: ['transport', 'communicator'])
test('test_communicator_backchannel-udp', testcommunicator_backchannel_udp,
     workdir: meson.current_build_dir(),
     suite: ['transport', 'communicator'])
test('test_communicator_bidirect-tcp', testcommunicator_bidirect_tcp,
     workdir: meson.current_build_dir(),
     suite: ['transport', 'communicator'])