diff options
Diffstat (limited to '')
-rw-r--r-- | meson.build | 506 |
1 files changed, 304 insertions, 202 deletions
diff --git a/meson.build b/meson.build index bc33570..ae9517c 100644 --- a/meson.build +++ b/meson.build @@ -13,7 +13,7 @@ pkgconfig = import('pkgconfig') # soname versions; This never change because we use symbols versioing. There is also # API version (LIB*_VERSION macros) and it follow package version. libblkid_version = '1.1.0' -libblkid_date = '27-Mar-2024' +libblkid_date = '06-May-2024' libuuid_version = '1.3.0' liblastlog2_version = '2.0.0' libmount_version = '1.1.0' @@ -41,6 +41,10 @@ vendordir = get_option('vendordir') add_project_arguments('-D_GNU_SOURCE', language : 'c') +if host_machine.system() == 'darwin' + add_project_arguments('-D_DARWIN_C_SOURCE', language : 'c') +endif + cc = meson.get_compiler('c') conf = configuration_data() @@ -78,7 +82,7 @@ conf.set_quoted('ADJTIME_PATH', '/etc/adjtime') # yes, both are used :( conf.set_quoted('_PATH_VENDORDIR', vendordir) conf.set('USE_VENDORDIR', vendordir == '' ? false : 1) -build_libblkid = not get_option('build-libblkid').disabled() +build_libblkid = get_option('build-libblkid').allowed() conf.set('HAVE_LIBBLKID', build_libblkid ? 1 : false) summary('libblkid', build_libblkid ? 'enabled' : 'disabled', section : 'components') @@ -97,7 +101,8 @@ conf.set('HAVE_MOUNTFD_API', have_mountfd_api ? 1 : false) have_struct_statx = cc.sizeof('struct statx', prefix : '#include <sys/stat.h>') > 0 conf.set('HAVE_STRUCT_STATX', have_struct_statx ? 1 : false) -build_libmount = not get_option('build-libmount').disabled() +build_libmount = get_option('build-libmount').require(get_option('build-libblkid').allowed()).allowed() + conf.set('HAVE_LIBMOUNT', build_libmount ? 1 : false) conf.set('USE_LIBMOUNT_SUPPORT_NAMESPACES', 1) conf.set('USE_LIBMOUNT_MOUNTFD_SUPPORT', have_mountfd_api ? 1 : false) @@ -107,7 +112,7 @@ build_libsmartcols = not get_option('build-libsmartcols').disabled() conf.set('HAVE_LIBSMARTCOLS', build_libsmartcols ? 1 : false) summary('libsmartcols', build_libsmartcols ? 'enabled' : 'disabled', section : 'components') -build_libfdisk = not get_option('build-libfdisk').disabled() +build_libfdisk = not get_option('build-libfdisk').require(get_option('build-libblkid').allowed()).disabled() conf.set('HAVE_LIBFDISK', build_libfdisk ? 1 : false) summary('libfdisk', build_libfdisk ? 'enabled' : 'disabled', section : 'components') @@ -346,7 +351,10 @@ lib_udev = dependency( required : get_option('systemd')) conf.set('HAVE_LIBUDEV', lib_udev.found() ? 1 : false) -lib_crypt = cc.find_library('crypt') +lib_crypt = cc.find_library('crypt', required : get_option('build-newgrp')) +if not lib_crypt.found() + lib_crypt = cc.find_library('crypt', required : get_option('build-sulogin')) +endif lib_pam = cc.find_library('pam', required : get_option('build-login')) if not lib_pam.found() @@ -447,12 +455,11 @@ endforeach have = cc.has_header('sched.h') conf.set10('HAVE_DECL_CPU_ALLOC', have) -# We get -1 if the size cannot be determined -have_cpu_set_t = cc.sizeof('cpu_set_t', prefix : '#define _GNU_SOURCE\n#include <sched.h>') > 0 +have_cpu_set_t = cc.has_type('cpu_set_t', args : '-D_GNU_SOURCE', prefix : '#include <sched.h>') conf.set('HAVE_CPU_SET_T', have_cpu_set_t ? 1 : false) have = cc.has_header_symbol('unistd.h', 'environ', args : '-D_GNU_SOURCE') -conf.set10('HAVE_ENVIRON_DECL', have) +conf.set('HAVE_ENVIRON_DECL', have ? 1 : false) have = cc.has_header_symbol('signal.h', 'sighandler_t', args : '-D_GNU_SOURCE') conf.set('HAVE_SIGHANDLER_T', have ? 1 : false) @@ -565,7 +572,6 @@ funcs = ''' llistxattr llseek newlocale - mempcpy mkostemp move_mount mount_setattr @@ -630,6 +636,9 @@ foreach func: funcs conf.set('HAVE_' + func.to_upper(), have ? 1 : false) endforeach +have_mempcpy = cc.has_function('mempcpy', prefix: '#include <string.h>', args: '-D_GNU_SOURCE') +conf.set('HAVE_MEMPCPY', have_mempcpy ? 1 : false) + have = conf.get('HAVE_FUTIMENS') in [1] and conf.get('HAVE_INOTIFY_INIT1') in [1] conf.set('AGETTY_RELOAD', have ? 1 : false) if not have @@ -724,12 +733,15 @@ if not cc.has_function('socket') endif endif +lib_rt = cc.find_library('rt', required : false) realtime_libs = [] have = cc.has_function('clock_gettime') if not have - realtime_libs += cc.find_library('rt', required : true) - have = cc.has_function('clock_gettime', - dependencies : realtime_libs) + if lib_rt.found() + realtime_libs += lib_rt + have = cc.has_function('clock_gettime', + dependencies : realtime_libs) + endif endif conf.set('HAVE_CLOCK_GETTIME', have ? 1 : false) @@ -737,9 +749,11 @@ thread_libs = dependency('threads') have = cc.has_function('timer_create') if not have - realtime_libs = [cc.find_library('rt', required : true)] - have = cc.has_function('timer_create', - dependencies : realtime_libs) + if lib_rt.found() + realtime_libs = [lib_rt] + have = cc.has_function('timer_create', + dependencies : realtime_libs) + endif if not have realtime_libs += thread_libs have = cc.has_function('timer_create', @@ -777,9 +791,9 @@ int main(void) { have = cc.compiles(code, name : 'using __progname') conf.set('HAVE___PROGNAME', have ? 1 : false) -have = conf.get('HAVE_PTY_H').to_string() == '1' \ - and conf.get('HAVE_SYS_SIGNALFD_H').to_string() == '1' -conf.set('HAVE_PTY', have ? 1 : false) +have_pty = conf.get('HAVE_PTY_H').to_string() == '1' \ + and conf.get('HAVE_SYS_SIGNALFD_H').to_string() == '1' +conf.set('HAVE_PTY', have_pty ? 1 : false) have_opal_get_status= cc.has_header_symbol('linux/sed-opal.h', 'IOC_OPAL_GET_STATUS') conf.set('HAVE_OPAL_GET_STATUS', have_opal_get_status ? 1 : false) @@ -884,6 +898,7 @@ conf.set('USE_TTY_GROUP', have ? 1 : false) bison = find_program('bison') flex = find_program('flex') +sed = find_program('sed') build_hwclock = not get_option('build-hwclock').disabled() bison_gen = generator( @@ -891,6 +906,12 @@ bison_gen = generator( output : ['@BASENAME@.tab.c', '@BASENAME@.tab.h'], arguments : ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@']) +python_module = import('python') +python = python_module.find_installation( + get_option('python'), + required : true, + disabler : true) + meson_make_symlink = meson.current_source_dir() + '/tools/meson-make-symlink.sh' meson_make_manpage_stub = meson.current_source_dir() + '/tools/meson-make-manpage-stub.sh' @@ -959,9 +980,7 @@ subdir('term-utils') subdir('po') includes = [dir_include, - dir_libblkid, dir_libsmartcols, - dir_libmount, dir_libfdisk, dir_libuuid, dir_liblastlog2, @@ -1066,7 +1085,7 @@ if opt and not is_disabler(exe) bashcompletions += ['utmpdump'] endif -opt = not get_option('build-su').disabled() +opt = get_option('build-su').require(have_pty).allowed() exe = executable( 'su', 'login-utils/su.c', @@ -1147,7 +1166,7 @@ if opt and not is_disabler(exe) join_paths(mandir, 'man8/vigr.8')) endif -opt = not get_option('build-runuser').disabled() +opt = get_option('build-runuser').require(have_pty).allowed() exe = executable( 'runuser', 'login-utils/runuser.c', @@ -1360,29 +1379,39 @@ exe = executable( exes += exe manadocs += ['sys-utils/choom.1.adoc'] +has_seminfo_type = cc.has_type('struct seminfo', args : '-D_GNU_SOURCE', prefix : '#include <sys/sem.h>') + +opt = get_option('build-ipcmk').require(has_seminfo_type).allowed() exe = executable( 'ipcmk', ipcmk_sources, include_directories : includes, link_with : [lib_common], install_dir : usrbin_exec_dir, - install : true) -exes += exe -manadocs += ['sys-utils/ipcmk.1.adoc'] -bashcompletions += ['ipcmk'] + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) + exes += exe + manadocs += ['sys-utils/ipcmk.1.adoc'] + bashcompletions += ['ipcmk'] +endif +opt = get_option('build-ipcrm').require(has_seminfo_type).allowed() exe = executable( 'ipcrm', ipcrm_sources, include_directories : includes, link_with : [lib_common], install_dir : usrbin_exec_dir, - install : true) -exes += exe -manadocs += ['sys-utils/ipcrm.1.adoc'] -bashcompletions += ['ipcrm'] + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) + exes += exe + manadocs += ['sys-utils/ipcrm.1.adoc'] + bashcompletions += ['ipcrm'] +endif -opt = not get_option('build-ipcs').disabled() +opt = not get_option('build-ipcs').require(has_seminfo_type).disabled() exe = executable( 'ipcs', ipcs_sources, @@ -1484,28 +1513,32 @@ if opt and not is_disabler(exe) bashcompletions += ['tunelp'] endif +opt = not get_option('build-fstrim').disabled() exe = executable( 'fstrim', fstrim_sources, include_directories : includes, - link_with : [lib_common, - lib_mount], + link_with : [lib_common], + dependencies : [mount_dep], install_dir : sbindir, - install : true) -if not is_disabler(exe) + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) exes += exe manadocs += ['sys-utils/fstrim.8.adoc'] bashcompletions += ['fstrim'] -endif +endif +opt = get_option('build-dmesg').require(cc.has_header('sys/klog.h')).allowed() exe = executable( 'dmesg', dmesg_sources, include_directories : includes, link_with : [lib_common, lib_tcolors], - install : true) -if not is_disabler(exe) + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) exes += exe manadocs += ['sys-utils/dmesg.1.adoc'] bashcompletions += ['dmesg'] @@ -1534,113 +1567,143 @@ exes += exe manadocs += ['sys-utils/ctrlaltdel.8.adoc'] bashcompletions += ['ctrlaltdel'] +have_linux_fs_h = conf.get('HAVE_LINUX_FS_H').to_string() == '1' + +opt = get_option('build-fsfreeze').require(have_linux_fs_h).allowed() exe = executable( 'fsfreeze', fsfreeze_sources, include_directories : includes, install_dir : sbindir, - install : true) -exes += exe -manadocs += ['sys-utils/fsfreeze.8.adoc'] -bashcompletions += ['fsfreeze'] + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) + exes += exe + manadocs += ['sys-utils/fsfreeze.8.adoc'] + bashcompletions += ['fsfreeze'] +endif +opt = get_option('build-blkdiscard').require(have_linux_fs_h).allowed() exe = executable( 'blkdiscard', blkdiscard_sources, include_directories : includes, - link_with : [lib_common, - lib_blkid], + link_with : [lib_common], + dependencies : [blkid_dep], install_dir : sbindir, - install : true) -exes += exe -manadocs += ['sys-utils/blkdiscard.8.adoc'] -bashcompletions += ['blkdiscard'] + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) + exes += exe + manadocs += ['sys-utils/blkdiscard.8.adoc'] + bashcompletions += ['blkdiscard'] +endif -if cc.has_header('linux/blkzoned.h') - exe = executable( - 'blkzone', - blkzone_sources, - include_directories : includes, - link_with : [lib_common], - install_dir : sbindir, - install : true) +opt = get_option('build-blkzone').require(have_linux_fs_h).allowed() +exe = executable( + 'blkzone', + blkzone_sources, + include_directories : includes, + link_with : [lib_common], + install_dir : sbindir, + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) exes += exe manadocs += ['sys-utils/blkzone.8.adoc'] bashcompletions += ['blkzone'] endif -if cc.has_header('linux/pr.h') - exe = executable( - 'blkpr', - blkpr_sources, - include_directories : includes, - link_with : [lib_common], - install_dir : sbindir, - install : true) +opt = get_option('build-blkpr').require(cc.has_header('linux/pr.h')).allowed() +exe = executable( + 'blkpr', + blkpr_sources, + include_directories : includes, + link_with : [lib_common], + install_dir : sbindir, + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) exes += exe manadocs += ['sys-utils/blkpr.8.adoc'] endif +opt = get_option('build-ldattach').require(cc.has_header('linux/if.h')).allowed() exe = executable( 'ldattach', ldattach_sources, include_directories : includes, link_with : [lib_common], install_dir : usrsbin_exec_dir, - install : true) -exes += exe -manadocs += ['sys-utils/ldattach.8.adoc'] -bashcompletions += ['ldattach'] + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) + exes += exe + manadocs += ['sys-utils/ldattach.8.adoc'] + bashcompletions += ['ldattach'] +endif + +have_linux_rtc_h = cc.has_header('linux/rtc.h') +opt = get_option('build-rtcwake').require(have_linux_rtc_h).allowed() exe = executable( 'rtcwake', rtcwake_sources, include_directories : includes, link_with : [lib_common], install_dir : usrsbin_exec_dir, - install : true) -exes += exe -manadocs += ['sys-utils/rtcwake.8.adoc'] -bashcompletions += ['rtcwake'] + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) + exes += exe + manadocs += ['sys-utils/rtcwake.8.adoc'] + bashcompletions += ['rtcwake'] +endif +opt = get_option('build-setarch').require(cc.has_header('sys/personality.h')).allowed() exe = executable( 'setarch', setarch_sources, include_directories : includes, link_with : [lib_common], install_dir : usrbin_exec_dir, - install : true) -exes += exe -manadocs += ['sys-utils/setarch.8.adoc'] -bashcompletions += ['setarch'] - -setarch_links = ['uname26', 'linux32', 'linux64'] -setarch_links_arch = { - 's390x' : ['s390', 's390x'], - 'x86' : ['i386'], - 'x86_64' : ['i386', 'x86_64'], - 'ppc64' : ['ppc', 'ppc64', 'ppc32'], - 'space64' : ['sparc', 'sparc64', 'sparc32', 'sparc32bash'], - 'mips64' : ['mips', 'mips64', 'mips32'], - 'ia64' : ['i386', 'ia64'], - 'hppa' : ['parisc', 'parisc64', 'parisc32'], -} -setarch_links += setarch_links_arch.get(host_machine.cpu_family(), []) + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) + exes += exe + manadocs += ['sys-utils/setarch.8.adoc'] + bashcompletions += ['setarch'] +endif -foreach link: setarch_links - meson.add_install_script(meson_make_symlink, - 'setarch', - join_paths(usrbin_exec_dir, link)) - manlinks += {link + '.8': 'setarch.8'} -endforeach +if opt + setarch_links = ['uname26', 'linux32', 'linux64'] + setarch_links_arch = { + 's390x' : ['s390', 's390x'], + 'x86' : ['i386'], + 'x86_64' : ['i386', 'x86_64'], + 'ppc64' : ['ppc', 'ppc64', 'ppc32'], + 'space64' : ['sparc', 'sparc64', 'sparc32', 'sparc32bash'], + 'mips64' : ['mips', 'mips64', 'mips32'], + 'ia64' : ['i386', 'ia64'], + 'hppa' : ['parisc', 'parisc64', 'parisc32'], + } + setarch_links += setarch_links_arch.get(host_machine.cpu_family(), []) + + foreach link: setarch_links + meson.add_install_script(meson_make_symlink, + 'setarch', + join_paths(usrbin_exec_dir, link)) + manlinks += {link + '.8': 'setarch.8'} + endforeach +endif opt = not get_option('build-eject').disabled() exe = executable( 'eject', eject_sources, include_directories : includes, - link_with : [lib_common, - lib_mount], + link_with : [lib_common], + dependencies : [mount_dep], install_dir : usrbin_exec_dir, install : opt, build_by_default : opt) @@ -1711,16 +1774,18 @@ if not is_disabler(exe) bashcompletions += ['prlimit'] endif +opt = not get_option('build-lsns').disabled() exe = executable( 'lsns', lsns_sources, include_directories : includes, link_with : [lib_common, - lib_smartcols, - lib_mount], + lib_smartcols], + dependencies : [mount_dep], install_dir : usrbin_exec_dir, - install : true) -if not is_disabler(exe) + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) exes += exe manadocs += ['sys-utils/lsns.8.adoc'] bashcompletions += ['lsns'] @@ -1732,9 +1797,8 @@ exe = executable( mount_sources, include_directories : includes, link_with : [lib_common, - lib_smartcols, - lib_mount], - dependencies : lib_selinux, + lib_smartcols], + dependencies : [lib_selinux, mount_dep], install_mode : 'rwsr-xr-x', install : opt, build_by_default : opt) @@ -1742,8 +1806,8 @@ exe2 = executable( 'umount', umount_sources, include_directories : includes, - link_with : [lib_common, - lib_mount], + link_with : [lib_common], + dependencies : [mount_dep], install_mode : 'rwsr-xr-x', install : opt, build_by_default : opt) @@ -1762,8 +1826,8 @@ exe = executable( include_directories : includes, link_args : ['--static'], link_with : [lib_common, - lib_smartcols_static, - lib_mount_static], + lib_smartcols_static], + dependencies : [mount_static_dep], install : opt2, build_by_default : opt2) if opt2 and not is_disabler(exe) @@ -1776,8 +1840,8 @@ exe = executable( umount_sources, include_directories : includes, link_args : ['--static'], - link_with : [lib_common, - lib_mount_static], + link_with : [lib_common], + dependencies : [mount_static_dep], install : opt2, build_by_default : opt2) if opt2 and not is_disabler(exe) @@ -1786,32 +1850,34 @@ endif # setuid? +opt = not get_option('build-swapon').disabled() exe = executable( 'swapon', swapon_sources, include_directories : includes, link_with : [lib_common, - lib_blkid, - lib_mount, lib_smartcols], + dependencies : [blkid_dep, mount_dep], install_dir : sbindir, - install : true) -if not is_disabler(exe) + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) exes += exe manadocs += ['sys-utils/swapon.8.adoc'] bashcompletions += ['swapon'] endif +opt = not get_option('build-swapoff').disabled() exe = executable( 'swapoff', swapoff_sources, include_directories : includes, - link_with : [lib_common, - lib_blkid, - lib_mount], + link_with : [lib_common], + dependencies : [blkid_dep, mount_dep], install_dir : sbindir, - install : true) -if not is_disabler(exe) + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) exes += exe manlinks += {'swapoff.8': 'swapon.8'} bashcompletions += ['swapoff'] @@ -1832,16 +1898,20 @@ if not is_disabler(exe) bashcompletions += ['lscpu'] endif +opt = get_option('build-chcpu').require(have_cpu_set_t).allowed() exe = executable( 'chcpu', chcpu_sources, include_directories : includes, link_with : [lib_common], install_dir : sbindir, - install : true) -exes += exe -manadocs += ['sys-utils/chcpu.8.adoc'] -bashcompletions += ['chcpu'] + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) + exes += exe + manadocs += ['sys-utils/chcpu.8.adoc'] + bashcompletions += ['chcpu'] +endif exe = executable( 'wdctl', @@ -1861,7 +1931,7 @@ exe = executable( 'mountpoint', mountpoint_sources, include_directories : includes, - link_with : [lib_mount], + dependencies : [mount_dep], install : opt, build_by_default : opt) if opt and not is_disabler(exe) @@ -1921,6 +1991,7 @@ exe = executable( unshare_sources, include_directories : includes, link_with : [lib_common], + dependencies : [mount_dep], install_dir : usrbin_exec_dir, install : opt, build_by_default : opt) @@ -1936,6 +2007,7 @@ exe = executable( unshare_sources, include_directories : includes, link_with : [lib_common], + dependencies : [mount_dep], install_dir : usrbin_exec_dir, install : opt, build_by_default : opt) @@ -2109,9 +2181,8 @@ exe = executable( mkswap_sources, include_directories : includes, link_with : [lib_common, - lib_blkid, lib_uuid], - dependencies: [lib_selinux], + dependencies: [blkid_dep, lib_selinux], install_dir : sbindir, install : true) if not is_disabler(exe) @@ -2125,8 +2196,8 @@ exe = executable( swaplabel_sources, include_directories : includes, link_with : [lib_common, - lib_blkid, lib_uuid], + dependencies : [blkid_dep], install_dir : sbindir, install : true) if not is_disabler(exe) @@ -2140,10 +2211,8 @@ exe = executable( 'fsck', fsck_sources, include_directories : includes, - link_with : [lib_common, - lib_blkid, - lib_mount], - dependencies : realtime_libs, + link_with : [lib_common], + dependencies : [blkid_dep, mount_dep, realtime_libs], install_dir : sbindir, install : opt, build_by_default : opt) @@ -2240,15 +2309,20 @@ if opt and not is_disabler(exe) bashcompletions += ['fdformat'] endif +opt = get_option('build-blockdev').require(LINUX).allowed() exe = executable( 'blockdev', blockdev_sources, include_directories : includes, link_with : [lib_common], install_dir : sbindir, - install : true) -manadocs += ['disk-utils/blockdev.8.adoc'] -bashcompletions += ['blockdev'] + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) + exes += exe + manadocs += ['disk-utils/blockdev.8.adoc'] + bashcompletions += ['blockdev'] +endif opt = not get_option('build-fdisks').disabled() if opt and not have_dirfd and not have_ddfd @@ -2330,9 +2404,8 @@ exe = executable( link_with : [lib_common, lib_fdisk, lib_smartcols, - lib_tcolors, - lib_mount], - dependencies : [curses_libs], + lib_tcolors], + dependencies : [curses_libs, mount_dep], install_dir : sbindir, install : opt, build_by_default : opt) @@ -2374,8 +2447,8 @@ exe4 = executable( partx_sources, include_directories : includes, link_with : [lib_common, - lib_blkid, lib_smartcols], + dependencies : [blkid_dep], install_dir : usrsbin_exec_dir, install : opt, build_by_default : opt) @@ -2390,6 +2463,7 @@ endif ############################################################ +opt = get_option('build-script').require(have_pty).allowed() exe = executable( 'script', script_sources, @@ -2400,10 +2474,13 @@ exe = executable( realtime_libs, math_libs], install_dir : usrbin_exec_dir, - install : true) -exes += exe -manadocs += ['term-utils/script.1.adoc'] -bashcompletions += ['script'] + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) + exes += exe + manadocs += ['term-utils/script.1.adoc'] + bashcompletions += ['script'] +endif exe = executable( 'test_script', @@ -2415,9 +2492,12 @@ exe = executable( lib_utempter, realtime_libs, math_libs], - build_by_default : program_tests) -exes += exe + build_by_default : opt and program_tests) +if opt and not is_disabler(exe) + exes += exe +endif +opt = get_option('build-scriptlive').require(have_pty).allowed() exe = executable( 'scriptlive', scriptlive_sources, @@ -2427,10 +2507,13 @@ exe = executable( realtime_libs, math_libs], install_dir : usrbin_exec_dir, - install : true) -exes += exe -manadocs += ['term-utils/scriptlive.1.adoc'] -bashcompletions += ['scriptlive'] + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) + exes += exe + manadocs += ['term-utils/scriptlive.1.adoc'] + bashcompletions += ['scriptlive'] +endif exe = executable( 'scriptreplay', @@ -2668,51 +2751,52 @@ exes += exe manadocs += ['misc-utils/whereis.1.adoc'] bashcompletions += ['whereis'] +opt = not get_option('build-lslocks').disabled() exe = executable( 'lslocks', lslocks_sources, include_directories : includes, link_with : [lib_common, - lib_mount, lib_smartcols], + dependencies : [mount_dep], install_dir : usrbin_exec_dir, - install : true) -if not is_disabler(exe) + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) exes += exe manadocs += ['misc-utils/lslocks.8.adoc'] bashcompletions += ['lslocks'] endif +opt = not get_option('build-lsblk').disabled() exe = executable( 'lsblk', lsblk_sources, include_directories : includes, link_with : [lib_common, - lib_blkid, - lib_mount, lib_tcolors, lib_smartcols], - dependencies : lib_udev, - install : true) -if not is_disabler(exe) + dependencies : [blkid_dep, lib_udev, mount_dep], + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) exes += exe manadocs += ['misc-utils/lsblk.8.adoc'] bashcompletions += ['lsblk'] endif -mq_libs = [] -mq_libs += cc.find_library('rt', required : true) - +opt = not get_option('build-lsfd').require(lib_rt.found()).disabled() exe = executable( 'lsfd', lsfd_sources, include_directories : includes, link_with : [lib_common, lib_smartcols], - dependencies : mq_libs, + dependencies : [lib_rt], install_dir : usrbin_exec_dir, - install : true) -if not is_disabler(exe) + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) exes += exe manadocs += ['misc-utils/lsfd.1.adoc'] endif @@ -2777,8 +2861,8 @@ exe = executable( 'blkid', blkid_sources, include_directories : includes, - link_with : [lib_common, - lib_blkid], + link_with : [lib_common], + dependencies : [blkid_dep], install_dir : sbindir, install : opt, build_by_default : opt) @@ -2793,8 +2877,8 @@ exe = executable( 'blkid.static', blkid_sources, include_directories : includes, - link_with : [lib_common, - lib_blkid_static], + link_with : [lib_common], + dependencies : [blkid_static_dep], install_dir : sbindir, install : opt, build_by_default : opt) @@ -2806,7 +2890,7 @@ exe = executable( 'sample-mkfs', 'libblkid/samples/mkfs.c', include_directories : includes, - link_with : lib_blkid) + dependencies : [blkid_dep]) if not is_disabler(exe) exes += exe endif @@ -2815,7 +2899,7 @@ exe = executable( 'sample-partitions', 'libblkid/samples/partitions.c', include_directories : includes, - link_with : lib_blkid) + dependencies : [blkid_dep]) if not is_disabler(exe) exes += exe endif @@ -2824,7 +2908,7 @@ exe = executable( 'sample-superblocks', 'libblkid/samples/superblocks.c', include_directories : includes, - link_with : lib_blkid) + dependencies : [blkid_dep]) if not is_disabler(exe) exes += exe endif @@ -2833,7 +2917,7 @@ exe = executable( 'sample-topology', 'libblkid/samples/topology.c', include_directories : includes, - link_with : lib_blkid) + dependencies : [blkid_dep]) if not is_disabler(exe) exes += exe endif @@ -2842,7 +2926,7 @@ exe = executable( 'test_blkid_fuzz_sample', 'libblkid/src/fuzz.c', include_directories: includes, - link_with: lib_blkid, + dependencies : [blkid_dep], build_by_default: program_tests) if not is_disabler(exe) exes += exe @@ -2854,7 +2938,7 @@ exe = executable( 'findfs', findfs_sources, include_directories : includes, - link_with : [lib_blkid], + dependencies : [blkid_dep], install_dir : sbindir, install : true) if not is_disabler(exe) @@ -2868,8 +2952,8 @@ exe = executable( wipefs_sources, include_directories : includes, link_with : [lib_common, - lib_blkid, lib_smartcols], + dependencies : [blkid_dep], install_dir : sbindir, install : true) if not is_disabler(exe) @@ -2878,17 +2962,17 @@ if not is_disabler(exe) bashcompletions += ['wipefs'] endif +opt = not get_option('build-findmnt').disabled() exe = executable( 'findmnt', findmnt_sources, include_directories : includes, link_with : [lib_common, - lib_blkid, - lib_mount, lib_smartcols], - dependencies : [lib_udev], - install : true) -if not is_disabler(exe) + dependencies : [blkid_dep, lib_udev, mount_dep], + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) exes += exe manadocs += ['misc-utils/findmnt.8.adoc'] bashcompletions += ['findmnt'] @@ -2957,14 +3041,15 @@ if not is_disabler(exe) bashcompletions += ['hardlink'] endif -opt = not get_option('build-pipesz').disabled() +opt = get_option('build-pipesz').allowed() exe = executable( 'pipesz', pipesz_sources, include_directories : includes, link_with : [lib_common], install_dir : usrbin_exec_dir, - install : true) + install : opt, + build_by_default : opt) if opt and not is_disabler(exe) exes += exe manadocs += ['misc-utils/pipesz.1.adoc'] @@ -2984,14 +3069,18 @@ if not is_disabler(exe) exes += exe endif +have_posix_fadvise = conf.get('HAVE_POSIX_FADVISE').to_string() == '1' + +opt = get_option('build-fadvise').require(have_posix_fadvise).allowed() exe = executable( 'fadvise', fadvise_sources, include_directories : includes, link_with : [lib_common], install_dir : usrbin_exec_dir, - install : true) -if not is_disabler(exe) + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) exes += exe manadocs += ['misc-utils/fadvise.1.adoc'] bashcompletions += ['fadvise'] @@ -3015,32 +3104,38 @@ endif syscalls_h = custom_target('syscalls.h', input : 'tools/all_syscalls', output : 'syscalls.h', - command : ['tools/all_syscalls', cc.cmd_array()] + command : ['tools/all_syscalls', sed.full_path(), + cc.cmd_array(), get_option('c_args')], ) -if cc.compiles(fs.read('include/audit-arch.h'), name : 'has AUDIT_ARCH_NATIVE') - exe = executable( - 'enosys', - 'misc-utils/enosys.c', syscalls_h, - include_directories : includes, - link_with : [lib_common], - install_dir : usrbin_exec_dir, - install : true) - if not is_disabler(exe) - exes += exe - manadocs += ['misc-utils/enosys.1.adoc'] - bashcompletions += ['enosys'] - endif +have_linux_audit_h = cc.has_header('linux/audit.h') +have_audit_arch_native = cc.compiles(fs.read('include/audit-arch.h'), name : 'has AUDIT_ARCH_NATIVE') + +opt = get_option('build-enosys').require(have_linux_audit_h and have_audit_arch_native).allowed() +exe = executable( + 'enosys', + 'misc-utils/enosys.c', syscalls_h, + include_directories : includes, + link_with : [lib_common], + install_dir : usrbin_exec_dir, + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) + exes += exe + manadocs += ['misc-utils/enosys.1.adoc'] + bashcompletions += ['enosys'] endif +opt = get_option('build-lsclocks').require(have_linux_rtc_h).allowed() exe = executable( 'lsclocks', lsclocks_sources, include_directories : includes, link_with : [lib_common, lib_smartcols], install_dir : usrbin_exec_dir, - install : true) -if not is_disabler(exe) + install : opt, + build_by_default : opt) +if opt and not is_disabler(exe) exes += exe manadocs += ['misc-utils/lsclocks.1.adoc'] bashcompletions += ['lsclocks'] @@ -3197,7 +3292,7 @@ if conf.get('HAVE_OPENAT').to_string() == '1' \ exes += exe endif -if conf.get('HAVE_PTY').to_string() == '1' +if have_pty exe = executable( 'test_pty', pty_session_c, @@ -3311,7 +3406,8 @@ endif ############################################################ libfdisk_tests_cflags = ['-DTEST_PROGRAM'] -libfdisk_tests_ldadd = [lib_fdisk_static, lib_uuid, lib_blkid] +libfdisk_tests_ldadd = [lib_fdisk_static, lib_uuid] +libfdisk_tests_ldadd_deps = [blkid_dep] exe = executable( 'test_fdisk_ask', @@ -3319,6 +3415,7 @@ exe = executable( c_args : libfdisk_tests_cflags, include_directories : lib_fdisk_includes, link_with : libfdisk_tests_ldadd, + dependencies : libfdisk_tests_ldadd_deps, build_by_default: program_tests) if not is_disabler(exe) exes += exe @@ -3330,6 +3427,7 @@ exe = executable( c_args : libfdisk_tests_cflags, include_directories : lib_fdisk_includes, link_with : libfdisk_tests_ldadd, + dependencies : libfdisk_tests_ldadd_deps, build_by_default: program_tests) if not is_disabler(exe) exes += exe @@ -3341,6 +3439,7 @@ exe = executable( c_args : libfdisk_tests_cflags, include_directories : lib_fdisk_includes, link_with : libfdisk_tests_ldadd, + dependencies : libfdisk_tests_ldadd_deps, build_by_default: program_tests) if not is_disabler(exe) exes += exe @@ -3352,6 +3451,7 @@ exe = executable( c_args : libfdisk_tests_cflags, include_directories : lib_fdisk_includes, link_with : libfdisk_tests_ldadd, + dependencies : libfdisk_tests_ldadd_deps, build_by_default: program_tests) if not is_disabler(exe) exes += exe @@ -3363,6 +3463,7 @@ exe = executable( c_args : libfdisk_tests_cflags, include_directories : lib_fdisk_includes, link_with : libfdisk_tests_ldadd, + dependencies : libfdisk_tests_ldadd_deps, build_by_default: program_tests) if not is_disabler(exe) exes += exe @@ -3374,6 +3475,7 @@ exe = executable( c_args : libfdisk_tests_cflags, include_directories : lib_fdisk_includes, link_with : libfdisk_tests_ldadd, + dependencies : libfdisk_tests_ldadd_deps, build_by_default: program_tests) if not is_disabler(exe) exes += exe @@ -3488,14 +3590,14 @@ exe = executable( build_by_default: program_tests) exes += exe -if LINUX +if LINUX and lib_rt.found() exe = executable( 'test_mkfds', 'tests/helpers/test_mkfds.c', 'tests/helpers/test_mkfds.h', 'tests/helpers/test_mkfds_ppoll.c', include_directories : includes, - dependencies : mq_libs, + dependencies : [lib_rt], build_by_default: program_tests) exes += exe endif |