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 <sys/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
222 lib_m = cc.find_library('m')
224 lib_tinfo = dependency(
226 required : get_option('tinfo'))
228 lib_ncursesw = dependency(
230 required : get_option('ncursesw'))
231 if lib_ncursesw.found()
232 headers += ['ncursesw/ncurses.h',
236 lib_ncurses = disabler()
238 lib_ncurses = dependency(
240 required : get_option('ncurses'))
241 headers += ['ncurses.h',
245 conf.set('HAVE_LIBNCURSESW', lib_ncursesw.found())
246 conf.set('HAVE_LIBNCURSES', lib_ncurses.found())
247 conf.set('HAVE_NCURSES', lib_ncursesw.found() or lib_ncurses.found())
249 lib_slang = dependency(
251 required : get_option('slang'))
253 headers += ['slang.h',
258 conf.set('HAVE_SLANG', lib_slang.found())
260 foreach curses_libs : [lib_slang, lib_ncursesw, lib_ncurses]
261 if curses_libs.found()
262 have = cc.has_function('use_default_colors', dependencies : curses_libs)
263 conf.set('HAVE_USE_DEFAULT_COLORS', have ? 1 : false)
264 have = cc.has_function('resizeterm', dependencies : curses_libs)
265 conf.set('HAVE_RESIZETERM', have ? 1 : false)
272 required : get_option('zlib'))
274 lib_readline = dependency(
276 required : get_option('readline'))
277 conf.set('HAVE_LIBREADLINE', lib_readline.found() ? 1 : false)
279 lib_readline_static = dependency(
282 required : need_static_libs ? get_option('readline') : disabler())
284 if meson.version().version_compare('>= 0.59.0')
285 lib_intl = dependency(
287 required : get_option('nls'))
288 conf.set('ENABLE_NLS', lib_intl.found() ? 1 : false)
290 if get_option('nls').enabled()
291 error('nls is not supported with meson before 0.59.0')
293 lib_intl = dependency('', required : false)
296 lib_user = dependency(
299 required : get_option('libuser'))
300 conf.set('HAVE_LIBUSER', lib_user.found() ? 1 : false)
302 lib_util = cc.find_library(
304 required : get_option('libutil'))
305 conf.set('HAVE_LIBUTIL', lib_util.found() ? 1 : false)
307 lib_utempter = cc.find_library(
309 required : get_option('libutempter'))
310 conf.set('HAVE_LIBUTEMPTER', lib_utempter.found() ? 1 : false)
312 systemd = dependency(
314 required : get_option('systemd'))
316 lib_systemd = dependency(
318 required : get_option('systemd'))
319 conf.set('HAVE_LIBSYSTEMD', lib_systemd.found() ? 1 : false)
320 conf.set('USE_SYSTEMD', lib_systemd.found() ? 1 : false)
322 have = cc.has_function(
323 'sd_session_get_username',
324 dependencies : lib_systemd)
325 conf.set('HAVE_DECL_SD_SESSION_GET_USERNAME', have ? 1 : false)
327 lib_udev = dependency(
329 required : get_option('systemd'))
330 conf.set('HAVE_LIBUDEV', lib_udev.found() ? 1 : false)
332 lib_crypt = cc.find_library('crypt')
334 lib_pam = cc.find_library('pam', required : get_option('build-login'))
335 if not lib_pam.found()
336 lib_pam = cc.find_library('pam', required : get_option('build-chfn-chsh'))
338 if not lib_pam.found()
339 lib_pam = cc.find_library('pam', required : get_option('build-su'))
341 if not lib_pam.found()
342 lib_pam = cc.find_library('pam', required : get_option('build-runuser'))
345 lib_pam_misc = cc.find_library('pam_misc')
346 lib_pam = [lib_pam, lib_pam_misc]
348 lib_pam_misc = declare_dependency()
351 lib_cryptsetup = dependency(
353 required : get_option('cryptsetup'))
354 conf.set('HAVE_CRYPTSETUP', lib_cryptsetup.found() ? 1 : false)
356 if not get_option('cryptsetup').disabled() and get_option('cryptsetup-dlopen').enabled()
357 if meson.version().version_compare('>= 0.62.0')
358 lib_dl = dependency('dl')
360 lib_dl = cc.find_library('dl')
362 conf.set('CRYPTSETUP_VIA_DLOPEN', 1)
363 summary('cryptsetup support (dlopen)',
365 section : 'components')
367 summary('cryptsetup support',
368 lib_cryptsetup.found() ? 'enabled' : 'disabled',
369 section : 'components')
372 have = cc.has_function(
373 'crypt_activate_by_signed_key',
374 dependencies : lib_cryptsetup)
375 conf.set('HAVE_CRYPT_ACTIVATE_BY_SIGNED_KEY', have ? 1 : false)
377 lib_cap_ng = dependency(
379 required : get_option('build-setpriv'))
381 lib_selinux = dependency(
384 required : get_option('selinux'))
385 conf.set('HAVE_LIBSELINUX', lib_selinux.found() ? 1 : false)
387 lib_magic = dependency(
389 required : get_option('magic'))
390 conf.set('HAVE_MAGIC', lib_magic.found() ? 1 : false)
392 lib_econf = dependency(
394 required : get_option('econf'))
395 conf.set('HAVE_LIBECONF', lib_econf.found() ? 1 : false)
397 lib_audit = dependency(
399 required : get_option('audit'))
400 conf.set('HAVE_LIBAUDIT', lib_audit.found() ? 1 : false)
402 conf.set('HAVE_SMACK', not get_option('smack').disabled())
404 foreach header : headers
405 have = cc.has_header(header)
406 conf.set('HAVE_' + header.underscorify().to_upper(), have ? 1 : false)
409 header = 'linux/btrfs.h'
410 enable_btrfs = cc.has_header(header,
411 required : get_option('btrfs'))
412 conf.set('HAVE_' + header.underscorify().to_upper(), enable_btrfs ? 1 : false)
413 conf.set('HAVE_BTRFS_SUPPORT', enable_btrfs ? 1 : false)
415 prefix = conf.get('HAVE_LINUX_COMPILER_H') ? '#include <linux/compiler.h>' : ''
420 have = cc.has_header(header,
422 conf.set('HAVE_' + header.underscorify().to_upper(), have ? 1 : false)
425 have = cc.has_header('sched.h')
426 conf.set10('HAVE_DECL_CPU_ALLOC', have)
427 # We get -1 if the size cannot be determined
428 have_cpu_set_t = cc.sizeof('cpu_set_t', prefix : '#define _GNU_SOURCE\n#include <sched.h>') > 0
429 conf.set('HAVE_CPU_SET_T', have_cpu_set_t ? 1 : false)
431 have = cc.has_header_symbol('unistd.h', 'environ', args : '-D_GNU_SOURCE')
432 conf.set10('HAVE_ENVIRON_DECL', have)
434 have = cc.has_header_symbol('signal.h', 'sighandler_t', args : '-D_GNU_SOURCE')
435 conf.set('HAVE_SIGHANDLER_T', have ? 1 : false)
437 have = cc.has_function('strsignal')
438 conf.set10('HAVE_STRSIGNAL_DECL', have)
440 have = cc.sizeof('union semun', prefix : '#include <sys/sem.h>') > 0
441 conf.set('HAVE_UNION_SEMUN', have ? 1 : false)
443 have = cc.has_type('loff_t', prefix : '#include <sys/types.h>')
444 conf.set('HAVE_LOFF_T', have ? 1 : false)
446 have = cc.compiles('''
447 #define _GNU_SOURCE 1
448 #include <langinfo.h>
451 str = nl_langinfo (ALTMON_1);
452 str = nl_langinfo (ALTMON_2);
453 str = nl_langinfo (ALTMON_3);
454 str = nl_langinfo (ALTMON_4);
455 str = nl_langinfo (ALTMON_5);
456 str = nl_langinfo (ALTMON_6);
457 str = nl_langinfo (ALTMON_7);
458 str = nl_langinfo (ALTMON_8);
459 str = nl_langinfo (ALTMON_9);
460 str = nl_langinfo (ALTMON_10);
461 str = nl_langinfo (ALTMON_11);
462 str = nl_langinfo (ALTMON_12);
466 name : 'langinfo.h defines ALTMON_x constants')
467 conf.set('HAVE_LANGINFO_ALTMON', have ? 1 : false)
469 have = cc.compiles('''
470 #define _GNU_SOURCE 1
471 #include <langinfo.h>
474 str = nl_langinfo (_NL_ABALTMON_1);
475 str = nl_langinfo (_NL_ABALTMON_2);
476 str = nl_langinfo (_NL_ABALTMON_3);
477 str = nl_langinfo (_NL_ABALTMON_4);
478 str = nl_langinfo (_NL_ABALTMON_5);
479 str = nl_langinfo (_NL_ABALTMON_6);
480 str = nl_langinfo (_NL_ABALTMON_7);
481 str = nl_langinfo (_NL_ABALTMON_8);
482 str = nl_langinfo (_NL_ABALTMON_9);
483 str = nl_langinfo (_NL_ABALTMON_10);
484 str = nl_langinfo (_NL_ABALTMON_11);
485 str = nl_langinfo (_NL_ABALTMON_12);
489 name : 'langinfo.h defines _NL_ABALTMON_x constants')
490 conf.set('HAVE_LANGINFO_NL_ABALTMON', have ? 1 : false)
492 have = cc.compiles('''
493 #define _GNU_SOURCE 1
494 #include <langinfo.h>
497 str = nl_langinfo (_NL_TIME_WEEK_1STDAY);
501 name : 'langinfo.h defines _NL_TIME_WEEK_1STDAY constant')
502 conf.set('HAVE_DECL__NL_TIME_WEEK_1STDAY', have ? 1 : false)
596 have = cc.has_function(func)
597 # For autotools compatibility, use either #define FOO 1 or #undef FOO.
598 # This makes little sense, but is necessary to avoid warnings about
599 # redefined macros from Python.h, which uses this convention.
600 conf.set('HAVE_' + func.to_upper(), have ? 1 : false)
603 have = conf.get('HAVE_FUTIMENS') in [1] and conf.get('HAVE_INOTIFY_INIT1') in [1]
604 conf.set('AGETTY_RELOAD', have ? 1 : false)
606 warning('futimens or inotify_init1 not found; agetty(8) will not provide --reload functionality')
609 have_dirfd = (cc.has_function('dirfd') or
610 cc.has_header_symbol('dirent.h', 'dirfd',
611 prefix : '#include <sys/types.h>'))
612 conf.set('HAVE_DIRFD', have_dirfd ? 1 : false)
614 have_ddfd = cc.has_member('DIR', 'dd_fd',
616 #include <sys/types.h>
619 conf.set('HAVE_DECL_DDFD', have_ddfd ? 1 : false)
621 have = cc.has_member('struct tm', 'tm_gmtoff',
626 conf.set('HAVE_TM_GMTOFF', have ? 1 : false)
630 have = cc.sizeof('enum fsconfig_command', prefix : '#include <linux/mount.h>') > 0
631 conf.set('HAVE_ENUM_FSCONFIG_COMMAND', have ? 1 : false)
633 have = cc.has_member('struct termios', 'c_line',
634 prefix : '#include <termios.h>')
635 conf.set('HAVE_STRUCT_TERMIOS_C_LINE', have ? 1 : false)
637 have = cc.has_member('struct stat', 'st_mtim.tv_nsec',
638 prefix : '#include <sys/stat.h>')
639 conf.set('HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC', have ? 1 : false)
641 have = cc.has_member('struct statx', 'stx_mnt_id',
642 prefix : '#include <sys/stat.h>')
643 conf.set('HAVE_STRUCT_STATX_STX_MNT_ID', have ? 1 : false)
645 # replacement for AC_STRUCT_TIMEZONE
646 have = cc.has_member('struct tm', 'tm_zone',
647 prefix : '#include <time.h>')
648 conf.set('HAVE_STRUCT_TM_TM_ZONE', have ? 1 : false)
650 have = cc.has_header_symbol('time.h', 'tzname', args: '-D_GNU_SOURCE')
651 conf.set('HAVE_DECL_TZNAME', have ? 1 : false)
653 have = cc.has_header_symbol('linux/blkzoned.h', 'BLK_ZONE_REP_CAPACITY')
654 conf.set('HAVE_DECL_BLK_ZONE_REP_CAPACITY', have ? 1 : false)
656 have = cc.has_header_symbol('linux/pr.h', 'PR_REP_CAPACITY')
657 conf.set('HAVE_DECL_PR_REP_CAPACITY', have ? 1 : false)
662 extern char *tzname[];
665 return tzname ? 0 : 1;
667 '''.format(have ? 1 : 0)
668 have = cc.compiles(code, name : 'using tzname[]')
669 conf.set('HAVE_TZNAME', have ? 1 : false)
672 if not cc.has_function('socket')
673 socket_libs += cc.find_library('socket', required : true)
674 have = cc.has_function('socket',
675 dependencies : socket_libs)
677 error('socket() function not available')
682 have = cc.has_function('clock_gettime')
684 realtime_libs += cc.find_library('rt', required : true)
685 have = cc.has_function('clock_gettime',
686 dependencies : realtime_libs)
688 conf.set('HAVE_CLOCK_GETTIME', have ? 1 : false)
690 thread_libs = dependency('threads')
692 have = cc.has_function('timer_create')
694 realtime_libs = [cc.find_library('rt', required : true)]
695 have = cc.has_function('timer_create',
696 dependencies : realtime_libs)
698 realtime_libs += thread_libs
699 have = cc.has_function('timer_create',
700 dependencies : realtime_libs)
703 conf.set('HAVE_TIMER_CREATE', have ? 1 : false)
705 have = cc.has_function('setitimer')
706 conf.set('HAVE_SETITIMER', have ? 1 : false)
709 rtas_libs = cc.find_library('rtas', required : false)
710 conf.set('HAVE_LIBRTAS', rtas_libs.found() ? 1 : false)
713 if not cc.has_header_symbol('math.h', 'isnan')
714 lib = cc.find_library('m', required : true)
715 if (cc.has_function('isnan', dependencies : lib) and
716 cc.has_function('__isnan', dependencies : lib))
721 have = cc.has_header_symbol('errno.h', 'program_invocation_short_name',
722 args : '-D_GNU_SOURCE')
723 conf.set('HAVE_PROGRAM_INVOCATION_SHORT_NAME', have ? 1 : false)
726 extern char *__progname;
728 return (*__progname != 0);
731 have = cc.compiles(code, name : 'using __progname')
732 conf.set('HAVE___PROGNAME', have ? 1 : false)
734 have = conf.get('HAVE_PTY_H') != false and conf.get('HAVE_SYS_SIGNALFD_H') != false
735 conf.set('HAVE_PTY', have ? 1 : false)
737 have_opal_get_status= cc.has_header_symbol('linux/sed-opal.h', 'IOC_OPAL_GET_STATUS')
738 conf.set('HAVE_OPAL_GET_STATUS', have_opal_get_status ? 1 : false)
740 build_plymouth_support = get_option('build-plymouth-support')
741 have_tiocglcktrmios = cc.has_header_symbol(
742 'sys/ioctl.h', 'TIOCGLCKTRMIOS',
743 required : build_plymouth_support.enabled())
744 have_sock_cloexec = cc.has_header_symbol(
745 'sys/socket.h', 'SOCK_CLOEXEC',
746 prefix : '#include <sys/types.h>',
747 required : build_plymouth_support.enabled())
748 have_sock_nonblock = cc.has_header_symbol(
749 'sys/socket.h', 'SOCK_NONBLOCK',
750 prefix : '#include <sys/types.h>',
751 required : build_plymouth_support.enabled())
752 have_so_passcred = cc.has_header_symbol(
753 'sys/socket.h', 'SO_PASSCRED',
754 prefix : '#include <sys/types.h>',
755 required : build_plymouth_support.enabled())
757 build_plymouth_support = (not build_plymouth_support.disabled() and
758 have_tiocglcktrmios and
759 have_sock_cloexec and
760 have_sock_nonblock and
762 conf.set('ENABLE_PLYMOUTH_SUPPORT', build_plymouth_support ? 1 : false)
763 summary('plymouth support',
764 build_plymouth_support ? 'enabled' : 'disabled',
765 section : 'components')
767 # check for valid fallocate() function
768 # with 32 bits glibc 2.10, fallocate() exists but not fallocate64()
769 # when _FILE_OFFSET_BITS==64, fallocate() is redirect to fallocate64()
770 # and program can't be linked.
778 ret = fallocate(0, FALLOC_FL_KEEP_SIZE, 0xfffffffful, 0xfffffffful);
779 return ret == 0 ? 0 : 1;
782 have = cc.links(code, name : 'fallocate() function')
783 conf.set('HAVE_FALLOCATE', have ? 1 : false)
791 ret = posix_fallocate(0, 0xfffffffful, 0xfffffffful);
792 return ret == 0 ? 0 : 1;
795 have = cc.links(code, name : 'posix_fallocate() function')
796 conf.set('HAVE_POSIX_FALLOCATE', have ? 1 : false)
798 use_hwclock_cmos = host_machine.cpu_family() in ['x86', 'x86_64']
799 message('Use CMOS clock: @0@'.format(use_hwclock_cmos))
800 conf.set('USE_HWCLOCK_CMOS', use_hwclock_cmos ? 1 : false)
802 conf.set('HAVE_TLS', get_option('use-tls') ? 1 : false)
803 conf.set('PG_BELL', get_option('pg-bell') ? 1 : false)
804 conf.set('USE_COLORS_BY_DEFAULT', get_option('colors-default') ? 1 : false)
806 ############################################################
809 fs_search_path = get_option('fs-search-path')
810 fs_search_path_extra = get_option('fs-search-path-extra')
811 if fs_search_path_extra != ''
812 fs_search_path = ':'.join(fs_search_path, fs_search_path_extra)
814 conf.set_quoted('FS_SEARCH_PATH', fs_search_path)
816 systemdsystemunitdir = ''
818 systemdsystemunitdir = systemd.get_variable(pkgconfig : 'systemdsystemunitdir')
821 sysvinit = get_option('sysvinit').enabled()
822 sysvinitrcdir = sysconfdir + '/init.d'
824 program_tests = get_option('program-tests')
826 chfn_chsh_password = get_option('chfn-chsh-password') or lib_user.found()
827 conf.set('CHFN_CHSH_PASSWORD', chfn_chsh_password ? 1 : false)
829 have = get_option('chsh-only-listed')
830 conf.set('ONLY_LISTED_SHELLS', have ? 1 : false)
832 have = get_option('use-tty-group')
833 conf.set('USE_TTY_GROUP', have ? 1 : false)
835 build_hwclock = not get_option('build-hwclock').disabled()
836 bison = find_program('bison', required: build_hwclock)
837 bison_gen = generator(
839 output : ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
840 arguments : ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@'])
844 meson_make_symlink = meson.current_source_dir() + '/tools/meson-make-symlink.sh'
845 meson_make_manpage_stub = meson.current_source_dir() + '/tools/meson-make-manpage-stub.sh'
849 configuration : conf)
851 add_project_arguments('-include', meson.current_build_dir() / 'config.h', language : 'c')
856 '-Waddress-of-packed-member',
857 '-Wdiscarded-qualifiers',
858 '-Wembedded-directive',
861 '-Wimplicit-function-declaration',
862 '-Wmissing-declarations',
863 '-Wmissing-parameter-type',
864 '-Wmissing-prototypes',
866 '-Wno-missing-field-initializers',
867 '-Wold-style-definition',
871 '-Wstrict-prototypes',
874 '-Wunused-but-set-parameter',
875 '-Wunused-but-set-variable',
876 '-Wunused-parameter',
882 foreach compiler_flag : compiler_flags
883 if cc.has_argument(compiler_flag)
884 add_project_arguments(compiler_flag, language : 'c')
892 bashcompletionslinks = {}
898 subdir('libsmartcols')
901 subdir('login-utils')
909 includes = [dir_include,
919 opt = not get_option('build-chfn-chsh').disabled()
924 include_directories : includes,
925 link_with : [lib_common, logindefs_c],
926 dependencies : chfn_chsh_deps,
927 install_dir : usrbin_exec_dir,
928 install_mode : 'rwsr-xr-x',
930 build_by_default : opt)
934 'login-utils/chsh.c',
937 include_directories : includes,
938 link_with : lib_common,
939 dependencies : chfn_chsh_deps,
940 install_dir : usrbin_exec_dir,
941 install_mode : 'rwsr-xr-x',
943 build_by_default : opt)
944 if opt and not is_disabler(exe)
946 manadocs += ['login-utils/chfn.1.adoc', 'login-utils/chsh.1.adoc']
947 bashcompletions += ['chfn', 'chsh']
952 test_islocal_sources,
953 include_directories : includes,
954 c_args : '-DTEST_PROGRAM',
955 build_by_default : program_tests)
960 test_consoles_sources,
961 c_args : ['-DTEST_PROGRAM'],
962 include_directories : includes,
963 link_with : lib_common,
964 build_by_default : program_tests)
967 opt = not get_option('build-last').disabled()
971 include_directories : includes,
972 link_with : [lib_common],
973 install_dir : usrbin_exec_dir,
975 build_by_default : opt)
976 if opt and not is_disabler(exe)
978 meson.add_install_script(meson_make_symlink,
980 join_paths(usrbin_exec_dir, 'lastb'))
981 manadocs += ['login-utils/last.1.adoc']
982 manlinks += {'lastb.1': 'last.1'}
983 bashcompletions += ['last']
984 bashcompletionslinks += {'lastb': 'last'}
987 opt = not get_option('build-nologin').disabled()
990 'login-utils/nologin.c',
991 include_directories : includes,
992 install_dir : sbindir,
993 link_with : [lib_common],
995 build_by_default : opt)
996 if opt and not is_disabler(exe)
998 manadocs += ['login-utils/nologin.8.adoc']
1001 opt = not get_option('build-utmpdump').disabled()
1004 'login-utils/utmpdump.c',
1005 include_directories : includes,
1006 link_with : [lib_common],
1007 install_dir : usrbin_exec_dir,
1009 build_by_default : opt)
1010 if opt and not is_disabler(exe)
1012 manadocs += ['login-utils/utmpdump.1.adoc']
1013 bashcompletions += ['utmpdump']
1016 opt = not get_option('build-su').disabled()
1020 'login-utils/su-common.c',
1021 'login-utils/su-common.h',
1025 include_directories : includes,
1026 link_with : [lib_common, logindefs_c],
1027 dependencies : [lib_pam,
1031 install_mode : 'rwsr-xr-x',
1033 build_by_default : opt)
1034 if opt and not is_disabler(exe)
1036 manadocs += ['login-utils/su.1.adoc']
1037 bashcompletions += ['su']
1040 opt = not get_option('build-newgrp').disabled()
1043 'login-utils/newgrp.c',
1044 include_directories : includes,
1045 dependencies : [lib_crypt],
1046 install_dir : usrbin_exec_dir,
1047 install_mode : 'rwsr-xr-x',
1049 build_by_default : opt)
1050 if opt and not is_disabler(exe)
1052 manadocs += ['login-utils/newgrp.1.adoc']
1053 bashcompletions += ['newgrp']
1056 opt = not get_option('build-lslogins').disabled()
1059 'login-utils/lslogins.c',
1060 include_directories : includes,
1061 link_with : [lib_common,
1064 dependencies : [lib_selinux,
1066 install_dir : usrbin_exec_dir,
1068 build_by_default : opt)
1069 if opt and not is_disabler(exe)
1071 manadocs += ['login-utils/lslogins.1.adoc']
1072 bashcompletions += ['lslogins']
1075 opt = not get_option('build-vipw').disabled()
1078 'login-utils/vipw.c',
1079 'login-utils/setpwnam.h',
1080 include_directories : includes,
1081 link_with : [lib_common],
1082 dependencies : [lib_selinux],
1083 install_dir : usrbin_exec_dir,
1085 build_by_default : opt)
1086 if opt and not is_disabler(exe)
1088 meson.add_install_script(meson_make_symlink,
1090 join_paths(usrbin_exec_dir, 'vigr'))
1091 manadocs += ['login-utils/vipw.8.adoc']
1092 meson.add_install_script(meson_make_symlink,
1094 join_paths(mandir, 'man8/vigr.8'))
1097 opt = not get_option('build-runuser').disabled()
1100 'login-utils/runuser.c',
1101 'login-utils/su-common.c',
1102 'login-utils/su-common.h',
1106 include_directories : includes,
1107 link_with : [lib_common, logindefs_c],
1108 dependencies : [lib_pam,
1112 install_dir : sbindir,
1114 build_by_default : opt)
1115 if opt and not is_disabler(exe)
1117 manadocs += ['login-utils/runuser.1.adoc']
1118 bashcompletionslinks += {'runuser': 'su'}
1121 ############################################################
1126 include_directories : includes,
1127 link_with : lib_common,
1128 install_dir : usrbin_exec_dir,
1131 manadocs += ['text-utils/col.1.adoc']
1132 bashcompletions += ['col']
1137 include_directories : includes,
1138 install_dir : usrbin_exec_dir,
1141 manadocs += ['text-utils/colcrt.1.adoc']
1142 bashcompletions += ['colcrt']
1147 include_directories : includes,
1148 link_with : lib_common,
1149 install_dir : usrbin_exec_dir,
1152 manadocs += ['text-utils/colrm.1.adoc']
1153 bashcompletions += ['colrm']
1158 include_directories : includes,
1159 install_dir : usrbin_exec_dir,
1162 manadocs += ['text-utils/rev.1.adoc']
1163 bashcompletions += ['rev']
1168 include_directories : includes,
1169 link_with : [lib_common,
1171 install_dir : usrbin_exec_dir,
1173 if not is_disabler(exe)
1175 manadocs += ['text-utils/column.1.adoc']
1176 bashcompletions += ['column']
1179 opt = not get_option('build-line').disabled()
1183 include_directories : includes,
1184 install_dir : usrbin_exec_dir,
1186 build_by_default : opt)
1187 if opt and not is_disabler(exe)
1189 manadocs += ['text-utils/line.1.adoc']
1192 opt = not get_option('build-pg').disabled()
1196 link_with : lib_common,
1197 include_directories : includes,
1198 dependencies : [lib_tinfo,
1200 install_dir : usrbin_exec_dir,
1202 build_by_default : opt)
1203 if opt and not is_disabler(exe)
1205 manadocs += ['text-utils/pg.1.adoc']
1206 bashcompletions += ['pg']
1209 opt = not get_option('build-ul').disabled()
1213 include_directories : includes,
1214 dependencies : [lib_tinfo,
1216 install_dir : usrbin_exec_dir,
1218 build_by_default : opt)
1219 if opt and not is_disabler(exe)
1221 manadocs += ['text-utils/ul.1.adoc']
1222 bashcompletions += ['ul']
1225 opt = not get_option('build-more').disabled()
1229 link_with : [lib_common],
1230 include_directories : includes,
1231 dependencies : [lib_tinfo,
1235 build_by_default : opt)
1239 link_with : [lib_common],
1240 include_directories : includes,
1241 c_args : '-DTEST_PROGRAM',
1242 dependencies : [lib_tinfo,
1245 build_by_default : opt and program_tests)
1247 if opt and not is_disabler(exe)
1249 manadocs += ['text-utils/more.1.adoc']
1250 bashcompletions += ['more']
1256 include_directories : includes,
1257 link_with : [lib_common,
1259 install_dir : usrbin_exec_dir,
1261 if not is_disabler(exe)
1263 manadocs += ['text-utils/hexdump.1.adoc']
1264 bashcompletions += ['hexdump']
1267 opt = not get_option('build-lsmem').disabled()
1271 include_directories : includes,
1272 link_with : [lib_common,
1274 install_dir : usrbin_exec_dir,
1276 build_by_default : opt)
1277 if opt and not is_disabler(exe)
1279 manadocs += ['sys-utils/lsmem.1.adoc']
1280 bashcompletions += ['lsmem']
1283 opt = not get_option('build-chmem').disabled()
1287 include_directories : includes,
1288 link_with : [lib_common],
1289 install_dir : usrbin_exec_dir,
1291 build_by_default : opt)
1292 if opt and not is_disabler(exe)
1294 manadocs += ['sys-utils/chmem.8.adoc']
1295 bashcompletions += ['chmem']
1301 include_directories : includes,
1302 link_with : [lib_common],
1303 install_dir : usrbin_exec_dir,
1306 manadocs += ['sys-utils/choom.1.adoc']
1311 include_directories : includes,
1312 link_with : [lib_common],
1313 install_dir : usrbin_exec_dir,
1316 manadocs += ['sys-utils/ipcmk.1.adoc']
1317 bashcompletions += ['ipcmk']
1322 include_directories : includes,
1323 link_with : [lib_common],
1324 install_dir : usrbin_exec_dir,
1327 manadocs += ['sys-utils/ipcrm.1.adoc']
1328 bashcompletions += ['ipcrm']
1330 opt = not get_option('build-ipcs').disabled()
1334 include_directories : includes,
1335 link_with : [lib_common],
1336 install_dir : usrbin_exec_dir,
1338 build_by_default : opt)
1339 if opt and not is_disabler(exe)
1341 manadocs += ['sys-utils/ipcs.1.adoc']
1342 bashcompletions += ['ipcs']
1345 opt = not get_option('build-rfkill').disabled()
1349 include_directories : includes,
1350 link_with : [lib_common,
1352 install_dir : usrsbin_exec_dir,
1354 build_by_default : opt)
1355 if opt and not is_disabler(exe)
1357 manadocs += ['sys-utils/rfkill.8.adoc']
1358 bashcompletions += ['rfkill']
1364 include_directories : includes,
1365 link_with : [lib_common,
1367 install_dir : usrbin_exec_dir,
1369 if not is_disabler(exe)
1371 manadocs += ['sys-utils/renice.1.adoc']
1372 bashcompletions += ['renice']
1378 include_directories: includes,
1379 link_with : [lib_common,
1381 install_dir : usrbin_exec_dir,
1383 if opt and not is_disabler(exe)
1385 manadocs += ['sys-utils/setpgid.1.adoc']
1386 bashcompletions += ['setpgid']
1392 include_directories : includes,
1393 link_with : [lib_common,
1395 install_dir : usrbin_exec_dir,
1397 if opt and not is_disabler(exe)
1399 manadocs += ['sys-utils/setsid.1.adoc']
1400 bashcompletions += ['setsid']
1405 readprofile_sources,
1406 include_directories : includes,
1407 link_with : [lib_common,
1409 install_dir : usrsbin_exec_dir,
1411 if not is_disabler(exe)
1413 manadocs += ['sys-utils/readprofile.8.adoc']
1414 bashcompletions += ['readprofile']
1417 opt = not get_option('build-tunelp').disabled()
1421 include_directories : includes,
1422 link_with : [lib_common],
1423 install_dir : usrsbin_exec_dir,
1425 build_by_default : opt)
1426 if opt and not is_disabler(exe)
1428 manadocs += ['sys-utils/tunelp.8.adoc']
1429 bashcompletions += ['tunelp']
1435 include_directories : includes,
1436 link_with : [lib_common,
1438 install_dir : sbindir,
1440 if not is_disabler(exe)
1442 manadocs += ['sys-utils/fstrim.8.adoc']
1443 bashcompletions += ['fstrim']
1449 include_directories : includes,
1450 link_with : [lib_common,
1453 if not is_disabler(exe)
1455 manadocs += ['sys-utils/dmesg.1.adoc']
1456 bashcompletions += ['dmesg']
1462 include_directories : dir_include,
1463 c_args : '-DTEST_DMESG',
1464 link_with : [lib_common,
1466 build_by_default : program_tests)
1467 if not is_disabler(exe)
1474 include_directories : includes,
1475 link_with : [lib_common],
1476 install_dir : sbindir,
1479 manadocs += ['sys-utils/ctrlaltdel.8.adoc']
1480 bashcompletions += ['ctrlaltdel']
1485 include_directories : includes,
1486 install_dir : sbindir,
1489 manadocs += ['sys-utils/fsfreeze.8.adoc']
1490 bashcompletions += ['fsfreeze']
1495 include_directories : includes,
1496 link_with : [lib_common,
1498 install_dir : sbindir,
1501 manadocs += ['sys-utils/blkdiscard.8.adoc']
1502 bashcompletions += ['blkdiscard']
1507 include_directories : includes,
1508 link_with : [lib_common],
1509 install_dir : sbindir,
1512 manadocs += ['sys-utils/blkzone.8.adoc']
1513 bashcompletions += ['blkzone']
1518 include_directories : includes,
1519 link_with : [lib_common],
1520 install_dir : sbindir,
1523 manadocs += ['sys-utils/blkpr.8.adoc']
1528 include_directories : includes,
1529 link_with : [lib_common],
1530 install_dir : usrsbin_exec_dir,
1533 manadocs += ['sys-utils/ldattach.8.adoc']
1534 bashcompletions += ['ldattach']
1539 include_directories : includes,
1540 link_with : [lib_common],
1541 install_dir : usrsbin_exec_dir,
1544 manadocs += ['sys-utils/rtcwake.8.adoc']
1545 bashcompletions += ['rtcwake']
1550 include_directories : includes,
1551 link_with : [lib_common],
1552 install_dir : usrbin_exec_dir,
1555 manadocs += ['sys-utils/setarch.8.adoc']
1556 bashcompletions += ['setarch']
1558 setarch_links = ['uname26', 'linux32', 'linux64']
1559 setarch_links_arch = {
1560 's390x' : ['s390', 's390x'],
1562 'x86_64' : ['i386', 'x86_64'],
1563 'ppc64' : ['ppc', 'ppc64', 'ppc32'],
1564 'space64' : ['sparc', 'sparc64', 'sparc32', 'sparc32bash'],
1565 'mips64' : ['mips', 'mips64', 'mips32'],
1566 'ia64' : ['i386', 'ia64'],
1567 'hppa' : ['parisc', 'parisc64', 'parisc32'],
1569 setarch_links += setarch_links_arch.get(host_machine.cpu_family(), [])
1571 foreach link: setarch_links
1572 meson.add_install_script(meson_make_symlink,
1574 join_paths(usrbin_exec_dir, link))
1575 manlinks += {link + '.8': 'setarch.8'}
1578 opt = not get_option('build-eject').disabled()
1582 include_directories : includes,
1583 link_with : [lib_common,
1585 install_dir : usrbin_exec_dir,
1587 build_by_default : opt)
1588 if opt and not is_disabler(exe)
1590 manadocs += ['sys-utils/eject.1.adoc']
1591 bashcompletions += ['eject']
1594 opt = not get_option('build-losetup').disabled()
1598 include_directories : includes,
1599 link_with : [lib_common,
1601 install_dir : sbindir,
1603 build_by_default : opt)
1604 if opt and not is_disabler(exe)
1605 manadocs += ['sys-utils/losetup.8.adoc']
1607 bashcompletions += ['losetup']
1610 opt = opt and 'losetup' in static_programs
1614 include_directories : includes,
1615 link_args : ['--static'],
1616 link_with : [lib_common,
1617 lib_smartcols.get_static_lib()],
1618 install_dir : sbindir,
1620 build_by_default : opt)
1621 if opt and not is_disabler(exe)
1625 opt = not get_option('build-zramctl').disabled()
1629 include_directories : includes,
1630 link_with : [lib_common,
1632 install_dir : sbindir,
1634 build_by_default : opt)
1635 if opt and not is_disabler(exe)
1637 manadocs += ['sys-utils/zramctl.8.adoc']
1638 bashcompletions += ['zramctl']
1644 include_directories : includes,
1645 link_with : [lib_common,
1647 install_dir : usrbin_exec_dir,
1649 if not is_disabler(exe)
1651 manadocs += ['sys-utils/prlimit.1.adoc']
1652 bashcompletions += ['prlimit']
1658 include_directories : includes,
1659 link_with : [lib_common,
1662 install_dir : usrbin_exec_dir,
1664 if not is_disabler(exe)
1666 manadocs += ['sys-utils/lsns.8.adoc']
1667 bashcompletions += ['lsns']
1670 opt = not get_option('build-mount').disabled()
1674 include_directories : includes,
1675 link_with : [lib_common,
1678 dependencies : lib_selinux,
1679 install_mode : 'rwsr-xr-x',
1681 build_by_default : opt)
1685 include_directories : includes,
1686 link_with : [lib_common,
1688 install_mode : 'rwsr-xr-x',
1690 build_by_default : opt)
1691 if opt and not is_disabler(exe)
1693 manadocs += ['sys-utils/fstab.5.adoc',
1694 'sys-utils/mount.8.adoc',
1695 'sys-utils/umount.8.adoc']
1696 bashcompletions += ['mount', 'umount']
1699 opt2 = opt and 'mount' in static_programs
1703 include_directories : includes,
1704 link_args : ['--static'],
1705 link_with : [lib_common,
1706 lib_smartcols_static,
1709 build_by_default : opt2)
1710 if opt2 and not is_disabler(exe)
1714 opt2 = opt and 'umount' in static_programs
1718 include_directories : includes,
1719 link_args : ['--static'],
1720 link_with : [lib_common,
1723 build_by_default : opt2)
1724 if opt2 and not is_disabler(exe)
1733 include_directories : includes,
1734 link_with : [lib_common,
1738 install_dir : sbindir,
1740 if not is_disabler(exe)
1742 manadocs += ['sys-utils/swapon.8.adoc']
1743 bashcompletions += ['swapon']
1749 include_directories : includes,
1750 link_with : [lib_common,
1753 install_dir : sbindir,
1755 if not is_disabler(exe)
1757 manlinks += {'swapoff.8': 'swapon.8'}
1758 bashcompletions += ['swapoff']
1764 include_directories : includes,
1765 link_with : [lib_common,
1767 dependencies : [rtas_libs],
1768 install_dir : usrbin_exec_dir,
1770 if not is_disabler(exe)
1772 manadocs += ['sys-utils/lscpu.1.adoc']
1773 bashcompletions += ['lscpu']
1779 include_directories : includes,
1780 link_with : [lib_common],
1781 install_dir : sbindir,
1784 manadocs += ['sys-utils/chcpu.8.adoc']
1785 bashcompletions += ['chcpu']
1790 include_directories : includes,
1791 link_with : [lib_common,
1794 if not is_disabler(exe)
1796 manadocs += ['sys-utils/wdctl.8.adoc']
1797 bashcompletions += ['wdctl']
1800 opt = not get_option('build-mountpoint').disabled()
1804 include_directories : includes,
1805 link_with : [lib_mount],
1807 build_by_default : opt)
1808 if opt and not is_disabler(exe)
1810 manadocs += ['sys-utils/mountpoint.1.adoc']
1811 bashcompletions += ['mountpoint']
1814 opt = not get_option('build-fallocate').disabled()
1818 include_directories : includes,
1819 link_with : [lib_common],
1820 install_dir : usrbin_exec_dir,
1822 build_by_default : opt)
1823 if opt and not is_disabler(exe)
1825 manadocs += ['sys-utils/fallocate.1.adoc']
1826 bashcompletions += ['fallocate']
1829 opt = not get_option('build-pivot_root').disabled()
1833 include_directories : includes,
1834 install_dir : sbindir,
1836 build_by_default : opt)
1837 if opt and not is_disabler(exe)
1839 manadocs += ['sys-utils/pivot_root.8.adoc']
1840 bashcompletions += ['pivot_root']
1843 opt = not get_option('build-switch_root').disabled()
1844 if opt and not have_dirfd and not have_ddfd
1845 error('neither dirfd nor ddfd are available')
1849 switch_root_sources,
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/switch_root.8.adoc']
1859 opt = not get_option('build-unshare').disabled()
1863 include_directories : includes,
1864 link_with : [lib_common],
1865 install_dir : usrbin_exec_dir,
1867 build_by_default : opt)
1868 if opt and not is_disabler(exe)
1870 manadocs += ['sys-utils/unshare.1.adoc']
1871 bashcompletions += ['unshare']
1874 opt = opt and 'unshare' in static_programs
1878 include_directories : includes,
1879 link_with : [lib_common],
1880 install_dir : usrbin_exec_dir,
1882 build_by_default : opt)
1883 if opt and not is_disabler(exe)
1887 opt = not get_option('build-nsenter').disabled()
1891 include_directories : includes,
1892 link_with : [lib_common],
1893 dependencies : [lib_selinux],
1894 install_dir : usrbin_exec_dir,
1896 build_by_default : opt)
1897 if opt and not is_disabler(exe)
1899 manadocs += ['sys-utils/nsenter.1.adoc']
1900 bashcompletions += ['nsenter']
1903 opt = opt and 'nsenter' in static_programs
1907 include_directories : includes,
1908 link_with : [lib_common],
1909 dependencies : [lib_selinux],
1910 install_dir : usrbin_exec_dir,
1912 build_by_default : opt)
1913 if opt and not is_disabler(exe)
1917 opt = not get_option('build-setpriv').disabled() and lib_cap_ng.found()
1921 include_directories : includes,
1922 link_with : [lib_common],
1923 dependencies : [lib_cap_ng],
1924 install_dir : usrbin_exec_dir,
1926 build_by_default : opt)
1927 if opt and not is_disabler(exe)
1929 manadocs += ['sys-utils/setpriv.1.adoc']
1930 bashcompletions += ['setpriv']
1936 include_directories : includes,
1937 link_with : [lib_common],
1938 dependencies : realtime_libs,
1939 install_dir : usrbin_exec_dir,
1942 manadocs += ['sys-utils/flock.1.adoc']
1943 bashcompletions += ['flock']
1945 opt = not get_option('build-lsirq').disabled()
1949 include_directories : includes,
1950 link_with : [lib_common,
1952 install_dir : usrbin_exec_dir,
1954 build_by_default : opt)
1955 if opt and not is_disabler(exe)
1957 manadocs += ['sys-utils/lsirq.1.adoc']
1958 bashcompletions += ['lsirq']
1961 opt = not get_option('build-irqtop').disabled()
1965 include_directories : includes,
1966 dependencies : [realtime_libs, curses_libs],
1967 link_with : [lib_common,
1970 install_dir : usrbin_exec_dir,
1972 build_by_default : opt)
1973 if opt and not is_disabler(exe)
1975 manadocs += ['sys-utils/irqtop.1.adoc']
1976 bashcompletions += ['irqtop']
1979 opt = not get_option('build-ipcs').disabled()
1983 include_directories : includes,
1984 link_with : [lib_common,
1986 install_dir : usrbin_exec_dir,
1988 build_by_default : opt)
1989 if opt and not is_disabler(exe)
1991 manadocs += ['sys-utils/lsipc.1.adoc']
1992 bashcompletions += ['lsipc']
1999 include_directories : includes,
2000 link_with : [lib_common],
2001 dependencies : [lib_m,
2003 install_dir : sbindir,
2005 build_by_default : opt)
2006 if opt and not is_disabler(exe)
2008 manadocs += ['sys-utils/hwclock.8.adoc', 'sys-utils/adjtime_config.5.adoc']
2009 bashcompletions += ['hwclock']
2015 include_directories : includes,
2016 install_dir : sbindir,
2019 manadocs += ['disk-utils/mkfs.8.adoc']
2020 bashcompletions += ['mkfs']
2022 opt = not get_option('build-bfs').disabled()
2026 include_directories : includes,
2027 link_with : [lib_common],
2028 install_dir : sbindir,
2030 build_by_default : opt)
2031 if opt and not is_disabler(exe)
2033 manadocs += ['disk-utils/mkfs.bfs.8.adoc']
2034 bashcompletions += ['mkfs.bfs']
2040 include_directories : includes,
2041 link_with : [lib_common],
2042 install_dir : usrbin_exec_dir,
2045 manadocs += ['disk-utils/isosize.8.adoc']
2046 bashcompletions += ['isosize']
2051 include_directories : includes,
2052 link_with : [lib_common,
2055 dependencies: [lib_selinux],
2056 install_dir : sbindir,
2058 if opt and not is_disabler(exe)
2060 manadocs += ['disk-utils/mkswap.8.adoc']
2061 bashcompletions += ['mkswap']
2067 include_directories : includes,
2068 link_with : [lib_common,
2071 install_dir : sbindir,
2073 if opt and not is_disabler(exe)
2075 manadocs += ['disk-utils/swaplabel.8.adoc']
2076 bashcompletions += ['swaplabel']
2079 opt = not get_option('build-fsck').disabled()
2083 include_directories : includes,
2084 link_with : [lib_common,
2087 dependencies : realtime_libs,
2088 install_dir : sbindir,
2090 build_by_default : opt)
2091 if opt and not is_disabler(exe)
2093 manadocs += ['disk-utils/fsck.8.adoc']
2094 bashcompletions += ['fsck']
2097 opt = not get_option('build-minix').disabled()
2101 include_directories : includes,
2102 link_with : [lib_common],
2103 install_dir : sbindir,
2105 build_by_default : opt)
2109 include_directories : includes,
2110 c_args : '-DTEST_SCRIPT',
2111 link_with : [lib_common],
2112 build_by_default : opt and program_tests)
2116 include_directories : includes,
2117 link_with : [lib_common],
2118 install_dir : sbindir,
2120 build_by_default : opt)
2121 if opt and not is_disabler(exe)
2122 exes += [exe, exe2, exe3]
2123 manadocs += ['disk-utils/mkfs.minix.8.adoc','disk-utils/fsck.minix.8.adoc']
2124 bashcompletions += ['mkfs.minix', 'fsck.minix']
2127 opt = not get_option('build-cramfs').disabled()
2130 mkfs_cramfs_sources,
2131 include_directories : includes,
2132 link_with : [lib_common],
2133 dependencies : [lib_z],
2134 install_dir : sbindir,
2136 build_by_default : opt)
2139 fsck_cramfs_sources,
2140 include_directories : includes,
2141 link_with : [lib_common],
2142 dependencies : [lib_z],
2143 install_dir : sbindir,
2145 build_by_default : opt)
2146 if not is_disabler(exe)
2148 manadocs += ['disk-utils/mkfs.cramfs.8.adoc','disk-utils/fsck.cramfs.8.adoc']
2149 bashcompletions += ['mkfs.cramfs', 'fsck.cramfs']
2152 opt = not get_option('build-raw').disabled()
2154 cc.has_header('linux/raw.h', required: opt)
2159 include_directories : includes,
2160 install_dir : sbindir,
2162 build_by_default : opt)
2163 if opt and not is_disabler(exe)
2165 manadocs += ['disk-utils/raw.8.adoc']
2166 bashcompletions += ['raw']
2169 opt = not get_option('build-fdformat').disabled()
2173 include_directories : includes,
2174 link_with : [lib_common],
2175 install_dir : usrsbin_exec_dir,
2177 build_by_default : opt)
2178 if opt and not is_disabler(exe)
2180 manadocs += ['disk-utils/fdformat.8.adoc']
2186 include_directories : includes,
2187 link_with : [lib_common],
2188 install_dir : sbindir,
2190 manadocs += ['disk-utils/blockdev.8.adoc']
2191 bashcompletions += ['blockdev']
2193 opt = not get_option('build-fdisks').disabled()
2194 if opt and not have_dirfd and not have_ddfd
2195 error('neither dirfd nor ddfd are available')
2200 include_directories : includes,
2201 link_with : [lib_common,
2205 dependencies : [lib_readline],
2206 install_dir : sbindir,
2208 build_by_default : opt)
2209 if opt and not is_disabler(exe)
2211 bashcompletions += ['fdisk']
2214 opt2 = opt and 'fdisk' in static_programs
2218 link_args : ['--static'],
2219 include_directories : includes,
2220 link_with : [lib_common,
2223 lib_smartcols.get_static_lib()],
2224 dependencies : [lib_readline_static],
2225 install_dir : sbindir,
2227 build_by_default : opt2)
2228 if opt2 and not is_disabler(exe)
2235 include_directories : includes,
2236 link_with : [lib_common,
2240 dependencies : [lib_readline],
2241 install_dir : sbindir,
2243 build_by_default : opt)
2244 if opt and not is_disabler(exe)
2246 bashcompletions += ['sfdisk']
2249 opt2 = opt and 'sfdisk' in static_programs
2253 include_directories : includes,
2254 link_with : [lib_common,
2257 lib_smartcols.get_static_lib()],
2258 dependencies : [lib_readline_static],
2259 install_dir : sbindir,
2261 build_by_default : opt2)
2262 if opt2 and not is_disabler(exe)
2269 include_directories : includes,
2270 link_with : [lib_common,
2275 dependencies : [curses_libs],
2276 install_dir : sbindir,
2278 build_by_default : opt)
2279 if opt and not is_disabler(exe)
2281 manadocs += ['disk-utils/fdisk.8.adoc',
2282 'disk-utils/sfdisk.8.adoc',
2283 'disk-utils/cfdisk.8.adoc']
2284 bashcompletions += ['cfdisk']
2287 opt = not get_option('build-partx').disabled()
2291 include_directories : includes,
2292 link_with : [lib_common],
2293 install_dir : usrsbin_exec_dir,
2295 build_by_default : opt)
2299 include_directories : includes,
2300 link_with : [lib_common],
2301 install_dir : usrsbin_exec_dir,
2303 build_by_default : opt)
2307 include_directories : includes,
2308 link_with : [lib_common],
2309 install_dir : usrsbin_exec_dir,
2311 build_by_default : opt)
2315 include_directories : includes,
2316 link_with : [lib_common,
2319 install_dir : usrsbin_exec_dir,
2321 build_by_default : opt)
2323 exes += [exe, exe2, exe3, exe4]
2324 manadocs += ['disk-utils/addpart.8.adoc',
2325 'disk-utils/delpart.8.adoc',
2326 'disk-utils/resizepart.8.adoc',
2327 'disk-utils/partx.8.adoc']
2328 bashcompletions += ['addpart', 'delpart', 'resizepart', 'partx']
2331 ############################################################
2336 include_directories : includes,
2337 link_with : [lib_common],
2338 dependencies : [lib_util,
2342 install_dir : usrbin_exec_dir,
2345 manadocs += ['term-utils/script.1.adoc']
2346 bashcompletions += ['script']
2351 include_directories : includes,
2352 c_args : '-DTEST_SCRIPT',
2353 link_with : [lib_common],
2354 dependencies : [lib_util,
2358 build_by_default : program_tests)
2364 include_directories : includes,
2365 link_with : [lib_common],
2366 dependencies : [lib_util,
2369 install_dir : usrbin_exec_dir,
2372 manadocs += ['term-utils/scriptlive.1.adoc']
2373 bashcompletions += ['scriptlive']
2377 scriptreplay_sources,
2378 include_directories : includes,
2379 link_with : [lib_common],
2380 dependencies : [math_libs],
2381 install_dir : usrbin_exec_dir,
2384 manadocs += ['term-utils/scriptreplay.1.adoc']
2385 bashcompletions += ['scriptreplay']
2387 opt = not get_option('build-agetty').disabled()
2391 include_directories : includes,
2392 link_with : [lib_common, logindefs_c],
2393 dependencies : [BSD ? lib_util : [], lib_systemd],
2394 install_dir : sbindir,
2396 build_by_default : opt)
2399 manadocs += ['term-utils/agetty.8.adoc']
2402 opt = not get_option('build-setterm').disabled()
2406 include_directories : includes,
2407 link_with : [lib_common],
2408 dependencies : [curses_libs],
2409 install_dir : usrbin_exec_dir,
2411 build_by_default : opt)
2414 manadocs += ['term-utils/setterm.1.adoc']
2415 bashcompletions += ['setterm']
2418 opt = not get_option('build-mesg').disabled()
2422 include_directories : includes,
2423 link_with : [lib_common],
2424 install_dir : usrbin_exec_dir,
2426 build_by_default : opt)
2429 manadocs += ['term-utils/mesg.1.adoc']
2430 bashcompletions += ['mesg']
2433 opt = not get_option('build-wall').disabled()
2437 include_directories : includes,
2438 link_with : [lib_common],
2439 dependencies : [lib_systemd],
2440 install_dir : usrbin_exec_dir,
2441 install_mode : 'rwxr-sr-x',
2443 build_by_default : opt)
2446 manadocs += ['term-utils/wall.1.adoc']
2447 bashcompletions += ['wall']
2450 # chgrp tty $(DESTDIR)$(usrbin_execdir)/wall
2451 # chmod g+s $(DESTDIR)$(usrbin_execdir)/wall
2453 opt = not get_option('build-write').disabled()
2457 include_directories : includes,
2458 link_with : [lib_common],
2459 dependencies : [lib_systemd],
2460 install_dir : usrbin_exec_dir,
2461 install_mode : 'rwxr-sr-x',
2463 build_by_default : opt)
2466 manadocs += ['term-utils/write.1.adoc']
2467 bashcompletions += ['write']
2470 # chgrp tty $(DESTDIR)$(usrbin_execdir)/write
2471 # chmod g+s $(DESTDIR)$(usrbin_execdir)/write
2473 opt = not get_option('build-login').disabled()
2477 include_directories : includes,
2478 link_with : [lib_common, logindefs_c],
2479 dependencies : [lib_pam,
2483 build_by_default : opt)
2484 if not is_disabler(exe)
2486 manadocs += ['login-utils/login.1.adoc']
2489 opt = not get_option('build-sulogin').disabled()
2493 include_directories : includes,
2494 link_with : [lib_common],
2495 dependencies : [lib_crypt,
2497 install_dir : sbindir,
2499 build_by_default : opt)
2500 if not is_disabler(exe)
2502 manadocs += ['login-utils/sulogin.8.adoc']
2508 include_directories : includes,
2509 link_with : [lib_common,
2511 dependencies : [curses_libs],
2512 install_dir : usrbin_exec_dir,
2515 manadocs += ['misc-utils/cal.1.adoc']
2516 bashcompletions += ['cal']
2518 opt = not get_option('build-logger').disabled()
2522 include_directories : includes,
2523 link_with : [lib_common],
2524 dependencies : [lib_systemd],
2525 install_dir : usrbin_exec_dir,
2527 build_by_default : opt)
2528 if opt and not is_disabler(exe)
2530 manadocs += ['misc-utils/logger.1.adoc']
2531 bashcompletions += ['logger']
2537 include_directories : includes,
2538 c_args : '-DTEST_LOGGER',
2539 link_with : [lib_common],
2540 dependencies : [lib_systemd],
2541 build_by_default: program_tests)
2542 if not is_disabler(exe)
2549 include_directories : includes,
2550 install_dir : usrbin_exec_dir,
2553 manadocs += ['misc-utils/look.1.adoc']
2554 bashcompletions += ['look']
2559 include_directories : includes,
2560 link_with : [lib_common],
2561 install_dir : usrbin_exec_dir,
2564 manadocs += ['misc-utils/mcookie.1.adoc']
2565 bashcompletions += ['mcookie']
2570 include_directories : includes,
2571 dependencies : [lib_selinux],
2572 install_dir : usrbin_exec_dir,
2575 manadocs += ['misc-utils/namei.1.adoc']
2576 bashcompletions += ['namei']
2581 include_directories : includes,
2582 link_with : [lib_common],
2583 install_dir : usrbin_exec_dir,
2586 manadocs += ['misc-utils/whereis.1.adoc']
2587 bashcompletions += ['whereis']
2592 include_directories : includes,
2593 link_with : [lib_common,
2596 install_dir : usrbin_exec_dir,
2598 if not is_disabler(exe)
2600 manadocs += ['misc-utils/lslocks.8.adoc']
2601 bashcompletions += ['lslocks']
2607 include_directories : includes,
2608 link_with : [lib_common,
2612 dependencies : lib_udev,
2614 if not is_disabler(exe)
2616 manadocs += ['misc-utils/lsblk.8.adoc']
2617 bashcompletions += ['lsblk']
2623 include_directories : includes,
2624 link_with : [lib_common,
2626 install_dir : usrbin_exec_dir,
2628 if not is_disabler(exe)
2630 manadocs += ['misc-utils/lsfd.1.adoc']
2636 include_directories : includes,
2637 link_with : [lib_common,
2639 install_dir : usrbin_exec_dir,
2641 if not is_disabler(exe)
2643 manadocs += ['misc-utils/uuidgen.1.adoc']
2644 bashcompletions += ['uuidgen']
2650 include_directories : includes,
2651 link_with : [lib_common,
2654 install_dir : usrbin_exec_dir,
2656 if not is_disabler(exe)
2658 manadocs += ['misc-utils/uuidparse.1.adoc']
2659 bashcompletions += ['uuidparse']
2666 include_directories : includes,
2667 link_with : [lib_common,
2669 dependencies : [realtime_libs,
2671 install_dir : usrsbin_exec_dir,
2673 build_by_default : opt)
2677 include_directories : includes,
2678 link_with : [lib_common,
2680 dependencies : thread_libs,
2681 build_by_default : opt and program_tests)
2682 if not is_disabler(exe)
2684 manadocs += ['misc-utils/uuidd.8.adoc']
2685 bashcompletions += ['uuidd']
2688 opt = build_libblkid
2692 include_directories : includes,
2693 link_with : [lib_common,
2695 install_dir : sbindir,
2697 build_by_default : opt)
2698 if opt and not is_disabler(exe)
2700 manadocs += ['misc-utils/blkid.8.adoc']
2701 bashcompletions += ['blkid']
2704 opt = opt and 'blkid' in static_programs
2708 include_directories : includes,
2709 link_with : [lib_common,
2711 install_dir : sbindir,
2713 build_by_default : opt)
2714 if opt and not is_disabler(exe)
2720 'libblkid/samples/mkfs.c',
2721 include_directories : includes,
2722 link_with : lib_blkid)
2723 if not is_disabler(exe)
2728 'sample-partitions',
2729 'libblkid/samples/partitions.c',
2730 include_directories : includes,
2731 link_with : lib_blkid)
2732 if not is_disabler(exe)
2737 'sample-superblocks',
2738 'libblkid/samples/superblocks.c',
2739 include_directories : includes,
2740 link_with : lib_blkid)
2741 if not is_disabler(exe)
2747 'libblkid/samples/topology.c',
2748 include_directories : includes,
2749 link_with : lib_blkid)
2750 if not is_disabler(exe)
2755 'test_blkid_fuzz_sample',
2756 'libblkid/src/fuzz.c',
2757 include_directories: includes,
2758 link_with: lib_blkid,
2759 build_by_default: program_tests)
2760 if not is_disabler(exe)
2764 ############################################################
2769 include_directories : includes,
2770 link_with : [lib_blkid],
2771 install_dir : sbindir,
2773 if not is_disabler(exe)
2775 manadocs += ['misc-utils/findfs.8.adoc']
2776 bashcompletions += ['findfs']
2782 include_directories : includes,
2783 link_with : [lib_common,
2786 install_dir : sbindir,
2788 if not is_disabler(exe)
2790 manadocs += ['misc-utils/wipefs.8.adoc']
2791 bashcompletions += ['wipefs']
2797 include_directories : includes,
2798 link_with : [lib_common,
2802 dependencies : [lib_udev],
2804 if not is_disabler(exe)
2806 manadocs += ['misc-utils/findmnt.8.adoc']
2807 bashcompletions += ['findmnt']
2813 include_directories : includes,
2814 link_with : [lib_common],
2816 if not is_disabler(exe)
2818 manadocs += ['misc-utils/kill.1.adoc']
2821 opt = not get_option('build-rename').disabled()
2825 include_directories : includes,
2826 install_dir : usrbin_exec_dir,
2828 build_by_default : opt)
2829 if opt and not is_disabler(exe)
2831 manadocs += ['misc-utils/rename.1.adoc']
2832 bashcompletions += ['rename']
2838 include_directories : includes,
2839 link_with : [lib_common],
2840 install_dir : usrbin_exec_dir,
2843 manadocs += ['misc-utils/getopt.1.adoc']
2844 bashcompletions += ['getopt']
2849 include_directories : includes,
2850 link_with : [lib_common,
2852 install_dir : usrbin_exec_dir,
2854 if not is_disabler(exe)
2856 manadocs += ['misc-utils/fincore.1.adoc']
2857 bashcompletions += ['fincore']
2863 include_directories : includes,
2864 link_with : [lib_common],
2865 install_dir : usrbin_exec_dir,
2867 if not is_disabler(exe)
2869 manadocs += ['misc-utils/hardlink.1.adoc']
2870 bashcompletions += ['hardlink']
2873 opt = not get_option('build-pipesz').disabled()
2877 include_directories : includes,
2878 link_with : [lib_common],
2879 install_dir : usrbin_exec_dir,
2881 if opt and not is_disabler(exe)
2883 manadocs += ['misc-utils/pipesz.1.adoc']
2884 bashcompletions += ['pipesz']
2890 include_directories : includes,
2891 c_args : '-DTEST_CAL',
2892 link_with : [lib_common,
2894 dependencies : [curses_libs],
2895 build_by_default: program_tests)
2896 if not is_disabler(exe)
2903 include_directories : includes,
2904 link_with : [lib_common],
2905 install_dir : usrbin_exec_dir,
2907 if not is_disabler(exe)
2909 manadocs += ['misc-utils/fadvise.1.adoc']
2910 bashcompletions += ['fadvise']
2913 if LINUX and conf.get('HAVE_PIDFD_OPEN') != false
2917 include_directories : includes,
2918 link_with : [lib_common],
2919 install_dir : usrbin_exec_dir,
2921 if not is_disabler(exe)
2923 manadocs += ['misc-utils/waitpid.1.adoc']
2924 bashcompletions += ['waitpid']
2928 syscalls_h = custom_target('syscalls.h',
2929 input : 'tools/all_syscalls',
2930 output : 'syscalls.h',
2931 command : ['tools/all_syscalls', cc.cmd_array()]
2934 if cc.compiles(fs.read('include/audit-arch.h'), name : 'has AUDIT_ARCH_NATIVE')
2937 'misc-utils/enosys.c', syscalls_h,
2938 include_directories : includes,
2939 link_with : [lib_common],
2940 install_dir : usrbin_exec_dir,
2942 if not is_disabler(exe)
2944 manadocs += ['misc-utils/enosys.1.adoc']
2945 bashcompletions += ['enosys']
2952 include_directories : includes,
2953 link_with : [lib_common, lib_smartcols],
2954 install_dir : usrbin_exec_dir,
2956 if not is_disabler(exe)
2958 manadocs += ['misc-utils/lsclocks.1.adoc']
2959 bashcompletions += ['lsclocks']
2962 ############################################################
2964 opt = not get_option('build-schedutils').disabled()
2967 'schedutils/chrt.c',
2968 include_directories : includes,
2969 link_with : lib_common,
2970 install_dir : usrbin_exec_dir,
2972 build_by_default : opt)
2976 'schedutils/ionice.c',
2977 include_directories : includes,
2978 link_with : lib_common,
2979 install_dir : usrbin_exec_dir,
2981 build_by_default : opt)
2985 'schedutils/taskset.c',
2986 include_directories : includes,
2987 link_with : lib_common,
2988 install_dir : usrbin_exec_dir,
2990 build_by_default : opt)
2994 'schedutils/uclampset.c',
2995 include_directories : includes,
2996 link_with : lib_common,
2997 install_dir : usrbin_exec_dir,
2999 build_by_default : opt)
3001 if opt and not is_disabler(exe)
3002 exes += [exe, exe2, exe3, exe4]
3003 manadocs += ['schedutils/chrt.1.adoc',
3004 'schedutils/ionice.1.adoc',
3005 'schedutils/taskset.1.adoc',
3006 'schedutils/uclampset.1.adoc']
3007 bashcompletions += ['chrt', 'ionice', 'taskset', 'uclampset']
3010 ############################################################
3012 # TODO: when autotools compat is not needed, s/_/-/g in file names?
3017 c_args : ['-DTEST_PROGRAM_TTYUTILS'],
3018 include_directories : dir_include,
3019 link_with : lib_common,
3020 build_by_default: program_tests)
3026 c_args : ['-DTEST_PROGRAM_BLKDEV'],
3027 include_directories : dir_include,
3028 link_with : lib_common,
3029 build_by_default: program_tests)
3035 c_args : ['-DTEST_PROGRAM_ISMOUNTED'],
3036 include_directories : dir_include,
3037 link_with : lib_common,
3038 build_by_default: program_tests)
3044 c_args : ['-DTEST_PROGRAM_MANGLE'],
3045 include_directories : dir_include,
3046 build_by_default: program_tests)
3052 c_args : ['-DTEST_PROGRAM_STRUTILS'],
3053 include_directories : dir_include,
3054 build_by_default: program_tests)
3060 'lib/color-names.c',
3061 c_args : ['-DTEST_PROGRAM_COLORS'],
3062 include_directories : dir_include,
3063 link_with : [lib_common, lib_tcolors],
3064 build_by_default: program_tests)
3070 c_args : ['-DTEST_PROGRAM_RANDUTILS'],
3071 include_directories : dir_include,
3072 build_by_default: program_tests)
3075 if conf.get('HAVE_OPENAT') != false and conf.get('HAVE_DIRFD') != false
3079 c_args : ['-DTEST_PROGRAM_PROCFS'],
3080 include_directories : dir_include,
3081 link_with : lib_common,
3082 build_by_default: program_tests)
3089 have_cpu_set_t ? 'lib/cpuset.c' : [],
3090 c_args : ['-DTEST_PROGRAM_PATH'],
3091 include_directories : dir_include,
3092 link_with : lib_common,
3093 build_by_default: program_tests)
3097 if conf.get('HAVE_PTY') != false
3102 c_args : ['-DTEST_PROGRAM_PTY'],
3103 include_directories : dir_include,
3104 link_with : [lib_common],
3105 dependencies : [lib_m,
3108 build_by_default: program_tests)
3116 c_args : ['-DTEST_PROGRAM_CPUSET'],
3117 include_directories : dir_include,
3118 build_by_default: program_tests)
3129 have_cpu_set_t ? 'lib/cpuset.c' : [],
3130 c_args : ['-DTEST_PROGRAM_SYSFS'],
3131 include_directories : dir_include,
3132 build_by_default: program_tests)
3138 c_args : ['-DTEST_PROGRAM_PAGER'],
3139 include_directories : dir_include,
3140 build_by_default: program_tests)
3144 'test_linux_version',
3145 'lib/linux_version.c',
3146 c_args : ['-DTEST_PROGRAM_LINUXVERSION'],
3147 include_directories : dir_include,
3148 build_by_default: program_tests)
3154 c_args : ['-DTEST_PROGRAM_FILEUTILS'],
3155 include_directories : dir_include,
3156 build_by_default: program_tests)
3160 'test_canonicalize',
3161 'lib/canonicalize.c',
3162 c_args : ['-DTEST_PROGRAM_CANONICALIZE'],
3163 include_directories : dir_include,
3164 build_by_default: program_tests)
3171 c_args : ['-DTEST_PROGRAM_TIMEUTILS'],
3172 include_directories : dir_include,
3173 build_by_default: program_tests)
3179 c_args : ['-DTEST_PROGRAM'],
3180 include_directories : dir_include,
3181 link_with : lib_common,
3182 build_by_default: program_tests)
3188 c_args : ['-DTEST_PROGRAM'],
3189 include_directories : dir_include,
3190 link_with : [lib_common, logindefs_c],
3191 build_by_default: program_tests)
3195 ############################################################
3199 'libuuid/src/test_uuid.c',
3200 include_directories : [dir_include, dir_libuuid],
3201 link_with : lib_uuid,
3202 dependencies : socket_libs,
3203 build_by_default: program_tests)
3204 if not is_disabler(exe)
3208 ############################################################
3210 libfdisk_tests_cflags = ['-DTEST_PROGRAM',
3212 libfdisk_tests_ldadd = [lib_fdisk_static, lib_uuid, lib_blkid]
3216 'libfdisk/src/ask.c',
3217 c_args : libfdisk_tests_cflags,
3218 include_directories : lib_fdisk_includes,
3219 link_with : libfdisk_tests_ldadd,
3220 build_by_default: program_tests)
3221 if not is_disabler(exe)
3227 'libfdisk/src/gpt.c',
3228 c_args : libfdisk_tests_cflags,
3229 include_directories : lib_fdisk_includes,
3230 link_with : libfdisk_tests_ldadd,
3231 build_by_default: program_tests)
3232 if not is_disabler(exe)
3238 'libfdisk/src/utils.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)
3248 'test_fdisk_script',
3249 'libfdisk/src/script.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)
3259 'test_fdisk_version',
3260 'libfdisk/src/version.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)
3271 'libfdisk/src/item.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)
3280 sample_fdisk_cflags = ['-Wno-unused']
3281 sample_fdisk_ldadd = [lib_common, lib_fdisk]
3284 'sample-fdisk-mkpart',
3285 'libfdisk/samples/mkpart.c',
3286 c_args : sample_fdisk_cflags,
3287 include_directories : lib_fdisk_includes,
3288 link_with : sample_fdisk_ldadd)
3289 if not is_disabler(exe)
3294 'sample-fdisk-mkpart-fullspec',
3295 'libfdisk/samples/mkpart-fullspec.c',
3296 c_args : sample_fdisk_cflags,
3297 include_directories : lib_fdisk_includes,
3298 link_with : sample_fdisk_ldadd)
3299 if not is_disabler(exe)
3303 ############################################################
3307 'tests/helpers/test_mbsencode.c',
3308 include_directories : includes,
3309 link_with : lib_common,
3310 build_by_default: program_tests)
3315 'tests/helpers/test_byteswap.c',
3316 include_directories : includes,
3317 build_by_default: program_tests)
3322 'tests/helpers/test_md5.c',
3324 include_directories : includes,
3325 build_by_default: program_tests)
3330 'tests/helpers/test_sha1.c',
3332 include_directories : includes,
3333 build_by_default: program_tests)
3338 'tests/helpers/test_pathnames.c',
3339 include_directories : includes,
3340 build_by_default: program_tests)
3345 'tests/helpers/test_strerror.c',
3346 include_directories : includes,
3347 build_by_default: program_tests)
3352 'tests/helpers/test_sysinfo.c',
3353 include_directories : includes,
3354 build_by_default: program_tests)
3359 'tests/helpers/test_sigreceive.c',
3360 include_directories : includes,
3361 link_with : lib_common,
3362 build_by_default: program_tests)
3367 'tests/helpers/test_tiocsti.c',
3368 include_directories : includes,
3369 build_by_default: program_tests)
3373 'test_uuid_namespace',
3374 'tests/helpers/test_uuid_namespace.c',
3378 include_directories : includes,
3379 build_by_default: program_tests)
3383 mq_libs += cc.find_library('rt', required : true)
3388 'tests/helpers/test_mkfds.c',
3389 include_directories : includes,
3390 dependencies : mq_libs,
3391 build_by_default: program_tests)
3397 'tests/helpers/test_enosys.c',
3398 include_directories : includes,
3399 build_by_default: program_tests)
3402 ############################################################
3404 if conf.get('HAVE_OPENAT') != false
3406 'sample-scols-tree',
3407 'libsmartcols/samples/tree.c',
3408 include_directories : includes,
3409 link_with : [lib_smartcols, lib_common],
3410 build_by_default: program_tests)
3411 if not is_disabler(exe)
3417 'sample-scols-title',
3418 'libsmartcols/samples/title.c',
3419 include_directories : includes,
3420 link_with : [lib_smartcols, lib_common])
3421 if not is_disabler(exe)
3426 'sample-scols-wrap',
3427 'libsmartcols/samples/wrap.c',
3428 include_directories : includes,
3429 link_with : [lib_smartcols, lib_common])
3430 if not is_disabler(exe)
3435 'sample-scols-continuous',
3436 'libsmartcols/samples/continuous.c',
3437 include_directories : includes,
3438 link_with : [lib_smartcols, lib_common])
3439 if not is_disabler(exe)
3444 'sample-scols-maxout',
3445 'libsmartcols/samples/maxout.c',
3446 include_directories : includes,
3447 link_with : [lib_smartcols, lib_common])
3448 if not is_disabler(exe)
3453 'sample-scols-fromfile',
3454 'libsmartcols/samples/fromfile.c',
3455 include_directories : includes,
3456 link_with : [lib_smartcols, lib_common])
3457 if not is_disabler(exe)
3462 'sample-scols-grouping-simple',
3463 'libsmartcols/samples/grouping-simple.c',
3464 include_directories : includes,
3465 link_with : [lib_smartcols, lib_common])
3466 if not is_disabler(exe)
3471 'sample-scols-grouping-overlay',
3472 'libsmartcols/samples/grouping-overlay.c',
3473 include_directories : includes,
3474 link_with : [lib_smartcols, lib_common])
3475 if not is_disabler(exe)
3479 ############################################################
3481 # Let the test runner know whether we're running under asan and export
3482 # some paths. We use a file on disk so that it is possible to run the
3483 # test scripts from commandline without setting any variables.
3484 configure_file(output : 'meson.conf',
3489 '''.format(get_option('b_sanitize')=='address' ? 'yes' : '',
3490 python.full_path())])
3492 run_sh = find_program('tests/run.sh')
3496 '--srcdir=' + meson.current_source_dir(),
3497 '--builddir=' + meson.current_build_dir(),
3503 manadocs += ['lib/terminal-colors.d.5.adoc']
3504 manadocs += ['libblkid/libblkid.3.adoc']
3508 'libuuid/man/uuid.3.adoc',
3509 'libuuid/man/uuid_clear.3.adoc',
3510 'libuuid/man/uuid_compare.3.adoc',
3511 'libuuid/man/uuid_copy.3.adoc',
3512 'libuuid/man/uuid_generate.3.adoc',
3513 'libuuid/man/uuid_is_null.3.adoc',
3514 'libuuid/man/uuid_parse.3.adoc',
3515 'libuuid/man/uuid_time.3.adoc',
3516 'libuuid/man/uuid_unparse.3.adoc']
3518 'uuid_generate_random.3': 'uuid_generate.3',
3519 'uuid_generate_time.3': 'uuid_generate.3',
3520 'uuid_generate_time_safe.3': 'uuid_generate.3',
3524 asciidoctor = find_program('asciidoctor', required : false)
3525 if asciidoctor.found()
3526 foreach adoc : manadocs
3527 name = adoc.split('/')[-1]
3528 page = name.split('.adoc')[0]
3529 section = page.split('.')[-1]
3530 mandirn = join_paths(mandir, 'man' + section)
3535 command : [ asciidoctor,
3537 '-a', 'VERSION=' + meson.project_version(),
3538 '-a', 'release-version=' + meson.project_version(),
3539 '-a', 'ADJTIME_PATH=/etc/adjtime',
3540 '-a', 'package-docdir=' + docdir,
3541 '--base-dir=' + meson.current_source_dir(),
3542 '--destination-dir=' + meson.current_build_dir(),
3543 '--load-path', '@SOURCE_ROOT@/tools',
3544 '--require', 'asciidoctor-includetracker',
3548 depfile : page + '.deps',
3550 install_dir : mandirn)
3553 foreach link_name, target : manlinks
3554 link_section = link_name.split('.')[-1]
3555 target_section = target.split('.')[-1]
3556 meson.add_install_script(meson_make_manpage_stub,
3557 join_paths('man' + target_section, target),
3558 join_paths(mandir, 'man' + link_section, link_name))
3562 if bash_completion.found()
3563 foreach completion : bashcompletions
3565 join_paths('bash-completion', completion),
3566 install_dir : bash_completion.get_variable(pkgconfig : 'completionsdir')
3569 foreach link_name, target : bashcompletionslinks
3570 meson.add_install_script(meson_make_symlink,
3572 join_paths(bash_completion.get_variable(pkgconfig : 'completionsdir'), link_name))