1 project('util-linux', 'c',
2 version : run_command('tools/git-version-gen', check: true).stdout(),
3 meson_version: '>=0.57.0',
7 pkgconfig = import('pkgconfig')
9 libblkid_version = '1.1.0'
10 libblkid_date = '01-Jun-2021'
11 libuuid_version = '1.3.0'
12 libmount_version = '1.1.0'
13 libsmartcols_version = '1.1.0'
14 libfdisk_version = '1.1.0'
16 prefixdir = get_option('prefix')
17 if not prefixdir.startswith('/')
18 error('Prefix is not absolute: "@0@"'.format(prefixdir))
20 bindir = join_paths(prefixdir, get_option('bindir'))
21 sbindir = join_paths(prefixdir, get_option('sbindir'))
22 sysconfstaticdir = join_paths(prefixdir, 'lib')
23 docdir = join_paths(prefixdir, get_option('datadir'), 'doc', 'util-linux')
24 mandir = join_paths(prefixdir, get_option('mandir'))
26 execprefixdir = prefixdir
27 sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
28 usrbin_exec_dir = join_paths(execprefixdir, bindir)
29 usrsbin_exec_dir = join_paths(execprefixdir, sbindir)
30 bash_completion = dependency('bash-completion', required : get_option('build-bash-completion'))
32 vendordir = get_option('vendordir')
34 add_project_arguments('-D_GNU_SOURCE', language : 'c')
36 cc = meson.get_compiler('c')
38 conf = configuration_data()
39 conf.set_quoted('PACKAGE', meson.project_name())
40 conf.set_quoted('PACKAGE_VERSION', meson.project_version())
41 package_string = '@0@ @1@'.format(meson.project_name(), meson.project_version())
42 conf.set_quoted('PACKAGE_STRING', package_string)
45 pc_version = meson.project_version().split('-')[0].split('.')
47 if pc_version.length() < 3
51 pc_version = '.'.join(pc_version)
53 conf.set_quoted('LIBBLKID_VERSION', libblkid_version)
54 conf.set_quoted('LIBBLKID_DATE', libblkid_date)
56 conf.set('bindir', bindir)
57 conf.set('sbindir', sbindir)
58 conf.set('runstatedir', runstatedir)
59 conf.set('sysconfdir', sysconfdir)
60 conf.set('usrsbin_execdir', usrsbin_exec_dir)
61 conf.set('docdir', docdir)
62 conf.set_quoted('_PATH_SYSCONFSTATICDIR', sysconfstaticdir)
63 conf.set_quoted('_PATH_RUNSTATEDIR', runstatedir)
64 conf.set_quoted('CONFIG_ADJTIME_PATH', '/etc/adjtime')
65 conf.set_quoted('ADJTIME_PATH', '/etc/adjtime') # yes, both are used :(
67 conf.set_quoted('_PATH_VENDORDIR', vendordir)
68 conf.set('USE_VENDORDIR', vendordir == '' ? false : 1)
70 build_libblkid = not get_option('build-libblkid').disabled()
71 conf.set('HAVE_LIBBLKID', build_libblkid ? 1 : false)
72 summary('libblkid', build_libblkid ? 'enabled' : 'disabled', section : 'components')
74 build_libuuid = not get_option('build-libuuid').disabled()
75 conf.set('HAVE_LIBUUID', build_libuuid ? 1 : false)
76 summary('libuuid', build_libuuid ? 'enabled' : 'disabled', section : 'components')
78 have_mountfd_api = cc.sizeof('struct mount_attr', prefix : '#include <linux/mount.h>') > 0
79 conf.set('HAVE_STRUCT_MOUNT_ATTR', have_mountfd_api ? 1 : false)
80 conf.set('HAVE_MOUNTFD_API', have_mountfd_api ? 1 : false)
82 have_struct_statx = cc.sizeof('struct statx', prefix : '#include <linux/stat.h>') > 0
83 conf.set('HAVE_STRUCT_STATX', have_struct_statx ? 1 : false)
85 build_libmount = not get_option('build-libmount').disabled()
86 conf.set('HAVE_LIBMOUNT', build_libmount ? 1 : false)
87 conf.set('USE_LIBMOUNT_SUPPORT_NAMESPACES', 1)
88 conf.set('USE_LIBMOUNT_MOUNTFD_SUPPORT', have_mountfd_api ? 1 : false)
89 summary('libmount', build_libmount ? 'enabled' : 'disabled', section : 'components')
91 build_libsmartcols = not get_option('build-libsmartcols').disabled()
92 conf.set('HAVE_LIBSMARTCOLS', build_libsmartcols ? 1 : false)
93 summary('libsmartcols', build_libsmartcols ? 'enabled' : 'disabled', section : 'components')
95 build_libfdisk = not get_option('build-libfdisk').disabled()
96 conf.set('HAVE_LIBFDISK', build_libfdisk ? 1 : false)
97 summary('libfdisk', build_libfdisk ? 'enabled' : 'disabled', section : 'components')
99 build_uuidd = not get_option('build-uuidd').disabled()
100 conf.set('HAVE_UUIDD', build_uuidd ? 1 : false)
101 summary('uuidd', build_uuidd ? 'enabled' : 'disabled', section : 'components')
103 static_programs = get_option('static-programs')
104 need_static_libs = static_programs.length() > 0 # a rough estimate...
105 summary('static programs', static_programs)
107 LINUX = host_machine.system() in ['linux']
108 BSD = host_machine.system() in ['dragonfly', 'freebsd', 'netbsd', 'openbsd']
110 ############################################################
128 have = cc.compiles(code, name : 'wchar_t support')
129 if not have and get_option('widechar').enabled()
130 error('widechar support requested but unavailable')
132 if get_option('ncurses').enabled() and get_option('widechar').enabled()
133 error('widechar support is incompatible with non-wide ncurses')
135 conf.set('HAVE_WIDECHAR', have ? 1 : false)
176 linux/net_namespace.h
223 lib_m = cc.find_library('m')
225 lib_tinfo = dependency(
227 required : get_option('tinfo'))
229 lib_ncursesw = dependency(
231 required : get_option('ncursesw'))
232 if lib_ncursesw.found()
233 headers += ['ncursesw/ncurses.h',
237 lib_ncurses = disabler()
239 lib_ncurses = dependency(
241 required : get_option('ncurses'))
242 headers += ['ncurses.h',
246 conf.set('HAVE_LIBNCURSESW', lib_ncursesw.found())
247 conf.set('HAVE_LIBNCURSES', lib_ncurses.found())
248 conf.set('HAVE_NCURSES', lib_ncursesw.found() or lib_ncurses.found())
250 lib_slang = dependency(
252 required : get_option('slang'))
254 headers += ['slang.h',
259 conf.set('HAVE_SLANG', lib_slang.found())
261 foreach curses_libs : [lib_slang, lib_ncursesw, lib_ncurses]
262 if curses_libs.found()
263 have = cc.has_function('use_default_colors', dependencies : curses_libs)
264 conf.set('HAVE_USE_DEFAULT_COLORS', have ? 1 : false)
265 have = cc.has_function('resizeterm', dependencies : curses_libs)
266 conf.set('HAVE_RESIZETERM', have ? 1 : false)
273 required : get_option('zlib'))
275 lib_readline = dependency(
277 required : get_option('readline'))
278 conf.set('HAVE_LIBREADLINE', lib_readline.found() ? 1 : false)
280 lib_readline_static = dependency(
283 required : need_static_libs ? get_option('readline') : disabler())
285 if meson.version().version_compare('>= 0.59.0')
286 lib_intl = dependency(
288 required : get_option('nls'))
289 conf.set('ENABLE_NLS', lib_intl.found() ? 1 : false)
291 if get_option('nls').enabled()
292 error('nls is not supported with meson before 0.59.0')
294 lib_intl = dependency('', required : false)
297 lib_user = dependency(
300 required : get_option('libuser'))
301 conf.set('HAVE_LIBUSER', lib_user.found() ? 1 : false)
303 lib_util = cc.find_library(
305 required : get_option('libutil'))
306 conf.set('HAVE_LIBUTIL', lib_util.found() ? 1 : false)
308 lib_utempter = cc.find_library(
310 required : get_option('libutempter'))
311 conf.set('HAVE_LIBUTEMPTER', lib_utempter.found() ? 1 : false)
313 systemd = dependency(
315 required : get_option('systemd'))
317 lib_systemd = dependency(
319 required : get_option('systemd'))
320 conf.set('HAVE_LIBSYSTEMD', lib_systemd.found() ? 1 : false)
321 conf.set('USE_SYSTEMD', lib_systemd.found() ? 1 : false)
323 have = cc.has_function(
324 'sd_session_get_username',
325 dependencies : lib_systemd)
326 conf.set('HAVE_DECL_SD_SESSION_GET_USERNAME', have ? 1 : false)
328 lib_udev = dependency(
330 required : get_option('systemd'))
331 conf.set('HAVE_LIBUDEV', lib_udev.found() ? 1 : false)
333 lib_crypt = cc.find_library('crypt')
335 lib_pam = cc.find_library('pam', required : get_option('build-login'))
336 if not lib_pam.found()
337 lib_pam = cc.find_library('pam', required : get_option('build-chfn-chsh'))
339 if not lib_pam.found()
340 lib_pam = cc.find_library('pam', required : get_option('build-su'))
342 if not lib_pam.found()
343 lib_pam = cc.find_library('pam', required : get_option('build-runuser'))
346 lib_pam_misc = cc.find_library('pam_misc')
347 lib_pam = [lib_pam, lib_pam_misc]
349 lib_pam_misc = declare_dependency()
352 lib_cryptsetup = dependency(
354 required : get_option('cryptsetup'))
355 conf.set('HAVE_CRYPTSETUP', lib_cryptsetup.found() ? 1 : false)
357 if not get_option('cryptsetup').disabled() and get_option('cryptsetup-dlopen').enabled()
358 if meson.version().version_compare('>= 0.62.0')
359 lib_dl = dependency('dl')
361 lib_dl = cc.find_library('dl')
363 conf.set('CRYPTSETUP_VIA_DLOPEN', 1)
364 summary('cryptsetup support (dlopen)',
366 section : 'components')
368 summary('cryptsetup support',
369 lib_cryptsetup.found() ? 'enabled' : 'disabled',
370 section : 'components')
373 have = cc.has_function(
374 'crypt_activate_by_signed_key',
375 dependencies : lib_cryptsetup)
376 conf.set('HAVE_CRYPT_ACTIVATE_BY_SIGNED_KEY', have ? 1 : false)
378 lib_cap_ng = dependency(
380 required : get_option('build-setpriv'))
382 lib_selinux = dependency(
385 required : get_option('selinux'))
386 conf.set('HAVE_LIBSELINUX', lib_selinux.found() ? 1 : false)
388 lib_magic = dependency(
390 required : get_option('magic'))
391 conf.set('HAVE_MAGIC', lib_magic.found() ? 1 : false)
393 lib_econf = dependency(
395 required : get_option('econf'))
396 conf.set('HAVE_LIBECONF', lib_econf.found() ? 1 : false)
398 lib_audit = dependency(
400 required : get_option('audit'))
401 conf.set('HAVE_LIBAUDIT', lib_audit.found() ? 1 : false)
403 conf.set('HAVE_SMACK', not get_option('smack').disabled())
405 foreach header : headers
406 have = cc.has_header(header)
407 conf.set('HAVE_' + header.underscorify().to_upper(), have ? 1 : false)
410 header = 'linux/btrfs.h'
411 enable_btrfs = cc.has_header(header,
412 required : get_option('btrfs'))
413 conf.set('HAVE_' + header.underscorify().to_upper(), enable_btrfs ? 1 : false)
414 conf.set('HAVE_BTRFS_SUPPORT', enable_btrfs ? 1 : false)
416 prefix = conf.get('HAVE_LINUX_COMPILER_H') ? '#include <linux/compiler.h>' : ''
421 have = cc.has_header(header,
423 conf.set('HAVE_' + header.underscorify().to_upper(), have ? 1 : false)
426 have = cc.has_header('sched.h')
427 conf.set10('HAVE_DECL_CPU_ALLOC', have)
428 # We get -1 if the size cannot be determined
429 have_cpu_set_t = cc.sizeof('cpu_set_t', prefix : '#define _GNU_SOURCE\n#include <sched.h>') > 0
430 conf.set('HAVE_CPU_SET_T', have_cpu_set_t ? 1 : false)
432 have = cc.has_header_symbol('unistd.h', 'environ', args : '-D_GNU_SOURCE')
433 conf.set10('HAVE_ENVIRON_DECL', have)
435 have = cc.has_header_symbol('signal.h', 'sighandler_t', args : '-D_GNU_SOURCE')
436 conf.set('HAVE_SIGHANDLER_T', have ? 1 : false)
438 have = cc.has_function('strsignal')
439 conf.set10('HAVE_STRSIGNAL_DECL', have)
441 have = cc.sizeof('union semun', prefix : '#include <sys/sem.h>') > 0
442 conf.set('HAVE_UNION_SEMUN', have ? 1 : false)
444 have = cc.has_type('loff_t', prefix : '#include <sys/types.h>')
445 conf.set('HAVE_LOFF_T', have ? 1 : false)
447 have = cc.compiles('''
448 #define _GNU_SOURCE 1
449 #include <langinfo.h>
452 str = nl_langinfo (ALTMON_1);
453 str = nl_langinfo (ALTMON_2);
454 str = nl_langinfo (ALTMON_3);
455 str = nl_langinfo (ALTMON_4);
456 str = nl_langinfo (ALTMON_5);
457 str = nl_langinfo (ALTMON_6);
458 str = nl_langinfo (ALTMON_7);
459 str = nl_langinfo (ALTMON_8);
460 str = nl_langinfo (ALTMON_9);
461 str = nl_langinfo (ALTMON_10);
462 str = nl_langinfo (ALTMON_11);
463 str = nl_langinfo (ALTMON_12);
467 name : 'langinfo.h defines ALTMON_x constants')
468 conf.set('HAVE_LANGINFO_ALTMON', have ? 1 : false)
470 have = cc.compiles('''
471 #define _GNU_SOURCE 1
472 #include <langinfo.h>
475 str = nl_langinfo (_NL_ABALTMON_1);
476 str = nl_langinfo (_NL_ABALTMON_2);
477 str = nl_langinfo (_NL_ABALTMON_3);
478 str = nl_langinfo (_NL_ABALTMON_4);
479 str = nl_langinfo (_NL_ABALTMON_5);
480 str = nl_langinfo (_NL_ABALTMON_6);
481 str = nl_langinfo (_NL_ABALTMON_7);
482 str = nl_langinfo (_NL_ABALTMON_8);
483 str = nl_langinfo (_NL_ABALTMON_9);
484 str = nl_langinfo (_NL_ABALTMON_10);
485 str = nl_langinfo (_NL_ABALTMON_11);
486 str = nl_langinfo (_NL_ABALTMON_12);
490 name : 'langinfo.h defines _NL_ABALTMON_x constants')
491 conf.set('HAVE_LANGINFO_NL_ABALTMON', have ? 1 : false)
493 have = cc.compiles('''
494 #define _GNU_SOURCE 1
495 #include <langinfo.h>
498 str = nl_langinfo (_NL_TIME_WEEK_1STDAY);
502 name : 'langinfo.h defines _NL_TIME_WEEK_1STDAY constant')
503 conf.set('HAVE_DECL__NL_TIME_WEEK_1STDAY', have ? 1 : false)
597 have = cc.has_function(func)
598 # For autotools compatibility, use either #define FOO 1 or #undef FOO.
599 # This makes little sense, but is necessary to avoid warnings about
600 # redefined macros from Python.h, which uses this convention.
601 conf.set('HAVE_' + func.to_upper(), have ? 1 : false)
604 have = conf.get('HAVE_FUTIMENS') in [1] and conf.get('HAVE_INOTIFY_INIT1') in [1]
605 conf.set('AGETTY_RELOAD', have ? 1 : false)
607 warning('futimens or inotify_init1 not found; agetty(8) will not provide --reload functionality')
610 have_dirfd = (cc.has_function('dirfd') or
611 cc.has_header_symbol('dirent.h', 'dirfd',
612 prefix : '#include <sys/types.h>'))
613 conf.set('HAVE_DIRFD', have_dirfd ? 1 : false)
615 have_ddfd = cc.has_member('DIR', 'dd_fd',
617 #include <sys/types.h>
620 conf.set('HAVE_DECL_DDFD', have_ddfd ? 1 : false)
622 have = cc.has_member('struct tm', 'tm_gmtoff',
627 conf.set('HAVE_TM_GMTOFF', have ? 1 : false)
631 have = cc.sizeof('enum fsconfig_command', prefix : '#include <linux/mount.h>') > 0
632 conf.set('HAVE_ENUM_FSCONFIG_COMMAND', have ? 1 : false)
634 have = cc.has_member('struct termios', 'c_line',
635 prefix : '#include <termios.h>')
636 conf.set('HAVE_STRUCT_TERMIOS_C_LINE', have ? 1 : false)
638 have = cc.has_member('struct stat', 'st_mtim.tv_nsec',
639 prefix : '#include <sys/stat.h>')
640 conf.set('HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC', have ? 1 : false)
642 have = cc.has_member('struct statx', 'stx_mnt_id',
643 prefix : '#include <linux/stat.h>')
644 conf.set('HAVE_STRUCT_STATX_STX_MNT_ID', have ? 1 : false)
646 # replacement for AC_STRUCT_TIMEZONE
647 have = cc.has_member('struct tm', 'tm_zone',
648 prefix : '#include <time.h>')
649 conf.set('HAVE_STRUCT_TM_TM_ZONE', have ? 1 : false)
651 have = cc.has_header_symbol('time.h', 'tzname', args: '-D_GNU_SOURCE')
652 conf.set('HAVE_DECL_TZNAME', have ? 1 : false)
654 have = cc.has_header_symbol('linux/blkzoned.h', 'BLK_ZONE_REP_CAPACITY')
655 conf.set('HAVE_DECL_BLK_ZONE_REP_CAPACITY', have ? 1 : false)
657 have = cc.has_header_symbol('linux/pr.h', 'PR_REP_CAPACITY')
658 conf.set('HAVE_DECL_PR_REP_CAPACITY', have ? 1 : false)
663 extern char *tzname[];
666 return tzname ? 0 : 1;
668 '''.format(have ? 1 : 0)
669 have = cc.compiles(code, name : 'using tzname[]')
670 conf.set('HAVE_TZNAME', have ? 1 : false)
673 if not cc.has_function('socket')
674 socket_libs += cc.find_library('socket', required : true)
675 have = cc.has_function('socket',
676 dependencies : socket_libs)
678 error('socket() function not available')
683 have = cc.has_function('clock_gettime')
685 realtime_libs += cc.find_library('rt', required : true)
686 have = cc.has_function('clock_gettime',
687 dependencies : realtime_libs)
689 conf.set('HAVE_CLOCK_GETTIME', have ? 1 : false)
691 thread_libs = dependency('threads')
693 have = cc.has_function('timer_create')
695 realtime_libs = [cc.find_library('rt', required : true)]
696 have = cc.has_function('timer_create',
697 dependencies : realtime_libs)
699 realtime_libs += thread_libs
700 have = cc.has_function('timer_create',
701 dependencies : realtime_libs)
704 conf.set('HAVE_TIMER_CREATE', have ? 1 : false)
706 have = cc.has_function('setitimer')
707 conf.set('HAVE_SETITIMER', have ? 1 : false)
710 rtas_libs = cc.find_library('rtas', required : false)
711 conf.set('HAVE_LIBRTAS', rtas_libs.found() ? 1 : false)
714 if not cc.has_header_symbol('math.h', 'isnan')
715 lib = cc.find_library('m', required : true)
716 if (cc.has_function('isnan', dependencies : lib) and
717 cc.has_function('__isnan', dependencies : lib))
722 have = cc.has_header_symbol('errno.h', 'program_invocation_short_name',
723 args : '-D_GNU_SOURCE')
724 conf.set('HAVE_PROGRAM_INVOCATION_SHORT_NAME', have ? 1 : false)
727 extern char *__progname;
729 return (*__progname != 0);
732 have = cc.compiles(code, name : 'using __progname')
733 conf.set('HAVE___PROGNAME', have ? 1 : false)
735 have = conf.get('HAVE_PTY_H') != false and conf.get('HAVE_SYS_SIGNALFD_H') != false
736 conf.set('HAVE_PTY', have ? 1 : false)
738 have_opal_get_status= cc.has_header_symbol('linux/sed-opal.h', 'IOC_OPAL_GET_STATUS')
739 conf.set('HAVE_OPAL_GET_STATUS', have_opal_get_status ? 1 : false)
741 build_plymouth_support = get_option('build-plymouth-support')
742 have_tiocglcktrmios = cc.has_header_symbol(
743 'sys/ioctl.h', 'TIOCGLCKTRMIOS',
744 required : build_plymouth_support.enabled())
745 have_sock_cloexec = cc.has_header_symbol(
746 'sys/socket.h', 'SOCK_CLOEXEC',
747 prefix : '#include <sys/types.h>',
748 required : build_plymouth_support.enabled())
749 have_sock_nonblock = cc.has_header_symbol(
750 'sys/socket.h', 'SOCK_NONBLOCK',
751 prefix : '#include <sys/types.h>',
752 required : build_plymouth_support.enabled())
753 have_so_passcred = cc.has_header_symbol(
754 'sys/socket.h', 'SO_PASSCRED',
755 prefix : '#include <sys/types.h>',
756 required : build_plymouth_support.enabled())
758 build_plymouth_support = (not build_plymouth_support.disabled() and
759 have_tiocglcktrmios and
760 have_sock_cloexec and
761 have_sock_nonblock and
763 conf.set('ENABLE_PLYMOUTH_SUPPORT', build_plymouth_support ? 1 : false)
764 summary('plymouth support',
765 build_plymouth_support ? 'enabled' : 'disabled',
766 section : 'components')
768 # check for valid fallocate() function
769 # with 32 bits glibc 2.10, fallocate() exists but not fallocate64()
770 # when _FILE_OFFSET_BITS==64, fallocate() is redirect to fallocate64()
771 # and program can't be linked.
779 ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0xfffffffful, 0xfffffffful);
780 return ret == 0 ? 0 : 1;
783 have = cc.links(code, name : 'fallocate() function')
784 conf.set('HAVE_FALLOCATE', have ? 1 : false)
792 ret = posix_fallocate(0, 0xfffffffful, 0xfffffffful);
793 return ret == 0 ? 0 : 1;
796 have = cc.links(code, name : 'posix_fallocate() function')
797 conf.set('HAVE_POSIX_FALLOCATE', have ? 1 : false)
799 use_hwclock_cmos = host_machine.cpu_family() in ['x86', 'x86_64']
800 message('Use CMOS clock: @0@'.format(use_hwclock_cmos))
801 conf.set('USE_HWCLOCK_CMOS', use_hwclock_cmos ? 1 : false)
803 conf.set('HAVE_TLS', get_option('use-tls') ? 1 : false)
804 conf.set('PG_BELL', get_option('pg-bell') ? 1 : false)
805 conf.set('USE_COLORS_BY_DEFAULT', get_option('colors-default') ? 1 : false)
807 ############################################################
810 fs_search_path = get_option('fs-search-path')
811 fs_search_path_extra = get_option('fs-search-path-extra')
812 if fs_search_path_extra != ''
813 fs_search_path = ':'.join(fs_search_path, fs_search_path_extra)
815 conf.set_quoted('FS_SEARCH_PATH', fs_search_path)
817 systemdsystemunitdir = ''
819 systemdsystemunitdir = systemd.get_variable(pkgconfig : 'systemdsystemunitdir')
822 sysvinit = get_option('sysvinit').enabled()
823 sysvinitrcdir = sysconfdir + '/init.d'
825 program_tests = get_option('program-tests')
827 chfn_chsh_password = get_option('chfn-chsh-password') or lib_user.found()
828 conf.set('CHFN_CHSH_PASSWORD', chfn_chsh_password ? 1 : false)
830 have = get_option('chsh-only-listed')
831 conf.set('ONLY_LISTED_SHELLS', have ? 1 : false)
833 have = get_option('use-tty-group')
834 conf.set('USE_TTY_GROUP', have ? 1 : false)
836 build_hwclock = not get_option('build-hwclock').disabled()
837 bison = find_program('bison', required: build_hwclock)
838 bison_gen = generator(
840 output : ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
841 arguments : ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@'])
845 meson_make_symlink = meson.current_source_dir() + '/tools/meson-make-symlink.sh'
846 meson_make_manpage_stub = meson.current_source_dir() + '/tools/meson-make-manpage-stub.sh'
850 configuration : conf)
852 add_project_arguments('-include', meson.current_build_dir() / 'config.h', language : 'c')
857 '-Waddress-of-packed-member',
858 '-Wdiscarded-qualifiers',
859 '-Wembedded-directive',
862 '-Wimplicit-function-declaration',
863 '-Wmissing-declarations',
864 '-Wmissing-parameter-type',
865 '-Wmissing-prototypes',
867 '-Wno-missing-field-initializers',
868 '-Wold-style-definition',
872 '-Wstrict-prototypes',
875 '-Wunused-but-set-parameter',
876 '-Wunused-but-set-variable',
877 '-Wunused-parameter',
881 foreach compiler_flag : compiler_flags
882 if cc.has_argument(compiler_flag)
883 add_project_arguments(compiler_flag, language : 'c')
891 bashcompletionslinks = {}
897 subdir('libsmartcols')
900 subdir('login-utils')
908 includes = [dir_include,
918 opt = not get_option('build-chfn-chsh').disabled()
923 include_directories : includes,
924 link_with : [lib_common, logindefs_c],
925 dependencies : chfn_chsh_deps,
926 install_dir : usrbin_exec_dir,
927 install_mode : 'rwsr-xr-x',
929 build_by_default : opt)
933 'login-utils/chsh.c',
936 include_directories : includes,
937 link_with : lib_common,
938 dependencies : chfn_chsh_deps,
939 install_dir : usrbin_exec_dir,
940 install_mode : 'rwsr-xr-x',
942 build_by_default : opt)
943 if opt and not is_disabler(exe)
945 manadocs += ['login-utils/chfn.1.adoc', 'login-utils/chsh.1.adoc']
946 bashcompletions += ['chfn', 'chsh']
951 test_islocal_sources,
952 include_directories : includes,
953 c_args : '-DTEST_PROGRAM',
954 build_by_default : program_tests)
959 test_consoles_sources,
960 c_args : ['-DTEST_PROGRAM'],
961 include_directories : includes,
962 link_with : lib_common,
963 build_by_default : program_tests)
966 opt = not get_option('build-last').disabled()
970 include_directories : includes,
971 link_with : [lib_common],
972 install_dir : usrbin_exec_dir,
974 build_by_default : opt)
975 if opt and not is_disabler(exe)
977 meson.add_install_script(meson_make_symlink,
979 join_paths(usrbin_exec_dir, 'lastb'))
980 manadocs += ['login-utils/last.1.adoc']
981 manlinks += {'lastb.1': 'last.1'}
982 bashcompletions += ['last']
983 bashcompletionslinks += {'lastb': 'last'}
986 opt = not get_option('build-nologin').disabled()
989 'login-utils/nologin.c',
990 include_directories : includes,
991 install_dir : sbindir,
992 link_with : [lib_common],
994 build_by_default : opt)
995 if opt and not is_disabler(exe)
997 manadocs += ['login-utils/nologin.8.adoc']
1000 opt = not get_option('build-utmpdump').disabled()
1003 'login-utils/utmpdump.c',
1004 include_directories : includes,
1005 link_with : [lib_common],
1006 install_dir : usrbin_exec_dir,
1008 build_by_default : opt)
1009 if opt and not is_disabler(exe)
1011 manadocs += ['login-utils/utmpdump.1.adoc']
1012 bashcompletions += ['utmpdump']
1015 opt = not get_option('build-su').disabled()
1019 'login-utils/su-common.c',
1020 'login-utils/su-common.h',
1024 include_directories : includes,
1025 link_with : [lib_common, logindefs_c],
1026 dependencies : [lib_pam,
1030 install_mode : 'rwsr-xr-x',
1032 build_by_default : opt)
1033 if opt and not is_disabler(exe)
1035 manadocs += ['login-utils/su.1.adoc']
1036 bashcompletions += ['su']
1039 opt = not get_option('build-newgrp').disabled()
1042 'login-utils/newgrp.c',
1043 include_directories : includes,
1044 dependencies : [lib_crypt],
1045 install_dir : usrbin_exec_dir,
1046 install_mode : 'rwsr-xr-x',
1048 build_by_default : opt)
1049 if opt and not is_disabler(exe)
1051 manadocs += ['login-utils/newgrp.1.adoc']
1052 bashcompletions += ['newgrp']
1055 opt = not get_option('build-lslogins').disabled()
1058 'login-utils/lslogins.c',
1059 include_directories : includes,
1060 link_with : [lib_common,
1063 dependencies : [lib_selinux,
1065 install_dir : usrbin_exec_dir,
1067 build_by_default : opt)
1068 if opt and not is_disabler(exe)
1070 manadocs += ['login-utils/lslogins.1.adoc']
1071 bashcompletions += ['lslogins']
1074 opt = not get_option('build-vipw').disabled()
1077 'login-utils/vipw.c',
1078 'login-utils/setpwnam.h',
1079 include_directories : includes,
1080 link_with : [lib_common],
1081 dependencies : [lib_selinux],
1082 install_dir : usrbin_exec_dir,
1084 build_by_default : opt)
1085 if opt and not is_disabler(exe)
1087 meson.add_install_script(meson_make_symlink,
1089 join_paths(usrbin_exec_dir, 'vigr'))
1090 manadocs += ['login-utils/vipw.8.adoc']
1091 meson.add_install_script(meson_make_symlink,
1093 join_paths(mandir, 'man8/vigr.8'))
1096 opt = not get_option('build-runuser').disabled()
1099 'login-utils/runuser.c',
1100 'login-utils/su-common.c',
1101 'login-utils/su-common.h',
1105 include_directories : includes,
1106 link_with : [lib_common, logindefs_c],
1107 dependencies : [lib_pam,
1111 install_dir : sbindir,
1113 build_by_default : opt)
1114 if opt and not is_disabler(exe)
1116 manadocs += ['login-utils/runuser.1.adoc']
1117 bashcompletionslinks += {'runuser': 'su'}
1120 ############################################################
1125 include_directories : includes,
1126 link_with : lib_common,
1127 install_dir : usrbin_exec_dir,
1130 manadocs += ['text-utils/col.1.adoc']
1131 bashcompletions += ['col']
1136 include_directories : includes,
1137 install_dir : usrbin_exec_dir,
1140 manadocs += ['text-utils/colcrt.1.adoc']
1141 bashcompletions += ['colcrt']
1146 include_directories : includes,
1147 link_with : lib_common,
1148 install_dir : usrbin_exec_dir,
1151 manadocs += ['text-utils/colrm.1.adoc']
1152 bashcompletions += ['colrm']
1157 include_directories : includes,
1158 install_dir : usrbin_exec_dir,
1161 manadocs += ['text-utils/rev.1.adoc']
1162 bashcompletions += ['rev']
1167 include_directories : includes,
1168 link_with : [lib_common,
1170 install_dir : usrbin_exec_dir,
1172 if not is_disabler(exe)
1174 manadocs += ['text-utils/column.1.adoc']
1175 bashcompletions += ['column']
1178 opt = not get_option('build-line').disabled()
1182 include_directories : includes,
1183 install_dir : usrbin_exec_dir,
1185 build_by_default : opt)
1186 if opt and not is_disabler(exe)
1188 manadocs += ['text-utils/line.1.adoc']
1191 opt = not get_option('build-pg').disabled()
1195 link_with : lib_common,
1196 include_directories : includes,
1197 dependencies : [lib_tinfo,
1199 install_dir : usrbin_exec_dir,
1201 build_by_default : opt)
1202 if opt and not is_disabler(exe)
1204 manadocs += ['text-utils/pg.1.adoc']
1205 bashcompletions += ['pg']
1208 opt = not get_option('build-ul').disabled()
1212 include_directories : includes,
1213 dependencies : [lib_tinfo,
1215 install_dir : usrbin_exec_dir,
1217 build_by_default : opt)
1218 if opt and not is_disabler(exe)
1220 manadocs += ['text-utils/ul.1.adoc']
1221 bashcompletions += ['ul']
1224 opt = not get_option('build-more').disabled()
1228 link_with : [lib_common],
1229 include_directories : includes,
1230 dependencies : [lib_tinfo,
1234 build_by_default : opt)
1238 link_with : [lib_common],
1239 include_directories : includes,
1240 c_args : '-DTEST_PROGRAM',
1241 dependencies : [lib_tinfo,
1244 build_by_default : opt and program_tests)
1246 if opt and not is_disabler(exe)
1248 manadocs += ['text-utils/more.1.adoc']
1249 bashcompletions += ['more']
1255 include_directories : includes,
1256 link_with : [lib_common,
1258 install_dir : usrbin_exec_dir,
1260 if not is_disabler(exe)
1262 manadocs += ['text-utils/hexdump.1.adoc']
1263 bashcompletions += ['hexdump']
1266 opt = not get_option('build-lsmem').disabled()
1270 include_directories : includes,
1271 link_with : [lib_common,
1273 install_dir : usrbin_exec_dir,
1275 build_by_default : opt)
1276 if opt and not is_disabler(exe)
1278 manadocs += ['sys-utils/lsmem.1.adoc']
1279 bashcompletions += ['lsmem']
1282 opt = not get_option('build-chmem').disabled()
1286 include_directories : includes,
1287 link_with : [lib_common],
1288 install_dir : usrbin_exec_dir,
1290 build_by_default : opt)
1291 if opt and not is_disabler(exe)
1293 manadocs += ['sys-utils/chmem.8.adoc']
1294 bashcompletions += ['chmem']
1300 include_directories : includes,
1301 link_with : [lib_common],
1302 install_dir : usrbin_exec_dir,
1305 manadocs += ['sys-utils/choom.1.adoc']
1310 include_directories : includes,
1311 link_with : [lib_common],
1312 install_dir : usrbin_exec_dir,
1315 manadocs += ['sys-utils/ipcmk.1.adoc']
1316 bashcompletions += ['ipcmk']
1321 include_directories : includes,
1322 link_with : [lib_common],
1323 install_dir : usrbin_exec_dir,
1326 manadocs += ['sys-utils/ipcrm.1.adoc']
1327 bashcompletions += ['ipcrm']
1329 opt = not get_option('build-ipcs').disabled()
1333 include_directories : includes,
1334 link_with : [lib_common],
1335 install_dir : usrbin_exec_dir,
1337 build_by_default : opt)
1338 if opt and not is_disabler(exe)
1340 manadocs += ['sys-utils/ipcs.1.adoc']
1341 bashcompletions += ['ipcs']
1344 opt = not get_option('build-rfkill').disabled()
1348 include_directories : includes,
1349 link_with : [lib_common,
1351 install_dir : usrsbin_exec_dir,
1353 build_by_default : opt)
1354 if opt and not is_disabler(exe)
1356 manadocs += ['sys-utils/rfkill.8.adoc']
1357 bashcompletions += ['rfkill']
1363 include_directories : includes,
1364 link_with : [lib_common,
1366 install_dir : usrbin_exec_dir,
1368 if not is_disabler(exe)
1370 manadocs += ['sys-utils/renice.1.adoc']
1371 bashcompletions += ['renice']
1377 include_directories: includes,
1378 link_with : [lib_common,
1380 install_dir : usrbin_exec_dir,
1382 if opt and not is_disabler(exe)
1384 manadocs += ['sys-utils/setpgid.1.adoc']
1385 bashcompletions += ['setpgid']
1391 include_directories : includes,
1392 link_with : [lib_common,
1394 install_dir : usrbin_exec_dir,
1396 if opt and not is_disabler(exe)
1398 manadocs += ['sys-utils/setsid.1.adoc']
1399 bashcompletions += ['setsid']
1404 readprofile_sources,
1405 include_directories : includes,
1406 link_with : [lib_common,
1408 install_dir : usrsbin_exec_dir,
1410 if not is_disabler(exe)
1412 manadocs += ['sys-utils/readprofile.8.adoc']
1413 bashcompletions += ['readprofile']
1416 opt = not get_option('build-tunelp').disabled()
1420 include_directories : includes,
1421 link_with : [lib_common],
1422 install_dir : usrsbin_exec_dir,
1424 build_by_default : opt)
1425 if opt and not is_disabler(exe)
1427 manadocs += ['sys-utils/tunelp.8.adoc']
1428 bashcompletions += ['tunelp']
1434 include_directories : includes,
1435 link_with : [lib_common,
1437 install_dir : sbindir,
1439 if not is_disabler(exe)
1441 manadocs += ['sys-utils/fstrim.8.adoc']
1442 bashcompletions += ['fstrim']
1448 include_directories : includes,
1449 link_with : [lib_common,
1452 if not is_disabler(exe)
1454 manadocs += ['sys-utils/dmesg.1.adoc']
1455 bashcompletions += ['dmesg']
1461 include_directories : dir_include,
1462 c_args : '-DTEST_DMESG',
1463 link_with : [lib_common,
1465 build_by_default : program_tests)
1466 if not is_disabler(exe)
1473 include_directories : includes,
1474 link_with : [lib_common],
1475 install_dir : sbindir,
1478 manadocs += ['sys-utils/ctrlaltdel.8.adoc']
1479 bashcompletions += ['ctrlaltdel']
1484 include_directories : includes,
1485 install_dir : sbindir,
1488 manadocs += ['sys-utils/fsfreeze.8.adoc']
1489 bashcompletions += ['fsfreeze']
1494 include_directories : includes,
1495 link_with : [lib_common,
1497 install_dir : sbindir,
1500 manadocs += ['sys-utils/blkdiscard.8.adoc']
1501 bashcompletions += ['blkdiscard']
1506 include_directories : includes,
1507 link_with : [lib_common],
1508 install_dir : sbindir,
1511 manadocs += ['sys-utils/blkzone.8.adoc']
1512 bashcompletions += ['blkzone']
1517 include_directories : includes,
1518 link_with : [lib_common],
1519 install_dir : sbindir,
1522 manadocs += ['sys-utils/blkpr.8.adoc']
1527 include_directories : includes,
1528 link_with : [lib_common],
1529 install_dir : usrsbin_exec_dir,
1532 manadocs += ['sys-utils/ldattach.8.adoc']
1533 bashcompletions += ['ldattach']
1538 include_directories : includes,
1539 link_with : [lib_common],
1540 install_dir : usrsbin_exec_dir,
1543 manadocs += ['sys-utils/rtcwake.8.adoc']
1544 bashcompletions += ['rtcwake']
1549 include_directories : includes,
1550 link_with : [lib_common],
1551 install_dir : usrbin_exec_dir,
1554 manadocs += ['sys-utils/setarch.8.adoc']
1555 bashcompletions += ['setarch']
1557 setarch_links = ['uname26', 'linux32', 'linux64']
1558 setarch_links_arch = {
1559 's390x' : ['s390', 's390x'],
1561 'x86_64' : ['i386', 'x86_64'],
1562 'ppc64' : ['ppc', 'ppc64', 'ppc32'],
1563 'space64' : ['sparc', 'sparc64', 'sparc32', 'sparc32bash'],
1564 'mips64' : ['mips', 'mips64', 'mips32'],
1565 'ia64' : ['i386', 'ia64'],
1566 'hppa' : ['parisc', 'parisc64', 'parisc32'],
1568 setarch_links += setarch_links_arch.get(host_machine.cpu_family(), [])
1570 foreach link: setarch_links
1571 meson.add_install_script(meson_make_symlink,
1573 join_paths(usrbin_exec_dir, link))
1574 manlinks += {link + '.8': 'setarch.8'}
1577 opt = not get_option('build-eject').disabled()
1581 include_directories : includes,
1582 link_with : [lib_common,
1584 install_dir : usrbin_exec_dir,
1586 build_by_default : opt)
1587 if opt and not is_disabler(exe)
1589 manadocs += ['sys-utils/eject.1.adoc']
1590 bashcompletions += ['eject']
1593 opt = not get_option('build-losetup').disabled()
1597 include_directories : includes,
1598 link_with : [lib_common,
1600 install_dir : sbindir,
1602 build_by_default : opt)
1603 if opt and not is_disabler(exe)
1604 manadocs += ['sys-utils/losetup.8.adoc']
1606 bashcompletions += ['losetup']
1609 opt = opt and 'losetup' in static_programs
1613 include_directories : includes,
1614 link_args : ['--static'],
1615 link_with : [lib_common,
1616 lib_smartcols.get_static_lib()],
1617 install_dir : sbindir,
1619 build_by_default : opt)
1620 if opt and not is_disabler(exe)
1624 opt = not get_option('build-zramctl').disabled()
1628 include_directories : includes,
1629 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/zramctl.8.adoc']
1637 bashcompletions += ['zramctl']
1643 include_directories : includes,
1644 link_with : [lib_common,
1646 install_dir : usrbin_exec_dir,
1648 if not is_disabler(exe)
1650 manadocs += ['sys-utils/prlimit.1.adoc']
1651 bashcompletions += ['prlimit']
1657 include_directories : includes,
1658 link_with : [lib_common,
1661 install_dir : usrbin_exec_dir,
1663 if not is_disabler(exe)
1665 manadocs += ['sys-utils/lsns.8.adoc']
1666 bashcompletions += ['lsns']
1669 opt = not get_option('build-mount').disabled()
1673 include_directories : includes,
1674 link_with : [lib_common,
1677 dependencies : lib_selinux,
1678 install_mode : 'rwsr-xr-x',
1680 build_by_default : opt)
1684 include_directories : includes,
1685 link_with : [lib_common,
1687 install_mode : 'rwsr-xr-x',
1689 build_by_default : opt)
1690 if opt and not is_disabler(exe)
1692 manadocs += ['sys-utils/fstab.5.adoc',
1693 'sys-utils/mount.8.adoc',
1694 'sys-utils/umount.8.adoc']
1695 bashcompletions += ['mount', 'umount']
1698 opt2 = opt and 'mount' in static_programs
1702 include_directories : includes,
1703 link_args : ['--static'],
1704 link_with : [lib_common,
1705 lib_smartcols_static,
1708 build_by_default : opt2)
1709 if opt2 and not is_disabler(exe)
1713 opt2 = opt and 'umount' in static_programs
1717 include_directories : includes,
1718 link_args : ['--static'],
1719 link_with : [lib_common,
1722 build_by_default : opt2)
1723 if opt2 and not is_disabler(exe)
1732 include_directories : includes,
1733 link_with : [lib_common,
1737 install_dir : sbindir,
1739 if not is_disabler(exe)
1741 manadocs += ['sys-utils/swapon.8.adoc']
1742 bashcompletions += ['swapon']
1748 include_directories : includes,
1749 link_with : [lib_common,
1752 install_dir : sbindir,
1754 if not is_disabler(exe)
1756 manlinks += {'swapoff.8': 'swapon.8'}
1757 bashcompletions += ['swapoff']
1763 include_directories : includes,
1764 link_with : [lib_common,
1766 dependencies : [rtas_libs],
1767 install_dir : usrbin_exec_dir,
1769 if not is_disabler(exe)
1771 manadocs += ['sys-utils/lscpu.1.adoc']
1772 bashcompletions += ['lscpu']
1778 include_directories : includes,
1779 link_with : [lib_common],
1780 install_dir : sbindir,
1783 manadocs += ['sys-utils/chcpu.8.adoc']
1784 bashcompletions += ['chcpu']
1789 include_directories : includes,
1790 link_with : [lib_common,
1793 if not is_disabler(exe)
1795 manadocs += ['sys-utils/wdctl.8.adoc']
1796 bashcompletions += ['wdctl']
1799 opt = not get_option('build-mountpoint').disabled()
1803 include_directories : includes,
1804 link_with : [lib_mount],
1806 build_by_default : opt)
1807 if opt and not is_disabler(exe)
1809 manadocs += ['sys-utils/mountpoint.1.adoc']
1810 bashcompletions += ['mountpoint']
1813 opt = not get_option('build-fallocate').disabled()
1817 include_directories : includes,
1818 link_with : [lib_common],
1819 install_dir : usrbin_exec_dir,
1821 build_by_default : opt)
1822 if opt and not is_disabler(exe)
1824 manadocs += ['sys-utils/fallocate.1.adoc']
1825 bashcompletions += ['fallocate']
1828 opt = not get_option('build-pivot_root').disabled()
1832 include_directories : includes,
1833 install_dir : sbindir,
1835 build_by_default : opt)
1836 if opt and not is_disabler(exe)
1838 manadocs += ['sys-utils/pivot_root.8.adoc']
1839 bashcompletions += ['pivot_root']
1842 opt = not get_option('build-switch_root').disabled()
1843 if opt and not have_dirfd and not have_ddfd
1844 error('neither dirfd nor ddfd are available')
1848 switch_root_sources,
1849 include_directories : includes,
1850 install_dir : sbindir,
1852 build_by_default : opt)
1853 if opt and not is_disabler(exe)
1855 manadocs += ['sys-utils/switch_root.8.adoc']
1858 opt = not get_option('build-unshare').disabled()
1862 include_directories : includes,
1863 link_with : [lib_common],
1864 install_dir : usrbin_exec_dir,
1866 build_by_default : opt)
1867 if opt and not is_disabler(exe)
1869 manadocs += ['sys-utils/unshare.1.adoc']
1870 bashcompletions += ['unshare']
1873 opt = opt and 'unshare' in static_programs
1877 include_directories : includes,
1878 link_with : [lib_common],
1879 install_dir : usrbin_exec_dir,
1881 build_by_default : opt)
1882 if opt and not is_disabler(exe)
1886 opt = not get_option('build-nsenter').disabled()
1890 include_directories : includes,
1891 link_with : [lib_common],
1892 dependencies : [lib_selinux],
1893 install_dir : usrbin_exec_dir,
1895 build_by_default : opt)
1896 if opt and not is_disabler(exe)
1898 manadocs += ['sys-utils/nsenter.1.adoc']
1899 bashcompletions += ['nsenter']
1902 opt = opt and 'nsenter' in static_programs
1906 include_directories : includes,
1907 link_with : [lib_common],
1908 dependencies : [lib_selinux],
1909 install_dir : usrbin_exec_dir,
1911 build_by_default : opt)
1912 if opt and not is_disabler(exe)
1916 opt = not get_option('build-setpriv').disabled() and lib_cap_ng.found()
1920 include_directories : includes,
1921 link_with : [lib_common],
1922 dependencies : [lib_cap_ng],
1923 install_dir : usrbin_exec_dir,
1925 build_by_default : opt)
1926 if opt and not is_disabler(exe)
1928 manadocs += ['sys-utils/setpriv.1.adoc']
1929 bashcompletions += ['setpriv']
1935 include_directories : includes,
1936 link_with : [lib_common],
1937 dependencies : realtime_libs,
1938 install_dir : usrbin_exec_dir,
1941 manadocs += ['sys-utils/flock.1.adoc']
1942 bashcompletions += ['flock']
1944 opt = not get_option('build-lsirq').disabled()
1948 include_directories : includes,
1949 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/lsirq.1.adoc']
1957 bashcompletions += ['lsirq']
1960 opt = not get_option('build-irqtop').disabled()
1964 include_directories : includes,
1965 dependencies : [realtime_libs, curses_libs],
1966 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/irqtop.1.adoc']
1975 bashcompletions += ['irqtop']
1978 opt = not get_option('build-ipcs').disabled()
1982 include_directories : includes,
1983 link_with : [lib_common,
1985 install_dir : usrbin_exec_dir,
1987 build_by_default : opt)
1988 if opt and not is_disabler(exe)
1990 manadocs += ['sys-utils/lsipc.1.adoc']
1991 bashcompletions += ['lsipc']
1998 include_directories : includes,
1999 link_with : [lib_common],
2000 dependencies : [lib_m,
2002 install_dir : sbindir,
2004 build_by_default : opt)
2005 if opt and not is_disabler(exe)
2007 manadocs += ['sys-utils/hwclock.8.adoc', 'sys-utils/adjtime_config.5.adoc']
2008 bashcompletions += ['hwclock']
2014 include_directories : includes,
2015 install_dir : sbindir,
2018 manadocs += ['disk-utils/mkfs.8.adoc']
2019 bashcompletions += ['mkfs']
2021 opt = not get_option('build-bfs').disabled()
2025 include_directories : includes,
2026 link_with : [lib_common],
2027 install_dir : sbindir,
2029 build_by_default : opt)
2030 if opt and not is_disabler(exe)
2032 manadocs += ['disk-utils/mkfs.bfs.8.adoc']
2033 bashcompletions += ['mkfs.bfs']
2039 include_directories : includes,
2040 link_with : [lib_common],
2041 install_dir : usrbin_exec_dir,
2044 manadocs += ['disk-utils/isosize.8.adoc']
2045 bashcompletions += ['isosize']
2050 include_directories : includes,
2051 link_with : [lib_common,
2054 dependencies: [lib_selinux],
2055 install_dir : sbindir,
2057 if opt and not is_disabler(exe)
2059 manadocs += ['disk-utils/mkswap.8.adoc']
2060 bashcompletions += ['mkswap']
2066 include_directories : includes,
2067 link_with : [lib_common,
2070 install_dir : sbindir,
2072 if opt and not is_disabler(exe)
2074 manadocs += ['disk-utils/swaplabel.8.adoc']
2075 bashcompletions += ['swaplabel']
2078 opt = not get_option('build-fsck').disabled()
2082 include_directories : includes,
2083 link_with : [lib_common,
2086 dependencies : realtime_libs,
2087 install_dir : sbindir,
2089 build_by_default : opt)
2090 if opt and not is_disabler(exe)
2092 manadocs += ['disk-utils/fsck.8.adoc']
2093 bashcompletions += ['fsck']
2096 opt = not get_option('build-minix').disabled()
2100 include_directories : includes,
2101 link_with : [lib_common],
2102 install_dir : sbindir,
2104 build_by_default : opt)
2108 include_directories : includes,
2109 c_args : '-DTEST_SCRIPT',
2110 link_with : [lib_common],
2111 build_by_default : opt and program_tests)
2115 include_directories : includes,
2116 link_with : [lib_common],
2117 install_dir : sbindir,
2119 build_by_default : opt)
2120 if opt and not is_disabler(exe)
2121 exes += [exe, exe2, exe3]
2122 manadocs += ['disk-utils/mkfs.minix.8.adoc','disk-utils/fsck.minix.8.adoc']
2123 bashcompletions += ['mkfs.minix', 'fsck.minix']
2126 opt = not get_option('build-cramfs').disabled()
2129 mkfs_cramfs_sources,
2130 include_directories : includes,
2131 link_with : [lib_common],
2132 dependencies : [lib_z],
2133 install_dir : sbindir,
2135 build_by_default : opt)
2138 fsck_cramfs_sources,
2139 include_directories : includes,
2140 link_with : [lib_common],
2141 dependencies : [lib_z],
2142 install_dir : sbindir,
2144 build_by_default : opt)
2145 if not is_disabler(exe)
2147 manadocs += ['disk-utils/mkfs.cramfs.8.adoc','disk-utils/fsck.cramfs.8.adoc']
2148 bashcompletions += ['mkfs.cramfs', 'fsck.cramfs']
2151 opt = not get_option('build-raw').disabled()
2153 cc.has_header('linux/raw.h', required: opt)
2158 include_directories : includes,
2159 install_dir : sbindir,
2161 build_by_default : opt)
2162 if opt and not is_disabler(exe)
2164 manadocs += ['disk-utils/raw.8.adoc']
2165 bashcompletions += ['raw']
2168 opt = not get_option('build-fdformat').disabled()
2172 include_directories : includes,
2173 link_with : [lib_common],
2174 install_dir : usrsbin_exec_dir,
2176 build_by_default : opt)
2177 if opt and not is_disabler(exe)
2179 manadocs += ['disk-utils/fdformat.8.adoc']
2185 include_directories : includes,
2186 link_with : [lib_common],
2187 install_dir : sbindir,
2189 manadocs += ['disk-utils/blockdev.8.adoc']
2190 bashcompletions += ['blockdev']
2192 opt = not get_option('build-fdisks').disabled()
2193 if opt and not have_dirfd and not have_ddfd
2194 error('neither dirfd nor ddfd are available')
2199 include_directories : includes,
2200 link_with : [lib_common,
2204 dependencies : [lib_readline],
2205 install_dir : sbindir,
2207 build_by_default : opt)
2208 if opt and not is_disabler(exe)
2210 bashcompletions += ['fdisk']
2213 opt2 = opt and 'fdisk' in static_programs
2217 link_args : ['--static'],
2218 include_directories : includes,
2219 link_with : [lib_common,
2222 lib_smartcols.get_static_lib()],
2223 dependencies : [lib_readline_static],
2224 install_dir : sbindir,
2226 build_by_default : opt2)
2227 if opt2 and not is_disabler(exe)
2234 include_directories : includes,
2235 link_with : [lib_common,
2239 dependencies : [lib_readline],
2240 install_dir : sbindir,
2242 build_by_default : opt)
2243 if opt and not is_disabler(exe)
2245 bashcompletions += ['sfdisk']
2248 opt2 = opt and 'sfdisk' in static_programs
2252 include_directories : includes,
2253 link_with : [lib_common,
2256 lib_smartcols.get_static_lib()],
2257 dependencies : [lib_readline_static],
2258 install_dir : sbindir,
2260 build_by_default : opt2)
2261 if opt2 and not is_disabler(exe)
2268 include_directories : includes,
2269 link_with : [lib_common,
2274 dependencies : [curses_libs],
2275 install_dir : sbindir,
2277 build_by_default : opt)
2278 if opt and not is_disabler(exe)
2280 manadocs += ['disk-utils/fdisk.8.adoc',
2281 'disk-utils/sfdisk.8.adoc',
2282 'disk-utils/cfdisk.8.adoc']
2283 bashcompletions += ['cfdisk']
2286 opt = not get_option('build-partx').disabled()
2290 include_directories : includes,
2291 link_with : [lib_common],
2292 install_dir : usrsbin_exec_dir,
2294 build_by_default : opt)
2298 include_directories : includes,
2299 link_with : [lib_common],
2300 install_dir : usrsbin_exec_dir,
2302 build_by_default : opt)
2306 include_directories : includes,
2307 link_with : [lib_common],
2308 install_dir : usrsbin_exec_dir,
2310 build_by_default : opt)
2314 include_directories : includes,
2315 link_with : [lib_common,
2318 install_dir : usrsbin_exec_dir,
2320 build_by_default : opt)
2322 exes += [exe, exe2, exe3, exe4]
2323 manadocs += ['disk-utils/addpart.8.adoc',
2324 'disk-utils/delpart.8.adoc',
2325 'disk-utils/resizepart.8.adoc',
2326 'disk-utils/partx.8.adoc']
2327 bashcompletions += ['addpart', 'delpart', 'resizepart', 'partx']
2330 ############################################################
2335 include_directories : includes,
2336 link_with : [lib_common],
2337 dependencies : [lib_util,
2341 install_dir : usrbin_exec_dir,
2344 manadocs += ['term-utils/script.1.adoc']
2345 bashcompletions += ['script']
2350 include_directories : includes,
2351 c_args : '-DTEST_SCRIPT',
2352 link_with : [lib_common],
2353 dependencies : [lib_util,
2357 build_by_default : program_tests)
2363 include_directories : includes,
2364 link_with : [lib_common],
2365 dependencies : [lib_util,
2368 install_dir : usrbin_exec_dir,
2371 manadocs += ['term-utils/scriptlive.1.adoc']
2372 bashcompletions += ['scriptlive']
2376 scriptreplay_sources,
2377 include_directories : includes,
2378 link_with : [lib_common],
2379 dependencies : [math_libs],
2380 install_dir : usrbin_exec_dir,
2383 manadocs += ['term-utils/scriptreplay.1.adoc']
2384 bashcompletions += ['scriptreplay']
2386 opt = not get_option('build-agetty').disabled()
2390 include_directories : includes,
2391 link_with : [lib_common, logindefs_c],
2392 dependencies : [BSD ? lib_util : [], lib_systemd],
2393 install_dir : sbindir,
2395 build_by_default : opt)
2398 manadocs += ['term-utils/agetty.8.adoc']
2401 opt = not get_option('build-setterm').disabled()
2405 include_directories : includes,
2406 link_with : [lib_common],
2407 dependencies : [curses_libs],
2408 install_dir : usrbin_exec_dir,
2410 build_by_default : opt)
2413 manadocs += ['term-utils/setterm.1.adoc']
2414 bashcompletions += ['setterm']
2417 opt = not get_option('build-mesg').disabled()
2421 include_directories : includes,
2422 link_with : [lib_common],
2423 install_dir : usrbin_exec_dir,
2425 build_by_default : opt)
2428 manadocs += ['term-utils/mesg.1.adoc']
2429 bashcompletions += ['mesg']
2432 opt = not get_option('build-wall').disabled()
2436 include_directories : includes,
2437 link_with : [lib_common],
2438 dependencies : [lib_systemd],
2439 install_dir : usrbin_exec_dir,
2440 install_mode : 'rwxr-sr-x',
2442 build_by_default : opt)
2445 manadocs += ['term-utils/wall.1.adoc']
2446 bashcompletions += ['wall']
2449 # chgrp tty $(DESTDIR)$(usrbin_execdir)/wall
2450 # chmod g+s $(DESTDIR)$(usrbin_execdir)/wall
2452 opt = not get_option('build-write').disabled()
2456 include_directories : includes,
2457 link_with : [lib_common],
2458 dependencies : [lib_systemd],
2459 install_dir : usrbin_exec_dir,
2460 install_mode : 'rwxr-sr-x',
2462 build_by_default : opt)
2465 manadocs += ['term-utils/write.1.adoc']
2466 bashcompletions += ['write']
2469 # chgrp tty $(DESTDIR)$(usrbin_execdir)/write
2470 # chmod g+s $(DESTDIR)$(usrbin_execdir)/write
2472 opt = not get_option('build-login').disabled()
2476 include_directories : includes,
2477 link_with : [lib_common, logindefs_c],
2478 dependencies : [lib_pam,
2482 build_by_default : opt)
2483 if not is_disabler(exe)
2485 manadocs += ['login-utils/login.1.adoc']
2488 opt = not get_option('build-sulogin').disabled()
2492 include_directories : includes,
2493 link_with : [lib_common],
2494 dependencies : [lib_crypt,
2496 install_dir : sbindir,
2498 build_by_default : opt)
2499 if not is_disabler(exe)
2501 manadocs += ['login-utils/sulogin.8.adoc']
2507 include_directories : includes,
2508 link_with : [lib_common,
2510 dependencies : [curses_libs],
2511 install_dir : usrbin_exec_dir,
2514 manadocs += ['misc-utils/cal.1.adoc']
2515 bashcompletions += ['cal']
2517 opt = not get_option('build-logger').disabled()
2521 include_directories : includes,
2522 link_with : [lib_common],
2523 dependencies : [lib_systemd],
2524 install_dir : usrbin_exec_dir,
2526 build_by_default : opt)
2527 if opt and not is_disabler(exe)
2529 manadocs += ['misc-utils/logger.1.adoc']
2530 bashcompletions += ['logger']
2536 include_directories : includes,
2537 c_args : '-DTEST_LOGGER',
2538 link_with : [lib_common],
2539 dependencies : [lib_systemd],
2540 build_by_default: program_tests)
2541 if not is_disabler(exe)
2548 include_directories : includes,
2549 install_dir : usrbin_exec_dir,
2552 manadocs += ['misc-utils/look.1.adoc']
2553 bashcompletions += ['look']
2558 include_directories : includes,
2559 link_with : [lib_common],
2560 install_dir : usrbin_exec_dir,
2563 manadocs += ['misc-utils/mcookie.1.adoc']
2564 bashcompletions += ['mcookie']
2569 include_directories : includes,
2570 dependencies : [lib_selinux],
2571 install_dir : usrbin_exec_dir,
2574 manadocs += ['misc-utils/namei.1.adoc']
2575 bashcompletions += ['namei']
2580 include_directories : includes,
2581 link_with : [lib_common],
2582 install_dir : usrbin_exec_dir,
2585 manadocs += ['misc-utils/whereis.1.adoc']
2586 bashcompletions += ['whereis']
2591 include_directories : includes,
2592 link_with : [lib_common,
2595 install_dir : usrbin_exec_dir,
2597 if not is_disabler(exe)
2599 manadocs += ['misc-utils/lslocks.8.adoc']
2600 bashcompletions += ['lslocks']
2606 include_directories : includes,
2607 link_with : [lib_common,
2611 dependencies : lib_udev,
2613 if not is_disabler(exe)
2615 manadocs += ['misc-utils/lsblk.8.adoc']
2616 bashcompletions += ['lsblk']
2622 include_directories : includes,
2623 link_with : [lib_common,
2625 install_dir : usrbin_exec_dir,
2627 if not is_disabler(exe)
2629 manadocs += ['misc-utils/lsfd.1.adoc']
2635 include_directories : includes,
2636 link_with : [lib_common,
2638 install_dir : usrbin_exec_dir,
2640 if not is_disabler(exe)
2642 manadocs += ['misc-utils/uuidgen.1.adoc']
2643 bashcompletions += ['uuidgen']
2649 include_directories : includes,
2650 link_with : [lib_common,
2653 install_dir : usrbin_exec_dir,
2655 if not is_disabler(exe)
2657 manadocs += ['misc-utils/uuidparse.1.adoc']
2658 bashcompletions += ['uuidparse']
2665 include_directories : includes,
2666 link_with : [lib_common,
2668 dependencies : [realtime_libs,
2670 install_dir : usrsbin_exec_dir,
2672 build_by_default : opt)
2676 include_directories : includes,
2677 link_with : [lib_common,
2679 dependencies : thread_libs,
2680 build_by_default : opt and program_tests)
2681 if not is_disabler(exe)
2683 manadocs += ['misc-utils/uuidd.8.adoc']
2684 bashcompletions += ['uuidd']
2687 opt = build_libblkid
2691 include_directories : includes,
2692 link_with : [lib_common,
2694 install_dir : sbindir,
2696 build_by_default : opt)
2697 if opt and not is_disabler(exe)
2699 manadocs += ['misc-utils/blkid.8.adoc']
2700 bashcompletions += ['blkid']
2703 opt = opt and 'blkid' in static_programs
2707 include_directories : includes,
2708 link_with : [lib_common,
2710 install_dir : sbindir,
2712 build_by_default : opt)
2713 if opt and not is_disabler(exe)
2719 'libblkid/samples/mkfs.c',
2720 include_directories : includes,
2721 link_with : lib_blkid)
2722 if not is_disabler(exe)
2727 'sample-partitions',
2728 'libblkid/samples/partitions.c',
2729 include_directories : includes,
2730 link_with : lib_blkid)
2731 if not is_disabler(exe)
2736 'sample-superblocks',
2737 'libblkid/samples/superblocks.c',
2738 include_directories : includes,
2739 link_with : lib_blkid)
2740 if not is_disabler(exe)
2746 'libblkid/samples/topology.c',
2747 include_directories : includes,
2748 link_with : lib_blkid)
2749 if not is_disabler(exe)
2754 'test_blkid_fuzz_sample',
2755 'libblkid/src/fuzz.c',
2756 include_directories: includes,
2757 link_with: lib_blkid,
2758 build_by_default: program_tests)
2759 if not is_disabler(exe)
2763 ############################################################
2768 include_directories : includes,
2769 link_with : [lib_blkid],
2770 install_dir : sbindir,
2772 if not is_disabler(exe)
2774 manadocs += ['misc-utils/findfs.8.adoc']
2775 bashcompletions += ['findfs']
2781 include_directories : includes,
2782 link_with : [lib_common,
2785 install_dir : sbindir,
2787 if not is_disabler(exe)
2789 manadocs += ['misc-utils/wipefs.8.adoc']
2790 bashcompletions += ['wipefs']
2796 include_directories : includes,
2797 link_with : [lib_common,
2801 dependencies : [lib_udev],
2803 if not is_disabler(exe)
2805 manadocs += ['misc-utils/findmnt.8.adoc']
2806 bashcompletions += ['findmnt']
2812 include_directories : includes,
2813 link_with : [lib_common],
2815 if not is_disabler(exe)
2817 manadocs += ['misc-utils/kill.1.adoc']
2820 opt = not get_option('build-rename').disabled()
2824 include_directories : includes,
2825 install_dir : usrbin_exec_dir,
2827 build_by_default : opt)
2828 if opt and not is_disabler(exe)
2830 manadocs += ['misc-utils/rename.1.adoc']
2831 bashcompletions += ['rename']
2837 include_directories : includes,
2838 link_with : [lib_common],
2839 install_dir : usrbin_exec_dir,
2842 manadocs += ['misc-utils/getopt.1.adoc']
2843 bashcompletions += ['getopt']
2848 include_directories : includes,
2849 link_with : [lib_common,
2851 install_dir : usrbin_exec_dir,
2853 if not is_disabler(exe)
2855 manadocs += ['misc-utils/fincore.1.adoc']
2856 bashcompletions += ['fincore']
2862 include_directories : includes,
2863 link_with : [lib_common],
2864 install_dir : usrbin_exec_dir,
2866 if not is_disabler(exe)
2868 manadocs += ['misc-utils/hardlink.1.adoc']
2869 bashcompletions += ['hardlink']
2872 opt = not get_option('build-pipesz').disabled()
2876 include_directories : includes,
2877 link_with : [lib_common],
2878 install_dir : usrbin_exec_dir,
2880 if opt and not is_disabler(exe)
2882 manadocs += ['misc-utils/pipesz.1.adoc']
2883 bashcompletions += ['pipesz']
2889 include_directories : includes,
2890 c_args : '-DTEST_CAL',
2891 link_with : [lib_common,
2893 dependencies : [curses_libs],
2894 build_by_default: program_tests)
2895 if not is_disabler(exe)
2902 include_directories : includes,
2903 link_with : [lib_common],
2904 install_dir : usrbin_exec_dir,
2906 if not is_disabler(exe)
2908 manadocs += ['misc-utils/fadvise.1.adoc']
2909 bashcompletions += ['fadvise']
2912 if LINUX and conf.get('HAVE_PIDFD_OPEN') != false
2916 include_directories : includes,
2917 link_with : [lib_common],
2918 install_dir : usrbin_exec_dir,
2920 if not is_disabler(exe)
2922 manadocs += ['misc-utils/waitpid.1.adoc']
2923 bashcompletions += ['waitpid']
2927 syscalls_h = custom_target('syscalls.h',
2928 input : 'tools/all_syscalls',
2929 output : 'syscalls.h',
2930 command : ['tools/all_syscalls', cc.cmd_array()]
2933 if cc.compiles(fs.read('include/audit-arch.h'), name : 'has AUDIT_ARCH_NATIVE')
2936 'misc-utils/enosys.c', syscalls_h,
2937 include_directories : includes,
2938 link_with : [lib_common],
2939 install_dir : usrbin_exec_dir,
2941 if not is_disabler(exe)
2943 manadocs += ['misc-utils/enosys.1.adoc']
2944 bashcompletions += ['enosys']
2951 include_directories : includes,
2952 link_with : [lib_common, lib_smartcols],
2953 install_dir : usrbin_exec_dir,
2955 if not is_disabler(exe)
2957 manadocs += ['misc-utils/lsclocks.1.adoc']
2958 bashcompletions += ['lsclocks']
2961 ############################################################
2963 opt = not get_option('build-schedutils').disabled()
2966 'schedutils/chrt.c',
2967 include_directories : includes,
2968 link_with : lib_common,
2969 install_dir : usrbin_exec_dir,
2971 build_by_default : opt)
2975 'schedutils/ionice.c',
2976 include_directories : includes,
2977 link_with : lib_common,
2978 install_dir : usrbin_exec_dir,
2980 build_by_default : opt)
2984 'schedutils/taskset.c',
2985 include_directories : includes,
2986 link_with : lib_common,
2987 install_dir : usrbin_exec_dir,
2989 build_by_default : opt)
2993 'schedutils/uclampset.c',
2994 include_directories : includes,
2995 link_with : lib_common,
2996 install_dir : usrbin_exec_dir,
2998 build_by_default : opt)
3000 if opt and not is_disabler(exe)
3001 exes += [exe, exe2, exe3, exe4]
3002 manadocs += ['schedutils/chrt.1.adoc',
3003 'schedutils/ionice.1.adoc',
3004 'schedutils/taskset.1.adoc',
3005 'schedutils/uclampset.1.adoc']
3006 bashcompletions += ['chrt', 'ionice', 'taskset', 'uclampset']
3009 ############################################################
3011 # TODO: when autotools compat is not needed, s/_/-/g in file names?
3016 c_args : ['-DTEST_PROGRAM_TTYUTILS'],
3017 include_directories : dir_include,
3018 link_with : lib_common,
3019 build_by_default: program_tests)
3025 c_args : ['-DTEST_PROGRAM_BLKDEV'],
3026 include_directories : dir_include,
3027 link_with : lib_common,
3028 build_by_default: program_tests)
3034 c_args : ['-DTEST_PROGRAM_ISMOUNTED'],
3035 include_directories : dir_include,
3036 link_with : lib_common,
3037 build_by_default: program_tests)
3043 c_args : ['-DTEST_PROGRAM_MANGLE'],
3044 include_directories : dir_include,
3045 build_by_default: program_tests)
3051 c_args : ['-DTEST_PROGRAM_STRUTILS'],
3052 include_directories : dir_include,
3053 build_by_default: program_tests)
3059 'lib/color-names.c',
3060 c_args : ['-DTEST_PROGRAM_COLORS'],
3061 include_directories : dir_include,
3062 link_with : [lib_common, lib_tcolors],
3063 build_by_default: program_tests)
3069 c_args : ['-DTEST_PROGRAM_RANDUTILS'],
3070 include_directories : dir_include,
3071 build_by_default: program_tests)
3074 if conf.get('HAVE_OPENAT') != false and conf.get('HAVE_DIRFD') != false
3078 c_args : ['-DTEST_PROGRAM_PROCFS'],
3079 include_directories : dir_include,
3080 link_with : lib_common,
3081 build_by_default: program_tests)
3088 have_cpu_set_t ? 'lib/cpuset.c' : [],
3089 c_args : ['-DTEST_PROGRAM_PATH'],
3090 include_directories : dir_include,
3091 link_with : lib_common,
3092 build_by_default: program_tests)
3096 if conf.get('HAVE_PTY') != false
3101 c_args : ['-DTEST_PROGRAM_PTY'],
3102 include_directories : dir_include,
3103 link_with : [lib_common],
3104 dependencies : [lib_m,
3107 build_by_default: program_tests)
3115 c_args : ['-DTEST_PROGRAM_CPUSET'],
3116 include_directories : dir_include,
3117 build_by_default: program_tests)
3128 have_cpu_set_t ? 'lib/cpuset.c' : [],
3129 c_args : ['-DTEST_PROGRAM_SYSFS'],
3130 include_directories : dir_include,
3131 build_by_default: program_tests)
3137 c_args : ['-DTEST_PROGRAM_PAGER'],
3138 include_directories : dir_include,
3139 build_by_default: program_tests)
3143 'test_linux_version',
3144 'lib/linux_version.c',
3145 c_args : ['-DTEST_PROGRAM_LINUXVERSION'],
3146 include_directories : dir_include,
3147 build_by_default: program_tests)
3153 c_args : ['-DTEST_PROGRAM_FILEUTILS'],
3154 include_directories : dir_include,
3155 build_by_default: program_tests)
3159 'test_canonicalize',
3160 'lib/canonicalize.c',
3161 c_args : ['-DTEST_PROGRAM_CANONICALIZE'],
3162 include_directories : dir_include,
3163 build_by_default: program_tests)
3170 c_args : ['-DTEST_PROGRAM_TIMEUTILS'],
3171 include_directories : dir_include,
3172 build_by_default: program_tests)
3178 c_args : ['-DTEST_PROGRAM'],
3179 include_directories : dir_include,
3180 link_with : lib_common,
3181 build_by_default: program_tests)
3187 c_args : ['-DTEST_PROGRAM'],
3188 include_directories : dir_include,
3189 link_with : [lib_common, logindefs_c],
3190 build_by_default: program_tests)
3194 ############################################################
3198 'libuuid/src/test_uuid.c',
3199 include_directories : [dir_include, dir_libuuid],
3200 link_with : lib_uuid,
3201 dependencies : socket_libs,
3202 build_by_default: program_tests)
3203 if not is_disabler(exe)
3207 ############################################################
3209 libfdisk_tests_cflags = ['-DTEST_PROGRAM',
3211 libfdisk_tests_ldadd = [lib_fdisk_static, lib_uuid, lib_blkid]
3215 'libfdisk/src/ask.c',
3216 c_args : libfdisk_tests_cflags,
3217 include_directories : lib_fdisk_includes,
3218 link_with : libfdisk_tests_ldadd,
3219 build_by_default: program_tests)
3220 if not is_disabler(exe)
3226 'libfdisk/src/gpt.c',
3227 c_args : libfdisk_tests_cflags,
3228 include_directories : lib_fdisk_includes,
3229 link_with : libfdisk_tests_ldadd,
3230 build_by_default: program_tests)
3231 if not is_disabler(exe)
3237 'libfdisk/src/utils.c',
3238 c_args : libfdisk_tests_cflags,
3239 include_directories : lib_fdisk_includes,
3240 link_with : libfdisk_tests_ldadd,
3241 build_by_default: program_tests)
3242 if not is_disabler(exe)
3247 'test_fdisk_script',
3248 'libfdisk/src/script.c',
3249 c_args : libfdisk_tests_cflags,
3250 include_directories : lib_fdisk_includes,
3251 link_with : libfdisk_tests_ldadd,
3252 build_by_default: program_tests)
3253 if not is_disabler(exe)
3258 'test_fdisk_version',
3259 'libfdisk/src/version.c',
3260 c_args : libfdisk_tests_cflags,
3261 include_directories : lib_fdisk_includes,
3262 link_with : libfdisk_tests_ldadd,
3263 build_by_default: program_tests)
3264 if not is_disabler(exe)
3270 'libfdisk/src/item.c',
3271 c_args : libfdisk_tests_cflags,
3272 include_directories : lib_fdisk_includes,
3273 link_with : libfdisk_tests_ldadd,
3274 build_by_default: program_tests)
3275 if not is_disabler(exe)
3279 sample_fdisk_cflags = ['-Wno-unused']
3280 sample_fdisk_ldadd = [lib_common, lib_fdisk]
3283 'sample-fdisk-mkpart',
3284 'libfdisk/samples/mkpart.c',
3285 c_args : sample_fdisk_cflags,
3286 include_directories : lib_fdisk_includes,
3287 link_with : sample_fdisk_ldadd)
3288 if not is_disabler(exe)
3293 'sample-fdisk-mkpart-fullspec',
3294 'libfdisk/samples/mkpart-fullspec.c',
3295 c_args : sample_fdisk_cflags,
3296 include_directories : lib_fdisk_includes,
3297 link_with : sample_fdisk_ldadd)
3298 if not is_disabler(exe)
3302 ############################################################
3306 'tests/helpers/test_mbsencode.c',
3307 include_directories : includes,
3308 link_with : lib_common,
3309 build_by_default: program_tests)
3314 'tests/helpers/test_byteswap.c',
3315 include_directories : includes,
3316 build_by_default: program_tests)
3321 'tests/helpers/test_md5.c',
3323 include_directories : includes,
3324 build_by_default: program_tests)
3329 'tests/helpers/test_sha1.c',
3331 include_directories : includes,
3332 build_by_default: program_tests)
3337 'tests/helpers/test_pathnames.c',
3338 include_directories : includes,
3339 build_by_default: program_tests)
3344 'tests/helpers/test_strerror.c',
3345 include_directories : includes,
3346 build_by_default: program_tests)
3351 'tests/helpers/test_sysinfo.c',
3352 include_directories : includes,
3353 build_by_default: program_tests)
3358 'tests/helpers/test_sigreceive.c',
3359 include_directories : includes,
3360 link_with : lib_common,
3361 build_by_default: program_tests)
3366 'tests/helpers/test_tiocsti.c',
3367 include_directories : includes,
3368 build_by_default: program_tests)
3372 'test_uuid_namespace',
3373 'tests/helpers/test_uuid_namespace.c',
3377 include_directories : includes,
3378 build_by_default: program_tests)
3382 mq_libs += cc.find_library('rt', required : true)
3387 'tests/helpers/test_mkfds.c',
3388 include_directories : includes,
3389 dependencies : mq_libs,
3390 build_by_default: program_tests)
3396 'tests/helpers/test_enosys.c',
3397 include_directories : includes,
3398 build_by_default: program_tests)
3401 ############################################################
3403 if conf.get('HAVE_OPENAT') != false
3405 'sample-scols-tree',
3406 'libsmartcols/samples/tree.c',
3407 include_directories : includes,
3408 link_with : [lib_smartcols, lib_common],
3409 build_by_default: program_tests)
3410 if not is_disabler(exe)
3416 'sample-scols-title',
3417 'libsmartcols/samples/title.c',
3418 include_directories : includes,
3419 link_with : [lib_smartcols, lib_common])
3420 if not is_disabler(exe)
3425 'sample-scols-wrap',
3426 'libsmartcols/samples/wrap.c',
3427 include_directories : includes,
3428 link_with : [lib_smartcols, lib_common])
3429 if not is_disabler(exe)
3434 'sample-scols-continuous',
3435 'libsmartcols/samples/continuous.c',
3436 include_directories : includes,
3437 link_with : [lib_smartcols, lib_common])
3438 if not is_disabler(exe)
3443 'sample-scols-maxout',
3444 'libsmartcols/samples/maxout.c',
3445 include_directories : includes,
3446 link_with : [lib_smartcols, lib_common])
3447 if not is_disabler(exe)
3452 'sample-scols-fromfile',
3453 'libsmartcols/samples/fromfile.c',
3454 include_directories : includes,
3455 link_with : [lib_smartcols, lib_common])
3456 if not is_disabler(exe)
3461 'sample-scols-grouping-simple',
3462 'libsmartcols/samples/grouping-simple.c',
3463 include_directories : includes,
3464 link_with : [lib_smartcols, lib_common])
3465 if not is_disabler(exe)
3470 'sample-scols-grouping-overlay',
3471 'libsmartcols/samples/grouping-overlay.c',
3472 include_directories : includes,
3473 link_with : [lib_smartcols, lib_common])
3474 if not is_disabler(exe)
3478 ############################################################
3480 # Let the test runner know whether we're running under asan and export
3481 # some paths. We use a file on disk so that it is possible to run the
3482 # test scripts from commandline without setting any variables.
3483 configure_file(output : 'meson.conf',
3488 '''.format(get_option('b_sanitize')=='address' ? 'yes' : '',
3489 python.full_path())])
3491 run_sh = find_program('tests/run.sh')
3495 '--srcdir=' + meson.current_source_dir(),
3496 '--builddir=' + meson.current_build_dir(),
3502 manadocs += ['lib/terminal-colors.d.5.adoc']
3503 manadocs += ['libblkid/libblkid.3.adoc']
3507 'libuuid/man/uuid.3.adoc',
3508 'libuuid/man/uuid_clear.3.adoc',
3509 'libuuid/man/uuid_compare.3.adoc',
3510 'libuuid/man/uuid_copy.3.adoc',
3511 'libuuid/man/uuid_generate.3.adoc',
3512 'libuuid/man/uuid_is_null.3.adoc',
3513 'libuuid/man/uuid_parse.3.adoc',
3514 'libuuid/man/uuid_time.3.adoc',
3515 'libuuid/man/uuid_unparse.3.adoc']
3517 'uuid_generate_random.3': 'uuid_generate.3',
3518 'uuid_generate_time.3': 'uuid_generate.3',
3519 'uuid_generate_time_safe.3': 'uuid_generate.3',
3523 asciidoctor = find_program('asciidoctor', required : false)
3524 if asciidoctor.found()
3525 foreach adoc : manadocs
3526 name = adoc.split('/')[-1]
3527 page = name.split('.adoc')[0]
3528 section = page.split('.')[-1]
3529 mandirn = join_paths(mandir, 'man' + section)
3534 command : [ asciidoctor,
3536 '-a', 'VERSION=' + meson.project_version(),
3537 '-a', 'release-version=' + meson.project_version(),
3538 '-a', 'ADJTIME_PATH=/etc/adjtime',
3539 '-a', 'package-docdir=' + docdir,
3540 '--base-dir=' + meson.current_source_dir(),
3541 '--destination-dir=' + meson.current_build_dir(),
3542 '--load-path', '@SOURCE_ROOT@/tools',
3543 '--require', 'asciidoctor-includetracker',
3547 depfile : page + '.deps',
3549 install_dir : mandirn)
3552 foreach link_name, target : manlinks
3553 link_section = link_name.split('.')[-1]
3554 target_section = target.split('.')[-1]
3555 meson.add_install_script(meson_make_manpage_stub,
3556 join_paths('man' + target_section, target),
3557 join_paths(mandir, 'man' + link_section, link_name))
3561 if bash_completion.found()
3562 foreach completion : bashcompletions
3564 join_paths('bash-completion', completion),
3565 install_dir : bash_completion.get_variable(pkgconfig : 'completionsdir')
3568 foreach link_name, target : bashcompletionslinks
3569 meson.add_install_script(meson_make_symlink,
3571 join_paths(bash_completion.get_variable(pkgconfig : 'completionsdir'), link_name))