diff options
Diffstat (limited to 'build-aux/gen-lists-of-programs.sh')
-rwxr-xr-x | build-aux/gen-lists-of-programs.sh | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/build-aux/gen-lists-of-programs.sh b/build-aux/gen-lists-of-programs.sh new file mode 100755 index 000000000..2db0745bc --- /dev/null +++ b/build-aux/gen-lists-of-programs.sh @@ -0,0 +1,185 @@ +#!/bin/sh +# Generate lists of all coreutils programs, to be fed both to Autoconf +# and Automake, and with further distinctions about how and when these +# programs should be built. This is useful to avoid duplicating the +# definitions of these list among several files ('configure.ac' and +# 'src/Makefile.am' at least); such duplication had proved a source of +# inconsistencies and bugs in the past. + +set -u +set -e + +# These are the names of programs that are neither built nor installed +# by default. This list is *not* intended for programs like 'who', +# 'nice', 'chroot', etc., that are built only when certain requisite +# system features are detected. +# If you would like to install programs from this list anyway, say A and B, +# use "--enable-install-program=A,B" when invoking configure. +disabled_by_default_progs=' + arch + hostname +' + +# Programs that can be built only when certain requisite system +# features are detected. These prerequisites will be looked for +# at configure runtime. +build_if_possible_progs=' + chroot + df + hostid + libstdbuf.so + nice + pinky + stdbuf + stty + uptime + users + who +' + +# All the other programs, to be built by default, and that should +# be buildable without problems on any target system. +normal_progs=' + [ + base64 + basename + cat + chcon + chgrp + chmod + chown + cksum + comm + cp + csplit + cut + date + dd + dir + dircolors + dirname + du + echo + env + expand + expr + factor + false + fmt + fold + ginstall + groups + head + id + join + kill + link + ln + logname + ls + md5sum + mkdir + mkfifo + mknod + mktemp + mv + nl + nproc + nohup + od + paste + pathchk + pr + printenv + printf + ptx + pwd + readlink + realpath + rm + rmdir + runcon + seq + sha1sum + sha224sum + sha256sum + sha384sum + sha512sum + shred + shuf + sleep + sort + split + stat + sum + sync + tac + tail + tee + test + timeout + touch + tr + true + truncate + tsort + tty + uname + unexpand + uniq + unlink + vdir + wc + whoami + yes +' + +me=`echo "$0" | sed 's,.*/,,'` +msg="Automatically generated by $me. DO NOT EDIT BY HAND!" + +case $#,$1 in + 1,--autoconf|1,--for-autoconf) + echo "dnl $msg" + for p in $normal_progs; do + test x"$p" = x"[" && p='@<:@' + echo "gl_ADD_PROG([optional_bin_progs], [$p])" + done + # Extra 'echo' to normalize whitespace. + echo "no_install_progs_default='`echo $disabled_by_default_progs`'" + sed 's/^ *//' <<END + # Given the name of a variable containing a space-separated + # list of install-by-default programs and the actual list + # do-not-install-by-default programs, modify the former variable + # to reflect any "do-install" and "don't-install" requests. + # That is, add any program specified via --enable-install-program, + # and remove any program specified via --enable-no-install-program. + # Note how the second argument below is a literal, with "," + # separators. That is required due to the way the macro works, + # and since the corresponding ./configure option argument is + # comma-separated on input. + gl_INCLUDE_EXCLUDE_PROG([optional_bin_progs], [`\ + echo $disabled_by_default_progs \ + | sed 's/ /,/g'`]) +END + ;; + 1,--automake|1,--for-automake) + echo "## $msg" + echo no_install__progs = + for p in $disabled_by_default_progs; do + echo no_install__progs += $p + done + echo build_if_possible__progs = + for p in $build_if_possible_progs; do + echo build_if_possible__progs += $p + done + echo default__progs = + for p in $normal_progs; do + echo default__progs += $p + done + ;; + *) + echo "$0: invalid usage" >&2; exit 2 + ;; +esac + +exit 0 |