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 libblkid_version = '1.1.0'
14 libblkid_date = '01-Jun-2021'
15 libuuid_version = '1.3.0'
16 libmount_version = '1.1.0'
17 libsmartcols_version = '1.1.0'
18 libfdisk_version = '1.1.0'
20 prefixdir = get_option('prefix')
21 if not prefixdir.startswith('/')
22 error('Prefix is not absolute: "@0@"'.format(prefixdir))
24 bindir = join_paths(prefixdir, get_option('bindir'))
25 sbindir = join_paths(prefixdir, get_option('sbindir'))
26 sysconfstaticdir = join_paths(prefixdir, 'lib')
27 docdir = join_paths(prefixdir, get_option('datadir'), 'doc', 'util-linux')
28 mandir = join_paths(prefixdir, get_option('mandir'))
30 execprefixdir = prefixdir
31 sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
32 usrbin_exec_dir = join_paths(execprefixdir, bindir)
33 usrsbin_exec_dir = join_paths(execprefixdir, sbindir)
34 bash_completion = dependency('bash-completion', required : get_option('build-bash-completion'))
36 vendordir = get_option('vendordir')
38 add_project_arguments('-D_GNU_SOURCE', language : 'c')
40 cc = meson.get_compiler('c')
42 conf = configuration_data()
43 conf.set_quoted('PACKAGE', meson.project_name())
44 conf.set_quoted('PACKAGE_VERSION', meson.project_version())
45 package_string = '@0@ @1@'.format(meson.project_name(), meson.project_version())
46 conf.set_quoted('PACKAGE_STRING', package_string)
49 pc_version = meson.project_version().split('-')[0].split('.')
51 if pc_version.length() < 3
55 pc_version = '.'.join(pc_version)
57 conf.set_quoted('LIBBLKID_VERSION', libblkid_version)
58 conf.set_quoted('LIBBLKID_DATE', libblkid_date)
60 conf.set('bindir', bindir)
61 conf.set('sbindir', sbindir)
62 conf.set('runstatedir', runstatedir)
63 conf.set('sysconfdir', sysconfdir)
64 conf.set('usrsbin_execdir', usrsbin_exec_dir)
65 conf.set('docdir', docdir)
66 conf.set_quoted('_PATH_SYSCONFSTATICDIR', sysconfstaticdir)
67 conf.set_quoted('_PATH_RUNSTATEDIR', runstatedir)
68 conf.set_quoted('CONFIG_ADJTIME_PATH', '/etc/adjtime')
69 conf.set_quoted('ADJTIME_PATH', '/etc/adjtime') # yes, both are used :(
71 conf.set_quoted('_PATH_VENDORDIR', vendordir)
72 conf.set('USE_VENDORDIR', vendordir == '' ? false : 1)
74 build_libblkid = not get_option('build-libblkid').disabled()
75 conf.set('HAVE_LIBBLKID', build_libblkid ? 1 : false)
76 summary('libblkid', build_libblkid ? 'enabled' : 'disabled', section : 'components')
78 build_libuuid = not get_option('build-libuuid').disabled()
79 conf.set('HAVE_LIBUUID', build_libuuid ? 1 : false)
80 summary('libuuid', build_libuuid ? 'enabled' : 'disabled', section : 'components')
82 have_mountfd_api = cc.sizeof('struct mount_attr', prefix : '#include <linux/mount.h>') > 0
83 conf.set('HAVE_STRUCT_MOUNT_ATTR', have_mountfd_api ? 1 : false)
84 conf.set('HAVE_MOUNTFD_API', have_mountfd_api ? 1 : false)
86 have_struct_statx = cc.sizeof('struct statx', prefix : '#include <sys/stat.h>') > 0
87 conf.set('HAVE_STRUCT_STATX', have_struct_statx ? 1 : false)
89 build_libmount = not get_option('build-libmount').disabled()
90 conf.set('HAVE_LIBMOUNT', build_libmount ? 1 : false)
91 conf.set('USE_LIBMOUNT_SUPPORT_NAMESPACES', 1)
92 conf.set('USE_LIBMOUNT_MOUNTFD_SUPPORT', have_mountfd_api ? 1 : false)
93 summary('libmount', build_libmount ? 'enabled' : 'disabled', section : 'components')
95 build_libsmartcols = not get_option('build-libsmartcols').disabled()
96 conf.set('HAVE_LIBSMARTCOLS', build_libsmartcols ? 1 : false)
97 summary('libsmartcols', build_libsmartcols ? 'enabled' : 'disabled', section : 'components')
99 build_libfdisk = not get_option('build-libfdisk').disabled()
100 conf.set('HAVE_LIBFDISK', build_libfdisk ? 1 : false)
101 summary('libfdisk', build_libfdisk ? 'enabled' : 'disabled', section : 'components')
103 build_uuidd = not get_option('build-uuidd').disabled()
104 conf.set('HAVE_UUIDD', build_uuidd ? 1 : false)
105 summary('uuidd', build_uuidd ? 'enabled' : 'disabled', section : 'components')
107 static_programs = get_option('static-programs')
108 need_static_libs = static_programs.length() > 0 # a rough estimate...
109 summary('static programs', static_programs)
111 LINUX = host_machine.system() in ['linux']
112 BSD = host_machine.system() in ['dragonfly', 'freebsd', 'netbsd', 'openbsd']
114 ############################################################
132 have = cc.compiles(code, name : 'wchar_t support')
133 if not have and get_option('widechar').enabled()
134 error('widechar support requested but unavailable')
136 if get_option('ncurses').enabled() and get_option('widechar').enabled()
137 error('widechar support is incompatible with non-wide ncurses')
139 conf.set('HAVE_WIDECHAR', have ? 1 : false)
181 linux/net_namespace.h
227 lib_m = cc.find_library('m')
229 lib_tinfo = dependency(
231 required : get_option('tinfo'))
233 lib_ncursesw = dependency(
235 required : get_option('ncursesw'))
236 if lib_ncursesw.found()
237 headers += ['ncursesw/ncurses.h',
241 lib_ncurses = disabler()
243 lib_ncurses = dependency(
245 required : get_option('ncurses'))
246 headers += ['ncurses.h',
250 conf.set('HAVE_LIBNCURSESW', lib_ncursesw.found())
251 conf.set('HAVE_LIBNCURSES', lib_ncurses.found())
252 conf.set('HAVE_NCURSES', lib_ncursesw.found() or lib_ncurses.found())
254 lib_slang = dependency(
256 required : get_option('slang'))
258 headers += ['slang.h',
263 conf.set('HAVE_SLANG', lib_slang.found())
265 foreach curses_libs : [lib_slang, lib_ncursesw, lib_ncurses]
266 if curses_libs.found()
267 have = cc.has_function('use_default_colors', dependencies : curses_libs)
268 conf.set('HAVE_USE_DEFAULT_COLORS', have ? 1 : false)
269 have = cc.has_function('resizeterm', dependencies : curses_libs)
270 conf.set('HAVE_RESIZETERM', have ? 1 : false)
277 required : get_option('zlib'))
279 lib_readline = dependency(
281 required : get_option('readline'))
282 conf.set('HAVE_LIBREADLINE', lib_readline.found() ? 1 : false)
284 lib_readline_static = dependency(
287 required : need_static_libs ? get_option('readline') : disabler())
289 if meson.version().version_compare('>= 0.59.0')
290 lib_intl = dependency(
292 required : get_option('nls'))
293 conf.set('ENABLE_NLS', lib_intl.found() ? 1 : false)
295 if get_option('nls').enabled()
296 error('nls is not supported with meson before 0.59.0')
298 lib_intl = dependency('', required : false)
301 lib_user = dependency(
304 required : get_option('libuser'))
305 conf.set('HAVE_LIBUSER', lib_user.found() ? 1 : false)
307 lib_util = cc.find_library(
309 required : get_option('libutil'))
310 conf.set('HAVE_LIBUTIL', lib_util.found() ? 1 : false)
312 lib_utempter = cc.find_library(
314 required : get_option('libutempter'))
315 conf.set('HAVE_LIBUTEMPTER', lib_utempter.found() ? 1 : false)
317 systemd = dependency(
319 required : get_option('systemd'))
321 lib_systemd = dependency(
323 required : get_option('systemd'))
324 conf.set('HAVE_LIBSYSTEMD', lib_systemd.found() ? 1 : false)
325 conf.set('USE_SYSTEMD', lib_systemd.found() ? 1 : false)
327 have = cc.has_function(
328 'sd_session_get_username',
329 dependencies : lib_systemd)
330 conf.set('HAVE_DECL_SD_SESSION_GET_USERNAME', have ? 1 : false)
332 lib_udev = dependency(
334 required : get_option('systemd'))
335 conf.set('HAVE_LIBUDEV', lib_udev.found() ? 1 : false)
337 lib_crypt = cc.find_library('crypt')
339 lib_pam = cc.find_library('pam', required : get_option('build-login'))
340 if not lib_pam.found()
341 lib_pam = cc.find_library('pam', required : get_option('build-chfn-chsh'))
343 if not lib_pam.found()
344 lib_pam = cc.find_library('pam', required : get_option('build-su'))
346 if not lib_pam.found()
347 lib_pam = cc.find_library('pam', required : get_option('build-runuser'))
350 lib_pam_misc = cc.find_library('pam_misc')
351 lib_pam = [lib_pam, lib_pam_misc]
353 lib_pam_misc = declare_dependency()
356 lib_cryptsetup = dependency(
358 required : get_option('cryptsetup'))
359 conf.set('HAVE_CRYPTSETUP', lib_cryptsetup.found() ? 1 : false)
361 if not get_option('cryptsetup').disabled() and get_option('cryptsetup-dlopen').enabled()
362 if meson.version().version_compare('>= 0.62.0')
363 lib_dl = dependency('dl')
365 lib_dl = cc.find_library('dl')
367 conf.set('CRYPTSETUP_VIA_DLOPEN', 1)
368 summary('cryptsetup support (dlopen)',
370 section : 'components')
372 summary('cryptsetup support',
373 lib_cryptsetup.found() ? 'enabled' : 'disabled',
374 section : 'components')
377 have = cc.has_function(
378 'crypt_activate_by_signed_key',
379 dependencies : lib_cryptsetup)
380 conf.set('HAVE_CRYPT_ACTIVATE_BY_SIGNED_KEY', have ? 1 : false)
382 lib_cap_ng = dependency(
384 required : get_option('build-setpriv'))
385 if not lib_cap_ng.found()
386 lib_cap_ng = disabler()
389 lib_selinux = dependency(
392 required : get_option('selinux'))
393 conf.set('HAVE_LIBSELINUX', lib_selinux.found() ? 1 : false)
395 lib_magic = dependency(
397 required : get_option('magic'))
398 conf.set('HAVE_MAGIC', lib_magic.found() ? 1 : false)
400 lib_econf = dependency(
402 required : get_option('econf'))
403 conf.set('HAVE_LIBECONF', lib_econf.found() ? 1 : false)
405 lib_audit = dependency(
407 required : get_option('audit'))
408 conf.set('HAVE_LIBAUDIT', lib_audit.found() ? 1 : false)
410 conf.set('HAVE_SMACK', not get_option('smack').disabled())
412 foreach header : headers
413 have = cc.has_header(header)
414 conf.set('HAVE_' + header.underscorify().to_upper(), have ? 1 : false)
417 header = 'linux/btrfs.h'
418 enable_btrfs = cc.has_header(header,
419 required : get_option('btrfs'))
420 conf.set('HAVE_' + header.underscorify().to_upper(), enable_btrfs ? 1 : false)
421 conf.set('HAVE_BTRFS_SUPPORT', enable_btrfs ? 1 : false)
423 prefix = conf.get('HAVE_LINUX_COMPILER_H') ? '#include <linux/compiler.h>' : ''
428 have = cc.has_header(header,
430 conf.set('HAVE_' + header.underscorify().to_upper(), have ? 1 : false)
433 have = cc.has_header('sched.h')
434 conf.set10('HAVE_DECL_CPU_ALLOC', have)
435 # We get -1 if the size cannot be determined
436 have_cpu_set_t = cc.sizeof('cpu_set_t', prefix : '#define _GNU_SOURCE\n#include <sched.h>') > 0
437 conf.set('HAVE_CPU_SET_T', have_cpu_set_t ? 1 : false)
439 have = cc.has_header_symbol('unistd.h', 'environ', args : '-D_GNU_SOURCE')
440 conf.set10('HAVE_ENVIRON_DECL', have)
442 have = cc.has_header_symbol('signal.h', 'sighandler_t', args : '-D_GNU_SOURCE')
443 conf.set('HAVE_SIGHANDLER_T', have ? 1 : false)
445 have = cc.has_function('strsignal')
446 conf.set10('HAVE_STRSIGNAL_DECL', have)
448 have = cc.sizeof('union semun', prefix : '#include <sys/sem.h>') > 0
449 conf.set('HAVE_UNION_SEMUN', have ? 1 : false)
451 have = cc.has_type('loff_t', prefix : '#include <sys/types.h>')
452 conf.set('HAVE_LOFF_T', have ? 1 : false)
454 have = cc.compiles('''
455 #define _GNU_SOURCE 1
456 #include <langinfo.h>
459 str = nl_langinfo (ALTMON_1);
460 str = nl_langinfo (ALTMON_2);
461 str = nl_langinfo (ALTMON_3);
462 str = nl_langinfo (ALTMON_4);
463 str = nl_langinfo (ALTMON_5);
464 str = nl_langinfo (ALTMON_6);
465 str = nl_langinfo (ALTMON_7);
466 str = nl_langinfo (ALTMON_8);
467 str = nl_langinfo (ALTMON_9);
468 str = nl_langinfo (ALTMON_10);
469 str = nl_langinfo (ALTMON_11);
470 str = nl_langinfo (ALTMON_12);
474 name : 'langinfo.h defines ALTMON_x constants')
475 conf.set('HAVE_LANGINFO_ALTMON', have ? 1 : false)
477 have = cc.compiles('''
478 #define _GNU_SOURCE 1
479 #include <langinfo.h>
482 str = nl_langinfo (_NL_ABALTMON_1);
483 str = nl_langinfo (_NL_ABALTMON_2);
484 str = nl_langinfo (_NL_ABALTMON_3);
485 str = nl_langinfo (_NL_ABALTMON_4);
486 str = nl_langinfo (_NL_ABALTMON_5);
487 str = nl_langinfo (_NL_ABALTMON_6);
488 str = nl_langinfo (_NL_ABALTMON_7);
489 str = nl_langinfo (_NL_ABALTMON_8);
490 str = nl_langinfo (_NL_ABALTMON_9);
491 str = nl_langinfo (_NL_ABALTMON_10);
492 str = nl_langinfo (_NL_ABALTMON_11);
493 str = nl_langinfo (_NL_ABALTMON_12);
497 name : 'langinfo.h defines _NL_ABALTMON_x constants')
498 conf.set('HAVE_LANGINFO_NL_ABALTMON', have ? 1 : false)
500 have = cc.compiles('''
501 #define _GNU_SOURCE 1
502 #include <langinfo.h>
505 str = nl_langinfo (_NL_TIME_WEEK_1STDAY);
509 name : 'langinfo.h defines _NL_TIME_WEEK_1STDAY constant')
510 conf.set('HAVE_DECL__NL_TIME_WEEK_1STDAY', have ? 1 : false)
543 landlock_create_ruleset
545 landlock_restrict_self
608 have = cc.has_function(func)
609 # For autotools compatibility, use either #define FOO 1 or #undef FOO.
610 # This makes little sense, but is necessary to avoid warnings about
611 # redefined macros from Python.h, which uses this convention.
612 conf.set('HAVE_' + func.to_upper(), have ? 1 : false)
615 have = conf.get('HAVE_FUTIMENS') in [1] and conf.get('HAVE_INOTIFY_INIT1') in [1]
616 conf.set('AGETTY_RELOAD', have ? 1 : false)
618 warning('futimens or inotify_init1 not found; agetty(8) will not provide --reload functionality')
621 have_dirfd = (cc.has_function('dirfd') or
622 cc.has_header_symbol('dirent.h', 'dirfd',
623 prefix : '#include <sys/types.h>'))
624 conf.set('HAVE_DIRFD', have_dirfd ? 1 : false)
626 have_ddfd = cc.has_member('DIR', 'dd_fd',
628 #include <sys/types.h>
631 conf.set('HAVE_DECL_DDFD', have_ddfd ? 1 : false)
633 have = cc.has_member('struct tm', 'tm_gmtoff',
638 conf.set('HAVE_TM_GMTOFF', have ? 1 : false)
642 have = cc.sizeof('enum fsconfig_command', prefix : '#include <linux/mount.h>') > 0
643 conf.set('HAVE_ENUM_FSCONFIG_COMMAND', have ? 1 : false)
645 have = cc.has_member('struct termios', 'c_line',
646 prefix : '#include <termios.h>')
647 conf.set('HAVE_STRUCT_TERMIOS_C_LINE', have ? 1 : false)
649 have = cc.has_member('struct stat', 'st_mtim.tv_nsec',
650 prefix : '#include <sys/stat.h>')
651 conf.set('HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC', have ? 1 : false)
653 have = cc.has_member('struct statx', 'stx_mnt_id',
654 prefix : '#include <sys/stat.h>')
655 conf.set('HAVE_STRUCT_STATX_STX_MNT_ID', have ? 1 : false)
657 # replacement for AC_STRUCT_TIMEZONE
658 have = cc.has_member('struct tm', 'tm_zone',
659 prefix : '#include <time.h>')
660 conf.set('HAVE_STRUCT_TM_TM_ZONE', have ? 1 : false)
662 have = cc.has_header_symbol('time.h', 'tzname', args: '-D_GNU_SOURCE')
663 conf.set('HAVE_DECL_TZNAME', have ? 1 : false)
665 have = cc.has_header_symbol('linux/blkzoned.h', 'BLK_ZONE_REP_CAPACITY')
666 conf.set('HAVE_DECL_BLK_ZONE_REP_CAPACITY', have ? 1 : false)
668 have = cc.has_header_symbol('linux/pr.h', 'PR_REP_CAPACITY')
669 conf.set('HAVE_DECL_PR_REP_CAPACITY', have ? 1 : false)
674 extern char *tzname[];
677 return tzname ? 0 : 1;
679 '''.format(have ? 1 : 0)
680 have = cc.compiles(code, name : 'using tzname[]')
681 conf.set('HAVE_TZNAME', have ? 1 : false)
684 if not cc.has_function('socket')
685 socket_libs += cc.find_library('socket', required : true)
686 have = cc.has_function('socket',
687 dependencies : socket_libs)
689 error('socket() function not available')
694 have = cc.has_function('clock_gettime')
696 realtime_libs += cc.find_library('rt', required : true)
697 have = cc.has_function('clock_gettime',
698 dependencies : realtime_libs)
700 conf.set('HAVE_CLOCK_GETTIME', have ? 1 : false)
702 thread_libs = dependency('threads')
704 have = cc.has_function('timer_create')
706 realtime_libs = [cc.find_library('rt', required : true)]
707 have = cc.has_function('timer_create',
708 dependencies : realtime_libs)
710 realtime_libs += thread_libs
711 have = cc.has_function('timer_create',
712 dependencies : realtime_libs)
715 conf.set('HAVE_TIMER_CREATE', have ? 1 : false)
717 have = cc.has_function('setitimer')
718 conf.set('HAVE_SETITIMER', have ? 1 : false)
721 rtas_libs = cc.find_library('rtas', required : false)
722 conf.set('HAVE_LIBRTAS', rtas_libs.found() ? 1 : false)
725 if not cc.has_header_symbol('math.h', 'isnan')
726 lib = cc.find_library('m', required : true)
727 if (cc.has_function('isnan', dependencies : lib) and
728 cc.has_function('__isnan', dependencies : lib))
733 have = cc.has_header_symbol('errno.h', 'program_invocation_short_name',
734 args : '-D_GNU_SOURCE')
735 conf.set('HAVE_PROGRAM_INVOCATION_SHORT_NAME', have ? 1 : false)
738 extern char *__progname;
740 return (*__progname != 0);
743 have = cc.compiles(code, name : 'using __progname')
744 conf.set('HAVE___PROGNAME', have ? 1 : false)
746 have = conf.get('HAVE_PTY_H').to_string() == '1' \
747 and conf.get('HAVE_SYS_SIGNALFD_H').to_string() == '1'
748 conf.set('HAVE_PTY', have ? 1 : false)
750 have_opal_get_status= cc.has_header_symbol('linux/sed-opal.h', 'IOC_OPAL_GET_STATUS')
751 conf.set('HAVE_OPAL_GET_STATUS', have_opal_get_status ? 1 : false)
753 build_plymouth_support = get_option('build-plymouth-support')
754 have_tiocglcktrmios = cc.has_header_symbol(
755 'sys/ioctl.h', 'TIOCGLCKTRMIOS',
756 required : build_plymouth_support.enabled())
757 have_sock_cloexec = cc.has_header_symbol(
758 'sys/socket.h', 'SOCK_CLOEXEC',
759 prefix : '#include <sys/types.h>',
760 required : build_plymouth_support.enabled())
761 have_sock_nonblock = cc.has_header_symbol(
762 'sys/socket.h', 'SOCK_NONBLOCK',
763 prefix : '#include <sys/types.h>',
764 required : build_plymouth_support.enabled())
765 have_so_passcred = cc.has_header_symbol(
766 'sys/socket.h', 'SO_PASSCRED',
767 prefix : '#include <sys/types.h>',
768 required : build_plymouth_support.enabled())
770 build_plymouth_support = (not build_plymouth_support.disabled() and
771 have_tiocglcktrmios and
772 have_sock_cloexec and
773 have_sock_nonblock and
775 conf.set('ENABLE_PLYMOUTH_SUPPORT', build_plymouth_support ? 1 : false)
776 summary('plymouth support',
777 build_plymouth_support ? 'enabled' : 'disabled',
778 section : 'components')
780 # check for valid fallocate() function
781 # with 32 bits glibc 2.10, fallocate() exists but not fallocate64()
782 # when _FILE_OFFSET_BITS==64, fallocate() is redirect to fallocate64()
783 # and program can't be linked.
791 ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0xfffffffful, 0xfffffffful);
792 return ret == 0 ? 0 : 1;
795 have = cc.links(code, name : 'fallocate() function')
796 conf.set('HAVE_FALLOCATE', have ? 1 : false)
804 ret = posix_fallocate(0, 0xfffffffful, 0xfffffffful);
805 return ret == 0 ? 0 : 1;
808 have = cc.links(code, name : 'posix_fallocate() function')
809 conf.set('HAVE_POSIX_FALLOCATE', have ? 1 : false)
811 use_hwclock_cmos = host_machine.cpu_family() in ['x86', 'x86_64']
812 message('Use CMOS clock: @0@'.format(use_hwclock_cmos))
813 conf.set('USE_HWCLOCK_CMOS', use_hwclock_cmos ? 1 : false)
815 conf.set('HAVE_TLS', get_option('use-tls') ? 1 : false)
816 conf.set('PG_BELL', get_option('pg-bell') ? 1 : false)
817 conf.set('USE_COLORS_BY_DEFAULT', get_option('colors-default') ? 1 : false)
819 is_glibc = cc.has_header_symbol('limits.h', '__GLIBC__')
821 ############################################################
824 fs_search_path = get_option('fs-search-path')
825 fs_search_path_extra = get_option('fs-search-path-extra')
826 if fs_search_path_extra != ''
827 fs_search_path = ':'.join(fs_search_path, fs_search_path_extra)
829 conf.set_quoted('FS_SEARCH_PATH', fs_search_path)
831 systemdsystemunitdir = ''
833 systemdsystemunitdir = systemd.get_variable(pkgconfig : 'systemdsystemunitdir')
836 sysvinit = get_option('sysvinit').enabled()
837 sysvinitrcdir = sysconfdir + '/init.d'
839 program_tests = get_option('program-tests')
841 chfn_chsh_password = get_option('chfn-chsh-password') or lib_user.found()
842 conf.set('CHFN_CHSH_PASSWORD', chfn_chsh_password ? 1 : false)
844 have = get_option('chsh-only-listed')
845 conf.set('ONLY_LISTED_SHELLS', have ? 1 : false)
847 have = get_option('use-tty-group')
848 conf.set('USE_TTY_GROUP', have ? 1 : false)
850 bison = find_program('bison')
851 flex = find_program('flex')
853 build_hwclock = not get_option('build-hwclock').disabled()
854 bison_gen = generator(
856 output : ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
857 arguments : ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@'])
859 meson_make_symlink = meson.current_source_dir() + '/tools/meson-make-symlink.sh'
860 meson_make_manpage_stub = meson.current_source_dir() + '/tools/meson-make-manpage-stub.sh'
864 configuration : conf)
866 add_project_arguments('-include', meson.current_build_dir() / 'config.h', language : 'c')
871 '-Waddress-of-packed-member',
872 '-Wdiscarded-qualifiers',
873 '-Wembedded-directive',
876 '-Wimplicit-function-declaration',
877 '-Wmissing-declarations',
878 '-Wmissing-parameter-type',
879 '-Wmissing-prototypes',
881 '-Wno-missing-field-initializers',
882 '-Wold-style-definition',
886 '-Wstrict-prototypes',
889 '-Wunused-but-set-parameter',
890 '-Wunused-but-set-variable',
891 '-Wunused-parameter',
897 foreach compiler_flag : compiler_flags
898 if cc.has_argument(compiler_flag)
899 add_project_arguments(compiler_flag, language : 'c')
907 bashcompletionslinks = {}
913 subdir('libsmartcols')
916 subdir('login-utils')
924 includes = [dir_include,
934 opt = not get_option('build-chfn-chsh').disabled()
939 include_directories : includes,
940 link_with : [lib_common, logindefs_c],
941 dependencies : chfn_chsh_deps,
942 install_dir : usrbin_exec_dir,
943 install_mode : 'rwsr-xr-x',
945 build_by_default : opt)
949 'login-utils/chsh.c',
952 include_directories : includes,
953 link_with : lib_common,
954 dependencies : chfn_chsh_deps,
955 install_dir : usrbin_exec_dir,
956 install_mode : 'rwsr-xr-x',
958 build_by_default : opt)
959 if opt and not is_disabler(exe)
961 manadocs += ['login-utils/chfn.1.adoc', 'login-utils/chsh.1.adoc']
962 bashcompletions += ['chfn', 'chsh']
967 test_islocal_sources,
968 include_directories : includes,
969 c_args : '-DTEST_PROGRAM',
970 build_by_default : program_tests)
975 test_consoles_sources,
976 c_args : ['-DTEST_PROGRAM'],
977 include_directories : includes,
978 link_with : lib_common,
979 build_by_default : program_tests)
982 opt = not get_option('build-last').disabled()
986 include_directories : includes,
987 link_with : [lib_common],
988 install_dir : usrbin_exec_dir,
990 build_by_default : opt)
991 if opt and not is_disabler(exe)
993 meson.add_install_script(meson_make_symlink,
995 join_paths(usrbin_exec_dir, 'lastb'))
996 manadocs += ['login-utils/last.1.adoc']
997 manlinks += {'lastb.1': 'last.1'}
998 bashcompletions += ['last']
999 bashcompletionslinks += {'lastb': 'last'}
1002 opt = not get_option('build-nologin').disabled()
1005 'login-utils/nologin.c',
1006 include_directories : includes,
1007 install_dir : sbindir,
1008 link_with : [lib_common],
1010 build_by_default : opt)
1011 if opt and not is_disabler(exe)
1013 manadocs += ['login-utils/nologin.8.adoc']
1016 opt = not get_option('build-utmpdump').disabled()
1019 'login-utils/utmpdump.c',
1020 include_directories : includes,
1021 link_with : [lib_common],
1022 install_dir : usrbin_exec_dir,
1024 build_by_default : opt)
1025 if opt and not is_disabler(exe)
1027 manadocs += ['login-utils/utmpdump.1.adoc']
1028 bashcompletions += ['utmpdump']
1031 opt = not get_option('build-su').disabled()
1035 'login-utils/su-common.c',
1036 'login-utils/su-common.h',
1040 include_directories : includes,
1041 link_with : [lib_common, logindefs_c],
1042 dependencies : [lib_pam,
1046 install_mode : 'rwsr-xr-x',
1048 build_by_default : opt)
1049 if opt and not is_disabler(exe)
1051 manadocs += ['login-utils/su.1.adoc']
1052 bashcompletions += ['su']
1055 opt = not get_option('build-newgrp').disabled()
1058 'login-utils/newgrp.c',
1059 include_directories : includes,
1060 dependencies : [lib_crypt],
1061 install_dir : usrbin_exec_dir,
1062 install_mode : 'rwsr-xr-x',
1064 build_by_default : opt)
1065 if opt and not is_disabler(exe)
1067 manadocs += ['login-utils/newgrp.1.adoc']
1068 bashcompletions += ['newgrp']
1071 opt = not get_option('build-lslogins').disabled()
1074 'login-utils/lslogins.c',
1075 include_directories : includes,
1076 link_with : [lib_common,
1079 dependencies : [lib_selinux,
1081 install_dir : usrbin_exec_dir,
1083 build_by_default : opt)
1084 if opt and not is_disabler(exe)
1086 manadocs += ['login-utils/lslogins.1.adoc']
1087 bashcompletions += ['lslogins']
1090 opt = not get_option('build-vipw').disabled()
1093 'login-utils/vipw.c',
1094 'login-utils/setpwnam.h',
1095 include_directories : includes,
1096 link_with : [lib_common],
1097 dependencies : [lib_selinux],
1098 install_dir : usrbin_exec_dir,
1100 build_by_default : opt)
1101 if opt and not is_disabler(exe)
1103 meson.add_install_script(meson_make_symlink,
1105 join_paths(usrbin_exec_dir, 'vigr'))
1106 manadocs += ['login-utils/vipw.8.adoc']
1107 meson.add_install_script(meson_make_symlink,
1109 join_paths(mandir, 'man8/vigr.8'))
1112 opt = not get_option('build-runuser').disabled()
1115 'login-utils/runuser.c',
1116 'login-utils/su-common.c',
1117 'login-utils/su-common.h',
1121 include_directories : includes,
1122 link_with : [lib_common, logindefs_c],
1123 dependencies : [lib_pam,
1127 install_dir : sbindir,
1129 build_by_default : opt)
1130 if opt and not is_disabler(exe)
1132 manadocs += ['login-utils/runuser.1.adoc']
1133 bashcompletionslinks += {'runuser': 'su'}
1136 ############################################################
1142 include_directories : includes,
1143 link_with : lib_common,
1144 install_dir : usrbin_exec_dir,
1147 manadocs += ['text-utils/col.1.adoc']
1148 bashcompletions += ['col']
1154 include_directories : includes,
1155 install_dir : usrbin_exec_dir,
1158 manadocs += ['text-utils/colcrt.1.adoc']
1159 bashcompletions += ['colcrt']
1164 include_directories : includes,
1165 link_with : lib_common,
1166 install_dir : usrbin_exec_dir,
1169 manadocs += ['text-utils/colrm.1.adoc']
1170 bashcompletions += ['colrm']
1175 include_directories : includes,
1176 install_dir : usrbin_exec_dir,
1179 manadocs += ['text-utils/rev.1.adoc']
1180 bashcompletions += ['rev']
1185 include_directories : includes,
1186 link_with : [lib_common,
1188 install_dir : usrbin_exec_dir,
1190 if not is_disabler(exe)
1192 manadocs += ['text-utils/column.1.adoc']
1193 bashcompletions += ['column']
1196 opt = not get_option('build-line').disabled()
1200 include_directories : includes,
1201 install_dir : usrbin_exec_dir,
1203 build_by_default : opt)
1204 if opt and not is_disabler(exe)
1206 manadocs += ['text-utils/line.1.adoc']
1209 opt = not get_option('build-pg').disabled()
1213 link_with : lib_common,
1214 include_directories : includes,
1215 dependencies : [lib_tinfo,
1217 install_dir : usrbin_exec_dir,
1219 build_by_default : opt)
1220 if opt and not is_disabler(exe)
1222 manadocs += ['text-utils/pg.1.adoc']
1223 bashcompletions += ['pg']
1226 opt = not get_option('build-ul').disabled()
1230 include_directories : includes,
1231 dependencies : [lib_tinfo,
1233 install_dir : usrbin_exec_dir,
1235 build_by_default : opt)
1236 if opt and not is_disabler(exe)
1238 manadocs += ['text-utils/ul.1.adoc']
1239 bashcompletions += ['ul']
1242 opt = not get_option('build-more').disabled()
1246 link_with : [lib_common],
1247 include_directories : includes,
1248 dependencies : [lib_tinfo,
1252 build_by_default : opt)
1256 link_with : [lib_common],
1257 include_directories : includes,
1258 c_args : '-DTEST_PROGRAM',
1259 dependencies : [lib_tinfo,
1262 build_by_default : opt and program_tests)
1264 if opt and not is_disabler(exe)
1266 manadocs += ['text-utils/more.1.adoc']
1267 bashcompletions += ['more']
1273 include_directories : includes,
1274 link_with : [lib_common,
1276 install_dir : usrbin_exec_dir,
1278 if not is_disabler(exe)
1280 manadocs += ['text-utils/hexdump.1.adoc']
1281 bashcompletions += ['hexdump']
1284 opt = not get_option('build-lsmem').disabled()
1288 include_directories : includes,
1289 link_with : [lib_common,
1291 install_dir : usrbin_exec_dir,
1293 build_by_default : opt)
1294 if opt and not is_disabler(exe)
1296 manadocs += ['sys-utils/lsmem.1.adoc']
1297 bashcompletions += ['lsmem']
1300 opt = not get_option('build-chmem').disabled()
1304 include_directories : includes,
1305 link_with : [lib_common],
1306 install_dir : usrbin_exec_dir,
1308 build_by_default : opt)
1309 if opt and not is_disabler(exe)
1311 manadocs += ['sys-utils/chmem.8.adoc']
1312 bashcompletions += ['chmem']
1318 include_directories : includes,
1319 link_with : [lib_common],
1320 install_dir : usrbin_exec_dir,
1323 manadocs += ['sys-utils/choom.1.adoc']
1328 include_directories : includes,
1329 link_with : [lib_common],
1330 install_dir : usrbin_exec_dir,
1333 manadocs += ['sys-utils/ipcmk.1.adoc']
1334 bashcompletions += ['ipcmk']
1339 include_directories : includes,
1340 link_with : [lib_common],
1341 install_dir : usrbin_exec_dir,
1344 manadocs += ['sys-utils/ipcrm.1.adoc']
1345 bashcompletions += ['ipcrm']
1347 opt = not get_option('build-ipcs').disabled()
1351 include_directories : includes,
1352 link_with : [lib_common],
1353 install_dir : usrbin_exec_dir,
1355 build_by_default : opt)
1356 if opt and not is_disabler(exe)
1358 manadocs += ['sys-utils/ipcs.1.adoc']
1359 bashcompletions += ['ipcs']
1362 opt = not get_option('build-rfkill').disabled()
1366 include_directories : includes,
1367 link_with : [lib_common,
1369 install_dir : usrsbin_exec_dir,
1371 build_by_default : opt)
1372 if opt and not is_disabler(exe)
1374 manadocs += ['sys-utils/rfkill.8.adoc']
1375 bashcompletions += ['rfkill']
1381 include_directories : includes,
1382 link_with : [lib_common,
1384 install_dir : usrbin_exec_dir,
1386 if not is_disabler(exe)
1388 manadocs += ['sys-utils/renice.1.adoc']
1389 bashcompletions += ['renice']
1395 include_directories: includes,
1396 link_with : [lib_common,
1398 install_dir : usrbin_exec_dir,
1400 if opt and not is_disabler(exe)
1402 manadocs += ['sys-utils/setpgid.1.adoc']
1403 bashcompletions += ['setpgid']
1409 include_directories : includes,
1410 link_with : [lib_common,
1412 install_dir : usrbin_exec_dir,
1414 if opt and not is_disabler(exe)
1416 manadocs += ['sys-utils/setsid.1.adoc']
1417 bashcompletions += ['setsid']
1422 readprofile_sources,
1423 include_directories : includes,
1424 link_with : [lib_common,
1426 install_dir : usrsbin_exec_dir,
1428 if not is_disabler(exe)
1430 manadocs += ['sys-utils/readprofile.8.adoc']
1431 bashcompletions += ['readprofile']
1434 opt = not get_option('build-tunelp').disabled()
1438 include_directories : includes,
1439 link_with : [lib_common],
1440 install_dir : usrsbin_exec_dir,
1442 build_by_default : opt)
1443 if opt and not is_disabler(exe)
1445 manadocs += ['sys-utils/tunelp.8.adoc']
1446 bashcompletions += ['tunelp']
1452 include_directories : includes,
1453 link_with : [lib_common,
1455 install_dir : sbindir,
1457 if not is_disabler(exe)
1459 manadocs += ['sys-utils/fstrim.8.adoc']
1460 bashcompletions += ['fstrim']
1466 include_directories : includes,
1467 link_with : [lib_common,
1470 if not is_disabler(exe)
1472 manadocs += ['sys-utils/dmesg.1.adoc']
1473 bashcompletions += ['dmesg']
1479 include_directories : dir_include,
1480 c_args : '-DTEST_DMESG',
1481 link_with : [lib_common,
1483 build_by_default : program_tests)
1484 if not is_disabler(exe)
1491 include_directories : includes,
1492 link_with : [lib_common],
1493 install_dir : sbindir,
1496 manadocs += ['sys-utils/ctrlaltdel.8.adoc']
1497 bashcompletions += ['ctrlaltdel']
1502 include_directories : includes,
1503 install_dir : sbindir,
1506 manadocs += ['sys-utils/fsfreeze.8.adoc']
1507 bashcompletions += ['fsfreeze']
1512 include_directories : includes,
1513 link_with : [lib_common,
1515 install_dir : sbindir,
1518 manadocs += ['sys-utils/blkdiscard.8.adoc']
1519 bashcompletions += ['blkdiscard']
1524 include_directories : includes,
1525 link_with : [lib_common],
1526 install_dir : sbindir,
1529 manadocs += ['sys-utils/blkzone.8.adoc']
1530 bashcompletions += ['blkzone']
1535 include_directories : includes,
1536 link_with : [lib_common],
1537 install_dir : sbindir,
1540 manadocs += ['sys-utils/blkpr.8.adoc']
1545 include_directories : includes,
1546 link_with : [lib_common],
1547 install_dir : usrsbin_exec_dir,
1550 manadocs += ['sys-utils/ldattach.8.adoc']
1551 bashcompletions += ['ldattach']
1556 include_directories : includes,
1557 link_with : [lib_common],
1558 install_dir : usrsbin_exec_dir,
1561 manadocs += ['sys-utils/rtcwake.8.adoc']
1562 bashcompletions += ['rtcwake']
1567 include_directories : includes,
1568 link_with : [lib_common],
1569 install_dir : usrbin_exec_dir,
1572 manadocs += ['sys-utils/setarch.8.adoc']
1573 bashcompletions += ['setarch']
1575 setarch_links = ['uname26', 'linux32', 'linux64']
1576 setarch_links_arch = {
1577 's390x' : ['s390', 's390x'],
1579 'x86_64' : ['i386', 'x86_64'],
1580 'ppc64' : ['ppc', 'ppc64', 'ppc32'],
1581 'space64' : ['sparc', 'sparc64', 'sparc32', 'sparc32bash'],
1582 'mips64' : ['mips', 'mips64', 'mips32'],
1583 'ia64' : ['i386', 'ia64'],
1584 'hppa' : ['parisc', 'parisc64', 'parisc32'],
1586 setarch_links += setarch_links_arch.get(host_machine.cpu_family(), [])
1588 foreach link: setarch_links
1589 meson.add_install_script(meson_make_symlink,
1591 join_paths(usrbin_exec_dir, link))
1592 manlinks += {link + '.8': 'setarch.8'}
1595 opt = not get_option('build-eject').disabled()
1599 include_directories : includes,
1600 link_with : [lib_common,
1602 install_dir : usrbin_exec_dir,
1604 build_by_default : opt)
1605 if opt and not is_disabler(exe)
1607 manadocs += ['sys-utils/eject.1.adoc']
1608 bashcompletions += ['eject']
1611 opt = not get_option('build-losetup').disabled()
1615 include_directories : includes,
1616 link_with : [lib_common,
1618 install_dir : sbindir,
1620 build_by_default : opt)
1621 if opt and not is_disabler(exe)
1622 manadocs += ['sys-utils/losetup.8.adoc']
1624 bashcompletions += ['losetup']
1627 opt = opt and 'losetup' in static_programs
1631 include_directories : includes,
1632 link_args : ['--static'],
1633 link_with : [lib_common,
1634 lib_smartcols.get_static_lib()],
1635 install_dir : sbindir,
1637 build_by_default : opt)
1638 if opt and not is_disabler(exe)
1642 opt = not get_option('build-zramctl').disabled()
1646 include_directories : includes,
1647 link_with : [lib_common,
1649 install_dir : sbindir,
1651 build_by_default : opt)
1652 if opt and not is_disabler(exe)
1654 manadocs += ['sys-utils/zramctl.8.adoc']
1655 bashcompletions += ['zramctl']
1661 include_directories : includes,
1662 link_with : [lib_common,
1664 install_dir : usrbin_exec_dir,
1666 if not is_disabler(exe)
1668 manadocs += ['sys-utils/prlimit.1.adoc']
1669 bashcompletions += ['prlimit']
1675 include_directories : includes,
1676 link_with : [lib_common,
1679 install_dir : usrbin_exec_dir,
1681 if not is_disabler(exe)
1683 manadocs += ['sys-utils/lsns.8.adoc']
1684 bashcompletions += ['lsns']
1687 opt = not get_option('build-mount').disabled()
1691 include_directories : includes,
1692 link_with : [lib_common,
1695 dependencies : lib_selinux,
1696 install_mode : 'rwsr-xr-x',
1698 build_by_default : opt)
1702 include_directories : includes,
1703 link_with : [lib_common,
1705 install_mode : 'rwsr-xr-x',
1707 build_by_default : opt)
1708 if opt and not is_disabler(exe)
1710 manadocs += ['sys-utils/fstab.5.adoc',
1711 'sys-utils/mount.8.adoc',
1712 'sys-utils/umount.8.adoc']
1713 bashcompletions += ['mount', 'umount']
1716 opt2 = opt and 'mount' in static_programs
1720 include_directories : includes,
1721 link_args : ['--static'],
1722 link_with : [lib_common,
1723 lib_smartcols_static,
1726 build_by_default : opt2)
1727 if opt2 and not is_disabler(exe)
1731 opt2 = opt and 'umount' in static_programs
1735 include_directories : includes,
1736 link_args : ['--static'],
1737 link_with : [lib_common,
1740 build_by_default : opt2)
1741 if opt2 and not is_disabler(exe)
1750 include_directories : includes,
1751 link_with : [lib_common,
1755 install_dir : sbindir,
1757 if not is_disabler(exe)
1759 manadocs += ['sys-utils/swapon.8.adoc']
1760 bashcompletions += ['swapon']
1766 include_directories : includes,
1767 link_with : [lib_common,
1770 install_dir : sbindir,
1772 if not is_disabler(exe)
1774 manlinks += {'swapoff.8': 'swapon.8'}
1775 bashcompletions += ['swapoff']
1781 include_directories : includes,
1782 link_with : [lib_common,
1784 dependencies : [rtas_libs],
1785 install_dir : usrbin_exec_dir,
1787 if not is_disabler(exe)
1789 manadocs += ['sys-utils/lscpu.1.adoc']
1790 bashcompletions += ['lscpu']
1796 include_directories : includes,
1797 link_with : [lib_common],
1798 install_dir : sbindir,
1801 manadocs += ['sys-utils/chcpu.8.adoc']
1802 bashcompletions += ['chcpu']
1807 include_directories : includes,
1808 link_with : [lib_common,
1811 if not is_disabler(exe)
1813 manadocs += ['sys-utils/wdctl.8.adoc']
1814 bashcompletions += ['wdctl']
1817 opt = not get_option('build-mountpoint').disabled()
1821 include_directories : includes,
1822 link_with : [lib_mount],
1824 build_by_default : opt)
1825 if opt and not is_disabler(exe)
1827 manadocs += ['sys-utils/mountpoint.1.adoc']
1828 bashcompletions += ['mountpoint']
1831 opt = not get_option('build-fallocate').disabled()
1835 include_directories : includes,
1836 link_with : [lib_common],
1837 install_dir : usrbin_exec_dir,
1839 build_by_default : opt)
1840 if opt and not is_disabler(exe)
1842 manadocs += ['sys-utils/fallocate.1.adoc']
1843 bashcompletions += ['fallocate']
1846 opt = not get_option('build-pivot_root').disabled()
1850 include_directories : includes,
1851 install_dir : sbindir,
1853 build_by_default : opt)
1854 if opt and not is_disabler(exe)
1856 manadocs += ['sys-utils/pivot_root.8.adoc']
1857 bashcompletions += ['pivot_root']
1860 opt = not get_option('build-switch_root').disabled()
1861 if opt and not have_dirfd and not have_ddfd
1862 error('neither dirfd nor ddfd are available')
1866 switch_root_sources,
1867 include_directories : includes,
1868 install_dir : sbindir,
1870 build_by_default : opt)
1871 if opt and not is_disabler(exe)
1873 manadocs += ['sys-utils/switch_root.8.adoc']
1876 opt = not get_option('build-unshare').disabled()
1880 include_directories : includes,
1881 link_with : [lib_common],
1882 install_dir : usrbin_exec_dir,
1884 build_by_default : opt)
1885 if opt and not is_disabler(exe)
1887 manadocs += ['sys-utils/unshare.1.adoc']
1888 bashcompletions += ['unshare']
1891 opt = opt and 'unshare' in static_programs
1895 include_directories : includes,
1896 link_with : [lib_common],
1897 install_dir : usrbin_exec_dir,
1899 build_by_default : opt)
1900 if opt and not is_disabler(exe)
1904 opt = not get_option('build-nsenter').disabled()
1908 include_directories : includes,
1909 link_with : [lib_common],
1910 dependencies : [lib_selinux],
1911 install_dir : usrbin_exec_dir,
1913 build_by_default : opt)
1914 if opt and not is_disabler(exe)
1916 manadocs += ['sys-utils/nsenter.1.adoc']
1917 bashcompletions += ['nsenter']
1920 opt = opt and 'nsenter' in static_programs
1924 include_directories : includes,
1925 link_with : [lib_common],
1926 dependencies : [lib_selinux],
1927 install_dir : usrbin_exec_dir,
1929 build_by_default : opt)
1930 if opt and not is_disabler(exe)
1934 opt = not get_option('build-setpriv').disabled() and lib_cap_ng.found()
1938 include_directories : includes,
1939 link_with : [lib_common],
1940 dependencies : [lib_cap_ng],
1941 install_dir : usrbin_exec_dir,
1943 build_by_default : opt)
1944 if opt and not is_disabler(exe)
1946 manadocs += ['sys-utils/setpriv.1.adoc']
1947 bashcompletions += ['setpriv']
1953 include_directories : includes,
1954 link_with : [lib_common],
1955 dependencies : realtime_libs,
1956 install_dir : usrbin_exec_dir,
1959 manadocs += ['sys-utils/flock.1.adoc']
1960 bashcompletions += ['flock']
1962 opt = not get_option('build-lsirq').disabled()
1966 include_directories : includes,
1967 link_with : [lib_common,
1969 install_dir : usrbin_exec_dir,
1971 build_by_default : opt)
1972 if opt and not is_disabler(exe)
1974 manadocs += ['sys-utils/lsirq.1.adoc']
1975 bashcompletions += ['lsirq']
1978 opt = not get_option('build-irqtop').disabled()
1982 include_directories : includes,
1983 dependencies : [realtime_libs, curses_libs],
1984 link_with : [lib_common,
1987 install_dir : usrbin_exec_dir,
1989 build_by_default : opt)
1990 if opt and not is_disabler(exe)
1992 manadocs += ['sys-utils/irqtop.1.adoc']
1993 bashcompletions += ['irqtop']
1996 opt = not get_option('build-ipcs').disabled()
2000 include_directories : includes,
2001 link_with : [lib_common,
2003 install_dir : usrbin_exec_dir,
2005 build_by_default : opt)
2006 if opt and not is_disabler(exe)
2008 manadocs += ['sys-utils/lsipc.1.adoc']
2009 bashcompletions += ['lsipc']
2016 include_directories : includes,
2017 link_with : [lib_common],
2018 dependencies : [lib_m,
2020 install_dir : sbindir,
2022 build_by_default : opt)
2023 if opt and not is_disabler(exe)
2025 manadocs += ['sys-utils/hwclock.8.adoc', 'sys-utils/adjtime_config.5.adoc']
2026 bashcompletions += ['hwclock']
2032 include_directories : includes,
2033 install_dir : sbindir,
2036 manadocs += ['disk-utils/mkfs.8.adoc']
2037 bashcompletions += ['mkfs']
2039 opt = not get_option('build-bfs').disabled()
2043 include_directories : includes,
2044 link_with : [lib_common],
2045 install_dir : sbindir,
2047 build_by_default : opt)
2048 if opt and not is_disabler(exe)
2050 manadocs += ['disk-utils/mkfs.bfs.8.adoc']
2051 bashcompletions += ['mkfs.bfs']
2057 include_directories : includes,
2058 link_with : [lib_common],
2059 install_dir : usrbin_exec_dir,
2062 manadocs += ['disk-utils/isosize.8.adoc']
2063 bashcompletions += ['isosize']
2068 include_directories : includes,
2069 link_with : [lib_common,
2072 dependencies: [lib_selinux],
2073 install_dir : sbindir,
2075 if opt and not is_disabler(exe)
2077 manadocs += ['disk-utils/mkswap.8.adoc']
2078 bashcompletions += ['mkswap']
2084 include_directories : includes,
2085 link_with : [lib_common,
2088 install_dir : sbindir,
2090 if opt and not is_disabler(exe)
2092 manadocs += ['disk-utils/swaplabel.8.adoc']
2093 bashcompletions += ['swaplabel']
2096 opt = not get_option('build-fsck').disabled()
2100 include_directories : includes,
2101 link_with : [lib_common,
2104 dependencies : realtime_libs,
2105 install_dir : sbindir,
2107 build_by_default : opt)
2108 if opt and not is_disabler(exe)
2110 manadocs += ['disk-utils/fsck.8.adoc']
2111 bashcompletions += ['fsck']
2114 opt = not get_option('build-minix').disabled()
2118 include_directories : includes,
2119 link_with : [lib_common],
2120 install_dir : sbindir,
2122 build_by_default : opt)
2126 include_directories : includes,
2127 c_args : '-DTEST_SCRIPT',
2128 link_with : [lib_common],
2129 build_by_default : opt and program_tests)
2133 include_directories : includes,
2134 link_with : [lib_common],
2135 install_dir : sbindir,
2137 build_by_default : opt)
2138 if opt and not is_disabler(exe)
2139 exes += [exe, exe2, exe3]
2140 manadocs += ['disk-utils/mkfs.minix.8.adoc','disk-utils/fsck.minix.8.adoc']
2141 bashcompletions += ['mkfs.minix', 'fsck.minix']
2144 opt = not get_option('build-cramfs').disabled()
2147 mkfs_cramfs_sources,
2148 include_directories : includes,
2149 link_with : [lib_common],
2150 dependencies : [lib_z],
2151 install_dir : sbindir,
2153 build_by_default : opt)
2156 fsck_cramfs_sources,
2157 include_directories : includes,
2158 link_with : [lib_common],
2159 dependencies : [lib_z],
2160 install_dir : sbindir,
2162 build_by_default : opt)
2163 if not is_disabler(exe)
2165 manadocs += ['disk-utils/mkfs.cramfs.8.adoc','disk-utils/fsck.cramfs.8.adoc']
2166 bashcompletions += ['mkfs.cramfs', 'fsck.cramfs']
2169 opt = not get_option('build-raw').disabled()
2171 cc.has_header('linux/raw.h', required: opt)
2176 include_directories : includes,
2177 install_dir : sbindir,
2179 build_by_default : opt)
2180 if opt and not is_disabler(exe)
2182 manadocs += ['disk-utils/raw.8.adoc']
2183 bashcompletions += ['raw']
2186 opt = not get_option('build-fdformat').disabled()
2190 include_directories : includes,
2191 link_with : [lib_common],
2192 install_dir : usrsbin_exec_dir,
2194 build_by_default : opt)
2195 if opt and not is_disabler(exe)
2197 manadocs += ['disk-utils/fdformat.8.adoc']
2203 include_directories : includes,
2204 link_with : [lib_common],
2205 install_dir : sbindir,
2207 manadocs += ['disk-utils/blockdev.8.adoc']
2208 bashcompletions += ['blockdev']
2210 opt = not get_option('build-fdisks').disabled()
2211 if opt and not have_dirfd and not have_ddfd
2212 error('neither dirfd nor ddfd are available')
2217 include_directories : includes,
2218 link_with : [lib_common,
2222 dependencies : [lib_readline],
2223 install_dir : sbindir,
2225 build_by_default : opt)
2226 if opt and not is_disabler(exe)
2228 bashcompletions += ['fdisk']
2231 opt2 = opt and 'fdisk' in static_programs
2235 link_args : ['--static'],
2236 include_directories : includes,
2237 link_with : [lib_common,
2240 lib_smartcols.get_static_lib()],
2241 dependencies : [lib_readline_static],
2242 install_dir : sbindir,
2244 build_by_default : opt2)
2245 if opt2 and not is_disabler(exe)
2252 include_directories : includes,
2253 link_with : [lib_common,
2257 dependencies : [lib_readline],
2258 install_dir : sbindir,
2260 build_by_default : opt)
2261 if opt and not is_disabler(exe)
2263 bashcompletions += ['sfdisk']
2266 opt2 = opt and 'sfdisk' in static_programs
2270 include_directories : includes,
2271 link_with : [lib_common,
2274 lib_smartcols.get_static_lib()],
2275 dependencies : [lib_readline_static],
2276 install_dir : sbindir,
2278 build_by_default : opt2)
2279 if opt2 and not is_disabler(exe)
2286 include_directories : includes,
2287 link_with : [lib_common,
2292 dependencies : [curses_libs],
2293 install_dir : sbindir,
2295 build_by_default : opt)
2296 if opt and not is_disabler(exe)
2298 manadocs += ['disk-utils/fdisk.8.adoc',
2299 'disk-utils/sfdisk.8.adoc',
2300 'disk-utils/cfdisk.8.adoc']
2301 bashcompletions += ['cfdisk']
2304 opt = not get_option('build-partx').disabled()
2308 include_directories : includes,
2309 link_with : [lib_common],
2310 install_dir : usrsbin_exec_dir,
2312 build_by_default : opt)
2316 include_directories : includes,
2317 link_with : [lib_common],
2318 install_dir : usrsbin_exec_dir,
2320 build_by_default : opt)
2324 include_directories : includes,
2325 link_with : [lib_common],
2326 install_dir : usrsbin_exec_dir,
2328 build_by_default : opt)
2332 include_directories : includes,
2333 link_with : [lib_common,
2336 install_dir : usrsbin_exec_dir,
2338 build_by_default : opt)
2340 exes += [exe, exe2, exe3, exe4]
2341 manadocs += ['disk-utils/addpart.8.adoc',
2342 'disk-utils/delpart.8.adoc',
2343 'disk-utils/resizepart.8.adoc',
2344 'disk-utils/partx.8.adoc']
2345 bashcompletions += ['addpart', 'delpart', 'resizepart', 'partx']
2348 ############################################################
2353 include_directories : includes,
2354 link_with : [lib_common],
2355 dependencies : [lib_util,
2359 install_dir : usrbin_exec_dir,
2362 manadocs += ['term-utils/script.1.adoc']
2363 bashcompletions += ['script']
2368 include_directories : includes,
2369 c_args : '-DTEST_SCRIPT',
2370 link_with : [lib_common],
2371 dependencies : [lib_util,
2375 build_by_default : program_tests)
2381 include_directories : includes,
2382 link_with : [lib_common],
2383 dependencies : [lib_util,
2386 install_dir : usrbin_exec_dir,
2389 manadocs += ['term-utils/scriptlive.1.adoc']
2390 bashcompletions += ['scriptlive']
2394 scriptreplay_sources,
2395 include_directories : includes,
2396 link_with : [lib_common],
2397 dependencies : [math_libs],
2398 install_dir : usrbin_exec_dir,
2401 manadocs += ['term-utils/scriptreplay.1.adoc']
2402 bashcompletions += ['scriptreplay']
2404 opt = not get_option('build-agetty').disabled()
2408 include_directories : includes,
2409 link_with : [lib_common, logindefs_c],
2410 dependencies : [BSD ? lib_util : [], lib_systemd],
2411 install_dir : sbindir,
2413 build_by_default : opt)
2416 manadocs += ['term-utils/agetty.8.adoc']
2419 opt = not get_option('build-setterm').disabled()
2423 include_directories : includes,
2424 link_with : [lib_common],
2425 dependencies : [curses_libs],
2426 install_dir : usrbin_exec_dir,
2428 build_by_default : opt)
2431 manadocs += ['term-utils/setterm.1.adoc']
2432 bashcompletions += ['setterm']
2435 opt = not get_option('build-mesg').disabled()
2439 include_directories : includes,
2440 link_with : [lib_common],
2441 install_dir : usrbin_exec_dir,
2443 build_by_default : opt)
2446 manadocs += ['term-utils/mesg.1.adoc']
2447 bashcompletions += ['mesg']
2450 opt = not get_option('build-wall').disabled()
2454 include_directories : includes,
2455 link_with : [lib_common],
2456 dependencies : [lib_systemd],
2457 install_dir : usrbin_exec_dir,
2458 install_mode : [ 'rwxr-sr-x', 'root', 'tty' ],
2460 build_by_default : opt)
2463 manadocs += ['term-utils/wall.1.adoc']
2464 bashcompletions += ['wall']
2467 # chgrp tty $(DESTDIR)$(usrbin_execdir)/wall
2468 # chmod g+s $(DESTDIR)$(usrbin_execdir)/wall
2470 opt = not get_option('build-write').disabled()
2474 include_directories : includes,
2475 link_with : [lib_common],
2476 dependencies : [lib_systemd],
2477 install_dir : usrbin_exec_dir,
2478 install_mode : [ 'rwxr-sr-x', 'root', 'tty' ],
2480 build_by_default : opt)
2483 manadocs += ['term-utils/write.1.adoc']
2484 bashcompletions += ['write']
2487 # chgrp tty $(DESTDIR)$(usrbin_execdir)/write
2488 # chmod g+s $(DESTDIR)$(usrbin_execdir)/write
2490 opt = not get_option('build-login').disabled()
2494 include_directories : includes,
2495 link_with : [lib_common, logindefs_c],
2496 dependencies : [lib_pam,
2500 build_by_default : opt)
2501 if not is_disabler(exe)
2503 manadocs += ['login-utils/login.1.adoc']
2506 opt = not get_option('build-sulogin').disabled()
2510 include_directories : includes,
2511 link_with : [lib_common],
2512 dependencies : [lib_crypt,
2514 install_dir : sbindir,
2516 build_by_default : opt)
2517 if not is_disabler(exe)
2519 manadocs += ['login-utils/sulogin.8.adoc']
2525 include_directories : includes,
2526 link_with : [lib_common,
2528 dependencies : [curses_libs],
2529 install_dir : usrbin_exec_dir,
2532 manadocs += ['misc-utils/cal.1.adoc']
2533 bashcompletions += ['cal']
2535 opt = not get_option('build-logger').disabled()
2539 include_directories : includes,
2540 link_with : [lib_common],
2541 dependencies : [lib_systemd],
2542 install_dir : usrbin_exec_dir,
2544 build_by_default : opt)
2545 if opt and not is_disabler(exe)
2547 manadocs += ['misc-utils/logger.1.adoc']
2548 bashcompletions += ['logger']
2554 include_directories : includes,
2555 c_args : '-DTEST_LOGGER',
2556 link_with : [lib_common],
2557 dependencies : [lib_systemd],
2558 build_by_default: program_tests)
2559 if not is_disabler(exe)
2566 include_directories : includes,
2567 install_dir : usrbin_exec_dir,
2570 manadocs += ['misc-utils/look.1.adoc']
2571 bashcompletions += ['look']
2576 include_directories : includes,
2577 link_with : [lib_common],
2578 install_dir : usrbin_exec_dir,
2581 manadocs += ['misc-utils/mcookie.1.adoc']
2582 bashcompletions += ['mcookie']
2587 include_directories : includes,
2588 dependencies : [lib_selinux],
2589 install_dir : usrbin_exec_dir,
2592 manadocs += ['misc-utils/namei.1.adoc']
2593 bashcompletions += ['namei']
2598 include_directories : includes,
2599 link_with : [lib_common],
2600 install_dir : usrbin_exec_dir,
2603 manadocs += ['misc-utils/whereis.1.adoc']
2604 bashcompletions += ['whereis']
2609 include_directories : includes,
2610 link_with : [lib_common,
2613 install_dir : usrbin_exec_dir,
2615 if not is_disabler(exe)
2617 manadocs += ['misc-utils/lslocks.8.adoc']
2618 bashcompletions += ['lslocks']
2624 include_directories : includes,
2625 link_with : [lib_common,
2630 dependencies : lib_udev,
2632 if not is_disabler(exe)
2634 manadocs += ['misc-utils/lsblk.8.adoc']
2635 bashcompletions += ['lsblk']
2639 mq_libs += cc.find_library('rt', required : true)
2644 include_directories : includes,
2645 link_with : [lib_common,
2647 dependencies : mq_libs,
2648 install_dir : usrbin_exec_dir,
2650 if not is_disabler(exe)
2652 manadocs += ['misc-utils/lsfd.1.adoc']
2658 include_directories : includes,
2659 link_with : [lib_common,
2661 install_dir : usrbin_exec_dir,
2663 if not is_disabler(exe)
2665 manadocs += ['misc-utils/uuidgen.1.adoc']
2666 bashcompletions += ['uuidgen']
2672 include_directories : includes,
2673 link_with : [lib_common,
2676 install_dir : usrbin_exec_dir,
2678 if not is_disabler(exe)
2680 manadocs += ['misc-utils/uuidparse.1.adoc']
2681 bashcompletions += ['uuidparse']
2688 include_directories : includes,
2689 link_with : [lib_common,
2691 dependencies : [realtime_libs,
2693 install_dir : usrsbin_exec_dir,
2695 build_by_default : opt)
2699 include_directories : includes,
2700 link_with : [lib_common,
2702 dependencies : thread_libs,
2703 build_by_default : opt and program_tests)
2704 if not is_disabler(exe)
2706 manadocs += ['misc-utils/uuidd.8.adoc']
2707 bashcompletions += ['uuidd']
2710 opt = build_libblkid
2714 include_directories : includes,
2715 link_with : [lib_common,
2717 install_dir : sbindir,
2719 build_by_default : opt)
2720 if opt and not is_disabler(exe)
2722 manadocs += ['misc-utils/blkid.8.adoc']
2723 bashcompletions += ['blkid']
2726 opt = opt and 'blkid' in static_programs
2730 include_directories : includes,
2731 link_with : [lib_common,
2733 install_dir : sbindir,
2735 build_by_default : opt)
2736 if opt and not is_disabler(exe)
2742 'libblkid/samples/mkfs.c',
2743 include_directories : includes,
2744 link_with : lib_blkid)
2745 if not is_disabler(exe)
2750 'sample-partitions',
2751 'libblkid/samples/partitions.c',
2752 include_directories : includes,
2753 link_with : lib_blkid)
2754 if not is_disabler(exe)
2759 'sample-superblocks',
2760 'libblkid/samples/superblocks.c',
2761 include_directories : includes,
2762 link_with : lib_blkid)
2763 if not is_disabler(exe)
2769 'libblkid/samples/topology.c',
2770 include_directories : includes,
2771 link_with : lib_blkid)
2772 if not is_disabler(exe)
2777 'test_blkid_fuzz_sample',
2778 'libblkid/src/fuzz.c',
2779 include_directories: includes,
2780 link_with: lib_blkid,
2781 build_by_default: program_tests)
2782 if not is_disabler(exe)
2786 ############################################################
2791 include_directories : includes,
2792 link_with : [lib_blkid],
2793 install_dir : sbindir,
2795 if not is_disabler(exe)
2797 manadocs += ['misc-utils/findfs.8.adoc']
2798 bashcompletions += ['findfs']
2804 include_directories : includes,
2805 link_with : [lib_common,
2808 install_dir : sbindir,
2810 if not is_disabler(exe)
2812 manadocs += ['misc-utils/wipefs.8.adoc']
2813 bashcompletions += ['wipefs']
2819 include_directories : includes,
2820 link_with : [lib_common,
2824 dependencies : [lib_udev],
2826 if not is_disabler(exe)
2828 manadocs += ['misc-utils/findmnt.8.adoc']
2829 bashcompletions += ['findmnt']
2835 include_directories : includes,
2836 link_with : [lib_common],
2838 if not is_disabler(exe)
2840 manadocs += ['misc-utils/kill.1.adoc']
2843 opt = not get_option('build-rename').disabled()
2847 include_directories : includes,
2848 install_dir : usrbin_exec_dir,
2850 build_by_default : opt)
2851 if opt and not is_disabler(exe)
2853 manadocs += ['misc-utils/rename.1.adoc']
2854 bashcompletions += ['rename']
2860 include_directories : includes,
2861 link_with : [lib_common],
2862 install_dir : usrbin_exec_dir,
2865 manadocs += ['misc-utils/getopt.1.adoc']
2866 bashcompletions += ['getopt']
2871 include_directories : includes,
2872 link_with : [lib_common,
2874 install_dir : usrbin_exec_dir,
2876 if not is_disabler(exe)
2878 manadocs += ['misc-utils/fincore.1.adoc']
2879 bashcompletions += ['fincore']
2885 include_directories : includes,
2886 link_with : [lib_common],
2887 install_dir : usrbin_exec_dir,
2889 if not is_disabler(exe)
2891 manadocs += ['misc-utils/hardlink.1.adoc']
2892 bashcompletions += ['hardlink']
2895 opt = not get_option('build-pipesz').disabled()
2899 include_directories : includes,
2900 link_with : [lib_common],
2901 install_dir : usrbin_exec_dir,
2903 if opt and not is_disabler(exe)
2905 manadocs += ['misc-utils/pipesz.1.adoc']
2906 bashcompletions += ['pipesz']
2912 include_directories : includes,
2913 c_args : '-DTEST_CAL',
2914 link_with : [lib_common,
2916 dependencies : [curses_libs],
2917 build_by_default: program_tests)
2918 if not is_disabler(exe)
2925 include_directories : includes,
2926 link_with : [lib_common],
2927 install_dir : usrbin_exec_dir,
2929 if not is_disabler(exe)
2931 manadocs += ['misc-utils/fadvise.1.adoc']
2932 bashcompletions += ['fadvise']
2935 if LINUX and conf.get('HAVE_PIDFD_OPEN').to_string() == '1'
2939 include_directories : includes,
2940 link_with : [lib_common],
2941 install_dir : usrbin_exec_dir,
2943 if not is_disabler(exe)
2945 manadocs += ['misc-utils/waitpid.1.adoc']
2946 bashcompletions += ['waitpid']
2950 syscalls_h = custom_target('syscalls.h',
2951 input : 'tools/all_syscalls',
2952 output : 'syscalls.h',
2953 command : ['tools/all_syscalls', cc.cmd_array()]
2956 if cc.compiles(fs.read('include/audit-arch.h'), name : 'has AUDIT_ARCH_NATIVE')
2959 'misc-utils/enosys.c', syscalls_h,
2960 include_directories : includes,
2961 link_with : [lib_common],
2962 install_dir : usrbin_exec_dir,
2964 if not is_disabler(exe)
2966 manadocs += ['misc-utils/enosys.1.adoc']
2967 bashcompletions += ['enosys']
2974 include_directories : includes,
2975 link_with : [lib_common, lib_smartcols],
2976 install_dir : usrbin_exec_dir,
2978 if not is_disabler(exe)
2980 manadocs += ['misc-utils/lsclocks.1.adoc']
2981 bashcompletions += ['lsclocks']
2984 ############################################################
2986 opt = not get_option('build-schedutils').disabled()
2989 'schedutils/chrt.c',
2990 include_directories : includes,
2991 link_with : lib_common,
2992 install_dir : usrbin_exec_dir,
2994 build_by_default : opt)
2998 'schedutils/ionice.c',
2999 include_directories : includes,
3000 link_with : lib_common,
3001 install_dir : usrbin_exec_dir,
3003 build_by_default : opt)
3007 'schedutils/taskset.c',
3008 include_directories : includes,
3009 link_with : lib_common,
3010 install_dir : usrbin_exec_dir,
3012 build_by_default : opt)
3016 'schedutils/uclampset.c',
3017 include_directories : includes,
3018 link_with : lib_common,
3019 install_dir : usrbin_exec_dir,
3021 build_by_default : opt)
3023 if opt and not is_disabler(exe)
3024 exes += [exe, exe2, exe3, exe4]
3025 manadocs += ['schedutils/chrt.1.adoc',
3026 'schedutils/ionice.1.adoc',
3027 'schedutils/taskset.1.adoc',
3028 'schedutils/uclampset.1.adoc']
3029 bashcompletions += ['chrt', 'ionice', 'taskset', 'uclampset']
3032 ############################################################
3034 # TODO: when autotools compat is not needed, s/_/-/g in file names?
3039 c_args : ['-DTEST_PROGRAM_TTYUTILS'],
3040 include_directories : dir_include,
3041 link_with : lib_common,
3042 build_by_default: program_tests)
3048 c_args : ['-DTEST_PROGRAM_BLKDEV'],
3049 include_directories : dir_include,
3050 link_with : lib_common,
3051 build_by_default: program_tests)
3057 c_args : ['-DTEST_PROGRAM_ISMOUNTED'],
3058 include_directories : dir_include,
3059 link_with : lib_common,
3060 build_by_default: program_tests)
3066 c_args : ['-DTEST_PROGRAM_MANGLE'],
3067 include_directories : dir_include,
3068 build_by_default: program_tests)
3074 c_args : ['-DTEST_PROGRAM_STRUTILS'],
3075 include_directories : dir_include,
3076 build_by_default: program_tests)
3082 'lib/color-names.c',
3083 c_args : ['-DTEST_PROGRAM_COLORS'],
3084 include_directories : dir_include,
3085 link_with : [lib_common, lib_tcolors],
3086 build_by_default: program_tests)
3092 c_args : ['-DTEST_PROGRAM_RANDUTILS'],
3093 include_directories : dir_include,
3094 build_by_default: program_tests)
3097 if conf.get('HAVE_OPENAT').to_string() == '1' \
3098 and conf.get('HAVE_DIRFD').to_string() == '1'
3102 c_args : ['-DTEST_PROGRAM_PROCFS'],
3103 include_directories : dir_include,
3104 link_with : lib_common,
3105 build_by_default: program_tests)
3112 have_cpu_set_t ? 'lib/cpuset.c' : [],
3113 c_args : ['-DTEST_PROGRAM_PATH'],
3114 include_directories : dir_include,
3115 link_with : lib_common,
3116 build_by_default: program_tests)
3120 if conf.get('HAVE_PTY').to_string() == '1'
3125 c_args : ['-DTEST_PROGRAM_PTY'],
3126 include_directories : dir_include,
3127 link_with : [lib_common],
3128 dependencies : [lib_m,
3131 build_by_default: program_tests)
3139 c_args : ['-DTEST_PROGRAM_CPUSET'],
3140 include_directories : dir_include,
3141 build_by_default: program_tests)
3152 have_cpu_set_t ? 'lib/cpuset.c' : [],
3153 c_args : ['-DTEST_PROGRAM_SYSFS'],
3154 include_directories : dir_include,
3155 build_by_default: program_tests)
3161 c_args : ['-DTEST_PROGRAM_PAGER'],
3162 include_directories : dir_include,
3163 build_by_default: program_tests)
3167 'test_linux_version',
3168 'lib/linux_version.c',
3169 c_args : ['-DTEST_PROGRAM_LINUXVERSION'],
3170 include_directories : dir_include,
3171 build_by_default: program_tests)
3177 c_args : ['-DTEST_PROGRAM_FILEUTILS'],
3178 include_directories : dir_include,
3179 build_by_default: program_tests)
3183 'test_canonicalize',
3184 'lib/canonicalize.c',
3185 c_args : ['-DTEST_PROGRAM_CANONICALIZE'],
3186 include_directories : dir_include,
3187 build_by_default: program_tests)
3194 c_args : ['-DTEST_PROGRAM_TIMEUTILS'],
3195 include_directories : dir_include,
3196 build_by_default: program_tests)
3202 c_args : ['-DTEST_PROGRAM'],
3203 include_directories : dir_include,
3204 link_with : lib_common,
3205 build_by_default: program_tests)
3211 c_args : ['-DTEST_PROGRAM'],
3212 include_directories : dir_include,
3213 link_with : [lib_common, logindefs_c],
3214 build_by_default: program_tests)
3218 ############################################################
3222 'libuuid/src/test_uuid.c',
3223 include_directories : [dir_include, dir_libuuid],
3224 link_with : lib_uuid,
3225 dependencies : socket_libs,
3226 build_by_default: program_tests)
3227 if not is_disabler(exe)
3231 ############################################################
3233 libfdisk_tests_cflags = ['-DTEST_PROGRAM']
3234 libfdisk_tests_ldadd = [lib_fdisk_static, lib_uuid, lib_blkid]
3238 'libfdisk/src/ask.c',
3239 c_args : libfdisk_tests_cflags,
3240 include_directories : lib_fdisk_includes,
3241 link_with : libfdisk_tests_ldadd,
3242 build_by_default: program_tests)
3243 if not is_disabler(exe)
3249 'libfdisk/src/gpt.c',
3250 c_args : libfdisk_tests_cflags,
3251 include_directories : lib_fdisk_includes,
3252 link_with : libfdisk_tests_ldadd,
3253 build_by_default: program_tests)
3254 if not is_disabler(exe)
3260 'libfdisk/src/utils.c',
3261 c_args : libfdisk_tests_cflags,
3262 include_directories : lib_fdisk_includes,
3263 link_with : libfdisk_tests_ldadd,
3264 build_by_default: program_tests)
3265 if not is_disabler(exe)
3270 'test_fdisk_script',
3271 'libfdisk/src/script.c',
3272 c_args : libfdisk_tests_cflags,
3273 include_directories : lib_fdisk_includes,
3274 link_with : libfdisk_tests_ldadd,
3275 build_by_default: program_tests)
3276 if not is_disabler(exe)
3281 'test_fdisk_version',
3282 'libfdisk/src/version.c',
3283 c_args : libfdisk_tests_cflags,
3284 include_directories : lib_fdisk_includes,
3285 link_with : libfdisk_tests_ldadd,
3286 build_by_default: program_tests)
3287 if not is_disabler(exe)
3293 'libfdisk/src/item.c',
3294 c_args : libfdisk_tests_cflags,
3295 include_directories : lib_fdisk_includes,
3296 link_with : libfdisk_tests_ldadd,
3297 build_by_default: program_tests)
3298 if not is_disabler(exe)
3302 sample_fdisk_ldadd = [lib_common, lib_fdisk]
3305 'sample-fdisk-mkpart',
3306 'libfdisk/samples/mkpart.c',
3307 include_directories : lib_fdisk_includes,
3308 link_with : sample_fdisk_ldadd)
3309 if not is_disabler(exe)
3314 'sample-fdisk-mkpart-fullspec',
3315 'libfdisk/samples/mkpart-fullspec.c',
3316 include_directories : lib_fdisk_includes,
3317 link_with : sample_fdisk_ldadd)
3318 if not is_disabler(exe)
3322 ############################################################
3326 'tests/helpers/test_cap.c',
3327 include_directories : includes,
3328 dependencies : [lib_cap_ng],
3329 build_by_default: program_tests)
3330 if not is_disabler(exe)
3336 'tests/helpers/test_mbsencode.c',
3337 include_directories : includes,
3338 link_with : lib_common,
3339 build_by_default: program_tests)
3344 'tests/helpers/test_byteswap.c',
3345 include_directories : includes,
3346 build_by_default: program_tests)
3351 'tests/helpers/test_md5.c',
3353 include_directories : includes,
3354 build_by_default: program_tests)
3359 'tests/helpers/test_sha1.c',
3361 include_directories : includes,
3362 build_by_default: program_tests)
3367 'tests/helpers/test_pathnames.c',
3368 include_directories : includes,
3369 build_by_default: program_tests)
3374 'tests/helpers/test_strerror.c',
3375 include_directories : includes,
3376 build_by_default: program_tests)
3381 'tests/helpers/test_sysinfo.c',
3382 include_directories : includes,
3383 build_by_default: program_tests)
3388 'tests/helpers/test_sigreceive.c',
3389 include_directories : includes,
3390 link_with : lib_common,
3391 build_by_default: program_tests)
3396 'tests/helpers/test_tiocsti.c',
3397 include_directories : includes,
3398 build_by_default: program_tests)
3402 'test_uuid_namespace',
3403 'tests/helpers/test_uuid_namespace.c',
3407 include_directories : includes,
3408 build_by_default: program_tests)
3414 'tests/helpers/test_mkfds.c',
3415 'tests/helpers/test_mkfds.h',
3416 'tests/helpers/test_mkfds_ppoll.c',
3417 include_directories : includes,
3418 dependencies : mq_libs,
3419 build_by_default: program_tests)
3425 'tests/helpers/test_enosys.c',
3426 include_directories : includes,
3427 build_by_default: program_tests)
3430 ############################################################
3432 if conf.get('HAVE_OPENAT').to_string() == '1'
3434 'sample-scols-tree',
3435 'libsmartcols/samples/tree.c',
3436 include_directories : includes,
3437 link_with : [lib_smartcols, lib_common],
3438 build_by_default: program_tests)
3439 if not is_disabler(exe)
3445 'sample-scols-title',
3446 'libsmartcols/samples/title.c',
3447 include_directories : includes,
3448 link_with : [lib_smartcols, lib_common])
3449 if not is_disabler(exe)
3454 'sample-scols-wrap',
3455 'libsmartcols/samples/wrap.c',
3456 include_directories : includes,
3457 link_with : [lib_smartcols, lib_common])
3458 if not is_disabler(exe)
3463 'sample-scols-continuous',
3464 'libsmartcols/samples/continuous.c',
3465 include_directories : includes,
3466 link_with : [lib_smartcols, lib_common])
3467 if not is_disabler(exe)
3472 'sample-scols-continuous-json',
3473 'libsmartcols/samples/continuous-json.c',
3474 include_directories : includes,
3475 link_with : [lib_smartcols, lib_common])
3476 if not is_disabler(exe)
3481 'sample-scols-maxout',
3482 'libsmartcols/samples/maxout.c',
3483 include_directories : includes,
3484 link_with : [lib_smartcols, lib_common])
3485 if not is_disabler(exe)
3490 'sample-scols-fromfile',
3491 'libsmartcols/samples/fromfile.c',
3492 include_directories : includes,
3493 link_with : [lib_smartcols, lib_common])
3494 if not is_disabler(exe)
3499 'sample-scols-grouping-simple',
3500 'libsmartcols/samples/grouping-simple.c',
3501 include_directories : includes,
3502 link_with : [lib_smartcols, lib_common])
3503 if not is_disabler(exe)
3508 'sample-scols-grouping-overlay',
3509 'libsmartcols/samples/grouping-overlay.c',
3510 include_directories : includes,
3511 link_with : [lib_smartcols, lib_common])
3512 if not is_disabler(exe)
3516 ############################################################
3518 # Let the test runner know whether we're running under asan and export
3519 # some paths. We use a file on disk so that it is possible to run the
3520 # test scripts from commandline without setting any variables.
3521 configure_file(output : 'meson.conf',
3526 '''.format(get_option('b_sanitize')=='address' ? 'yes' : '',
3527 python.full_path())])
3529 run_sh = find_program('tests/run.sh')
3533 '--srcdir=' + meson.current_source_dir(),
3534 '--builddir=' + meson.current_build_dir(),
3540 manadocs += ['lib/terminal-colors.d.5.adoc']
3541 manadocs += ['libblkid/libblkid.3.adoc']
3545 'libuuid/man/uuid.3.adoc',
3546 'libuuid/man/uuid_clear.3.adoc',
3547 'libuuid/man/uuid_compare.3.adoc',
3548 'libuuid/man/uuid_copy.3.adoc',
3549 'libuuid/man/uuid_generate.3.adoc',
3550 'libuuid/man/uuid_is_null.3.adoc',
3551 'libuuid/man/uuid_parse.3.adoc',
3552 'libuuid/man/uuid_time.3.adoc',
3553 'libuuid/man/uuid_unparse.3.adoc']
3555 'uuid_generate_random.3': 'uuid_generate.3',
3556 'uuid_generate_time.3': 'uuid_generate.3',
3557 'uuid_generate_time_safe.3': 'uuid_generate.3',
3561 asciidoctor = find_program('asciidoctor', required : false)
3562 if asciidoctor.found()
3563 foreach adoc : manadocs
3564 name = adoc.split('/')[-1]
3565 page = name.split('.adoc')[0]
3566 section = page.split('.')[-1]
3567 mandirn = join_paths(mandir, 'man' + section)
3572 command : [ asciidoctor,
3574 '-a', 'VERSION=' + meson.project_version(),
3575 '-a', 'release-version=' + meson.project_version(),
3576 '-a', 'ADJTIME_PATH=/etc/adjtime',
3577 '-a', 'package-docdir=' + docdir,
3578 '--base-dir=' + meson.current_source_dir(),
3579 '--destination-dir=' + meson.current_build_dir(),
3580 '--load-path', '@SOURCE_ROOT@/tools',
3581 '--require', 'asciidoctor-includetracker',
3585 depfile : page + '.deps',
3587 install_dir : mandirn)
3590 foreach link_name, target : manlinks
3591 link_section = link_name.split('.')[-1]
3592 target_section = target.split('.')[-1]
3593 meson.add_install_script(meson_make_manpage_stub,
3594 join_paths('man' + target_section, target),
3595 join_paths(mandir, 'man' + link_section, link_name))
3599 if bash_completion.found()
3600 foreach completion : bashcompletions
3602 join_paths('bash-completion', completion),
3603 install_dir : bash_completion.get_variable(pkgconfig : 'completionsdir')
3606 foreach link_name, target : bashcompletionslinks
3607 meson.add_install_script(meson_make_symlink,
3609 join_paths(bash_completion.get_variable(pkgconfig : 'completionsdir'), link_name))