all: update gnulib submodule to latest
[coreutils.git] / build-aux / gen-lists-of-programs.sh
blobcdbcd0a9e4749bedca74328c3eb149fbda23eae8
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 basename
49 cat
50 chcon
51 chgrp
52 chmod
53 chown
54 cksum
55 comm
57 csplit
58 cut
59 date
61 dir
62 dircolors
63 dirname
65 echo
66 env
67 expand
68 expr
69 factor
70 false
71 fmt
72 fold
73 ginstall
74 groups
75 head
77 join
78 kill
79 link
81 logname
83 md5sum
84 mkdir
85 mkfifo
86 mknod
87 mktemp
90 nproc
91 nohup
92 numfmt
94 paste
95 pathchk
97 printenv
98 printf
99 ptx
101 readlink
102 realpath
104 rmdir
105 runcon
107 sha1sum
108 sha224sum
109 sha256sum
110 sha384sum
111 sha512sum
112 shred
113 shuf
114 sleep
115 sort
116 split
117 stat
119 sync
121 tail
123 test
124 touch
126 true
127 truncate
128 tsort
130 uname
131 unexpand
132 uniq
133 unlink
134 vdir
136 whoami
140 me=`echo "$0" | sed 's,.*/,,'`
141 msg="Automatically generated by $me. DO NOT EDIT BY HAND!"
143 case $#,$1 in
144 1,--autoconf|1,--for-autoconf)
145 echo "dnl $msg"
146 for p in $normal_progs; do
147 test x"$p" = x"[" && p='@<:@'
148 echo "gl_ADD_PROG([optional_bin_progs], [$p])"
149 done
150 # Extra 'echo' to normalize whitespace.
151 echo "no_install_progs_default='`echo $disabled_by_default_progs`'"
152 sed 's/^ *//' <<END
153 # Given the name of a variable containing a space-separated
154 # list of install-by-default programs and the actual list of
155 # do-not-install-by-default programs, modify the former variable
156 # to reflect any "do-install" and "don't-install" requests.
157 # That is, add any program specified via --enable-install-program,
158 # and remove any program specified via --enable-no-install-program.
159 # Note how the second argument below is a literal, with ","
160 # separators. That is required due to the way the macro works,
161 # and since the corresponding ./configure option argument is
162 # comma-separated on input.
163 gl_INCLUDE_EXCLUDE_PROG([optional_bin_progs], [`\
164 echo $disabled_by_default_progs \
165 | sed 's/ /,/g'`])
168 1,--automake|1,--for-automake)
169 echo "## $msg"
170 progsdir=src
171 echo no_install__progs =
172 for p in $disabled_by_default_progs; do
173 echo no_install__progs += $progsdir/$p
174 done
175 echo build_if_possible__progs =
176 for p in $build_if_possible_progs; do
177 echo build_if_possible__progs += $progsdir/$p
178 done
179 echo default__progs =
180 for p in $normal_progs; do
181 echo default__progs += $progsdir/$p
182 done
184 1,--list-progs)
185 for p in $disabled_by_default_progs $build_if_possible_progs \
186 $normal_progs; do
187 echo $p
188 done
191 echo "$0: invalid usage" >&2; exit 2
193 esac
195 exit 0