tests: ensure all utilities that read input diagnose errors
[coreutils.git] / build-aux / gen-lists-of-programs.sh
blob3ec9a6dd1f5c8709901752174418b7b0601c7367
1 #!/bin/sh
2 # Generate lists of all coreutils programs, to be fed both to Autoconf
3 # and Automake, and with further distinctions about how and when these
4 # programs should be built. This is useful to avoid duplicating these
5 # list definitions among several files ('configure.ac' and
6 # 'src/local.mk' at least); such duplication had proved a source of
7 # inconsistencies and bugs in the past.
9 set -u
10 set -e
12 # These are the names of programs that are neither built nor installed
13 # by default. This list is *not* intended for programs like 'who',
14 # 'nice', 'chroot', etc., that are built only when certain requisite
15 # system features are detected.
16 # If you would like to install programs from this list anyway, say A and B,
17 # use "--enable-install-program=A,B" when invoking configure.
18 disabled_by_default_progs='
19 arch
20 coreutils
21 hostname
24 # Programs that can be built only when certain requisite system
25 # features are detected at configure time.
26 build_if_possible_progs='
27 chroot
29 hostid
30 libstdbuf.so
31 nice
32 pinky
33 stdbuf
34 stty
35 timeout
36 uptime
37 users
38 who
41 # All the other programs, to be built by default, and that should
42 # be buildable without problems on any target system.
43 normal_progs='
45 b2sum
46 base64
47 base32
48 basenc
49 basename
50 cat
51 chcon
52 chgrp
53 chmod
54 chown
55 cksum
56 comm
58 csplit
59 cut
60 date
62 dir
63 dircolors
64 dirname
66 echo
67 env
68 expand
69 expr
70 factor
71 false
72 fmt
73 fold
74 ginstall
75 groups
76 head
78 join
79 kill
80 link
82 logname
84 md5sum
85 mkdir
86 mkfifo
87 mknod
88 mktemp
91 nproc
92 nohup
93 numfmt
95 paste
96 pathchk
98 printenv
99 printf
102 readlink
103 realpath
105 rmdir
106 runcon
108 sha1sum
109 sha224sum
110 sha256sum
111 sha384sum
112 sha512sum
113 shred
114 shuf
115 sleep
116 sort
117 split
118 stat
120 sync
122 tail
124 test
125 touch
127 true
128 truncate
129 tsort
131 uname
132 unexpand
133 uniq
134 unlink
135 vdir
137 whoami
141 me=`echo "$0" | sed 's,.*/,,'`
142 msg="Automatically generated by $me. DO NOT EDIT BY HAND!"
144 case $#,$1 in
145 1,--autoconf|1,--for-autoconf)
146 echo "dnl $msg"
147 for p in $normal_progs; do
148 test x"$p" = x"[" && p='@<:@'
149 echo "gl_ADD_PROG([optional_bin_progs], [$p])"
150 done
151 # Extra 'echo' to normalize whitespace.
152 echo "no_install_progs_default='`echo $disabled_by_default_progs`'"
153 sed 's/^ *//' <<END
154 # Given the name of a variable containing a space-separated
155 # list of install-by-default programs and the actual list of
156 # do-not-install-by-default programs, modify the former variable
157 # to reflect any "do-install" and "don't-install" requests.
158 # That is, add any program specified via --enable-install-program,
159 # and remove any program specified via --enable-no-install-program.
160 # Note how the second argument below is a literal, with ","
161 # separators. That is required due to the way the macro works,
162 # and since the corresponding ./configure option argument is
163 # comma-separated on input.
164 gl_INCLUDE_EXCLUDE_PROG([optional_bin_progs], [`\
165 echo $disabled_by_default_progs \
166 | sed 's/ /,/g'`])
169 1,--automake|1,--for-automake)
170 echo "## $msg"
171 progsdir=src
172 echo no_install__progs =
173 for p in $disabled_by_default_progs; do
174 echo no_install__progs += $progsdir/$p
175 done
176 echo build_if_possible__progs =
177 for p in $build_if_possible_progs; do
178 echo build_if_possible__progs += $progsdir/$p
179 done
180 echo default__progs =
181 for p in $normal_progs; do
182 echo default__progs += $progsdir/$p
183 done
185 1,--list-progs)
186 for p in $disabled_by_default_progs $build_if_possible_progs \
187 $normal_progs; do
188 echo $p
189 done
192 echo "$0: invalid usage" >&2; exit 2
194 esac
196 exit 0