[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet] branch master updated: BUILD: Meson - add readme, add build opt
From: |
gnunet |
Subject: |
[gnunet] branch master updated: BUILD: Meson - add readme, add build options |
Date: |
Sun, 24 Sep 2023 08:10:15 +0200 |
This is an automated email from the git hooks/post-receive script.
martin-schanzenbach pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new 3199037e9 BUILD: Meson - add readme, add build options
3199037e9 is described below
commit 3199037e97f0a773626e7621d17fc596de216dce
Author: Martin Schanzenbach <schanzen@gnunet.org>
AuthorDate: Sun Sep 24 08:10:08 2023 +0200
BUILD: Meson - add readme, add build options
---
README.meson.md | 37 +++++++++++++++++++++++++++++++++++++
meson.build | 47 +++++++++++++++++++++++++++++++++++++++++++++--
meson.options | 1 +
3 files changed, 83 insertions(+), 2 deletions(-)
diff --git a/README.meson.md b/README.meson.md
new file mode 100644
index 000000000..fc639385c
--- /dev/null
+++ b/README.meson.md
@@ -0,0 +1,37 @@
+# Meson build system
+
+DISCLAIMER: This is a work in progress. The meson build system will be
maintained for a brief period alongside autotools.
+
+## Motivation
+
+ - We want to build a single, monolithic library libgnunet that is easier to
use in, for example, mobile apps.
+ - Autotools is complex and difficult to use. It also causes stale builds.
Meson has a better developer experience.
+ - Meson supports dynamic pkg-config generation.
+ - Meson does out-of-tree builds
+ - Meson makes it (almost) impossible to create dist tarballs that miss
files/do not compile.
+
+
+## Reasons to drop it again
+
+ - Meson does not seem to support (automatic) dependency version detection
without pkg-config.
+
+
+## TODOs
+
+ - Migrate tests
+ - Portability defines set implicitly in configure.ac need to be identified
and ported to meson.
+ - Some (experimental) subsystems not yet ported.
+ - 1:1 match of installed files must be verified.
+ - Documentation must be updated.
+
+## Use
+
+
+```
+$ meson setup $builddir
+$ cd $builddir
+$ meson configure -Dprefix=$string -Dexperimental=$bool -Dmonolith=$bool
+$ meson compile
+$ meson install
+$ meson dist
+```
diff --git a/meson.build b/meson.build
index 17ce5cea1..c60a5c610 100644
--- a/meson.build
+++ b/meson.build
@@ -28,6 +28,21 @@ cdata.set('enable_experimental', get_option('experimental'))
if get_option('experimental')
add_project_arguments('-DHAVE_EXPERIMENTAL', language: 'c')
endif
+logging_opt = get_option('logging')
+if get_option('logging') == 'yes'
+ add_project_arguments('-DGNUNET_EXTRA_LOGGING=0', language: 'c')
+endif
+if get_option('logging') == 'yes'
+ add_project_arguments('-DGNUNET_EXTRA_LOGGING=0', language: 'c')
+ add_project_arguments('-DGNUNET_CULL_LOGGING=1', language: 'c')
+endif
+if get_option('logging') == 'verbose'
+ add_project_arguments('-DGNUNET_EXTRA_LOGGING=1', language: 'c')
+endif
+if get_option('logging') == 'veryverbose'
+ add_project_arguments('-DGNUNET_EXTRA_LOGGING=2', language: 'c')
+endif
+
# FIXME
cdata.set('extractor', 0)
@@ -40,8 +55,9 @@ endif
if cc.has_member ('struct sockaddr_un', 'sun_len', prefix : ['#include
<sys/types.h>', '#include <sys/socket.h>', '#include <sys/un.h>'])
add_project_arguments('-DHAVE_SOCKADDR_UN_SUN_LEN', language: 'c')
endif
-
-message('Building on ' + host_machine.system())
+if cc.has_member ('struct tm', 'tm_gmtoff', prefix : ['#include <time.h>'])
+ add_project_arguments('-DHAVE_TM_GMTOFF', language: 'c')
+endif
# TODO:
# - Go through configure.ac and convert all defines/detections
@@ -78,11 +94,13 @@ cdata.set('START_ON_DEMAND', 'YES')
cdata.set_quoted('build_target', host_machine.system())
if host_machine.system() == 'linux'
+ add_project_arguments('-DLINUX', language : 'c')
add_project_link_arguments(['-Wl,--unresolved-symbols=report-all'], language
: 'c')
cdata.set_quoted('GNUNET_DEFAULT_INTERFACE', 'eth0')
endif
if host_machine.system() == 'darwin'
cdata.set_quoted('GNUNET_DEFAULT_INTERFACE', 'en0')
+ add_project_arguments('-DDARWIN', language : 'c')
add_project_arguments('-D_APPLE_C_SOURCE', language : 'c')
add_project_arguments('-D__APPLE_USE_RFC_3542', language : 'c')
add_project_arguments('-fno-common', language : 'c')
@@ -261,6 +279,31 @@ if cc.check_header('sys/param.h')
add_project_arguments('-DHAVE_SYS_PARAM_H', language : 'c')
endif
+# TUN
+if cc.check_header('if_tun.h')
+ if cc.has_header_symbol('if_tun.h', 'struct in6_ifreq')
+ add_project_arguments('-DIF_TUN_HDR="if_tun.h"', language : 'c')
+ endif
+endif
+if cc.check_header('linux/if_tun.h')
+ if cc.has_header_symbol('linux/if_tun.h', 'struct in6_ifreq')
+ add_project_arguments('-DIF_TUN_HDR="linux/if_tun.h"', language : 'c')
+ endif
+endif
+if cc.check_header('net/if_tun.h')
+ if cc.has_header_symbol('net/if_tun.h', 'struct in6_ifreq')
+ add_project_arguments('-DIF_TUN_HDR="net/if_tun.h"', language : 'c')
+ endif
+endif
+if cc.check_header('net/tun/if_tun.h')
+ if cc.has_header_symbol('net/tun/if_tun.h', 'struct in6_ifreq')
+ add_project_arguments('-DIF_TUN_HDR="net/tun/if_tun.h"', language : 'c')
+ endif
+endif
+
+
+
+
# NSS
if cc.check_header('nss.h')
add_project_arguments('-DHAVE_GLIBCNSS', language : 'c')
diff --git a/meson.options b/meson.options
index 0fc435ec5..0d5b7e325 100644
--- a/meson.options
+++ b/meson.options
@@ -1,4 +1,5 @@
# Build options
option('monolith', type : 'boolean', value : false, description: 'Build a
single, monolithic libgnunet shlib')
option('experimental', type : 'boolean', value : false, description: 'Build
experimental components')
+option('logging', type : 'string', value: 'yes', description: 'Log setting.
Can be set to "yes" (logging, default), "no" (no logging), "verbose" (extra
loggin"), veryverbose (even more logging)')
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnunet] branch master updated: BUILD: Meson - add readme, add build options,
gnunet <=