printf: add indexed argument support
[coreutils.git] / bootstrap.conf
blob3b83b2d24a92c3c0410f1e7db5e44ed09529f28d
1 # Bootstrap configuration.
3 # Copyright (C) 2006-2024 Free Software Foundation, Inc.
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
19 # We don't need these modules.
20 avoided_gnulib_modules='
21   --avoid=canonicalize-lgpl
22   --avoid=dummy
23   --avoid=mbuiter
24   --avoid=mbuiterf
27 # gnulib modules used by this package.
28 gnulib_modules="
29   $avoided_gnulib_modules
30   acl
31   alignalloc
32   alignasof
33   alloca
34   announce-gen
35   areadlink-with-size
36   areadlinkat-with-size
37   argmatch
38   argv-iter
39   assert
40   assert-h
41   assure
42   attribute
43   autobuild
44   backup-rename
45   backupfile
46   base32
47   base64
48   btoc32
49   buffer-lcm
50   c-strcase
51   c32iscntrl
52   c32isspace
53   c32width
54   canon-host
55   canonicalize
56   chmodat
57   chown
58   chownat
59   cl-strtod
60   cl-strtold
61   closein
62   closeout
63   config-h
64   configmake
65   copy-file-range
66   crypto/md5
67   crypto/sha1
68   crypto/sha256
69   crypto/sha512
70   crypto/sm3
71   cycle-check
72   d-ino
73   d-type
74   di-set
75   dirfd
76   dirname
77   do-release-commit-and-tag
78   dtoastr
79   dup2
80   endian
81   environ
82   error
83   euidaccess
84   exclude
85   exitfail
86   explicit_bzero
87   faccessat
88   fadvise
89   fchdir
90   fchmodat
91   fchownat
92   fclose
93   fcntl
94   fcntl-safer
95   fd-reopen
96   fdatasync
97   fdopen
98   fdutimensat
99   file-has-acl
100   file-type
101   fileblocks
102   filemode
103   filenamecat
104   filevercmp
105   flexmember
106   fnmatch-gnu
107   fopen-safer
108   fprintftime
109   fpurge
110   free-posix
111   freopen
112   freopen-safer
113   fseeko
114   fstatat
115   fsusage
116   fsync
117   ftoastr
118   ftruncate
119   fts
120   full-read
121   full-write
122   gethrxtime
123   getline
124   getloadavg
125   getlogin
126   getndelim2
127   getopt-gnu
128   getpagesize
129   gettext-h
130   gettime
131   gettime-res
132   git-version-gen
133   gitlog-to-changelog
134   gnu-web-doc-update
135   gnumakefile
136   gnupload
137   hard-locale
138   hash
139   hash-triple
140   heap
141   host-os
142   human
143   idcache
144   idx
145   ignore-value
146   inttostr
147   inttypes
148   isapipe
149   isatty
150   isblank
151   largefile
152   lchmod
153   ldtoastr
154   lib-ignore
155   libgmp
156   linebuffer
157   link
158   link-follow
159   linkat
160   long-options
161   lstat
162   maintainer-makefile
163   malloc-gnu
164   manywarnings
165   mbrlen
166   mbrtoc32
167   mbrtowc
168   mbschr
169   mbslen
170   mbswidth
171   mbszero
172   mcel-prefer
173   memcasecmp
174   memchr
175   memcmp2
176   mempcpy
177   memrchr
178   minmax
179   mkancesdirs
180   mkdir
181   mkdir-p
182   mkdirat
183   mkfifo
184   mkfifoat
185   mknod
186   mkostemp
187   mkstemp
188   mktime
189   modechange
190   mountlist
191   mpsort
192   nproc
193   nstrftime
194   nullptr
195   obstack
196   open
197   openat-safer
198   parse-datetime
199   parse-datetime2
200   pathmax
201   perl
202   physmem
203   pipe-posix
204   pipe2
205   posix-shell
206   posixtm
207   posixver
208   priv-set
209   progname
210   propername-lite
211   pthread-cond
212   pthread-mutex
213   pthread-thread
214   pthread_sigmask
215   putenv-gnu
216   quote
217   quotearg
218   randint
219   randperm
220   rawmemchr
221   read-file
222   readtokens
223   readtokens0
224   readutmp
225   regex
226   remove
227   renameat
228   renameatu
229   rmdir
230   root-dev-ino
231   safe-read
232   same
233   save-cwd
234   savedir
235   savewd
236   select
237   selinux-at
238   setenv
239   settime
240   sig2str
241   sigaction
242   skipchars
243   smack
244   ssize_t
245   stat-macros
246   stat-size
247   stat-time
248   stdbool
249   stdc_leading_zeros
250   stdckdint
251   stdlib-safer
252   stpcpy
253   strdup-posix
254   strnlen
255   strnumcmp
256   strsignal
257   strtoimax
258   strtoumax
259   symlinkat
260   sys_ioctl
261   sys_resource
262   sys_stat
263   sys_types
264   sys_wait
265   targetdir
266   tempname
267   termios
268   time_rz
269   timer-time
270   timespec
271   tmpdir
272   uname
273   unicodeio
274   unistd-safer
275   unlink-busy
276   unlinkat
277   unlinkdir
278   unlocked-io
279   unsetenv
280   update-copyright
281   useless-if-before-free
282   userspec
283   utimecmp
284   utimens
285   utimensat
286   vasprintf-posix
287   vc-list-files
288   verify
289   verror
290   version-etc-fsf
291   winsz-ioctl
292   winsz-termios
293   write-any-file
294   xalignalloc
295   xalloc
296   xbinary-io
297   xdectoint
298   xfts
299   xgetcwd
300   xgetgroups
301   xgethostname
302   xmemcoll
303   xnanosleep
304   xprintf
305   xprintf-posix
306   xreadlink
307   xstrtod
308   xstrtoimax
309   xstrtol
310   xstrtol-error
311   xstrtold
312   xstrtoumax
313   xvasprintf
314   year2038-recommended
315   yesno
318 # Other locale categories that need message catalogs.
319 EXTRA_LOCALE_CATEGORIES=LC_TIME
321 # Additional xgettext options to use.  Use "\\\newline" to break lines.
322 XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\
323  --flag=asnprintf:3:c-format\\\
324  --flag=asprintf:2:c-format\\\
325  --flag=error:3:c-format\\\
326  --flag=error_at_line:5:c-format\\\
327  --flag=vasnprintf:3:c-format\\\
328  --flag=vasprintf:2:c-format\\\
329  --flag=verror:3:c-format\\\
330  --flag=verror_at_line:5:c-format\\\
331  --flag=wrapf:1:c-format\\\
332  --flag=xasprintf:1:c-format\\\
333  --flag=xfprintf:2:c-format\\\
334  --flag=xprintf:1:c-format\\\
335  --from-code=UTF-8\\\
338 # Append these, since we use the propername module.
339 see_manual='"This is a proper name. See the gettext manual, section Names."'
340 see_manual=\'"$see_manual"\'
341 XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\
342  --keyword=proper_name:1,'"$see_manual"'\\\
343  --keyword=proper_name_lite:1,'"$see_manual"'\\\
346 gnulib_tool_option_extras="--tests-base=gnulib-tests --with-tests --symlink\
347  --makefile-name=gnulib.mk --automake-subdir
350 # Build prerequisites
351 buildreq="\
352 autoconf   2.64
353 automake   1.11.2
354 autopoint  0.19.2
355 bison      -
356 gettext    0.19.2
357 git        1.4.4
358 gperf      -
359 gzip       -
360 m4         -
361 makeinfo   6.1
362 texi2pdf   6.1
363 patch      -
364 perl       5.5
365 tar        -
366 wget       -
367 xz         -
370 bootstrap_post_import_hook ()
372   # Automake requires that ChangeLog exist.
373   touch ChangeLog || return 1
374   # List of coreutils programs.  See heading comments in the invoked
375   # script for more info.  Keep this in sync with the rules in
376   (m4f=m4/cu-progs.m4 mkf=src/cu-progs.mk tmp=cu-progs.tmp \
377     && rm -f $m4f $mkf $tmp-1 $tmp-2 \
378     && build-aux/gen-lists-of-programs.sh --autoconf >$tmp-1 \
379     && build-aux/gen-lists-of-programs.sh --automake >$tmp-2 \
380     && chmod a-w $tmp-1 $tmp-2 \
381     && mv -f $tmp-1 $m4f && mv -f $tmp-2 $mkf)
383   # Regenerate src/single-binary.mk
384   (mkf=src/single-binary.mk tmp=single-binary.tmp \
385     && rm -f $mkf $tmp \
386     && build-aux/gen-single-binary.sh src/local.mk >$tmp \
387     && chmod a-w $tmp \
388     && mv -f $tmp $mkf)
390   # Copy tests/init.sh from Gnulib.
391   $gnulib_tool --copy-file tests/init.sh
395 bootstrap_epilogue()
397   # Since this is a "GNU" package, replace this line
398   #   if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null \
399   #      | grep -v 'libtool:' >/dev/null; then
400   # with this:
401   #   if true; then
402   # Why?  That pipeline searches all files in $(top_srcdir), and if you
403   # happen to have large files (or apparently large sparse files), the
404   # first grep may well run out of memory.
405   perl -pi -e 's/if LC_ALL=C grep .GNU .PACKAGE.*; then/if true; then/' \
406     po/Makefile.in.in
408   # Add dummy 'install-html' target, required for packages using
409   # non-recursive makefiles with older gettext.
410   # See https://debbugs.gnu.org/25690
411   if ! grep -w 'install-html' po/Makefile.in.in ; then
412     printf 'install-%s:;\n' dvi ps pdf html >> po/Makefile.in.in
413   fi
415   # Install our git hooks, as long as "cp" accepts the --backup option,
416   # so that we can back up any existing files.
417   case $(cp --help) in *--backup*) backup=1;; *) backup=0;; esac
418   if test $backup = 1; then
419     hooks=$(cd scripts/git-hooks && git ls-files)
420     for f in $hooks; do
421       # If it is identical, skip it.
422       cmp scripts/git-hooks/$f .git/hooks/$f > /dev/null \
423         && continue
424       cp --backup=numbered scripts/git-hooks/$f .git/hooks
425       chmod a-w .git/hooks/$f
426     done
427   fi