1 project('util-linux', 'c',
2 version : run_command('tools/git-version-gen', check: true).stdout(),
3 meson_version: '>=0.60.0',
11 pkgconfig = import('pkgconfig')
13 # soname versions; This never change because we use symbols versioing. There is also
14 # API version (LIB*_VERSION macros) and it follow package version.
15 libblkid_version = '1.1.0'
16 libblkid_date = '01-Jun-2021'
17 libuuid_version = '1.3.0'
18 liblastlog2_version = '2.0.0'
19 libmount_version = '1.1.0'
20 libsmartcols_version = '1.1.0'
21 libfdisk_version = '1.1.0'
23 prefixdir = get_option('prefix')
24 if not fs.is_absolute(prefixdir)
25 error('Prefix is not absolute: "@0@"'.format(prefixdir))
27 bindir = join_paths(prefixdir, get_option('bindir'))
28 sbindir = join_paths(prefixdir, get_option('sbindir'))
29 sysconfstaticdir = join_paths(prefixdir, 'lib')
30 docdir = join_paths(prefixdir, get_option('datadir'), 'doc', 'util-linux')
31 mandir = join_paths(prefixdir, get_option('mandir'))
33 localstatedir = '/var'
34 execprefixdir = prefixdir
35 sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
36 usrbin_exec_dir = join_paths(execprefixdir, bindir)
37 usrsbin_exec_dir = join_paths(execprefixdir, sbindir)
38 bash_completion = dependency('bash-completion', required : get_option('build-bash-completion'))
40 vendordir = get_option('vendordir')
42 add_project_arguments('-D_GNU_SOURCE', '-fsigned-char', language : 'c')
44 cc = meson.get_compiler('c')
46 conf = configuration_data()
47 conf.set_quoted('PACKAGE', meson.project_name())
48 conf.set_quoted('PACKAGE_VERSION', meson.project_version())
49 package_string = '@0@ @1@'.format(meson.project_name(), meson.project_version())
50 conf.set_quoted('PACKAGE_STRING', package_string)
53 pc_version = meson.project_version().split('-')[0].split('.')
55 if pc_version.length() < 3
59 pc_version = '.'.join(pc_version)
61 conf.set_quoted('LIBBLKID_VERSION', pc_version)
62 conf.set_quoted('LIBBLKID_DATE', libblkid_date)
64 conf.set('bindir', bindir)
65 conf.set('sbindir', sbindir)
66 conf.set('runstatedir', runstatedir)
67 conf.set('localstatedir', localstatedir)
68 conf.set('sysconfdir', sysconfdir)
69 conf.set('usrbin_execdir', usrbin_exec_dir)
70 conf.set('usrsbin_execdir', usrsbin_exec_dir)
71 conf.set('docdir', docdir)
72 conf.set_quoted('_PATH_SYSCONFSTATICDIR', sysconfstaticdir)
73 conf.set_quoted('_PATH_RUNSTATEDIR', runstatedir)
74 conf.set_quoted('_PATH_LOCALSTATEDIR', localstatedir)
75 conf.set_quoted('CONFIG_ADJTIME_PATH', '/etc/adjtime')
76 conf.set_quoted('ADJTIME_PATH', '/etc/adjtime') # yes, both are used :(
78 conf.set_quoted('_PATH_VENDORDIR', vendordir)
79 conf.set('USE_VENDORDIR', vendordir == '' ? false : 1)
81 build_libblkid = get_option('build-libblkid').allowed()
82 conf.set('HAVE_LIBBLKID', build_libblkid ? 1 : false)
83 summary('libblkid', build_libblkid ? 'enabled' : 'disabled', section : 'components')
85 build_libuuid = not get_option('build-libuuid').disabled()
86 conf.set('HAVE_LIBUUID', build_libuuid ? 1 : false)
87 summary('libuuid', build_libuuid ? 'enabled' : 'disabled', section : 'components')
89 lib_sqlite3 = dependency('sqlite3', required : get_option('build-liblastlog2'))
90 build_liblastlog2 = get_option('build-liblastlog2').require(lib_sqlite3.found()).allowed()
91 conf.set('HAVE_LIBLASTLOG2', build_liblastlog2 ? 1 : false)
92 summary('liblastlog2', build_liblastlog2 ? 'enabled' : 'disabled', section : 'components')
94 login_lastlogin = get_option('login-lastlogin')
95 conf.set('USE_LOGIN_LASTLOG', login_lastlogin ? 1 : false)
96 summary('login-lastlogin', login_lastlogin ? 'enabled' : 'disabled', section : 'components')
98 have_mountfd_api = cc.sizeof('struct mount_attr', prefix : '#include <linux/mount.h>') > 0
99 conf.set('HAVE_STRUCT_MOUNT_ATTR', have_mountfd_api ? 1 : false)
100 conf.set('HAVE_MOUNTFD_API', have_mountfd_api ? 1 : false)
102 have_struct_statx = cc.sizeof('struct statx', prefix : '#include <sys/stat.h>') > 0
103 conf.set('HAVE_STRUCT_STATX', have_struct_statx ? 1 : false)
105 have_sys_vfs_header = cc.has_header('sys/vfs.h')
107 build_libmount = get_option('build-libmount').require(
108 get_option('build-libblkid').allowed() \
109 and have_sys_vfs_header \
112 conf.set('HAVE_LIBMOUNT', build_libmount ? 1 : false)
113 conf.set('USE_LIBMOUNT_SUPPORT_NAMESPACES', 1)
114 conf.set('USE_LIBMOUNT_MOUNTFD_SUPPORT', have_mountfd_api ? 1 : false)
115 summary('libmount', build_libmount ? 'enabled' : 'disabled', section : 'components')
117 build_libsmartcols = not get_option('build-libsmartcols').disabled()
118 conf.set('HAVE_LIBSMARTCOLS', build_libsmartcols ? 1 : false)
119 summary('libsmartcols', build_libsmartcols ? 'enabled' : 'disabled', section : 'components')
121 build_libfdisk = not get_option('build-libfdisk').require(get_option('build-libblkid').allowed()).disabled()
122 conf.set('HAVE_LIBFDISK', build_libfdisk ? 1 : false)
123 summary('libfdisk', build_libfdisk ? 'enabled' : 'disabled', section : 'components')
125 build_uuidd = not get_option('build-uuidd').disabled()
126 conf.set('HAVE_UUIDD', build_uuidd ? 1 : false)
127 summary('uuidd', build_uuidd ? 'enabled' : 'disabled', section : 'components')
129 static_programs = get_option('static-programs')
130 need_static_libs = static_programs.length() > 0 # a rough estimate...
131 summary('static programs', static_programs)
133 LINUX = host_machine.system() in ['linux']
134 BSD = host_machine.system() in ['dragonfly', 'freebsd', 'netbsd', 'openbsd']
136 ############################################################
154 have = cc.compiles(code, name : 'wchar_t support')
155 if not have and get_option('widechar').enabled()
156 error('widechar support requested but unavailable')
158 if get_option('ncurses').enabled() and get_option('widechar').enabled()
159 error('widechar support is incompatible with non-wide ncurses')
161 conf.set('HAVE_WIDECHAR', have ? 1 : false)
203 linux/net_namespace.h
217 security/pam_modules.h
250 lib_m = cc.find_library('m')
252 lib_tinfo = dependency(
255 required : get_option('tinfo'))
257 lib_ncursesw = dependency(
259 required : get_option('ncursesw'))
260 if lib_ncursesw.found()
261 headers += ['ncursesw/ncurses.h',
265 lib_ncurses = disabler()
267 lib_ncurses = dependency(
270 required : get_option('ncurses'))
271 headers += ['ncurses.h',
275 conf.set('HAVE_LIBNCURSESW', lib_ncursesw.found())
276 conf.set('HAVE_LIBNCURSES', lib_ncurses.found())
277 conf.set('HAVE_NCURSES', lib_ncursesw.found() or lib_ncurses.found())
279 lib_slang = dependency(
281 required : get_option('slang'))
283 headers += ['slang.h',
288 conf.set('HAVE_SLANG', lib_slang.found())
290 foreach curses_libs : [lib_slang, lib_ncursesw, lib_ncurses]
291 if curses_libs.found()
292 have = cc.has_function('use_default_colors', dependencies : curses_libs)
293 conf.set('HAVE_USE_DEFAULT_COLORS', have ? 1 : false)
294 have = cc.has_function('resizeterm', dependencies : curses_libs)
295 conf.set('HAVE_RESIZETERM', have ? 1 : false)
303 required : get_option('zlib'))
305 lib_readline = dependency(
307 required : get_option('readline'))
308 conf.set('HAVE_LIBREADLINE', lib_readline.found() ? 1 : false)
310 lib_readline_static = dependency(
313 required : need_static_libs ? get_option('readline') : disabler())
315 if meson.version().version_compare('>= 0.59.0')
316 lib_intl = dependency(
318 required : get_option('nls'))
319 conf.set('ENABLE_NLS', lib_intl.found() ? 1 : false)
321 if get_option('nls').enabled()
322 error('nls is not supported with meson before 0.59.0')
324 lib_intl = dependency('', required : false)
327 lib_user = dependency(
330 required : get_option('libuser'))
331 conf.set('HAVE_LIBUSER', lib_user.found() ? 1 : false)
333 lib_util = cc.find_library(
335 required : get_option('libutil'))
336 conf.set('HAVE_LIBUTIL', lib_util.found() ? 1 : false)
338 lib_utempter = cc.find_library(
340 required : get_option('libutempter'))
341 conf.set('HAVE_LIBUTEMPTER', lib_utempter.found() ? 1 : false)
343 systemd = dependency(
345 required : get_option('systemd'))
347 lib_systemd = dependency(
349 required : get_option('systemd'))
350 conf.set('HAVE_LIBSYSTEMD', lib_systemd.found() ? 1 : false)
351 conf.set('USE_SYSTEMD', lib_systemd.found() ? 1 : false)
353 have = cc.has_function(
354 'sd_session_get_username',
355 dependencies : lib_systemd)
356 conf.set('HAVE_DECL_SD_SESSION_GET_USERNAME', have ? 1 : false)
358 lib_udev = dependency(
360 required : get_option('systemd'))
361 conf.set('HAVE_LIBUDEV', lib_udev.found() ? 1 : false)
363 lib_crypt = cc.find_library('crypt', required : get_option('build-newgrp'))
364 if not lib_crypt.found()
365 lib_crypt = cc.find_library('crypt', required : get_option('build-sulogin'))
368 lib_pam = cc.find_library(
371 required : get_option('build-login').enabled() or \
372 get_option('build-chfn-chsh').enabled() or \
373 get_option('build-su').enabled() or \
374 get_option('build-runuser').enabled())
376 lib_pam_misc = cc.find_library('pam_misc')
377 lib_pam = [lib_pam, lib_pam_misc]
379 lib_pam_misc = declare_dependency()
382 lib_cryptsetup = dependency(
384 required : get_option('cryptsetup'))
385 conf.set('HAVE_CRYPTSETUP', lib_cryptsetup.found() ? 1 : false)
387 cryptsetup_dlopen = not get_option('cryptsetup').disabled() and get_option('cryptsetup-dlopen').enabled()
389 if meson.version().version_compare('>= 0.62.0')
390 lib_dl = dependency('dl')
392 lib_dl = cc.find_library('dl')
394 conf.set('CRYPTSETUP_VIA_DLOPEN', 1)
395 summary('cryptsetup support (dlopen)',
397 section : 'components')
399 summary('cryptsetup support',
400 lib_cryptsetup.found() ? 'enabled' : 'disabled',
401 section : 'components')
404 have = cc.has_function(
405 'crypt_activate_by_signed_key',
406 dependencies : lib_cryptsetup)
407 conf.set('HAVE_CRYPT_ACTIVATE_BY_SIGNED_KEY', have ? 1 : false)
409 lib_cap_ng = dependency(
411 required : get_option('build-setpriv'))
412 if not lib_cap_ng.found()
413 lib_cap_ng = disabler()
416 lib_selinux = dependency(
419 required : get_option('selinux'))
420 conf.set('HAVE_LIBSELINUX', lib_selinux.found() ? 1 : false)
422 lib_magic = dependency(
424 required : get_option('magic'))
425 conf.set('HAVE_MAGIC', lib_magic.found() ? 1 : false)
427 lib_econf = dependency(
429 required : get_option('econf'))
430 conf.set('HAVE_LIBECONF', lib_econf.found() ? 1 : false)
432 lib_audit = dependency(
434 required : get_option('audit'))
435 conf.set('HAVE_LIBAUDIT', lib_audit.found() ? 1 : false)
437 conf.set('HAVE_SMACK', not get_option('smack').disabled())
440 foreach header : headers
441 have = cc.has_header(header)
442 conf.set('HAVE_' + header.underscorify().to_upper(), have ? 1 : false)
445 header = 'linux/btrfs.h'
446 enable_btrfs = cc.has_header(header,
447 required : get_option('btrfs'))
448 conf.set('HAVE_' + header.underscorify().to_upper(), enable_btrfs ? 1 : false)
449 conf.set('HAVE_BTRFS_SUPPORT', enable_btrfs ? 1 : false)
451 prefix = conf.get('HAVE_LINUX_COMPILER_H') ? '#include <linux/compiler.h>' : ''
456 have = cc.has_header(header,
458 conf.set('HAVE_' + header.underscorify().to_upper(), have ? 1 : false)
461 have = cc.has_header('sched.h')
462 conf.set10('HAVE_DECL_CPU_ALLOC', have)
463 # We get -1 if the size cannot be determined
464 have_cpu_set_t = cc.sizeof('cpu_set_t', prefix : '#define _GNU_SOURCE\n#include <sched.h>') > 0
465 conf.set('HAVE_CPU_SET_T', have_cpu_set_t ? 1 : false)
467 have = cc.has_header_symbol('unistd.h', 'environ', args : '-D_GNU_SOURCE')
468 conf.set('HAVE_ENVIRON_DECL', have ? 1 : false)
470 have = cc.has_header_symbol('signal.h', 'sighandler_t', args : '-D_GNU_SOURCE')
471 conf.set('HAVE_SIGHANDLER_T', have ? 1 : false)
473 have = cc.has_function('strsignal')
474 conf.set10('HAVE_STRSIGNAL_DECL', have)
476 have = cc.sizeof('union semun', prefix : '#include <sys/sem.h>') > 0
477 conf.set('HAVE_UNION_SEMUN', have ? 1 : false)
479 have = cc.has_type('loff_t',
480 args : '-D_GNU_SOURCE',
481 prefix : '#include <sys/types.h>')
482 conf.set('HAVE_LOFF_T', have ? 1 : false)
484 have = cc.compiles('''
485 #define _GNU_SOURCE 1
486 #include <langinfo.h>
489 str = nl_langinfo (ALTMON_1);
490 str = nl_langinfo (ALTMON_2);
491 str = nl_langinfo (ALTMON_3);
492 str = nl_langinfo (ALTMON_4);
493 str = nl_langinfo (ALTMON_5);
494 str = nl_langinfo (ALTMON_6);
495 str = nl_langinfo (ALTMON_7);
496 str = nl_langinfo (ALTMON_8);
497 str = nl_langinfo (ALTMON_9);
498 str = nl_langinfo (ALTMON_10);
499 str = nl_langinfo (ALTMON_11);
500 str = nl_langinfo (ALTMON_12);
504 name : 'langinfo.h defines ALTMON_x constants')
505 conf.set('HAVE_LANGINFO_ALTMON', have ? 1 : false)
507 have = cc.compiles('''
508 #define _GNU_SOURCE 1
509 #include <langinfo.h>
512 str = nl_langinfo (_NL_ABALTMON_1);
513 str = nl_langinfo (_NL_ABALTMON_2);
514 str = nl_langinfo (_NL_ABALTMON_3);
515 str = nl_langinfo (_NL_ABALTMON_4);
516 str = nl_langinfo (_NL_ABALTMON_5);
517 str = nl_langinfo (_NL_ABALTMON_6);
518 str = nl_langinfo (_NL_ABALTMON_7);
519 str = nl_langinfo (_NL_ABALTMON_8);
520 str = nl_langinfo (_NL_ABALTMON_9);
521 str = nl_langinfo (_NL_ABALTMON_10);
522 str = nl_langinfo (_NL_ABALTMON_11);
523 str = nl_langinfo (_NL_ABALTMON_12);
527 name : 'langinfo.h defines _NL_ABALTMON_x constants')
528 conf.set('HAVE_LANGINFO_NL_ABALTMON', have ? 1 : false)
530 have = cc.compiles('''
531 #define _GNU_SOURCE 1
532 #include <langinfo.h>
535 str = nl_langinfo (_NL_TIME_WEEK_1STDAY);
539 name : 'langinfo.h defines _NL_TIME_WEEK_1STDAY constant')
540 conf.set('HAVE_DECL__NL_TIME_WEEK_1STDAY', have ? 1 : false)
573 landlock_create_ruleset
575 landlock_restrict_self
638 have = cc.has_function(func)
639 # For autotools compatibility, use either #define FOO 1 or #undef FOO.
640 # This makes little sense, but is necessary to avoid warnings about
641 # redefined macros from Python.h, which uses this convention.
642 conf.set('HAVE_' + func.to_upper(), have ? 1 : false)
645 have_mempcpy = cc.has_function('mempcpy', prefix: '#include <string.h>', args: '-D_GNU_SOURCE')
646 conf.set('HAVE_MEMPCPY', have_mempcpy ? 1 : false)
648 have = conf.get('HAVE_FUTIMENS') in [1] and conf.get('HAVE_INOTIFY_INIT1') in [1]
649 conf.set('AGETTY_RELOAD', have ? 1 : false)
651 warning('futimens or inotify_init1 not found; agetty(8) will not provide --reload functionality')
654 have_dirfd = (cc.has_function('dirfd') or
655 cc.has_header_symbol('dirent.h', 'dirfd',
656 prefix : '#include <sys/types.h>'))
657 conf.set('HAVE_DIRFD', have_dirfd ? 1 : false)
659 have_ddfd = cc.has_member('DIR', 'dd_fd',
661 #include <sys/types.h>
664 conf.set('HAVE_DECL_DDFD', have_ddfd ? 1 : false)
666 have = cc.has_member('struct tm', 'tm_gmtoff',
667 args : '-D_GNU_SOURCE',
672 conf.set('HAVE_TM_GMTOFF', have ? 1 : false)
676 have = cc.sizeof('enum fsconfig_command', prefix : '#include <linux/mount.h>') > 0
677 conf.set('HAVE_ENUM_FSCONFIG_COMMAND', have ? 1 : false)
679 have = cc.has_member('struct termios', 'c_line',
680 prefix : '#include <termios.h>')
681 conf.set('HAVE_STRUCT_TERMIOS_C_LINE', have ? 1 : false)
683 have = cc.has_member('struct stat', 'st_mtim.tv_nsec',
684 args : '-D_GNU_SOURCE',
685 prefix : '#include <sys/stat.h>')
686 conf.set('HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC', have ? 1 : false)
688 have = cc.has_member('struct statx', 'stx_mnt_id',
689 prefix : '#include <sys/stat.h>')
690 conf.set('HAVE_STRUCT_STATX_STX_MNT_ID', have ? 1 : false)
692 # replacement for AC_STRUCT_TIMEZONE
693 have = cc.has_member('struct tm', 'tm_zone',
694 args : '-D_GNU_SOURCE',
695 prefix : '#include <time.h>')
696 conf.set('HAVE_STRUCT_TM_TM_ZONE', have ? 1 : false)
698 have = cc.has_header_symbol('time.h', 'tzname', args: '-D_GNU_SOURCE')
699 conf.set('HAVE_DECL_TZNAME', have ? 1 : false)
701 have = cc.has_header_symbol('linux/blkzoned.h', 'BLK_ZONE_REP_CAPACITY')
702 conf.set('HAVE_DECL_BLK_ZONE_REP_CAPACITY', have ? 1 : false)
704 have = cc.has_header_symbol('linux/pr.h', 'PR_REP_CAPACITY')
705 conf.set('HAVE_DECL_PR_REP_CAPACITY', have ? 1 : false)
710 extern char *tzname[];
713 return tzname ? 0 : 1;
715 '''.format(have ? 1 : 0)
716 have = cc.compiles(code, name : 'using tzname[]')
717 conf.set('HAVE_TZNAME', have ? 1 : false)
719 have = cc.sizeof('time_t', prefix : '#include <time.h>')
721 add_global_arguments('-D_TIME_BITS=64', language : 'c')
722 have = cc.sizeof('time_t', args : '-D_TIME_BITS=64', prefix : '#include <time.h>')
724 if get_option('allow-32bit-time')
725 warning('Could not make time_t 64bits wide')
727 error('Could not make time_t 64bits wide')
733 if not cc.has_function('socket')
734 socket_libs += cc.find_library('socket', required : true)
735 have = cc.has_function('socket',
736 dependencies : socket_libs)
738 error('socket() function not available')
742 lib_rt = cc.find_library('rt', required : false)
744 have = cc.has_function('clock_gettime')
747 realtime_libs += lib_rt
748 have = cc.has_function('clock_gettime',
749 dependencies : realtime_libs)
752 conf.set('HAVE_CLOCK_GETTIME', have ? 1 : false)
754 thread_libs = dependency('threads')
756 have = cc.has_function('timer_create')
759 realtime_libs = [lib_rt]
760 have = cc.has_function('timer_create',
761 dependencies : realtime_libs)
764 realtime_libs += thread_libs
765 have = cc.has_function('timer_create',
766 dependencies : realtime_libs)
769 conf.set('HAVE_TIMER_CREATE', have ? 1 : false)
771 have = cc.has_function('setitimer')
772 conf.set('HAVE_SETITIMER', have ? 1 : false)
775 rtas_libs = cc.find_library('rtas', required : false)
776 conf.set('HAVE_LIBRTAS', rtas_libs.found() ? 1 : false)
779 if not cc.has_header_symbol('math.h', 'isnan')
780 lib = cc.find_library('m', required : true)
781 if (cc.has_function('isnan', dependencies : lib) and
782 cc.has_function('__isnan', dependencies : lib))
787 have = cc.has_header_symbol('errno.h', 'program_invocation_short_name',
788 args : '-D_GNU_SOURCE')
789 conf.set('HAVE_PROGRAM_INVOCATION_SHORT_NAME', have ? 1 : false)
792 extern char *__progname;
794 return (*__progname != 0);
797 have = cc.compiles(code, name : 'using __progname')
798 conf.set('HAVE___PROGNAME', have ? 1 : false)
800 have = conf.get('HAVE_PTY_H').to_string() == '1' \
801 and conf.get('HAVE_SYS_SIGNALFD_H').to_string() == '1'
802 conf.set('HAVE_PTY', have ? 1 : false)
804 have_opal_get_status= cc.has_header_symbol('linux/sed-opal.h', 'IOC_OPAL_GET_STATUS')
805 conf.set('HAVE_OPAL_GET_STATUS', have_opal_get_status ? 1 : false)
807 build_plymouth_support = get_option('build-plymouth-support')
808 have_tiocglcktrmios = cc.has_header_symbol(
809 'sys/ioctl.h', 'TIOCGLCKTRMIOS',
810 required : build_plymouth_support.enabled())
811 have_sock_cloexec = cc.has_header_symbol(
812 'sys/socket.h', 'SOCK_CLOEXEC',
813 prefix : '#include <sys/types.h>',
814 required : build_plymouth_support.enabled())
815 have_sock_nonblock = cc.has_header_symbol(
816 'sys/socket.h', 'SOCK_NONBLOCK',
817 prefix : '#include <sys/types.h>',
818 required : build_plymouth_support.enabled())
819 have_so_passcred = cc.has_header_symbol(
820 'sys/socket.h', 'SO_PASSCRED',
821 args : ['-D_GNU_SOURCE'],
822 prefix : '#include <sys/types.h>',
823 required : build_plymouth_support.enabled())
825 build_plymouth_support = (not build_plymouth_support.disabled() and
826 have_tiocglcktrmios and
827 have_sock_cloexec and
828 have_sock_nonblock and
830 conf.set('ENABLE_PLYMOUTH_SUPPORT', build_plymouth_support ? 1 : false)
831 summary('plymouth support',
832 build_plymouth_support ? 'enabled' : 'disabled',
833 section : 'components')
835 # check for valid fallocate() function
836 # with 32 bits glibc 2.10, fallocate() exists but not fallocate64()
837 # when _FILE_OFFSET_BITS==64, fallocate() is redirect to fallocate64()
838 # and program can't be linked.
846 ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0xfffffffful, 0xfffffffful);
847 return ret == 0 ? 0 : 1;
850 have = cc.links(code, name : 'fallocate() function')
851 conf.set('HAVE_FALLOCATE', have ? 1 : false)
859 ret = posix_fallocate(0, 0xfffffffful, 0xfffffffful);
860 return ret == 0 ? 0 : 1;
863 have = cc.links(code, name : 'posix_fallocate() function')
864 conf.set('HAVE_POSIX_FALLOCATE', have ? 1 : false)
866 use_hwclock_cmos = host_machine.cpu_family() in ['x86', 'x86_64']
867 message('Use CMOS clock: @0@'.format(use_hwclock_cmos))
868 conf.set('USE_HWCLOCK_CMOS', use_hwclock_cmos ? 1 : false)
870 conf.set('HAVE_TLS', get_option('use-tls') ? 1 : false)
871 conf.set('PG_BELL', get_option('pg-bell') ? 1 : false)
872 conf.set('USE_COLORS_BY_DEFAULT', get_option('colors-default') ? 1 : false)
874 is_glibc = cc.has_header_symbol('limits.h', '__GLIBC__')
876 ############################################################
879 fs_search_path = get_option('fs-search-path')
880 fs_search_path_extra = get_option('fs-search-path-extra')
881 if fs_search_path_extra != ''
882 fs_search_path = ':'.join(fs_search_path, fs_search_path_extra)
884 conf.set_quoted('FS_SEARCH_PATH', fs_search_path)
886 systemdsystemunitdir = ''
888 systemdsystemunitdir = systemd.get_variable(pkgconfig : 'systemdsystemunitdir')
891 sysvinit = get_option('sysvinit').enabled()
892 sysvinitrcdir = sysconfdir + '/init.d'
894 program_tests = get_option('program-tests')
896 chfn_chsh_password = get_option('chfn-chsh-password') or lib_user.found()
897 conf.set('CHFN_CHSH_PASSWORD', chfn_chsh_password ? 1 : false)
899 have = get_option('chsh-only-listed')
900 conf.set('ONLY_LISTED_SHELLS', have ? 1 : false)
902 have = get_option('use-tty-group')
903 conf.set('USE_TTY_GROUP', have ? 1 : false)
905 bison = find_program('bison')
906 flex = find_program('flex')
907 sed = find_program('sed')
909 build_hwclock = not get_option('build-hwclock').disabled()
910 bison_gen = generator(
912 output : ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
913 arguments : ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@'])
915 python_module = import('python')
916 python = python_module.find_installation(
917 get_option('python'),
921 meson_make_symlink = meson.current_source_dir() + '/tools/meson-make-symlink.sh'
922 meson_make_manpage_stub = meson.current_source_dir() + '/tools/meson-make-manpage-stub.sh'
926 configuration : conf)
928 add_project_arguments('-include', meson.current_build_dir() / 'config.h', language : 'c')
933 '-Waddress-of-packed-member',
934 '-Wdiscarded-qualifiers',
935 '-Wembedded-directive',
938 '-Wimplicit-function-declaration',
939 '-Wmissing-declarations',
940 '-Wmissing-parameter-type',
941 '-Wmissing-prototypes',
943 '-Wno-missing-field-initializers',
944 '-Wold-style-definition',
948 '-Wstrict-prototypes',
951 '-Wunused-but-set-parameter',
952 '-Wunused-but-set-variable',
953 '-Wunused-parameter',
959 foreach compiler_flag : compiler_flags
960 if cc.has_argument(compiler_flag)
961 add_project_arguments(compiler_flag, language : 'c')
969 bashcompletionslinks = {}
975 subdir('libsmartcols')
977 subdir('liblastlog2')
979 subdir('pam_lastlog2')
980 subdir('login-utils')
989 includes = [dir_include,
998 opt = not get_option('build-chfn-chsh').disabled()
1003 include_directories : includes,
1004 link_with : [lib_common, logindefs_c],
1005 dependencies : chfn_chsh_deps,
1006 install_dir : usrbin_exec_dir,
1007 install_mode : 'rwsr-xr-x',
1009 build_by_default : opt)
1013 'login-utils/chsh.c',
1016 include_directories : includes,
1017 link_with : lib_common,
1018 dependencies : chfn_chsh_deps,
1019 install_dir : usrbin_exec_dir,
1020 install_mode : 'rwsr-xr-x',
1022 build_by_default : opt)
1023 if opt and not is_disabler(exe)
1025 manadocs += ['login-utils/chfn.1.adoc', 'login-utils/chsh.1.adoc']
1026 bashcompletions += ['chfn', 'chsh']
1031 test_islocal_sources,
1032 include_directories : includes,
1033 c_args : '-DTEST_PROGRAM',
1034 build_by_default : program_tests)
1039 test_consoles_sources,
1040 c_args : ['-DTEST_PROGRAM'],
1041 include_directories : includes,
1042 link_with : lib_common,
1043 build_by_default : program_tests)
1046 opt = not get_option('build-last').disabled()
1050 include_directories : includes,
1051 link_with : [lib_common],
1052 install_dir : usrbin_exec_dir,
1054 build_by_default : opt)
1055 if opt and not is_disabler(exe)
1057 meson.add_install_script(meson_make_symlink,
1059 join_paths(usrbin_exec_dir, 'lastb'))
1060 manadocs += ['login-utils/last.1.adoc']
1061 manlinks += {'lastb.1': 'last.1'}
1062 bashcompletions += ['last']
1063 bashcompletionslinks += {'lastb': 'last'}
1066 opt = not get_option('build-nologin').disabled()
1069 'login-utils/nologin.c',
1070 include_directories : includes,
1071 install_dir : sbindir,
1072 link_with : [lib_common],
1074 build_by_default : opt)
1075 if opt and not is_disabler(exe)
1077 manadocs += ['login-utils/nologin.8.adoc']
1080 opt = not get_option('build-utmpdump').disabled()
1083 'login-utils/utmpdump.c',
1084 include_directories : includes,
1085 link_with : [lib_common],
1086 install_dir : usrbin_exec_dir,
1088 build_by_default : opt)
1089 if opt and not is_disabler(exe)
1091 manadocs += ['login-utils/utmpdump.1.adoc']
1092 bashcompletions += ['utmpdump']
1095 opt = not get_option('build-su').disabled()
1099 'login-utils/su-common.c',
1100 'login-utils/su-common.h',
1104 include_directories : includes,
1105 link_with : [lib_common, logindefs_c],
1106 dependencies : [lib_pam,
1110 install_mode : 'rwsr-xr-x',
1112 build_by_default : opt)
1113 if opt and not is_disabler(exe)
1115 manadocs += ['login-utils/su.1.adoc']
1116 bashcompletions += ['su']
1119 opt = not get_option('build-newgrp').disabled()
1122 'login-utils/newgrp.c',
1123 include_directories : includes,
1124 dependencies : [lib_crypt],
1125 install_dir : usrbin_exec_dir,
1126 install_mode : 'rwsr-xr-x',
1128 build_by_default : opt)
1129 if opt and not is_disabler(exe)
1131 manadocs += ['login-utils/newgrp.1.adoc']
1132 bashcompletions += ['newgrp']
1135 opt = not get_option('build-lslogins').disabled()
1138 'login-utils/lslogins.c',
1139 include_directories : includes,
1140 link_with : [lib_common,
1143 (build_liblastlog2 ? [lib_lastlog2] : []),
1144 dependencies : [lib_selinux,
1146 install_dir : usrbin_exec_dir,
1148 build_by_default : opt)
1149 if opt and not is_disabler(exe)
1151 manadocs += ['login-utils/lslogins.1.adoc']
1152 bashcompletions += ['lslogins']
1155 opt = not get_option('build-vipw').disabled()
1158 'login-utils/vipw.c',
1159 'login-utils/setpwnam.h',
1160 include_directories : includes,
1161 link_with : [lib_common],
1162 dependencies : [lib_selinux],
1163 install_dir : usrbin_exec_dir,
1165 build_by_default : opt)
1166 if opt and not is_disabler(exe)
1168 meson.add_install_script(meson_make_symlink,
1170 join_paths(usrbin_exec_dir, 'vigr'))
1171 manadocs += ['login-utils/vipw.8.adoc']
1172 meson.add_install_script(meson_make_symlink,
1174 join_paths(mandir, 'man8/vigr.8'))
1177 opt = not get_option('build-runuser').disabled()
1180 'login-utils/runuser.c',
1181 'login-utils/su-common.c',
1182 'login-utils/su-common.h',
1186 include_directories : includes,
1187 link_with : [lib_common, logindefs_c],
1188 dependencies : [lib_pam,
1192 install_dir : sbindir,
1194 build_by_default : opt)
1195 if opt and not is_disabler(exe)
1197 manadocs += ['login-utils/runuser.1.adoc']
1198 bashcompletionslinks += {'runuser': 'su'}
1201 ############################################################
1207 include_directories : includes,
1208 link_with : lib_common,
1209 install_dir : usrbin_exec_dir,
1212 manadocs += ['text-utils/col.1.adoc']
1213 bashcompletions += ['col']
1219 include_directories : includes,
1220 install_dir : usrbin_exec_dir,
1223 manadocs += ['text-utils/colcrt.1.adoc']
1224 bashcompletions += ['colcrt']
1229 include_directories : includes,
1230 link_with : lib_common,
1231 install_dir : usrbin_exec_dir,
1234 manadocs += ['text-utils/colrm.1.adoc']
1235 bashcompletions += ['colrm']
1240 include_directories : includes,
1241 install_dir : usrbin_exec_dir,
1244 manadocs += ['text-utils/rev.1.adoc']
1245 bashcompletions += ['rev']
1250 include_directories : includes,
1251 link_with : [lib_common,
1253 install_dir : usrbin_exec_dir,
1255 if not is_disabler(exe)
1257 manadocs += ['text-utils/column.1.adoc']
1258 bashcompletions += ['column']
1261 opt = not get_option('build-line').disabled()
1265 include_directories : includes,
1266 install_dir : usrbin_exec_dir,
1268 build_by_default : opt)
1269 if opt and not is_disabler(exe)
1271 manadocs += ['text-utils/line.1.adoc']
1274 opt = not get_option('build-pg').disabled()
1278 link_with : lib_common,
1279 include_directories : includes,
1280 dependencies : [lib_tinfo,
1282 install_dir : usrbin_exec_dir,
1284 build_by_default : opt)
1285 if opt and not is_disabler(exe)
1287 manadocs += ['text-utils/pg.1.adoc']
1288 bashcompletions += ['pg']
1291 opt = not get_option('build-ul').disabled()
1295 include_directories : includes,
1296 dependencies : [lib_tinfo,
1298 install_dir : usrbin_exec_dir,
1300 build_by_default : opt)
1301 if opt and not is_disabler(exe)
1303 manadocs += ['text-utils/ul.1.adoc']
1304 bashcompletions += ['ul']
1307 opt = not get_option('build-more').disabled()
1311 link_with : [lib_common],
1312 include_directories : includes,
1313 dependencies : [lib_tinfo,
1317 build_by_default : opt)
1321 link_with : [lib_common],
1322 include_directories : includes,
1323 c_args : '-DTEST_PROGRAM',
1324 dependencies : [lib_tinfo,
1327 build_by_default : opt and program_tests)
1329 if opt and not is_disabler(exe)
1331 manadocs += ['text-utils/more.1.adoc']
1332 bashcompletions += ['more']
1338 include_directories : includes,
1339 link_with : [lib_common,
1341 install_dir : usrbin_exec_dir,
1343 if not is_disabler(exe)
1345 manadocs += ['text-utils/hexdump.1.adoc']
1346 bashcompletions += ['hexdump']
1349 opt = not get_option('build-lsmem').disabled()
1353 include_directories : includes,
1354 link_with : [lib_common,
1356 install_dir : usrbin_exec_dir,
1358 build_by_default : opt)
1359 if opt and not is_disabler(exe)
1361 manadocs += ['sys-utils/lsmem.1.adoc']
1362 bashcompletions += ['lsmem']
1365 opt = not get_option('build-chmem').disabled()
1369 include_directories : includes,
1370 link_with : [lib_common],
1371 install_dir : usrbin_exec_dir,
1373 build_by_default : opt)
1374 if opt and not is_disabler(exe)
1376 manadocs += ['sys-utils/chmem.8.adoc']
1377 bashcompletions += ['chmem']
1383 include_directories : includes,
1384 link_with : [lib_common],
1385 install_dir : usrbin_exec_dir,
1388 manadocs += ['sys-utils/choom.1.adoc']
1390 has_seminfo_type = cc.has_type('struct seminfo', args : '-D_GNU_SOURCE', prefix : '#include <sys/sem.h>')
1392 opt = get_option('build-ipcmk').require(has_seminfo_type).allowed()
1396 include_directories : includes,
1397 link_with : [lib_common],
1398 install_dir : usrbin_exec_dir,
1400 build_by_default : opt)
1401 if opt and not is_disabler(exe)
1403 manadocs += ['sys-utils/ipcmk.1.adoc']
1404 bashcompletions += ['ipcmk']
1407 opt = get_option('build-ipcrm').require(has_seminfo_type).allowed()
1411 include_directories : includes,
1412 link_with : [lib_common],
1413 install_dir : usrbin_exec_dir,
1415 build_by_default : opt)
1416 if opt and not is_disabler(exe)
1418 manadocs += ['sys-utils/ipcrm.1.adoc']
1419 bashcompletions += ['ipcrm']
1422 opt = not get_option('build-ipcs').require(has_seminfo_type).disabled()
1426 include_directories : includes,
1427 link_with : [lib_common],
1428 install_dir : usrbin_exec_dir,
1430 build_by_default : opt)
1431 if opt and not is_disabler(exe)
1433 manadocs += ['sys-utils/ipcs.1.adoc']
1434 bashcompletions += ['ipcs']
1437 opt = not get_option('build-rfkill').disabled()
1441 include_directories : includes,
1442 link_with : [lib_common,
1444 install_dir : usrsbin_exec_dir,
1446 build_by_default : opt)
1447 if opt and not is_disabler(exe)
1449 manadocs += ['sys-utils/rfkill.8.adoc']
1450 bashcompletions += ['rfkill']
1456 include_directories : includes,
1457 link_with : [lib_common,
1459 install_dir : usrbin_exec_dir,
1461 if not is_disabler(exe)
1463 manadocs += ['sys-utils/renice.1.adoc']
1464 bashcompletions += ['renice']
1470 include_directories: includes,
1471 link_with : [lib_common,
1473 install_dir : usrbin_exec_dir,
1475 if opt and not is_disabler(exe)
1477 manadocs += ['sys-utils/setpgid.1.adoc']
1478 bashcompletions += ['setpgid']
1484 include_directories : includes,
1485 link_with : [lib_common,
1487 install_dir : usrbin_exec_dir,
1489 if opt and not is_disabler(exe)
1491 manadocs += ['sys-utils/setsid.1.adoc']
1492 bashcompletions += ['setsid']
1497 readprofile_sources,
1498 include_directories : includes,
1499 link_with : [lib_common,
1501 install_dir : usrsbin_exec_dir,
1503 if not is_disabler(exe)
1505 manadocs += ['sys-utils/readprofile.8.adoc']
1506 bashcompletions += ['readprofile']
1509 opt = not get_option('build-tunelp').disabled()
1513 include_directories : includes,
1514 link_with : [lib_common],
1515 install_dir : usrsbin_exec_dir,
1517 build_by_default : opt)
1518 if opt and not is_disabler(exe)
1520 manadocs += ['sys-utils/tunelp.8.adoc']
1521 bashcompletions += ['tunelp']
1524 opt = get_option('build-fstrim').require(have_sys_vfs_header).allowed()
1528 include_directories : includes,
1529 link_with : [lib_common],
1530 dependencies : [mount_dep],
1531 install_dir : sbindir,
1533 build_by_default : opt)
1534 if opt and not is_disabler(exe)
1536 manadocs += ['sys-utils/fstrim.8.adoc']
1537 bashcompletions += ['fstrim']
1540 opt = get_option('build-dmesg').require(cc.has_header('sys/klog.h')).allowed()
1544 include_directories : includes,
1545 link_with : [lib_common,
1548 build_by_default : opt)
1549 if opt and not is_disabler(exe)
1551 manadocs += ['sys-utils/dmesg.1.adoc']
1552 bashcompletions += ['dmesg']
1558 include_directories : dir_include,
1559 c_args : '-DTEST_DMESG',
1560 link_with : [lib_common,
1562 build_by_default : program_tests)
1563 if not is_disabler(exe)
1570 include_directories : includes,
1571 link_with : [lib_common],
1572 install_dir : sbindir,
1575 manadocs += ['sys-utils/ctrlaltdel.8.adoc']
1576 bashcompletions += ['ctrlaltdel']
1578 have_linux_fs_h = conf.get('HAVE_LINUX_FS_H').to_string() == '1'
1580 opt = get_option('build-fsfreeze').require(have_linux_fs_h).allowed()
1584 include_directories : includes,
1585 install_dir : sbindir,
1587 build_by_default : opt)
1588 if opt and not is_disabler(exe)
1590 manadocs += ['sys-utils/fsfreeze.8.adoc']
1591 bashcompletions += ['fsfreeze']
1594 opt = get_option('build-blkdiscard').require(have_linux_fs_h).allowed()
1598 include_directories : includes,
1599 link_with : [lib_common],
1600 dependencies : [blkid_dep],
1601 install_dir : sbindir,
1603 build_by_default : opt)
1604 if opt and not is_disabler(exe)
1606 manadocs += ['sys-utils/blkdiscard.8.adoc']
1607 bashcompletions += ['blkdiscard']
1610 opt = get_option('build-blkzone').require(have_linux_fs_h).allowed()
1614 include_directories : includes,
1615 link_with : [lib_common],
1616 install_dir : sbindir,
1618 build_by_default : opt)
1619 if opt and not is_disabler(exe)
1621 manadocs += ['sys-utils/blkzone.8.adoc']
1622 bashcompletions += ['blkzone']
1625 opt = get_option('build-blkpr').require(cc.has_header('linux/pr.h')).allowed()
1629 include_directories : includes,
1630 link_with : [lib_common],
1631 install_dir : sbindir,
1633 build_by_default : opt)
1634 if opt and not is_disabler(exe)
1636 manadocs += ['sys-utils/blkpr.8.adoc']
1639 opt = get_option('build-ldattach').require(cc.has_header('linux/if.h')).allowed()
1643 include_directories : includes,
1644 link_with : [lib_common],
1645 install_dir : usrsbin_exec_dir,
1647 build_by_default : opt)
1648 if opt and not is_disabler(exe)
1650 manadocs += ['sys-utils/ldattach.8.adoc']
1651 bashcompletions += ['ldattach']
1654 opt = get_option('build-rtcwake').require(cc.has_header('linux/rtc.h')).allowed()
1658 include_directories : includes,
1659 link_with : [lib_common],
1660 install_dir : usrsbin_exec_dir,
1662 build_by_default : opt)
1663 if opt and not is_disabler(exe)
1665 manadocs += ['sys-utils/rtcwake.8.adoc']
1666 bashcompletions += ['rtcwake']
1669 opt = get_option('build-setarch').require(cc.has_header('sys/personality.h')).allowed()
1673 include_directories : includes,
1674 link_with : [lib_common],
1675 install_dir : usrbin_exec_dir,
1677 build_by_default : opt)
1678 if opt and not is_disabler(exe)
1680 manadocs += ['sys-utils/setarch.8.adoc']
1681 bashcompletions += ['setarch']
1685 setarch_links = ['uname26', 'linux32', 'linux64']
1686 setarch_links_arch = {
1687 's390x' : ['s390', 's390x'],
1689 'x86_64' : ['i386', 'x86_64'],
1690 'ppc64' : ['ppc', 'ppc64', 'ppc32'],
1691 'space64' : ['sparc', 'sparc64', 'sparc32', 'sparc32bash'],
1692 'mips64' : ['mips', 'mips64', 'mips32'],
1693 'ia64' : ['i386', 'ia64'],
1694 'hppa' : ['parisc', 'parisc64', 'parisc32'],
1696 setarch_links += setarch_links_arch.get(host_machine.cpu_family(), [])
1698 foreach link: setarch_links
1699 meson.add_install_script(meson_make_symlink,
1701 join_paths(usrbin_exec_dir, link))
1702 manlinks += {link + '.8': 'setarch.8'}
1706 opt = not get_option('build-eject').disabled()
1710 include_directories : includes,
1711 link_with : [lib_common],
1712 dependencies : [mount_dep],
1713 install_dir : usrbin_exec_dir,
1715 build_by_default : opt)
1716 if opt and not is_disabler(exe)
1718 manadocs += ['sys-utils/eject.1.adoc']
1719 bashcompletions += ['eject']
1722 opt = not get_option('build-losetup').disabled()
1726 include_directories : includes,
1727 link_with : [lib_common,
1729 install_dir : sbindir,
1731 build_by_default : opt)
1732 if opt and not is_disabler(exe)
1733 manadocs += ['sys-utils/losetup.8.adoc']
1735 bashcompletions += ['losetup']
1738 opt = opt and 'losetup' in static_programs
1742 include_directories : includes,
1743 link_args : ['--static'],
1744 link_with : [lib_common,
1745 lib_smartcols.get_static_lib()],
1746 install_dir : sbindir,
1748 build_by_default : opt)
1749 if opt and not is_disabler(exe)
1753 opt = not get_option('build-zramctl').disabled()
1757 include_directories : includes,
1758 link_with : [lib_common,
1760 install_dir : sbindir,
1762 build_by_default : opt)
1763 if opt and not is_disabler(exe)
1765 manadocs += ['sys-utils/zramctl.8.adoc']
1766 bashcompletions += ['zramctl']
1772 include_directories : includes,
1773 link_with : [lib_common,
1775 install_dir : usrbin_exec_dir,
1777 if not is_disabler(exe)
1779 manadocs += ['sys-utils/prlimit.1.adoc']
1780 bashcompletions += ['prlimit']
1783 opt = not get_option('build-lsns').disabled()
1787 include_directories : includes,
1788 link_with : [lib_common,
1790 dependencies : [mount_dep],
1791 install_dir : usrbin_exec_dir,
1793 build_by_default : opt)
1794 if opt and not is_disabler(exe)
1796 manadocs += ['sys-utils/lsns.8.adoc']
1797 bashcompletions += ['lsns']
1800 opt = not get_option('build-mount').disabled()
1804 include_directories : includes,
1805 link_with : [lib_common,
1807 dependencies : [lib_selinux, mount_dep],
1808 install_mode : 'rwsr-xr-x',
1810 build_by_default : opt)
1814 include_directories : includes,
1815 link_with : [lib_common],
1816 dependencies : [mount_dep],
1817 install_mode : 'rwsr-xr-x',
1819 build_by_default : opt)
1820 if opt and not is_disabler(exe)
1822 manadocs += ['sys-utils/fstab.5.adoc',
1823 'sys-utils/mount.8.adoc',
1824 'sys-utils/umount.8.adoc']
1825 bashcompletions += ['mount', 'umount']
1828 opt2 = opt and 'mount' in static_programs
1832 include_directories : includes,
1833 link_args : ['--static'],
1834 link_with : [lib_common,
1835 lib_smartcols_static],
1836 dependencies : [mount_static_dep],
1838 build_by_default : opt2)
1839 if opt2 and not is_disabler(exe)
1843 opt2 = opt and 'umount' in static_programs
1847 include_directories : includes,
1848 link_args : ['--static'],
1849 link_with : [lib_common],
1850 dependencies : [mount_static_dep],
1852 build_by_default : opt2)
1853 if opt2 and not is_disabler(exe)
1859 opt = not get_option('build-swapon').disabled()
1863 include_directories : includes,
1864 link_with : [lib_common,
1866 dependencies : [blkid_dep, mount_dep],
1867 install_dir : sbindir,
1869 build_by_default : opt)
1870 if opt and not is_disabler(exe)
1872 manadocs += ['sys-utils/swapon.8.adoc']
1873 bashcompletions += ['swapon']
1876 opt = not get_option('build-swapoff').disabled()
1880 include_directories : includes,
1881 link_with : [lib_common],
1882 dependencies : [blkid_dep, mount_dep],
1883 install_dir : sbindir,
1885 build_by_default : opt)
1886 if opt and not is_disabler(exe)
1888 manlinks += {'swapoff.8': 'swapon.8'}
1889 bashcompletions += ['swapoff']
1895 include_directories : includes,
1896 link_with : [lib_common,
1898 dependencies : [rtas_libs],
1899 install_dir : usrbin_exec_dir,
1901 if not is_disabler(exe)
1903 manadocs += ['sys-utils/lscpu.1.adoc']
1904 bashcompletions += ['lscpu']
1910 include_directories : includes,
1911 link_with : [lib_common],
1912 install_dir : sbindir,
1915 manadocs += ['sys-utils/chcpu.8.adoc']
1916 bashcompletions += ['chcpu']
1921 include_directories : includes,
1922 link_with : [lib_common,
1925 if not is_disabler(exe)
1927 manadocs += ['sys-utils/wdctl.8.adoc']
1928 bashcompletions += ['wdctl']
1931 opt = not get_option('build-mountpoint').disabled()
1935 include_directories : includes,
1936 dependencies : [mount_dep],
1938 build_by_default : opt)
1939 if opt and not is_disabler(exe)
1941 manadocs += ['sys-utils/mountpoint.1.adoc']
1942 bashcompletions += ['mountpoint']
1945 opt = not get_option('build-fallocate').disabled()
1949 include_directories : includes,
1950 link_with : [lib_common],
1951 install_dir : usrbin_exec_dir,
1953 build_by_default : opt)
1954 if opt and not is_disabler(exe)
1956 manadocs += ['sys-utils/fallocate.1.adoc']
1957 bashcompletions += ['fallocate']
1960 opt = not get_option('build-pivot_root').disabled()
1964 include_directories : includes,
1965 install_dir : sbindir,
1967 build_by_default : opt)
1968 if opt and not is_disabler(exe)
1970 manadocs += ['sys-utils/pivot_root.8.adoc']
1971 bashcompletions += ['pivot_root']
1974 opt = not get_option('build-switch_root').disabled()
1975 if opt and not have_dirfd and not have_ddfd
1976 error('neither dirfd nor ddfd are available')
1980 switch_root_sources,
1981 include_directories : includes,
1982 install_dir : sbindir,
1984 build_by_default : opt)
1985 if opt and not is_disabler(exe)
1987 manadocs += ['sys-utils/switch_root.8.adoc']
1990 opt = not get_option('build-unshare').disabled()
1994 include_directories : includes,
1995 link_with : [lib_common],
1996 dependencies : [mount_dep],
1997 install_dir : usrbin_exec_dir,
1999 build_by_default : opt)
2000 if opt and not is_disabler(exe)
2002 manadocs += ['sys-utils/unshare.1.adoc']
2003 bashcompletions += ['unshare']
2006 opt = opt and 'unshare' in static_programs
2010 include_directories : includes,
2011 link_with : [lib_common],
2012 dependencies : [mount_dep],
2013 install_dir : usrbin_exec_dir,
2015 build_by_default : opt)
2016 if opt and not is_disabler(exe)
2020 opt = not get_option('build-nsenter').disabled()
2024 include_directories : includes,
2025 link_with : [lib_common],
2026 dependencies : [lib_selinux],
2027 install_dir : usrbin_exec_dir,
2029 build_by_default : opt)
2030 if opt and not is_disabler(exe)
2032 manadocs += ['sys-utils/nsenter.1.adoc']
2033 bashcompletions += ['nsenter']
2036 opt = opt and 'nsenter' in static_programs
2040 include_directories : includes,
2041 link_with : [lib_common],
2042 dependencies : [lib_selinux],
2043 install_dir : usrbin_exec_dir,
2045 build_by_default : opt)
2046 if opt and not is_disabler(exe)
2050 opt = not get_option('build-setpriv').disabled() and lib_cap_ng.found()
2054 include_directories : includes,
2055 link_with : [lib_common],
2056 dependencies : [lib_cap_ng],
2057 install_dir : usrbin_exec_dir,
2059 build_by_default : opt)
2060 if opt and not is_disabler(exe)
2062 manadocs += ['sys-utils/setpriv.1.adoc']
2063 bashcompletions += ['setpriv']
2069 include_directories : includes,
2070 link_with : [lib_common],
2071 dependencies : realtime_libs,
2072 install_dir : usrbin_exec_dir,
2075 manadocs += ['sys-utils/flock.1.adoc']
2076 bashcompletions += ['flock']
2078 opt = not get_option('build-lsirq').disabled()
2082 include_directories : includes,
2083 link_with : [lib_common,
2085 install_dir : usrbin_exec_dir,
2087 build_by_default : opt)
2088 if opt and not is_disabler(exe)
2090 manadocs += ['sys-utils/lsirq.1.adoc']
2091 bashcompletions += ['lsirq']
2094 opt = not get_option('build-irqtop').disabled()
2098 include_directories : includes,
2099 dependencies : [realtime_libs, curses_libs],
2100 link_with : [lib_common,
2103 install_dir : usrbin_exec_dir,
2105 build_by_default : opt)
2106 if opt and not is_disabler(exe)
2108 manadocs += ['sys-utils/irqtop.1.adoc']
2109 bashcompletions += ['irqtop']
2112 opt = not get_option('build-ipcs').disabled()
2116 include_directories : includes,
2117 link_with : [lib_common,
2119 install_dir : usrbin_exec_dir,
2121 build_by_default : opt)
2122 if opt and not is_disabler(exe)
2124 manadocs += ['sys-utils/lsipc.1.adoc']
2125 bashcompletions += ['lsipc']
2132 include_directories : includes,
2133 link_with : [lib_common],
2134 dependencies : [lib_m,
2136 install_dir : sbindir,
2138 build_by_default : opt)
2139 if opt and not is_disabler(exe)
2141 manadocs += ['sys-utils/hwclock.8.adoc', 'sys-utils/adjtime_config.5.adoc']
2142 bashcompletions += ['hwclock']
2148 include_directories : includes,
2149 install_dir : sbindir,
2152 manadocs += ['disk-utils/mkfs.8.adoc']
2153 bashcompletions += ['mkfs']
2155 opt = not get_option('build-bfs').disabled()
2159 include_directories : includes,
2160 link_with : [lib_common],
2161 install_dir : sbindir,
2163 build_by_default : opt)
2164 if opt and not is_disabler(exe)
2166 manadocs += ['disk-utils/mkfs.bfs.8.adoc']
2167 bashcompletions += ['mkfs.bfs']
2173 include_directories : includes,
2174 link_with : [lib_common],
2175 install_dir : usrbin_exec_dir,
2178 manadocs += ['disk-utils/isosize.8.adoc']
2179 bashcompletions += ['isosize']
2184 include_directories : includes,
2185 link_with : [lib_common,
2187 dependencies: [blkid_dep, lib_selinux],
2188 install_dir : sbindir,
2190 if not is_disabler(exe)
2192 manadocs += ['disk-utils/mkswap.8.adoc']
2193 bashcompletions += ['mkswap']
2199 include_directories : includes,
2200 link_with : [lib_common,
2202 dependencies : [blkid_dep],
2203 install_dir : sbindir,
2205 if not is_disabler(exe)
2207 manadocs += ['disk-utils/swaplabel.8.adoc']
2208 bashcompletions += ['swaplabel']
2211 opt = not get_option('build-fsck').disabled()
2215 include_directories : includes,
2216 link_with : [lib_common],
2217 dependencies : [blkid_dep, mount_dep, realtime_libs],
2218 install_dir : sbindir,
2220 build_by_default : opt)
2221 if opt and not is_disabler(exe)
2223 manadocs += ['disk-utils/fsck.8.adoc']
2224 bashcompletions += ['fsck']
2227 opt = not get_option('build-minix').disabled()
2231 include_directories : includes,
2232 link_with : [lib_common],
2233 install_dir : sbindir,
2235 build_by_default : opt)
2239 include_directories : includes,
2240 c_args : '-DTEST_SCRIPT',
2241 link_with : [lib_common],
2242 build_by_default : opt and program_tests)
2246 include_directories : includes,
2247 link_with : [lib_common],
2248 install_dir : sbindir,
2250 build_by_default : opt)
2251 if opt and not is_disabler(exe)
2252 exes += [exe, exe2, exe3]
2253 manadocs += ['disk-utils/mkfs.minix.8.adoc','disk-utils/fsck.minix.8.adoc']
2254 bashcompletions += ['mkfs.minix', 'fsck.minix']
2257 opt = not get_option('build-cramfs').disabled()
2260 mkfs_cramfs_sources,
2261 include_directories : includes,
2262 link_with : [lib_common],
2263 dependencies : [lib_z],
2264 install_dir : sbindir,
2266 build_by_default : opt)
2269 fsck_cramfs_sources,
2270 include_directories : includes,
2271 link_with : [lib_common],
2272 dependencies : [lib_z],
2273 install_dir : sbindir,
2275 build_by_default : opt)
2276 if not is_disabler(exe)
2278 manadocs += ['disk-utils/mkfs.cramfs.8.adoc','disk-utils/fsck.cramfs.8.adoc']
2279 bashcompletions += ['mkfs.cramfs', 'fsck.cramfs']
2282 opt = not get_option('build-raw').disabled()
2284 cc.has_header('linux/raw.h', required: opt)
2289 include_directories : includes,
2290 install_dir : sbindir,
2292 build_by_default : opt)
2293 if opt and not is_disabler(exe)
2295 manadocs += ['disk-utils/raw.8.adoc']
2296 bashcompletions += ['raw']
2299 opt = not get_option('build-fdformat').disabled()
2303 include_directories : includes,
2304 link_with : [lib_common],
2305 install_dir : usrsbin_exec_dir,
2307 build_by_default : opt)
2308 if opt and not is_disabler(exe)
2310 manadocs += ['disk-utils/fdformat.8.adoc']
2311 bashcompletions += ['fdformat']
2317 include_directories : includes,
2318 link_with : [lib_common],
2319 install_dir : sbindir,
2321 manadocs += ['disk-utils/blockdev.8.adoc']
2322 bashcompletions += ['blockdev']
2324 opt = not get_option('build-fdisks').disabled()
2325 if opt and not have_dirfd and not have_ddfd
2326 error('neither dirfd nor ddfd are available')
2331 include_directories : includes,
2332 link_with : [lib_common,
2336 dependencies : [lib_readline],
2337 install_dir : sbindir,
2339 build_by_default : opt)
2340 if opt and not is_disabler(exe)
2342 bashcompletions += ['fdisk']
2345 opt2 = opt and 'fdisk' in static_programs
2349 link_args : ['--static'],
2350 include_directories : includes,
2351 link_with : [lib_common,
2354 lib_smartcols.get_static_lib()],
2355 dependencies : [lib_readline_static],
2356 install_dir : sbindir,
2358 build_by_default : opt2)
2359 if opt2 and not is_disabler(exe)
2366 include_directories : includes,
2367 link_with : [lib_common,
2371 dependencies : [lib_readline],
2372 install_dir : sbindir,
2374 build_by_default : opt)
2375 if opt and not is_disabler(exe)
2377 bashcompletions += ['sfdisk']
2380 opt2 = opt and 'sfdisk' in static_programs
2384 include_directories : includes,
2385 link_with : [lib_common,
2388 lib_smartcols.get_static_lib()],
2389 dependencies : [lib_readline_static],
2390 install_dir : sbindir,
2392 build_by_default : opt2)
2393 if opt2 and not is_disabler(exe)
2400 include_directories : includes,
2401 link_with : [lib_common,
2405 dependencies : [curses_libs, mount_dep],
2406 install_dir : sbindir,
2408 build_by_default : opt)
2409 if opt and not is_disabler(exe)
2411 manadocs += ['disk-utils/fdisk.8.adoc',
2412 'disk-utils/sfdisk.8.adoc',
2413 'disk-utils/cfdisk.8.adoc']
2414 bashcompletions += ['cfdisk']
2417 opt = not get_option('build-partx').disabled()
2421 include_directories : includes,
2422 link_with : [lib_common],
2423 install_dir : usrsbin_exec_dir,
2425 build_by_default : opt)
2429 include_directories : includes,
2430 link_with : [lib_common],
2431 install_dir : usrsbin_exec_dir,
2433 build_by_default : opt)
2437 include_directories : includes,
2438 link_with : [lib_common],
2439 install_dir : usrsbin_exec_dir,
2441 build_by_default : opt)
2445 include_directories : includes,
2446 link_with : [lib_common,
2448 dependencies : [blkid_dep],
2449 install_dir : usrsbin_exec_dir,
2451 build_by_default : opt)
2453 exes += [exe, exe2, exe3, exe4]
2454 manadocs += ['disk-utils/addpart.8.adoc',
2455 'disk-utils/delpart.8.adoc',
2456 'disk-utils/resizepart.8.adoc',
2457 'disk-utils/partx.8.adoc']
2458 bashcompletions += ['addpart', 'delpart', 'resizepart', 'partx']
2460 opt = opt and 'partx' in static_programs
2464 include_directories : includes,
2465 link_args : ['--static'],
2466 link_with : [lib_common],
2467 install_dir : usrsbin_exec_dir,
2469 build_by_default : opt)
2473 include_directories : includes,
2474 link_args : ['--static'],
2475 link_with : [lib_common],
2476 install_dir : usrsbin_exec_dir,
2478 build_by_default : opt)
2480 'resizepart.static',
2482 include_directories : includes,
2483 link_args : ['--static'],
2484 link_with : [lib_common],
2485 install_dir : usrsbin_exec_dir,
2487 build_by_default : opt)
2491 include_directories : includes,
2492 link_args : ['--static'],
2493 link_with : [lib_common,
2494 lib_smartcols.get_static_lib()],
2495 dependencies : [blkid_static_dep],
2496 install_dir : usrsbin_exec_dir,
2498 build_by_default : opt)
2501 exes += [exe, exe2, exe3, exe4]
2504 ############################################################
2509 include_directories : includes,
2510 link_with : [lib_common],
2511 dependencies : [lib_util,
2515 install_dir : usrbin_exec_dir,
2518 manadocs += ['term-utils/script.1.adoc']
2519 bashcompletions += ['script']
2524 include_directories : includes,
2525 c_args : '-DTEST_SCRIPT',
2526 link_with : [lib_common],
2527 dependencies : [lib_util,
2531 build_by_default : program_tests)
2537 include_directories : includes,
2538 link_with : [lib_common],
2539 dependencies : [lib_util,
2542 install_dir : usrbin_exec_dir,
2545 manadocs += ['term-utils/scriptlive.1.adoc']
2546 bashcompletions += ['scriptlive']
2550 scriptreplay_sources,
2551 include_directories : includes,
2552 link_with : [lib_common],
2553 dependencies : [math_libs],
2554 install_dir : usrbin_exec_dir,
2557 manadocs += ['term-utils/scriptreplay.1.adoc']
2558 bashcompletions += ['scriptreplay']
2560 opt = not get_option('build-agetty').disabled()
2564 include_directories : includes,
2565 link_with : [lib_common, logindefs_c],
2566 dependencies : [BSD ? lib_util : [], lib_systemd],
2567 install_dir : sbindir,
2569 build_by_default : opt)
2572 manadocs += ['term-utils/agetty.8.adoc']
2575 opt = not get_option('build-setterm').disabled()
2579 include_directories : includes,
2580 link_with : [lib_common],
2581 dependencies : [curses_libs],
2582 install_dir : usrbin_exec_dir,
2584 build_by_default : opt)
2587 manadocs += ['term-utils/setterm.1.adoc']
2588 bashcompletions += ['setterm']
2591 opt = not get_option('build-mesg').disabled()
2595 include_directories : includes,
2596 link_with : [lib_common],
2597 install_dir : usrbin_exec_dir,
2599 build_by_default : opt)
2602 manadocs += ['term-utils/mesg.1.adoc']
2603 bashcompletions += ['mesg']
2606 opt = not get_option('build-wall').disabled()
2610 include_directories : includes,
2611 link_with : [lib_common],
2612 dependencies : [lib_systemd],
2613 install_dir : usrbin_exec_dir,
2614 install_mode : [ 'rwxr-sr-x', 'root', 'tty' ],
2616 build_by_default : opt)
2619 manadocs += ['term-utils/wall.1.adoc']
2620 bashcompletions += ['wall']
2623 # chgrp tty $(DESTDIR)$(usrbin_execdir)/wall
2624 # chmod g+s $(DESTDIR)$(usrbin_execdir)/wall
2626 opt = not get_option('build-write').disabled()
2630 include_directories : includes,
2631 link_with : [lib_common],
2632 dependencies : [lib_systemd],
2633 install_dir : usrbin_exec_dir,
2634 install_mode : [ 'rwxr-sr-x', 'root', 'tty' ],
2636 build_by_default : opt)
2639 manadocs += ['term-utils/write.1.adoc']
2640 bashcompletions += ['write']
2643 # chgrp tty $(DESTDIR)$(usrbin_execdir)/write
2644 # chmod g+s $(DESTDIR)$(usrbin_execdir)/write
2646 opt = not get_option('build-login').disabled()
2650 include_directories : includes,
2651 link_with : [lib_common, logindefs_c],
2652 dependencies : [lib_pam,
2656 build_by_default : opt)
2657 if not is_disabler(exe)
2659 manadocs += ['login-utils/login.1.adoc']
2662 opt = not get_option('build-sulogin').disabled()
2666 include_directories : includes,
2667 link_with : [lib_common],
2668 dependencies : [lib_crypt,
2670 install_dir : sbindir,
2672 build_by_default : opt)
2673 if not is_disabler(exe)
2675 manadocs += ['login-utils/sulogin.8.adoc']
2681 include_directories : includes,
2682 link_with : [lib_common,
2684 dependencies : [curses_libs],
2685 install_dir : usrbin_exec_dir,
2688 manadocs += ['misc-utils/cal.1.adoc']
2689 bashcompletions += ['cal']
2691 opt = not get_option('build-logger').disabled()
2695 include_directories : includes,
2696 link_with : [lib_common],
2697 dependencies : [lib_systemd],
2698 install_dir : usrbin_exec_dir,
2700 build_by_default : opt)
2701 if opt and not is_disabler(exe)
2703 manadocs += ['misc-utils/logger.1.adoc']
2704 bashcompletions += ['logger']
2710 include_directories : includes,
2711 c_args : '-DTEST_LOGGER',
2712 link_with : [lib_common],
2713 dependencies : [lib_systemd],
2714 build_by_default: program_tests)
2715 if not is_disabler(exe)
2722 include_directories : includes,
2723 install_dir : usrbin_exec_dir,
2726 manadocs += ['misc-utils/look.1.adoc']
2727 bashcompletions += ['look']
2732 include_directories : includes,
2733 link_with : [lib_common],
2734 install_dir : usrbin_exec_dir,
2737 manadocs += ['misc-utils/mcookie.1.adoc']
2738 bashcompletions += ['mcookie']
2740 if build_liblastlog2
2744 include_directories : includes,
2745 link_with : [lib_common, lib_lastlog2],
2746 install_dir : usrbin_exec_dir,
2749 manadocs += ['misc-utils/lastlog2.8.adoc']
2750 bashcompletions += ['lastlog2']
2751 manadocs += ['liblastlog2/man/lastlog2.3.adoc',
2752 'liblastlog2/man/ll2_write_entry.3.adoc',
2753 'liblastlog2/man/ll2_read_entry.3.adoc',
2754 'liblastlog2/man/ll2_import_lastlog.3.adoc',
2755 'liblastlog2/man/ll2_read_all.3.adoc',
2756 'liblastlog2/man/ll2_remove_entry.3.adoc',
2757 'liblastlog2/man/ll2_rename_user.3.adoc',
2758 'liblastlog2/man/ll2_update_login_time.3.adoc'
2765 include_directories : includes,
2766 dependencies : [lib_selinux],
2767 install_dir : usrbin_exec_dir,
2770 manadocs += ['misc-utils/namei.1.adoc']
2771 bashcompletions += ['namei']
2776 include_directories : includes,
2777 link_with : [lib_common],
2778 install_dir : usrbin_exec_dir,
2781 manadocs += ['misc-utils/whereis.1.adoc']
2782 bashcompletions += ['whereis']
2784 opt = not get_option('build-lslocks').disabled()
2788 include_directories : includes,
2789 link_with : [lib_common,
2791 dependencies : [mount_dep],
2792 install_dir : usrbin_exec_dir,
2794 build_by_default : opt)
2795 if opt and not is_disabler(exe)
2797 manadocs += ['misc-utils/lslocks.8.adoc']
2798 bashcompletions += ['lslocks']
2801 opt = not get_option('build-lsblk').disabled()
2805 include_directories : includes,
2806 link_with : [lib_common,
2809 dependencies : [blkid_dep, lib_udev, mount_dep],
2811 build_by_default : opt)
2812 if opt and not is_disabler(exe)
2814 manadocs += ['misc-utils/lsblk.8.adoc']
2815 bashcompletions += ['lsblk']
2818 errnos_h = custom_target('errnos.h',
2819 input : 'tools/all_errnos',
2820 output : 'errnos.h',
2821 command : ['tools/all_errnos', sed.full_path(),
2822 cc.cmd_array(), get_option('c_args')],
2825 opt = not get_option('build-lsfd').require(lib_rt.found()).disabled()
2828 lsfd_sources, errnos_h,
2829 include_directories : includes,
2830 link_with : [lib_common,
2832 dependencies : [lib_rt],
2833 install_dir : usrbin_exec_dir,
2835 build_by_default : opt)
2836 if opt and not is_disabler(exe)
2838 manadocs += ['lsfd-cmd/lsfd.1.adoc']
2844 include_directories : includes,
2845 link_with : [lib_common,
2847 install_dir : usrbin_exec_dir,
2849 if not is_disabler(exe)
2851 manadocs += ['misc-utils/uuidgen.1.adoc']
2852 bashcompletions += ['uuidgen']
2858 include_directories : includes,
2859 link_with : [lib_common,
2862 install_dir : usrbin_exec_dir,
2864 if not is_disabler(exe)
2866 manadocs += ['misc-utils/uuidparse.1.adoc']
2867 bashcompletions += ['uuidparse']
2874 include_directories : includes,
2875 link_with : [lib_common,
2877 dependencies : [realtime_libs,
2879 install_dir : usrsbin_exec_dir,
2881 build_by_default : opt)
2885 include_directories : includes,
2886 link_with : [lib_common,
2888 dependencies : thread_libs,
2889 build_by_default : opt and program_tests)
2890 if not is_disabler(exe)
2892 manadocs += ['misc-utils/uuidd.8.adoc']
2893 bashcompletions += ['uuidd']
2896 opt = build_libblkid
2900 include_directories : includes,
2901 link_with : [lib_common],
2902 dependencies : [blkid_dep],
2903 install_dir : sbindir,
2905 build_by_default : opt)
2906 if opt and not is_disabler(exe)
2908 manadocs += ['misc-utils/blkid.8.adoc']
2909 bashcompletions += ['blkid']
2912 opt = opt and 'blkid' in static_programs
2916 include_directories : includes,
2917 link_with : [lib_common],
2918 dependencies : [blkid_static_dep],
2919 install_dir : sbindir,
2921 build_by_default : opt)
2922 if opt and not is_disabler(exe)
2928 'libblkid/samples/mkfs.c',
2929 include_directories : includes,
2930 dependencies : [blkid_dep])
2931 if not is_disabler(exe)
2936 'sample-partitions',
2937 'libblkid/samples/partitions.c',
2938 include_directories : includes,
2939 dependencies : [blkid_dep])
2940 if not is_disabler(exe)
2945 'sample-superblocks',
2946 'libblkid/samples/superblocks.c',
2947 include_directories : includes,
2948 dependencies : [blkid_dep])
2949 if not is_disabler(exe)
2955 'libblkid/samples/topology.c',
2956 include_directories : includes,
2957 dependencies : [blkid_dep])
2958 if not is_disabler(exe)
2963 'test_blkid_fuzz_sample',
2964 'libblkid/src/fuzz.c',
2965 include_directories: includes,
2966 dependencies : [blkid_dep],
2967 build_by_default: program_tests)
2968 if not is_disabler(exe)
2972 ############################################################
2977 include_directories : includes,
2978 dependencies : [blkid_dep],
2979 install_dir : sbindir,
2981 if not is_disabler(exe)
2983 manadocs += ['misc-utils/findfs.8.adoc']
2984 bashcompletions += ['findfs']
2990 include_directories : includes,
2991 link_with : [lib_common,
2993 dependencies : [blkid_dep],
2994 install_dir : sbindir,
2996 if not is_disabler(exe)
2998 manadocs += ['misc-utils/wipefs.8.adoc']
2999 bashcompletions += ['wipefs']
3002 opt = not get_option('build-findmnt').disabled()
3006 include_directories : includes,
3007 link_with : [lib_common,
3009 dependencies : [blkid_dep, lib_udev, mount_dep],
3011 build_by_default : opt)
3012 if opt and not is_disabler(exe)
3014 manadocs += ['misc-utils/findmnt.8.adoc']
3015 bashcompletions += ['findmnt']
3021 include_directories : includes,
3022 link_with : [lib_common],
3024 if not is_disabler(exe)
3026 manadocs += ['misc-utils/kill.1.adoc']
3029 opt = not get_option('build-rename').disabled()
3033 include_directories : includes,
3034 install_dir : usrbin_exec_dir,
3036 build_by_default : opt)
3037 if opt and not is_disabler(exe)
3039 manadocs += ['misc-utils/rename.1.adoc']
3040 bashcompletions += ['rename']
3046 include_directories : includes,
3047 link_with : [lib_common],
3048 install_dir : usrbin_exec_dir,
3051 manadocs += ['misc-utils/getopt.1.adoc']
3052 bashcompletions += ['getopt']
3057 include_directories : includes,
3058 link_with : [lib_common,
3060 install_dir : usrbin_exec_dir,
3062 if not is_disabler(exe)
3064 manadocs += ['misc-utils/fincore.1.adoc']
3065 bashcompletions += ['fincore']
3071 include_directories : includes,
3072 link_with : [lib_common],
3073 install_dir : usrbin_exec_dir,
3075 if not is_disabler(exe)
3077 manadocs += ['misc-utils/hardlink.1.adoc']
3078 bashcompletions += ['hardlink']
3081 opt = not get_option('build-pipesz').disabled()
3085 include_directories : includes,
3086 link_with : [lib_common],
3087 install_dir : usrbin_exec_dir,
3089 if opt and not is_disabler(exe)
3091 manadocs += ['misc-utils/pipesz.1.adoc']
3092 bashcompletions += ['pipesz']
3098 include_directories : includes,
3099 c_args : '-DTEST_CAL',
3100 link_with : [lib_common,
3102 dependencies : [curses_libs],
3103 build_by_default: program_tests)
3104 if not is_disabler(exe)
3111 include_directories : includes,
3112 link_with : [lib_common],
3113 install_dir : usrbin_exec_dir,
3115 if not is_disabler(exe)
3117 manadocs += ['misc-utils/fadvise.1.adoc']
3118 bashcompletions += ['fadvise']
3121 if LINUX and conf.get('HAVE_PIDFD_OPEN').to_string() == '1'
3125 include_directories : includes,
3126 link_with : [lib_common],
3127 install_dir : usrbin_exec_dir,
3129 if not is_disabler(exe)
3131 manadocs += ['misc-utils/waitpid.1.adoc']
3132 bashcompletions += ['waitpid']
3136 syscalls_h = custom_target('syscalls.h',
3137 input : 'tools/all_syscalls',
3138 output : 'syscalls.h',
3139 command : ['tools/all_syscalls', sed.full_path(),
3140 cc.cmd_array(), get_option('c_args')],
3143 if cc.compiles(fs.read('include/audit-arch.h'), name : 'has AUDIT_ARCH_NATIVE')
3146 'misc-utils/enosys.c', syscalls_h, errnos_h,
3147 include_directories : includes,
3148 link_with : [lib_common],
3149 install_dir : usrbin_exec_dir,
3151 if not is_disabler(exe)
3153 manadocs += ['misc-utils/enosys.1.adoc']
3154 bashcompletions += ['enosys']
3161 include_directories : includes,
3162 link_with : [lib_common, lib_smartcols],
3163 install_dir : usrbin_exec_dir,
3165 if not is_disabler(exe)
3167 manadocs += ['misc-utils/lsclocks.1.adoc']
3168 bashcompletions += ['lsclocks']
3171 if conf.get('HAVE_RENAMEAT2').to_string() == '1'
3175 include_directories : includes,
3176 link_with : [lib_common],
3177 install_dir : usrbin_exec_dir,
3179 if not is_disabler(exe)
3181 manadocs += ['misc-utils/exch.1.adoc']
3182 bashcompletions += ['exch']
3186 ############################################################
3188 opt = not get_option('build-schedutils').disabled()
3191 'schedutils/chrt.c',
3192 include_directories : includes,
3193 link_with : lib_common,
3194 install_dir : usrbin_exec_dir,
3196 build_by_default : opt)
3200 'schedutils/ionice.c',
3201 include_directories : includes,
3202 link_with : lib_common,
3203 install_dir : usrbin_exec_dir,
3205 build_by_default : opt)
3209 'schedutils/taskset.c',
3210 include_directories : includes,
3211 link_with : lib_common,
3212 install_dir : usrbin_exec_dir,
3214 build_by_default : opt)
3218 'schedutils/uclampset.c',
3219 include_directories : includes,
3220 link_with : lib_common,
3221 install_dir : usrbin_exec_dir,
3223 build_by_default : opt)
3225 if opt and not is_disabler(exe)
3226 exes += [exe, exe2, exe3, exe4]
3227 manadocs += ['schedutils/chrt.1.adoc',
3228 'schedutils/ionice.1.adoc',
3229 'schedutils/taskset.1.adoc',
3230 'schedutils/uclampset.1.adoc']
3231 bashcompletions += ['chrt', 'ionice', 'taskset', 'uclampset']
3234 ############################################################
3236 # TODO: when autotools compat is not needed, s/_/-/g in file names?
3241 c_args : ['-DTEST_PROGRAM_TTYUTILS'],
3242 include_directories : dir_include,
3243 link_with : lib_common,
3244 build_by_default: program_tests)
3250 c_args : ['-DTEST_PROGRAM_BLKDEV'],
3251 include_directories : dir_include,
3252 link_with : lib_common,
3253 build_by_default: program_tests)
3259 c_args : ['-DTEST_PROGRAM_ISMOUNTED'],
3260 include_directories : dir_include,
3261 link_with : lib_common,
3262 build_by_default: program_tests)
3268 c_args : ['-DTEST_PROGRAM_MANGLE'],
3269 include_directories : dir_include,
3270 build_by_default: program_tests)
3276 c_args : ['-DTEST_PROGRAM_STRUTILS'],
3277 include_directories : dir_include,
3278 build_by_default: program_tests)
3284 'lib/color-names.c',
3285 c_args : ['-DTEST_PROGRAM_COLORS'],
3286 include_directories : dir_include,
3287 link_with : [lib_common, lib_tcolors],
3288 build_by_default: program_tests)
3294 c_args : ['-DTEST_PROGRAM_RANDUTILS'],
3295 include_directories : dir_include,
3296 build_by_default: program_tests)
3299 if conf.get('HAVE_OPENAT').to_string() == '1' \
3300 and conf.get('HAVE_DIRFD').to_string() == '1'
3304 c_args : ['-DTEST_PROGRAM_PROCFS'],
3305 include_directories : dir_include,
3306 link_with : lib_common,
3307 build_by_default: program_tests)
3314 have_cpu_set_t ? 'lib/cpuset.c' : [],
3315 c_args : ['-DTEST_PROGRAM_PATH'],
3316 include_directories : dir_include,
3317 link_with : lib_common,
3318 build_by_default: program_tests)
3322 if conf.get('HAVE_PTY').to_string() == '1'
3327 c_args : ['-DTEST_PROGRAM_PTY'],
3328 include_directories : dir_include,
3329 link_with : [lib_common],
3330 dependencies : [lib_m,
3333 build_by_default: program_tests)
3341 c_args : ['-DTEST_PROGRAM_CPUSET'],
3342 include_directories : dir_include,
3343 build_by_default: program_tests)
3354 have_cpu_set_t ? 'lib/cpuset.c' : [],
3355 c_args : ['-DTEST_PROGRAM_SYSFS'],
3356 include_directories : dir_include,
3357 build_by_default: program_tests)
3363 c_args : ['-DTEST_PROGRAM_PAGER'],
3364 include_directories : dir_include,
3365 build_by_default: program_tests)
3369 'test_linux_version',
3370 'lib/linux_version.c',
3371 c_args : ['-DTEST_PROGRAM_LINUXVERSION'],
3372 include_directories : dir_include,
3373 build_by_default: program_tests)
3379 c_args : ['-DTEST_PROGRAM_FILEUTILS'],
3380 include_directories : dir_include,
3381 build_by_default: program_tests)
3385 'test_canonicalize',
3386 'lib/canonicalize.c',
3387 c_args : ['-DTEST_PROGRAM_CANONICALIZE'],
3388 include_directories : dir_include,
3389 build_by_default: program_tests)
3396 c_args : ['-DTEST_PROGRAM_TIMEUTILS'],
3397 include_directories : dir_include,
3398 build_by_default: program_tests)
3404 c_args : ['-DTEST_PROGRAM'],
3405 include_directories : dir_include,
3406 link_with : lib_common,
3407 build_by_default: program_tests)
3413 c_args : ['-DTEST_PROGRAM'],
3414 include_directories : dir_include,
3415 link_with : [lib_common, logindefs_c],
3416 build_by_default: program_tests)
3420 ############################################################
3424 'libuuid/src/test_uuid.c',
3425 include_directories : [dir_include, dir_libuuid],
3426 link_with : lib_uuid,
3427 dependencies : socket_libs,
3428 build_by_default: program_tests)
3429 if not is_disabler(exe)
3433 ############################################################
3435 libfdisk_tests_cflags = ['-DTEST_PROGRAM']
3436 libfdisk_tests_ldadd = [lib_fdisk_static, lib_uuid]
3437 libfdisk_tests_ldadd_deps = [blkid_dep]
3441 'libfdisk/src/ask.c',
3442 c_args : libfdisk_tests_cflags,
3443 include_directories : lib_fdisk_includes,
3444 link_with : libfdisk_tests_ldadd,
3445 dependencies : libfdisk_tests_ldadd_deps,
3446 build_by_default: program_tests)
3447 if not is_disabler(exe)
3453 'libfdisk/src/gpt.c',
3454 c_args : libfdisk_tests_cflags,
3455 include_directories : lib_fdisk_includes,
3456 link_with : libfdisk_tests_ldadd,
3457 dependencies : libfdisk_tests_ldadd_deps,
3458 build_by_default: program_tests)
3459 if not is_disabler(exe)
3465 'libfdisk/src/utils.c',
3466 c_args : libfdisk_tests_cflags,
3467 include_directories : lib_fdisk_includes,
3468 link_with : libfdisk_tests_ldadd,
3469 dependencies : libfdisk_tests_ldadd_deps,
3470 build_by_default: program_tests)
3471 if not is_disabler(exe)
3476 'test_fdisk_script',
3477 'libfdisk/src/script.c',
3478 c_args : libfdisk_tests_cflags,
3479 include_directories : lib_fdisk_includes,
3480 link_with : libfdisk_tests_ldadd,
3481 dependencies : libfdisk_tests_ldadd_deps,
3482 build_by_default: program_tests)
3483 if not is_disabler(exe)
3488 'test_fdisk_version',
3489 'libfdisk/src/version.c',
3490 c_args : libfdisk_tests_cflags,
3491 include_directories : lib_fdisk_includes,
3492 link_with : libfdisk_tests_ldadd,
3493 dependencies : libfdisk_tests_ldadd_deps,
3494 build_by_default: program_tests)
3495 if not is_disabler(exe)
3501 'libfdisk/src/item.c',
3502 c_args : libfdisk_tests_cflags,
3503 include_directories : lib_fdisk_includes,
3504 link_with : libfdisk_tests_ldadd,
3505 dependencies : libfdisk_tests_ldadd_deps,
3506 build_by_default: program_tests)
3507 if not is_disabler(exe)
3511 sample_fdisk_ldadd = [lib_common, lib_fdisk]
3514 'sample-fdisk-mkpart',
3515 'libfdisk/samples/mkpart.c',
3516 include_directories : lib_fdisk_includes,
3517 link_with : sample_fdisk_ldadd)
3518 if not is_disabler(exe)
3523 'sample-fdisk-mkpart-fullspec',
3524 'libfdisk/samples/mkpart-fullspec.c',
3525 include_directories : lib_fdisk_includes,
3526 link_with : sample_fdisk_ldadd)
3527 if not is_disabler(exe)
3531 ############################################################
3535 'tests/helpers/test_cap.c',
3536 include_directories : includes,
3537 dependencies : [lib_cap_ng],
3538 build_by_default: program_tests)
3539 if not is_disabler(exe)
3545 'tests/helpers/test_mbsencode.c',
3546 include_directories : includes,
3547 link_with : lib_common,
3548 build_by_default: program_tests)
3553 'tests/helpers/test_byteswap.c',
3554 include_directories : includes,
3555 build_by_default: program_tests)
3560 'tests/helpers/test_md5.c',
3562 include_directories : includes,
3563 build_by_default: program_tests)
3568 'tests/helpers/test_sha1.c',
3570 include_directories : includes,
3571 build_by_default: program_tests)
3576 'tests/helpers/test_pathnames.c',
3577 include_directories : includes,
3578 build_by_default: program_tests)
3583 'tests/helpers/test_strerror.c',
3584 include_directories : includes,
3585 build_by_default: program_tests)
3590 'tests/helpers/test_sysinfo.c',
3591 include_directories : includes,
3592 build_by_default: program_tests)
3597 'tests/helpers/test_sigreceive.c',
3598 include_directories : includes,
3599 link_with : lib_common,
3600 build_by_default: program_tests)
3605 'tests/helpers/test_tiocsti.c',
3606 include_directories : includes,
3607 build_by_default: program_tests)
3611 'test_uuid_namespace',
3612 'tests/helpers/test_uuid_namespace.c',
3616 include_directories : includes,
3617 build_by_default: program_tests)
3620 if LINUX and lib_rt.found()
3623 'tests/helpers/test_mkfds.c',
3624 'tests/helpers/test_mkfds.h',
3625 'tests/helpers/test_mkfds_ppoll.c',
3626 include_directories : includes,
3627 dependencies : [lib_rt],
3628 build_by_default: program_tests)
3634 'tests/helpers/test_enosys.c',
3635 include_directories : includes,
3636 build_by_default: program_tests)
3639 ############################################################
3641 if conf.get('HAVE_OPENAT').to_string() == '1'
3643 'sample-scols-tree',
3644 'libsmartcols/samples/tree.c',
3645 include_directories : includes,
3646 link_with : [lib_smartcols, lib_common],
3647 build_by_default: program_tests)
3648 if not is_disabler(exe)
3654 'sample-scols-title',
3655 'libsmartcols/samples/title.c',
3656 include_directories : includes,
3657 link_with : [lib_smartcols, lib_common])
3658 if not is_disabler(exe)
3663 'sample-scols-wrap',
3664 'libsmartcols/samples/wrap.c',
3665 include_directories : includes,
3666 link_with : [lib_smartcols, lib_common])
3667 if not is_disabler(exe)
3672 'sample-scols-continuous',
3673 'libsmartcols/samples/continuous.c',
3674 include_directories : includes,
3675 link_with : [lib_smartcols, lib_common])
3676 if not is_disabler(exe)
3681 'sample-scols-continuous-json',
3682 'libsmartcols/samples/continuous-json.c',
3683 include_directories : includes,
3684 link_with : [lib_smartcols, lib_common])
3685 if not is_disabler(exe)
3690 'sample-scols-maxout',
3691 'libsmartcols/samples/maxout.c',
3692 include_directories : includes,
3693 link_with : [lib_smartcols, lib_common])
3694 if not is_disabler(exe)
3699 'sample-scols-fromfile',
3700 'libsmartcols/samples/fromfile.c',
3701 include_directories : includes,
3702 link_with : [lib_smartcols, lib_common])
3703 if not is_disabler(exe)
3708 'sample-scols-grouping-simple',
3709 'libsmartcols/samples/grouping-simple.c',
3710 include_directories : includes,
3711 link_with : [lib_smartcols, lib_common])
3712 if not is_disabler(exe)
3717 'sample-scols-grouping-overlay',
3718 'libsmartcols/samples/grouping-overlay.c',
3719 include_directories : includes,
3720 link_with : [lib_smartcols, lib_common])
3721 if not is_disabler(exe)
3727 'Documentation/boilerplate.c',
3728 include_directories : includes,
3729 build_by_default: program_tests)
3730 if not is_disabler(exe)
3734 ############################################################
3736 # Let the test runner know whether we're running under asan and export
3737 # some paths. We use a file on disk so that it is possible to run the
3738 # test scripts from commandline without setting any variables.
3739 configure_file(output : 'meson.conf',
3744 '''.format(get_option('b_sanitize')=='address' ? 'yes' : '',
3745 python.full_path())])
3747 run_sh = find_program('tests/run.sh')
3751 '--srcdir=' + meson.current_source_dir(),
3752 '--builddir=' + meson.current_build_dir(),
3758 manadocs += ['lib/terminal-colors.d.5.adoc']
3759 manadocs += ['libblkid/libblkid.3.adoc']
3763 'libuuid/man/uuid.3.adoc',
3764 'libuuid/man/uuid_clear.3.adoc',
3765 'libuuid/man/uuid_compare.3.adoc',
3766 'libuuid/man/uuid_copy.3.adoc',
3767 'libuuid/man/uuid_generate.3.adoc',
3768 'libuuid/man/uuid_is_null.3.adoc',
3769 'libuuid/man/uuid_parse.3.adoc',
3770 'libuuid/man/uuid_time.3.adoc',
3771 'libuuid/man/uuid_unparse.3.adoc']
3773 'uuid_generate_random.3': 'uuid_generate.3',
3774 'uuid_generate_time.3': 'uuid_generate.3',
3775 'uuid_generate_time_safe.3': 'uuid_generate.3',
3779 asciidoctor = find_program('asciidoctor', required : false)
3780 if asciidoctor.found()
3781 foreach adoc : manadocs
3782 name = adoc.split('/')[-1]
3783 page = name.split('.adoc')[0]
3784 section = page.split('.')[-1]
3785 mandirn = join_paths(mandir, 'man' + section)
3790 command : [ asciidoctor,
3792 '-a', 'VERSION=' + meson.project_version(),
3793 '-a', 'release-version=' + meson.project_version(),
3794 '-a', 'ADJTIME_PATH=/etc/adjtime',
3795 '-a', 'package-docdir=' + docdir,
3796 '--base-dir=' + meson.current_source_dir(),
3797 '--destination-dir=' + meson.current_build_dir(),
3798 '--load-path', '@SOURCE_ROOT@/tools',
3799 '--require', 'asciidoctor-includetracker',
3803 depfile : page + '.deps',
3805 install_dir : mandirn)
3808 foreach link_name, target : manlinks
3809 link_section = link_name.split('.')[-1]
3810 target_section = target.split('.')[-1]
3811 meson.add_install_script(meson_make_manpage_stub,
3812 join_paths('man' + target_section, target),
3813 join_paths(mandir, 'man' + link_section, link_name))
3817 if bash_completion.found()
3818 foreach completion : bashcompletions
3820 join_paths('bash-completion', completion),
3821 install_dir : bash_completion.get_variable(pkgconfig : 'completionsdir')
3824 foreach link_name, target : bashcompletionslinks
3825 meson.add_install_script(meson_make_symlink,
3827 join_paths(bash_completion.get_variable(pkgconfig : 'completionsdir'), link_name))