]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - meson.build
ethtool: fix half-duplex / full-duplex confusion (#6209)
[thirdparty/systemd.git] / meson.build
index cb9713c0ae848a118971b4ab2ce597b5c6c4e449..af68a2ff83a016ccc4eca3ef547dbb241b4d6246 100644 (file)
@@ -28,7 +28,7 @@ m4_defines = []
 
 rootprefixdir = get_option('rootprefix')
 if get_option('split-usr')
-        conf.set('HAVE_SPLIT_USR', 1)
+        conf.set('HAVE_SPLIT_USR', true)
         rootprefixdir = rootprefixdir != '' ? rootprefixdir : '/'
 else
         rootprefixdir = rootprefixdir != '' ? rootprefixdir : '/usr'
@@ -37,7 +37,7 @@ endif
 sysvinit_path = get_option('sysvinit-path')
 sysvrcnd_path = get_option('sysvrcnd-path')
 if sysvinit_path != '' or sysvrcnd_path != ''
-        conf.set('HAVE_SYSV_COMPAT', 1,
+        conf.set('HAVE_SYSV_COMPAT', true,
                  description : 'SysV init scripts and rcN.d links are supported')
         m4_defines += ['-DHAVE_SYSV_COMPAT']
 endif
@@ -224,6 +224,12 @@ cc = meson.get_compiler('c')
 pkgconfig = import('pkgconfig')
 check_compilation_sh = find_program('tools/meson-check-compilation.sh')
 
+cxx = find_program('c++', required : false)
+if cxx.found()
+        #  Used only for tests
+        add_languages('cpp')
+endif
+
 foreach arg : ['-Wundef',
                '-Wlogical-op',
                '-Wmissing-include-dirs',
@@ -306,7 +312,6 @@ link_test_c = files('tools/meson-link-test.c')
 foreach arg : ['-Wl,-z,relro',
                '-Wl,-z,now',
                '-pie',
-               '-Wl,-fuse-ld=gold',
               ]
 
         have = run_command(check_compilation_sh,
@@ -343,8 +348,8 @@ cpp = ' '.join(cc.cmd_array()) + ' -E'
 #####################################################################
 # compilation result tests
 
-conf.set('_GNU_SOURCE', 1)
-conf.set('__SANE_USERSPACE_TYPES__', 1)
+conf.set('_GNU_SOURCE', true)
+conf.set('__SANE_USERSPACE_TYPES__', true)
 
 conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
 conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
@@ -365,10 +370,10 @@ foreach decl : ['char16_t',
                 'key_serial_t',
                 'struct ethtool_link_settings',
                ]
-        if cc.sizeof(decl, prefix : decl_headers) > 0
-                # We get -1 if the size cannot be determined
-                conf.set('HAVE_' + decl.underscorify().to_upper(), 1)
-        endif
+
+        # We get -1 if the size cannot be determined
+        have = cc.sizeof(decl, prefix : decl_headers) > 0
+        conf.set('HAVE_' + decl.underscorify().to_upper(), have)
 endforeach
 
 foreach decl : [['IFLA_INET6_ADDR_GEN_MODE',         'linux/if_link.h'],
@@ -402,7 +407,7 @@ endforeach
 skip = false
 foreach ident : ['secure_getenv', '__secure_getenv']
         if not skip and cc.has_function(ident)
-                conf.set('HAVE_' + ident.to_upper(), 1)
+                conf.set('HAVE_' + ident.to_upper(), true)
                 skip = true
         endif
 endforeach
@@ -431,8 +436,8 @@ foreach ident : [
 endforeach
 
 if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''')
-        conf.set('USE_SYS_RANDOM_H', 1)
-        conf.set10('HAVE_DECL_GETRANDOM', 1)
+        conf.set('USE_SYS_RANDOM_H', true)
+        conf.set10('HAVE_DECL_GETRANDOM', true)
 else
         have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
         conf.set10('HAVE_DECL_GETRANDOM', have)
@@ -524,9 +529,9 @@ foreach header : ['linux/btrfs.h',
                   'valgrind/memcheck.h',
                   'valgrind/valgrind.h',
                  ]
-        if cc.has_header(header)
-                conf.set('HAVE_' + header.underscorify().to_upper(), 1)
-        endif
+
+        conf.set('HAVE_' + header.underscorify().to_upper(),
+                 cc.has_header(header))
 endforeach
 
 ############################################################
@@ -597,11 +602,6 @@ kill_user_processes = get_option('default-kill-user-processes')
 conf.set10('KILL_USER_PROCESSES', kill_user_processes)
 substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
 
-default_dnssec = get_option('default-dnssec')
-conf.set('DEFAULT_DNSSEC_MODE',
-         'DNSSEC_' + default_dnssec.underscorify().to_upper())
-substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
-
 dns_servers = get_option('dns-servers')
 conf.set_quoted('DNS_SERVERS', dns_servers)
 substs.set('DNS_SERVERS', dns_servers)
@@ -619,9 +619,9 @@ debug = get_option('debug')
 if debug != ''
         foreach name : debug.split(',')
                 if name == 'hashmap'
-                        conf.set('ENABLE_DEBUG_HASHMAP', 1)
+                        conf.set('ENABLE_DEBUG_HASHMAP', true)
                 elif name == 'mmap-cache'
-                        conf.set('ENABLE_DEBUG_MMAP_CACHE', 1)
+                        conf.set('ENABLE_DEBUG_MMAP_CACHE', true)
                 else
                         message('unknown debug option "@0@", ignoring'.format(name))
                 endif
@@ -651,7 +651,7 @@ if want_seccomp != 'false'
                                 version : '>= 2.3.1',
                                 required : want_seccomp == 'true')
         if libseccomp.found()
-                conf.set('HAVE_SECCOMP', 1)
+                conf.set('HAVE_SECCOMP', true)
                 m4_defines += ['-DHAVE_SECCOMP']
         endif
 else
@@ -664,7 +664,7 @@ if want_selinux != 'false'
                                 version : '>= 2.1.9',
                                 required : want_selinux == 'true')
         if libselinux.found()
-                conf.set('HAVE_SELINUX', 1)
+                conf.set('HAVE_SELINUX', true)
                 m4_defines += ['-DHAVE_SELINUX']
         endif
 else
@@ -676,7 +676,7 @@ if want_apparmor != 'false'
         libapparmor = dependency('libapparmor',
                                  required : want_apparmor == 'true')
         if libapparmor.found()
-                conf.set('HAVE_APPARMOR', 1)
+                conf.set('HAVE_APPARMOR', true)
                 m4_defines += ['-DHAVE_APPARMOR']
         endif
 else
@@ -693,7 +693,7 @@ want_polkit = get_option('polkit')
 install_polkit = false
 install_polkit_pkla = false
 if want_polkit != 'false'
-        conf.set('ENABLE_POLKIT', 1)
+        conf.set('ENABLE_POLKIT', true)
         install_polkit = true
 
         libpolkit = dependency('polkit-gobject-1',
@@ -708,7 +708,7 @@ want_acl = get_option('acl')
 if want_acl != 'false'
         libacl = cc.find_library('acl', required : want_acl == 'true')
         if libacl.found()
-                conf.set('HAVE_ACL', 1)
+                conf.set('HAVE_ACL', true)
                 m4_defines += ['-DHAVE_ACL']
         endif
 else
@@ -718,9 +718,7 @@ endif
 want_audit = get_option('audit')
 if want_audit != 'false'
         libaudit = dependency('audit', required : want_audit == 'true')
-        if libaudit.found()
-                conf.set('HAVE_AUDIT', 1)
-        endif
+        conf.set('HAVE_AUDIT', libaudit.found())
 else
         libaudit = []
 endif
@@ -728,9 +726,7 @@ endif
 want_blkid = get_option('blkid')
 if want_blkid != 'false'
         libblkid = dependency('blkid', required : want_blkid == 'true')
-        if libblkid.found()
-                conf.set('HAVE_BLKID', 1)
-        endif
+        conf.set('HAVE_BLKID', libblkid.found())
 else
         libblkid = []
 endif
@@ -740,9 +736,7 @@ if want_kmod != 'false'
         libkmod = dependency('libkmod',
                              version : '>= 15',
                              required : want_kmod == 'true')
-        if libkmod.found()
-                conf.set('HAVE_KMOD', 1)
-        endif
+        conf.set('HAVE_KMOD', libkmod.found())
 else
         libkmod = []
 endif
@@ -752,7 +746,7 @@ if want_pam != 'false'
         libpam = cc.find_library('pam', required : want_pam == 'true')
         libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
         if libpam.found() and libpam_misc.found()
-                conf.set('HAVE_PAM', 1)
+                conf.set('HAVE_PAM', true)
                 m4_defines += ['-DHAVE_PAM']
         endif
 else
@@ -766,7 +760,7 @@ if want_microhttpd != 'false'
                                    version : '>= 0.9.33',
                                    required : want_microhttpd == 'true')
         if libmicrohttpd.found()
-                conf.set('HAVE_MICROHTTPD', 1)
+                conf.set('HAVE_MICROHTTPD', true)
                 m4_defines += ['-DHAVE_MICROHTTPD']
         endif
 else
@@ -778,9 +772,7 @@ if want_libcryptsetup != 'false'
         libcryptsetup = dependency('libcryptsetup',
                                    version : '>= 1.6.0',
                                    required : want_libcryptsetup == 'true')
-        if libcryptsetup.found()
-                conf.set('HAVE_LIBCRYPTSETUP', 1)
-        endif
+        conf.set('HAVE_LIBCRYPTSETUP', libcryptsetup.found())
 else
         libcryptsetup = []
 endif
@@ -791,7 +783,7 @@ if want_libcurl != 'false'
                              version : '>= 7.32.0',
                              required : want_libcurl == 'true')
         if libcurl.found()
-                conf.set('HAVE_LIBCURL', 1)
+                conf.set('HAVE_LIBCURL', true)
                 m4_defines += ['-DHAVE_LIBCURL']
         endif
 else
@@ -799,15 +791,29 @@ else
 endif
 
 want_libidn = get_option('libidn')
-if want_libidn != 'false'
+want_libidn2 = get_option('libidn2')
+if want_libidn == 'true' and want_libidn2 == 'true'
+        error('libidn and libidn2 cannot be requested simultaneously')
+endif
+
+if want_libidn2 != 'false' and want_libidn != 'true'
+        libidn = dependency('libidn2',
+                            required : want_libidn2 == 'true')
+        # libidn is used for both libidn and libidn2 objects
+        if libidn.found()
+                conf.set('HAVE_LIBIDN2', true)
+                m4_defines += ['-DHAVE_LIBIDN2']
+        endif
+else
+        libidn = []
+endif
+if not conf.get('HAVE_LIBIDN2', false) and want_libidn != 'false'
         libidn = dependency('libidn',
                             required : want_libidn == 'true')
         if libidn.found()
-                conf.set('HAVE_LIBIDN', 1)
+                conf.set('HAVE_LIBIDN', true)
                 m4_defines += ['-DHAVE_LIBIDN']
         endif
-else
-        libidn = []
 endif
 
 want_libiptc = get_option('libiptc')
@@ -815,7 +821,7 @@ if want_libiptc != 'false'
         libiptc = dependency('libiptc',
                              required : want_libiptc == 'true')
         if libiptc.found()
-                conf.set('HAVE_LIBIPTC', 1)
+                conf.set('HAVE_LIBIPTC', true)
                 m4_defines += ['-DHAVE_LIBIPTC']
         endif
 else
@@ -826,9 +832,7 @@ want_qrencode = get_option('qrencode')
 if want_qrencode != 'false'
         libqrencode = dependency('libqrencode',
                                  required : want_qrencode == 'true')
-        if libqrencode.found()
-                conf.set('HAVE_QRENCODE', 1)
-        endif
+        conf.set('HAVE_QRENCODE', libqrencode.found())
 else
         libqrencode = []
 endif
@@ -838,9 +842,7 @@ if want_gnutls != 'false'
         libgnutls = dependency('gnutls',
                                version : '>= 3.1.4',
                                required : want_gnutls == 'true')
-        if libgnutls.found()
-                conf.set('HAVE_GNUTLS', 1)
-        endif
+        conf.set('HAVE_GNUTLS', libgnutls.found())
 else
         libgnutls = []
 endif
@@ -849,9 +851,7 @@ want_elfutils = get_option('elfutils')
 if want_elfutils != 'false'
         libdw = dependency('libdw',
                            required : want_elfutils == 'true')
-        if libdw.found()
-                conf.set('HAVE_ELFUTILS', 1)
-        endif
+        conf.set('HAVE_ELFUTILS', libdw.found())
 else
         libdw = []
 endif
@@ -860,9 +860,7 @@ want_zlib = get_option('zlib')
 if want_zlib != 'false'
         libz = dependency('zlib',
                           required : want_zlib == 'true')
-        if libz.found()
-                conf.set('HAVE_ZLIB', 1)
-        endif
+        conf.set('HAVE_ZLIB', libz.found())
 else
         libz = []
 endif
@@ -871,9 +869,7 @@ want_bzip2 = get_option('bzip2')
 if want_bzip2 != 'false'
         libbzip2 = cc.find_library('bz2',
                                    required : want_bzip2 == 'true')
-        if libbzip2.found()
-                conf.set('HAVE_BZIP2', 1)
-        endif
+        conf.set('HAVE_BZIP2', libbzip2.found())
 else
         libbzip2 = []
 endif
@@ -882,9 +878,7 @@ want_xz = get_option('xz')
 if want_xz != 'false'
         libxz = dependency('liblzma',
                            required : want_xz == 'true')
-        if libxz.found()
-                conf.set('HAVE_XZ', 1)
-        endif
+        conf.set('HAVE_XZ', libxz.found())
 else
         libxz = []
 endif
@@ -893,9 +887,7 @@ want_lz4 = get_option('lz4')
 if want_lz4 != 'false'
         liblz4 = dependency('liblz4',
                             required : want_lz4 == 'true')
-        if liblz4.found()
-                conf.set('HAVE_LZ4', 1)
-        endif
+        conf.set('HAVE_LZ4', liblz4.found())
 else
         liblz4 = []
 endif
@@ -910,9 +902,8 @@ if want_glib != 'false'
                                 required : want_glib == 'true')
         libgio =     dependency('gio-2.0',
                                 required : want_glib == 'true')
-        if libglib.found() and libgobject.found() and libgio.found()
-                conf.set('HAVE_GLIB', 1)
-        endif
+        have = libglib.found() and libgobject.found() and libgio.found()
+        conf.set('HAVE_GLIB', have)
 else
         libglib = []
         libgobject = []
@@ -924,9 +915,7 @@ if want_xkbcommon != 'false'
         libxkbcommon = dependency('xkbcommon',
                                   version : '>= 0.3.0',
                                   required : want_xkbcommon == 'true')
-        if libxkbcommon.found()
-                conf.set('HAVE_XKBCOMMON', 1)
-        endif
+        conf.set('HAVE_XKBCOMMON', libxkbcommon.found())
 else
         libxkbcommon = []
 endif
@@ -936,9 +925,7 @@ if want_dbus != 'false'
         libdbus = dependency('dbus-1',
                              version : '>= 1.3.2',
                              required : want_dbus == 'true')
-        if libdbus.found()
-                conf.set('HAVE_DBUS', 1)
-        endif
+        conf.set('HAVE_DBUS', libdbus.found())
 else
         libdbus = []
 endif
@@ -948,9 +935,9 @@ if want_gcrypt != 'false'
         libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
         libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
 
-        if libgcrypt.found() and libgpg_error.found()
-                conf.set('HAVE_GCRYPT', 1)
-        else
+        have_deps = libgcrypt.found() and libgpg_error.found()
+        conf.set('HAVE_GCRYPT', have_deps)
+        if not have_deps
                 # link to neither of the libs if one is not found
                 libgcrypt = []
                 libgpg_error = []
@@ -960,24 +947,32 @@ else
         libgpg_error = []
 endif
 
+default_dnssec = get_option('default-dnssec')
+if default_dnssec != 'no' and not conf.get('HAVE_GCRYPT', false)
+        message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
+        default_dnssec = 'no'
+endif
+conf.set('DEFAULT_DNSSEC_MODE',
+         'DNSSEC_' + default_dnssec.underscorify().to_upper())
+substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
+
 want_importd = get_option('importd')
 if want_importd != 'false'
-        have_deps = (conf.get('HAVE_LIBCURL', 0) == 1 and
-                     conf.get('HAVE_ZLIB', 0) == 1 and
-                     conf.get('HAVE_BZIP2', 0) == 1 and
-                     conf.get('HAVE_XZ', 0) == 1 and
-                     conf.get('HAVE_GCRYPT', 0) == 1)
-        if have_deps
-                conf.set('ENABLE_IMPORTD', 1)
-        elif want_importd == 'true'
+        have_deps = (conf.get('HAVE_LIBCURL', false) and
+                     conf.get('HAVE_ZLIB', false) and
+                     conf.get('HAVE_BZIP2', false) and
+                     conf.get('HAVE_XZ', false) and
+                     conf.get('HAVE_GCRYPT', false))
+        conf.set('ENABLE_IMPORTD', have_deps)
+        if want_importd == 'true' and not have_deps
                 error('importd support was requested, but dependencies are not available')
         endif
 endif
 
 want_remote = get_option('remote')
 if want_remote != 'false'
-        have_deps = [conf.get('HAVE_MICROHTTPD', 0) == 1,
-                     conf.get('HAVE_LIBCURL', 0) == 1]
+        have_deps = [conf.get('HAVE_MICROHTTPD', false),
+                     conf.get('HAVE_LIBCURL', false)]
         # sd-j-remote requires Âµhttpd, and sd-j-upload requires libcurl, so
         # it's possible to build one without the other. Complain only if
         # support was explictly requested. The auxiliary files like sysusers
@@ -985,9 +980,7 @@ if want_remote != 'false'
         if want_remote == 'true' and not (have_deps[0] and have_deps[1])
                 error('remote support was requested, but dependencies are not available')
         endif
-        if have_deps[0] or have_deps[1]
-                conf.set('ENABLE_REMOTE', 1)
-        endif
+        conf.set('ENABLE_REMOTE', have_deps[0] or have_deps[1])
 endif
 
 foreach pair : [['utmp',          'HAVE_UTMP'],
@@ -1018,10 +1011,13 @@ foreach pair : [['utmp',          'HAVE_UTMP'],
                 ['tpm',           'SD_BOOT_LOG_TPM'],
                 ['ima',           'HAVE_IMA'],
                 ['smack',         'HAVE_SMACK'],
+                ['gshadow',       'ENABLE_GSHADOW'],
+                ['idn',           'ENABLE_IDN'],
+                ['nss-systemd',   'ENABLE_NSS_SYSTEMD'],
                ]
 
         if get_option(pair[0])
-                conf.set(pair[1], 1)
+                conf.set(pair[1], true)
                 m4_defines += ['-D' + pair[1]]
         endif
 endforeach
@@ -1052,7 +1048,7 @@ if get_option('efi')
                 gnu_efi_arch = ''
         endif
 
-        conf.set('ENABLE_EFI', 1)
+        conf.set('ENABLE_EFI', true)
         conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
 
         conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
@@ -1165,15 +1161,14 @@ test_dlopen = executable(
         link_with : [libbasic],
         dependencies : [libdl])
 
-foreach tuple : [['myhostname', 'HAVE_MYHOSTNAME', []],
-                 ['systemd',     '',               []],
-                 ['mymachines', 'ENABLE_MACHINED', []],
-                 ['resolve',    'ENABLE_RESOLVED', [libdl]]]
+foreach tuple : [['myhostname', 'HAVE_MYHOSTNAME'],
+                 ['systemd',    'ENABLE_NSS_SYSTEMD'],
+                 ['mymachines', 'ENABLE_MACHINED'],
+                 ['resolve',    'ENABLE_RESOLVED']]
 
-        condition = tuple[1] == '' or conf.get(tuple[1], 0) == 1
+        condition = tuple[1] == '' or conf.get(tuple[1], false)
         if condition
                 module = tuple[0]
-                extra_deps = tuple[2]
 
                 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
                 version_script_arg = join_paths(meson.current_source_dir(), sym)
@@ -1189,7 +1184,7 @@ foreach tuple : [['myhostname', 'HAVE_MYHOSTNAME', []],
                         link_with : [libsystemd_internal,
                                      libbasic],
                         dependencies : [threads,
-                                        librt] + extra_deps,
+                                        librt],
                         link_depends : sym,
                         install : true,
                         install_dir : rootlibdir)
@@ -1299,7 +1294,7 @@ executable('systemd-fstab-generator',
            install : true,
            install_dir : systemgeneratordir)
 
-if conf.get('ENABLE_ENVIRONMENT_D', 0) == 1
+if conf.get('ENABLE_ENVIRONMENT_D', false)
         executable('30-systemd-environment-d-generator',
                    'src/environment-d-generator/environment-d-generator.c',
                    include_directories : includes,
@@ -1313,7 +1308,7 @@ if conf.get('ENABLE_ENVIRONMENT_D', 0) == 1
                                  join_paths(environmentdir, '99-environment.conf'))
 endif
 
-if conf.get('ENABLE_HIBERNATE', 0) == 1
+if conf.get('ENABLE_HIBERNATE', false)
         executable('systemd-hibernate-resume-generator',
                    'src/hibernate-resume/hibernate-resume-generator.c',
                    include_directories : includes,
@@ -1331,7 +1326,7 @@ if conf.get('ENABLE_HIBERNATE', 0) == 1
                    install_dir : rootlibexecdir)
 endif
 
-if conf.get('HAVE_BLKID', 0) == 1
+if conf.get('HAVE_BLKID', false)
         executable('systemd-gpt-auto-generator',
                    'src/gpt-auto-generator/gpt-auto-generator.c',
                    'src/basic/blkid-util.h',
@@ -1352,7 +1347,7 @@ if conf.get('HAVE_BLKID', 0) == 1
         public_programs += [exe]
 endif
 
-if conf.get('ENABLE_RESOLVED', 0) == 1
+if conf.get('ENABLE_RESOLVED', false)
         executable('systemd-resolved',
                    systemd_resolved_sources,
                    gcrypt_util_sources,
@@ -1382,7 +1377,7 @@ if conf.get('ENABLE_RESOLVED', 0) == 1
         public_programs += [exe]
 endif
 
-if conf.get('ENABLE_LOGIND', 0) == 1
+if conf.get('ENABLE_LOGIND', false)
         executable('systemd-logind',
                    systemd_logind_sources,
                    include_directories : includes,
@@ -1415,7 +1410,7 @@ if conf.get('ENABLE_LOGIND', 0) == 1
                          install_dir : rootbindir)
         public_programs += [exe]
 
-        if conf.get('HAVE_PAM', 0) == 1
+        if conf.get('HAVE_PAM', false)
                 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
                 pam_systemd = shared_library(
                         'pam_systemd',
@@ -1439,7 +1434,7 @@ if conf.get('ENABLE_LOGIND', 0) == 1
         endif
 endif
 
-if conf.get('HAVE_PAM', 0) == 1
+if conf.get('HAVE_PAM', false)
         executable('systemd-user-sessions',
                    'src/user-sessions/user-sessions.c',
                    include_directories : includes,
@@ -1449,7 +1444,7 @@ if conf.get('HAVE_PAM', 0) == 1
                    install_dir : rootlibexecdir)
 endif
 
-if conf.get('ENABLE_EFI', 0) == 1 and conf.get('HAVE_BLKID', 0) == 1
+if conf.get('ENABLE_EFI', false) and conf.get('HAVE_BLKID', false)
         exe = executable('bootctl',
                          'src/boot/bootctl.c',
                          include_directories : includes,
@@ -1481,7 +1476,7 @@ exe = executable('systemctl', 'src/systemctl/systemctl.c',
                  install_dir : rootbindir)
 public_programs += [exe]
 
-if conf.get('ENABLE_BACKLIGHT', 0) == 1
+if conf.get('ENABLE_BACKLIGHT', false)
         executable('systemd-backlight',
                    'src/backlight/backlight.c',
                    include_directories : includes,
@@ -1491,7 +1486,7 @@ if conf.get('ENABLE_BACKLIGHT', 0) == 1
                    install_dir : rootlibexecdir)
 endif
 
-if conf.get('ENABLE_RFKILL', 0) == 1
+if conf.get('ENABLE_RFKILL', false)
         executable('systemd-rfkill',
                    'src/rfkill/rfkill.c',
                    include_directories : includes,
@@ -1509,7 +1504,7 @@ executable('systemd-system-update-generator',
            install : true,
            install_dir : systemgeneratordir)
 
-if conf.get('HAVE_LIBCRYPTSETUP', 0) == 1
+if conf.get('HAVE_LIBCRYPTSETUP', false)
         executable('systemd-cryptsetup',
                    'src/cryptsetup/cryptsetup.c',
                    include_directories : includes,
@@ -1547,7 +1542,7 @@ if conf.get('HAVE_LIBCRYPTSETUP', 0) == 1
                    install_dir : systemgeneratordir)
 endif
 
-if conf.get('HAVE_SYSV_COMPAT', 0) == 1
+if conf.get('HAVE_SYSV_COMPAT', false)
         executable('systemd-sysv-generator',
                    'src/sysv-generator/sysv-generator.c',
                    include_directories : includes,
@@ -1565,7 +1560,7 @@ if conf.get('HAVE_SYSV_COMPAT', 0) == 1
                    install_dir : systemgeneratordir)
 endif
 
-if conf.get('ENABLE_HOSTNAMED', 0) == 1
+if conf.get('ENABLE_HOSTNAMED', false)
         executable('systemd-hostnamed',
                    'src/hostname/hostnamed.c',
                    include_directories : includes,
@@ -1583,8 +1578,8 @@ if conf.get('ENABLE_HOSTNAMED', 0) == 1
         public_programs += [exe]
 endif
 
-if conf.get('ENABLE_LOCALED', 0) == 1
-        if conf.get('HAVE_XKBCOMMON', 0) == 1
+if conf.get('ENABLE_LOCALED', false)
+        if conf.get('HAVE_XKBCOMMON', false)
                 # logind will load libxkbcommon.so dynamically on its own
                 deps = [libdl]
         else
@@ -1609,7 +1604,7 @@ if conf.get('ENABLE_LOCALED', 0) == 1
         public_programs += [exe]
 endif
 
-if conf.get('ENABLE_TIMEDATED', 0) == 1
+if conf.get('ENABLE_TIMEDATED', false)
         executable('systemd-timedated',
                    'src/timedate/timedated.c',
                    include_directories : includes,
@@ -1627,7 +1622,7 @@ if conf.get('ENABLE_TIMEDATED', 0) == 1
         public_programs += [exe]
 endif
 
-if conf.get('ENABLE_TIMESYNCD', 0) == 1
+if conf.get('ENABLE_TIMESYNCD', false)
         executable('systemd-timesyncd',
                    systemd_timesyncd_sources,
                    include_directories : includes,
@@ -1639,7 +1634,7 @@ if conf.get('ENABLE_TIMESYNCD', 0) == 1
                    install_dir : rootlibexecdir)
 endif
 
-if conf.get('ENABLE_MACHINED', 0) == 1
+if conf.get('ENABLE_MACHINED', false)
         executable('systemd-machined',
                    systemd_machined_sources,
                    include_directories : includes,
@@ -1662,7 +1657,7 @@ if conf.get('ENABLE_MACHINED', 0) == 1
         public_programs += [exe]
 endif
 
-if conf.get('ENABLE_IMPORTD', 0) == 1
+if conf.get('ENABLE_IMPORTD', false)
         executable('systemd-importd',
                    systemd_importd_sources,
                    include_directories : includes,
@@ -1711,7 +1706,7 @@ if conf.get('ENABLE_IMPORTD', 0) == 1
         public_programs += [systemd_pull, systemd_import, systemd_export]
 endif
 
-if conf.get('ENABLE_REMOTE', 0) == 1 and conf.get('HAVE_LIBCURL', 0) == 1
+if conf.get('ENABLE_REMOTE', false) and conf.get('HAVE_LIBCURL', false)
         exe = executable('systemd-journal-upload',
                          systemd_journal_upload_sources,
                          include_directories : includes,
@@ -1727,7 +1722,7 @@ if conf.get('ENABLE_REMOTE', 0) == 1 and conf.get('HAVE_LIBCURL', 0) == 1
         public_programs += [exe]
 endif
 
-if conf.get('ENABLE_REMOTE', 0) == 1 and conf.get('HAVE_MICROHTTPD', 0) == 1
+if conf.get('ENABLE_REMOTE', false) and conf.get('HAVE_MICROHTTPD', false)
         s_j_remote = executable('systemd-journal-remote',
                                 systemd_journal_remote_sources,
                                 include_directories : includes,
@@ -1756,7 +1751,7 @@ if conf.get('ENABLE_REMOTE', 0) == 1 and conf.get('HAVE_MICROHTTPD', 0) == 1
         public_programs += [s_j_remote, s_j_gatewayd]
 endif
 
-if conf.get('ENABLE_COREDUMP', 0) == 1
+if conf.get('ENABLE_COREDUMP', false)
         executable('systemd-coredump',
                    systemd_coredump_sources,
                    include_directories : includes,
@@ -1782,7 +1777,7 @@ if conf.get('ENABLE_COREDUMP', 0) == 1
         public_programs += [exe]
 endif
 
-if conf.get('ENABLE_BINFMT', 0) == 1
+if conf.get('ENABLE_BINFMT', false)
         exe = executable('systemd-binfmt',
                          'src/binfmt/binfmt.c',
                          include_directories : includes,
@@ -1798,7 +1793,7 @@ if conf.get('ENABLE_BINFMT', 0) == 1
                                  mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
 endif
 
-if conf.get('ENABLE_VCONSOLE', 0) == 1
+if conf.get('ENABLE_VCONSOLE', false)
         executable('systemd-vconsole-setup',
                    'src/vconsole/vconsole-setup.c',
                    include_directories : includes,
@@ -1808,7 +1803,7 @@ if conf.get('ENABLE_VCONSOLE', 0) == 1
                    install_dir : rootlibexecdir)
 endif
 
-if conf.get('ENABLE_RANDOMSEED', 0) == 1
+if conf.get('ENABLE_RANDOMSEED', false)
         executable('systemd-random-seed',
                    'src/random-seed/random-seed.c',
                    include_directories : includes,
@@ -1818,7 +1813,7 @@ if conf.get('ENABLE_RANDOMSEED', 0) == 1
                    install_dir : rootlibexecdir)
 endif
 
-if conf.get('ENABLE_FIRSTBOOT', 0) == 1
+if conf.get('ENABLE_FIRSTBOOT', false)
         executable('systemd-firstboot',
                    'src/firstboot/firstboot.c',
                    include_directories : includes,
@@ -2027,7 +2022,7 @@ exe = executable('busctl',
                  install : true)
 public_programs += [exe]
 
-if conf.get('ENABLE_SYSUSERS', 0) == 1
+if conf.get('ENABLE_SYSUSERS', false)
         exe = executable('systemd-sysusers',
                          'src/sysusers/sysusers.c',
                          include_directories : includes,
@@ -2038,7 +2033,7 @@ if conf.get('ENABLE_SYSUSERS', 0) == 1
         public_programs += [exe]
 endif
 
-if conf.get('ENABLE_TMPFILES', 0) == 1
+if conf.get('ENABLE_TMPFILES', false)
         exe = executable('systemd-tmpfiles',
                          'src/tmpfiles/tmpfiles.c',
                          include_directories : includes,
@@ -2050,7 +2045,7 @@ if conf.get('ENABLE_TMPFILES', 0) == 1
         public_programs += [exe]
 endif
 
-if conf.get('ENABLE_HWDB', 0) == 1
+if conf.get('ENABLE_HWDB', false)
         exe = executable('systemd-hwdb',
                          'src/hwdb/hwdb.c',
                          'src/libsystemd/sd-hwdb/hwdb-internal.h',
@@ -2062,7 +2057,7 @@ if conf.get('ENABLE_HWDB', 0) == 1
         public_programs += [exe]
 endif
 
-if conf.get('ENABLE_QUOTACHECK', 0) == 1
+if conf.get('ENABLE_QUOTACHECK', false)
         executable('systemd-quotacheck',
                    'src/quotacheck/quotacheck.c',
                    include_directories : includes,
@@ -2085,6 +2080,7 @@ public_programs += [exe]
 exe = executable('systemd-udevd',
                  systemd_udevd_sources,
                  include_directories : includes,
+                 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
                  link_with : [libudev_core,
                               libsystemd_network,
                               libudev_internal],
@@ -2139,7 +2135,7 @@ executable('systemd-update-utmp',
            install : true,
            install_dir : rootlibexecdir)
 
-if conf.get('HAVE_KMOD', 0) == 1
+if conf.get('HAVE_KMOD', false)
         executable('systemd-modules-load',
                    'src/modules-load/modules-load.c',
                    include_directories : includes,
@@ -2171,7 +2167,7 @@ exe = executable('systemd-nspawn',
                  install : true)
 public_programs += [exe]
 
-if conf.get('ENABLE_NETWORKD', 0) == 1
+if conf.get('ENABLE_NETWORKD', false)
         executable('systemd-networkd',
                    systemd_networkd_sources,
                    include_directories : includes,
@@ -2179,6 +2175,7 @@ if conf.get('ENABLE_NETWORKD', 0) == 1
                                 libsystemd_network,
                                 libudev_internal,
                                 libshared],
+                   dependencies : [threads],
                    install_rpath : rootlibexecdir,
                    install : true,
                    install_dir : rootlibexecdir)
@@ -2221,9 +2218,7 @@ foreach tuple : tests
                 type = ''
         endif
 
-        if condition == '' or conf.get(condition, 0) == 1
-                install = install_tests and type == ''
-
+        if condition == '' or conf.get(condition, false)
                 exe = executable(
                         name,
                         sources,
@@ -2232,8 +2227,8 @@ foreach tuple : tests
                         dependencies : dependencies,
                         c_args : defs,
                         install_rpath : rootlibexecdir,
-                        install : install,
-                        install_dir : testsdir)
+                        install : install_tests,
+                        install_dir : join_paths(testsdir, type))
 
                 if type == 'manual'
                         message('@0@ is a manual test'.format(name))
@@ -2334,11 +2329,10 @@ if git.found() and etags.found()
                  ':/*.[ch]'])
         all_files = files(all_files.stdout().split())
 
-        custom_target(
+        run_target(
                 'TAGS',
-                output : 'TAGS',
                 input : all_files,
-                command : [etags, '-o', '@OUTPUT@'] + all_files)
+                command : [etags, '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
 endif
 
 if git.found()
@@ -2422,7 +2416,7 @@ status += [
 # CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
 # LDFLAGS:  ${OUR_LDFLAGS} ${LDFLAGS}
 
-if conf.get('ENABLE_EFI', 0) == 1
+if conf.get('ENABLE_EFI', false)
         status += [
                 'efi arch:                          @0@'.format(efi_arch)]
 
@@ -2458,7 +2452,10 @@ foreach tuple : [
         ['microhttpd'],
         ['gnutls'],
         ['libcurl'],
+        ['idn'],
+        ['libidn2'],
         ['libidn'],
+        ['nss-systemd'],
         ['libiptc'],
         ['elfutils'],
         ['binfmt'],
@@ -2490,19 +2487,20 @@ foreach tuple : [
         ['blkid'],
         ['dbus'],
         ['glib'],
-        ['nss-myhostname',   conf.get('HAVE_MYHOSTNAME', 0) == 1],
+        ['nss-myhostname',   conf.get('HAVE_MYHOSTNAME', false)],
         ['hwdb'],
         ['tpm'],
         ['man pages',        want_man],
         ['html pages',       want_html],
         ['man page indices', want_man and have_lxml],
-        ['split /usr',       conf.get('HAVE_SPLIT_USR', 0) == 1],
+        ['split /usr',       conf.get('HAVE_SPLIT_USR', false)],
         ['SysV compat'],
         ['utmp'],
         ['ldconfig'],
         ['hibernate'],
         ['adm group',        get_option('adm-group')],
         ['wheel group',      get_option('wheel-group')],
+        ['gshadow'],
         ['debug hashmap'],
         ['debug mmap cache'],
 ]
@@ -2511,7 +2509,7 @@ foreach tuple : [
         if cond == ''
                 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
                 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
-                cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
+                cond = conf.get(ident1, false) or conf.get(ident2, false)
         endif
         if cond
                 found += [tuple[0]]