# replacement functions defined in libcoreutils.a.
LDADD = libver.a ../lib/libcoreutils.a $(LIBINTL) ../lib/libcoreutils.a
+# First, list all programs, to make listing per-program libraries easier.
+# See [ below.
+arch_LDADD = $(LDADD)
+base64_LDADD = $(LDADD)
+basename_LDADD = $(LDADD)
cat_LDADD = $(LDADD)
+chcon_LDADD = $(LDADD)
+chgrp_LDADD = $(LDADD)
+chmod_LDADD = $(LDADD)
+chown_LDADD = $(LDADD)
+chroot_LDADD = $(LDADD)
+cksum_LDADD = $(LDADD)
+comm_LDADD = $(LDADD)
+cp_LDADD = $(LDADD)
+csplit_LDADD = $(LDADD)
+cut_LDADD = $(LDADD)
+date_LDADD = $(LDADD)
+dd_LDADD = $(LDADD)
df_LDADD = $(LDADD)
+# See dir_LDADD below
+dircolors_LDADD = $(LDADD)
+dirname_LDADD = $(LDADD)
du_LDADD = $(LDADD)
+echo_LDADD = $(LDADD)
+env_LDADD = $(LDADD)
+expand_LDADD = $(LDADD)
+expr_LDADD = $(LDADD)
+factor_LDADD = $(LDADD)
+false_LDADD = $(LDADD)
+fmt_LDADD = $(LDADD)
+fold_LDADD = $(LDADD)
getlimits_LDADD = $(LDADD)
+ginstall_LDADD = $(LDADD)
+groups_LDADD = $(LDADD)
+head_LDADD = $(LDADD)
+hostid_LDADD = $(LDADD)
+hostname_LDADD = $(LDADD)
+id_LDADD = $(LDADD)
+join_LDADD = $(LDADD)
+kill_LDADD = $(LDADD)
+link_LDADD = $(LDADD)
+ln_LDADD = $(LDADD)
+logname_LDADD = $(LDADD)
+ls_LDADD = $(LDADD)
+md5sum_LDADD = $(LDADD)
+mkdir_LDADD = $(LDADD)
+mkfifo_LDADD = $(LDADD)
+mknod_LDADD = $(LDADD)
+mktemp_LDADD = $(LDADD)
+mv_LDADD = $(LDADD)
+nice_LDADD = $(LDADD)
+nl_LDADD = $(LDADD)
+nohup_LDADD = $(LDADD)
+od_LDADD = $(LDADD)
+paste_LDADD = $(LDADD)
+pathchk_LDADD = $(LDADD)
+pinky_LDADD = $(LDADD)
+pr_LDADD = $(LDADD)
+printenv_LDADD = $(LDADD)
+printf_LDADD = $(LDADD)
ptx_LDADD = $(LDADD)
+pwd_LDADD = $(LDADD)
+readlink_LDADD = $(LDADD)
+rm_LDADD = $(LDADD)
+rmdir_LDADD = $(LDADD)
+runcon_LDADD = $(LDADD)
+seq_LDADD = $(LDADD)
+setuidgid_LDADD = $(LDADD)
+sha1sum_LDADD = $(LDADD)
+sha224sum_LDADD = $(LDADD)
+sha256sum_LDADD = $(LDADD)
+sha384sum_LDADD = $(LDADD)
+sha512sum_LDADD = $(LDADD)
+shred_LDADD = $(LDADD)
+shuf_LDADD = $(LDADD)
+sleep_LDADD = $(LDADD)
+sort_LDADD = $(LDADD)
split_LDADD = $(LDADD)
-stdbuf_LDADD = $(LDADD)
+stat_LDADD = $(LDADD)
+stty_LDADD = $(LDADD)
+su_LDADD = $(LDADD)
+sum_LDADD = $(LDADD)
+sync_LDADD = $(LDADD)
+tac_LDADD = $(LDADD)
+tail_LDADD = $(LDADD)
+tee_LDADD = $(LDADD)
+test_LDADD = $(LDADD)
timeout_LDADD = $(LDADD)
+touch_LDADD = $(LDADD)
+tr_LDADD = $(LDADD)
+true_LDADD = $(LDADD)
truncate_LDADD = $(LDADD)
-
-# for eaccess in lib/euidaccess.c.
-chcon_LDADD = $(LDADD) $(LIB_SELINUX)
-cp_LDADD = $(LDADD) $(LIB_EACCESS) $(LIB_SELINUX)
-ginstall_LDADD = $(LDADD) $(LIB_EACCESS) $(LIB_SELINUX)
-mkdir_LDADD = $(LDADD) $(LIB_SELINUX)
-mkfifo_LDADD = $(LDADD) $(LIB_SELINUX)
-mknod_LDADD = $(LDADD) $(LIB_SELINUX)
-mv_LDADD = $(LDADD) $(LIB_EACCESS) $(LIB_SELINUX)
-runcon_LDADD = $(LDADD) $(LIB_SELINUX)
-pathchk_LDADD = $(LDADD) $(LIB_EACCESS)
-rm_LDADD = $(LDADD) $(LIB_EACCESS)
-test_LDADD = $(LDADD) $(LIB_EACCESS)
-# This is for the '[' program. Automake transliterates '[' to '_'.
-__LDADD = $(LDADD) $(LIB_EACCESS)
-
-# for clock_gettime and fdatasync
-dd_LDADD = $(LDADD) $(LIB_GETHRXTIME) $(LIB_FDATASYNC)
-dir_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_SELINUX) $(LIB_CAP)
-id_LDADD = $(LDADD) $(LIB_SELINUX)
-ls_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_SELINUX) $(LIB_CAP)
-mktemp_LDADD = $(LDADD) $(LIB_GETHRXTIME)
-pr_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
-shred_LDADD = $(LDADD) $(LIB_GETHRXTIME) $(LIB_FDATASYNC)
-shuf_LDADD = $(LDADD) $(LIB_GETHRXTIME)
-tac_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
-vdir_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_SELINUX) $(LIB_CAP)
-
-## If necessary, add -lm to resolve use of pow in lib/strtod.c.
-sort_LDADD = $(LDADD) $(POW_LIB) $(LIB_GETHRXTIME)
-
-# for get_date and gettime
-date_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
-touch_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
-
-# If necessary, add -lm to resolve use of pow in lib/strtod.c.
-# If necessary, add -liconv to resolve use of iconv in lib/unicodeio.c.
-printf_LDADD = $(LDADD) $(POW_LIB) $(LIBICONV)
-
-# If necessary, add -lm to resolve use of pow in lib/strtod.c.
-seq_LDADD = $(LDADD) $(POW_LIB)
-
-# If necessary, add libraries to resolve the `pow' reference in lib/strtod.c
-# and the `nanosleep' reference in lib/xnanosleep.c.
-nanosec_libs = $(LDADD) $(POW_LIB) $(LIB_NANOSLEEP)
+tsort_LDADD = $(LDADD)
+tty_LDADD = $(LDADD)
+uname_LDADD = $(LDADD)
+unexpand_LDADD = $(LDADD)
+uniq_LDADD = $(LDADD)
+unlink_LDADD = $(LDADD)
+uptime_LDADD = $(LDADD)
+users_LDADD = $(LDADD)
+# See vdir_LDADD below
+wc_LDADD = $(LDADD)
+who_LDADD = $(LDADD)
+whoami_LDADD = $(LDADD)
+yes_LDADD = $(LDADD)
+
+# Synonyms. Recall that Automake transliterates '[' to '_'.
+__LDADD = $(test_LDADD)
+dir_LDADD = $(ls_LDADD)
+vdir_LDADD = $(ls_LDADD)
+
+# Shared files
+copy_LDADD =
+cp_LDADD += $(copy_LDADD)
+ginstall_LDADD += $(copy_LDADD)
+mv_LDADD += $(copy_LDADD)
+
+remove_LDADD =
+mv_LDADD += $(remove_LDADD)
+rm_LDADD += $(remove_LDADD)
+
+# for eaccess, euidaccess
+copy_LDADD += $(LIB_EACCESS)
+remove_LDADD += $(LIB_EACCESS)
+test_LDADD += $(LIB_EACCESS)
+
+# for selinux use
+chcon_LDADD += $(LIB_SELINUX)
+copy_LDADD += $(LIB_SELINUX)
+ginstall_LDADD += $(LIB_SELINUX)
+id_LDADD += $(LIB_SELINUX)
+ls_LDADD += $(LIB_SELINUX)
+mkdir_LDADD += $(LIB_SELINUX)
+mkfifo_LDADD += $(LIB_SELINUX)
+mknod_LDADD += $(LIB_SELINUX)
+runcon_LDADD += $(LIB_SELINUX)
+stat_LDADD += $(LIB_SELINUX)
+
+# for gettime, settime, utimecmp, utimens
+copy_LDADD += $(LIB_CLOCK_GETTIME)
+date_LDADD += $(LIB_CLOCK_GETTIME)
+ginstall_LDADD += $(LIB_CLOCK_GETTIME)
+ls_LDADD += $(LIB_CLOCK_GETTIME)
+pr_LDADD += $(LIB_CLOCK_GETTIME)
+touch_LDADD += $(LIB_CLOCK_GETTIME)
+
+# for gethrxtime, randint, randread, gen_tempname
+dd_LDADD += $(LIB_GETHRXTIME)
+mktemp_LDADD += $(LIB_GETHRXTIME)
+shred_LDADD += $(LIB_GETHRXTIME)
+shuf_LDADD += $(LIB_GETHRXTIME)
+sort_LDADD += $(LIB_GETHRXTIME)
+
+# for cap_get_file
+ls_LDADD += $(LIB_CAP)
+
+# for fdatasync
+dd_LDADD += $(LIB_FDATASYNC)
+shred_LDADD += $(LIB_FDATASYNC)
+
+# for strtod, strtold
+printf_LDADD += $(POW_LIB)
+seq_LDADD += $(POW_LIB)
+sleep_LDADD += $(POW_LIB)
+sort_LDADD += $(POW_LIB)
+tail_LDADD += $(POW_LIB)
+uptime_LDADD += $(POW_LIB)
+
+# for xnanosleep
+sleep_LDADD += $(LIB_NANOSLEEP)
+tail_LDADD += $(LIB_NANOSLEEP)
# for various GMP functions
-expr_LDADD = $(LDADD) $(LIB_GMP)
-
-# for various GMP functions
-factor_LDADD = $(LDADD) $(LIB_GMP)
-
-sleep_LDADD = $(nanosec_libs)
-tail_LDADD = $(nanosec_libs)
+expr_LDADD += $(LIB_GMP)
+factor_LDADD += $(LIB_GMP)
-# If necessary, add -lm to resolve use of pow in lib/strtod.c.
-uptime_LDADD = $(LDADD) $(POW_LIB) $(GETLOADAVG_LIBS)
+# for getloadavg
+uptime_LDADD += $(GETLOADAVG_LIBS)
-su_LDADD = $(LDADD) $(LIB_CRYPT)
+# for crypt
+su_LDADD += $(LIB_CRYPT)
+# for various ACL functions
+copy_LDADD += $(LIB_ACL)
dir_LDADD += $(LIB_ACL)
-ls_LDADD += $(LIB_ACL)
-vdir_LDADD += $(LIB_ACL)
-cp_LDADD += $(LIB_ACL) $(LIB_XATTR)
-mv_LDADD += $(LIB_ACL) $(LIB_XATTR)
-ginstall_LDADD += $(LIB_ACL) $(LIB_XATTR)
-stat_LDADD = $(LDADD) $(LIB_SELINUX)
+# for various xattr functions
+copy_LDADD += $(LIB_XATTR)
-# Append $(LIBICONV) to each program that uses proper_name_utf8.
+# for print_unicode_char, proper_name_utf8
cat_LDADD += $(LIBICONV)
cp_LDADD += $(LIBICONV)
df_LDADD += $(LIBICONV)
du_LDADD += $(LIBICONV)
getlimits_LDADD += $(LIBICONV)
+printf_LDADD += $(LIBICONV)
ptx_LDADD += $(LIBICONV)
split_LDADD += $(LIBICONV)
stdbuf_LDADD += $(LIBICONV)
timeout_LDADD += $(LIBICONV)
truncate_LDADD += $(LIBICONV)
-# programs that use getaddrinfo (e.g., via canon_host)
-pinky_LDADD = $(LDADD) $(GETADDRINFO_LIB)
-who_LDADD = $(LDADD) $(GETADDRINFO_LIB)
+# for canon_host
+pinky_LDADD += $(GETADDRINFO_LIB)
+who_LDADD += $(GETADDRINFO_LIB)
$(PROGRAMS): ../lib/libcoreutils.a