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