1 # Make coreutils programs. -*-Makefile-*-
2 # This is included by the top-level Makefile.am.
4 ## Copyright (C) 1990-2012 Free Software Foundation, Inc.
6 ## This program is free software: you can redistribute it and/or modify
7 ## it under the terms of the GNU General Public License as published by
8 ## the Free Software Foundation, either version 3 of the License, or
9 ## (at your option) any later version.
11 ## This program is distributed in the hope that it will be useful,
12 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 ## GNU General Public License for more details.
16 ## You should have received a copy of the GNU General Public License
17 ## along with this program. If not, see <http://www.gnu.org/licenses/>.
19 # FIXME: once lib/ and gnulib-tests/ are also converted, hoist to Makefile.am
20 AM_CFLAGS
= $(WERROR_CFLAGS
)
22 # The list of all programs (separated in different variables to express
23 # the how and when they should be installed) is defined in this makefile
24 # fragment, autogenerated by the 'gen-lists-of-programs.sh' auxiliary
26 include $(srcdir)/src
/cu-progs.mk
29 $(no_install__progs
) \
30 $(build_if_possible__progs
) \
33 # The user can tweak these lists at configure time.
34 bin_PROGRAMS
= @bin_PROGRAMS@
35 pkglibexec_PROGRAMS
= @pkglibexec_PROGRAMS@
37 # Needed by the testsuite.
49 src
/find-mount-point.h \
69 CLEANFILES
+= $(SCRIPTS
)
71 # Also remove these sometimes-built programs.
72 # For example, even when excluded, they're built via 'sc_check-AUTHORS'
74 CLEANFILES
+= $(no_install__progs
)
76 noinst_LIBRARIES
+= src
/libver.a
77 nodist_src_libver_a_SOURCES
= src
/version.c src
/version.h
79 # Tell the linker to omit references to unused shared libraries.
80 AM_LDFLAGS
= $(IGNORE_UNUSED_LIBRARIES_CFLAGS
)
82 # Extra libraries needed by more than one program. Will be updated later.
86 # Sometimes, the expansion of $(LIBINTL) includes -lc which may
87 # include modules defining variables like 'optind', so libcoreutils.a
88 # must precede $(LIBINTL) in order to ensure we use GNU getopt.
89 # But libcoreutils.a must also follow $(LIBINTL), since libintl uses
90 # replacement functions defined in libcoreutils.a.
91 LDADD
= src
/libver.a lib
/libcoreutils.a
$(LIBINTL
) lib
/libcoreutils.a
93 # First, list all programs, to make listing per-program libraries easier.
95 src_arch_LDADD
= $(LDADD
)
96 src_base64_LDADD
= $(LDADD
)
97 src_basename_LDADD
= $(LDADD
)
98 src_cat_LDADD
= $(LDADD
)
99 src_chcon_LDADD
= $(LDADD
)
100 src_chgrp_LDADD
= $(LDADD
)
101 src_chmod_LDADD
= $(LDADD
)
102 src_chown_LDADD
= $(LDADD
)
103 src_chroot_LDADD
= $(LDADD
)
104 src_cksum_LDADD
= $(LDADD
)
105 src_comm_LDADD
= $(LDADD
)
106 src_nproc_LDADD
= $(LDADD
)
107 src_cp_LDADD
= $(LDADD
)
108 src_csplit_LDADD
= $(LDADD
)
109 src_cut_LDADD
= $(LDADD
)
110 src_date_LDADD
= $(LDADD
)
111 src_dd_LDADD
= $(LDADD
)
112 src_df_LDADD
= $(LDADD
)
113 # See dir_LDADD below
114 src_dircolors_LDADD
= $(LDADD
)
115 src_dirname_LDADD
= $(LDADD
)
116 src_du_LDADD
= $(LDADD
)
117 src_echo_LDADD
= $(LDADD
)
118 src_env_LDADD
= $(LDADD
)
119 src_expand_LDADD
= $(LDADD
)
120 src_expr_LDADD
= $(LDADD
)
121 src_factor_LDADD
= $(LDADD
)
122 src_false_LDADD
= $(LDADD
)
123 src_fmt_LDADD
= $(LDADD
)
124 src_fold_LDADD
= $(LDADD
)
125 src_getlimits_LDADD
= $(LDADD
)
126 src_ginstall_LDADD
= $(LDADD
)
127 src_groups_LDADD
= $(LDADD
)
128 src_head_LDADD
= $(LDADD
)
129 src_hostid_LDADD
= $(LDADD
)
130 src_hostname_LDADD
= $(LDADD
)
131 src_id_LDADD
= $(LDADD
)
132 src_join_LDADD
= $(LDADD
)
133 src_kill_LDADD
= $(LDADD
)
134 src_link_LDADD
= $(LDADD
)
135 src_ln_LDADD
= $(LDADD
)
136 src_logname_LDADD
= $(LDADD
)
137 src_ls_LDADD
= $(LDADD
)
139 # This must *not* depend on anything in lib/, since it is used to generate
140 # src/primes.h. If it depended on libcoreutils.a, that would pull all lib/*.c
141 # into BUILT_SOURCES.
142 src_make_prime_list_LDADD
=
144 src_md5sum_LDADD
= $(LDADD
)
145 src_mkdir_LDADD
= $(LDADD
)
146 src_mkfifo_LDADD
= $(LDADD
)
147 src_mknod_LDADD
= $(LDADD
)
148 src_mktemp_LDADD
= $(LDADD
)
149 src_mv_LDADD
= $(LDADD
)
150 src_nice_LDADD
= $(LDADD
)
151 src_nl_LDADD
= $(LDADD
)
152 src_nohup_LDADD
= $(LDADD
)
153 src_od_LDADD
= $(LDADD
)
154 src_paste_LDADD
= $(LDADD
)
155 src_pathchk_LDADD
= $(LDADD
)
156 src_pinky_LDADD
= $(LDADD
)
157 src_pr_LDADD
= $(LDADD
)
158 src_printenv_LDADD
= $(LDADD
)
159 src_printf_LDADD
= $(LDADD
)
160 src_ptx_LDADD
= $(LDADD
)
161 src_pwd_LDADD
= $(LDADD
)
162 src_readlink_LDADD
= $(LDADD
)
163 src_realpath_LDADD
= $(LDADD
)
164 src_rm_LDADD
= $(LDADD
)
165 src_rmdir_LDADD
= $(LDADD
)
166 src_runcon_LDADD
= $(LDADD
)
167 src_seq_LDADD
= $(LDADD
)
168 src_setuidgid_LDADD
= $(LDADD
)
169 src_sha1sum_LDADD
= $(LDADD
)
170 src_sha224sum_LDADD
= $(LDADD
)
171 src_sha256sum_LDADD
= $(LDADD
)
172 src_sha384sum_LDADD
= $(LDADD
)
173 src_sha512sum_LDADD
= $(LDADD
)
174 src_shred_LDADD
= $(LDADD
)
175 src_shuf_LDADD
= $(LDADD
)
176 src_sleep_LDADD
= $(LDADD
)
177 src_sort_LDADD
= $(LDADD
)
178 src_split_LDADD
= $(LDADD
)
179 src_stat_LDADD
= $(LDADD
)
180 src_stdbuf_LDADD
= $(LDADD
)
181 src_stty_LDADD
= $(LDADD
)
182 src_sum_LDADD
= $(LDADD
)
183 src_sync_LDADD
= $(LDADD
)
184 src_tac_LDADD
= $(LDADD
)
185 src_tail_LDADD
= $(LDADD
)
186 src_tee_LDADD
= $(LDADD
)
187 src_test_LDADD
= $(LDADD
)
188 src_timeout_LDADD
= $(LDADD
)
189 src_touch_LDADD
= $(LDADD
)
190 src_tr_LDADD
= $(LDADD
)
191 src_true_LDADD
= $(LDADD
)
192 src_truncate_LDADD
= $(LDADD
)
193 src_tsort_LDADD
= $(LDADD
)
194 src_tty_LDADD
= $(LDADD
)
195 src_uname_LDADD
= $(LDADD
)
196 src_unexpand_LDADD
= $(LDADD
)
197 src_uniq_LDADD
= $(LDADD
)
198 src_unlink_LDADD
= $(LDADD
)
199 src_uptime_LDADD
= $(LDADD
)
200 src_users_LDADD
= $(LDADD
)
201 # See vdir_LDADD below
202 src_wc_LDADD
= $(LDADD
)
203 src_who_LDADD
= $(LDADD
)
204 src_whoami_LDADD
= $(LDADD
)
205 src_yes_LDADD
= $(LDADD
)
207 # Synonyms. Recall that Automake transliterates '[' and '/' to '_'.
208 src___LDADD
= $(src_test_LDADD
)
209 src_dir_LDADD
= $(src_ls_LDADD
)
210 src_vdir_LDADD
= $(src_ls_LDADD
)
212 src_cp_LDADD
+= $(copy_ldadd
)
213 src_ginstall_LDADD
+= $(copy_ldadd
)
214 src_mv_LDADD
+= $(copy_ldadd
)
216 src_mv_LDADD
+= $(remove_ldadd
)
217 src_rm_LDADD
+= $(remove_ldadd
)
219 # for eaccess, euidaccess
220 copy_ldadd
+= $(LIB_EACCESS
)
221 remove_ldadd
+= $(LIB_EACCESS
)
222 src_sort_LDADD
+= $(LIB_EACCESS
)
223 src_test_LDADD
+= $(LIB_EACCESS
)
226 copy_ldadd
+= $(LIB_SELINUX
)
227 src_chcon_LDADD
+= $(LIB_SELINUX
)
228 src_ginstall_LDADD
+= $(LIB_SELINUX
)
229 src_id_LDADD
+= $(LIB_SELINUX
)
230 src_ls_LDADD
+= $(LIB_SELINUX
)
231 src_mkdir_LDADD
+= $(LIB_SELINUX
)
232 src_mkfifo_LDADD
+= $(LIB_SELINUX
)
233 src_mknod_LDADD
+= $(LIB_SELINUX
)
234 src_runcon_LDADD
+= $(LIB_SELINUX
)
235 src_stat_LDADD
+= $(LIB_SELINUX
)
237 # for gettime, settime, utimecmp, utimens
238 copy_ldadd
+= $(LIB_CLOCK_GETTIME
)
239 src_date_LDADD
+= $(LIB_CLOCK_GETTIME
)
240 src_ginstall_LDADD
+= $(LIB_CLOCK_GETTIME
)
241 src_ls_LDADD
+= $(LIB_CLOCK_GETTIME
)
242 src_pr_LDADD
+= $(LIB_CLOCK_GETTIME
)
243 src_timeout_LDADD
+= $(LIB_TIMER_TIME
)
244 src_touch_LDADD
+= $(LIB_CLOCK_GETTIME
)
247 src_dd_LDADD
+= $(LIB_GETHRXTIME
)
250 src_ls_LDADD
+= $(LIB_CAP
)
253 src_dd_LDADD
+= $(LIB_FDATASYNC
)
254 src_shred_LDADD
+= $(LIB_FDATASYNC
)
257 src_sleep_LDADD
+= $(LIB_NANOSLEEP
)
258 src_sort_LDADD
+= $(LIB_NANOSLEEP
)
259 src_tail_LDADD
+= $(LIB_NANOSLEEP
)
261 # for various GMP functions
262 src_expr_LDADD
+= $(LIB_GMP
)
263 src_factor_LDADD
+= $(LIB_GMP
)
266 src_uptime_LDADD
+= $(GETLOADAVG_LIBS
)
268 # for various ACL functions
269 copy_ldadd
+= $(LIB_ACL
)
270 src_ls_LDADD
+= $(LIB_ACL
)
272 # for various xattr functions
273 copy_ldadd
+= $(LIB_XATTR
)
275 # for print_unicode_char, proper_name_utf8
276 src_cat_LDADD
+= $(LIBICONV
)
277 src_cp_LDADD
+= $(LIBICONV
)
278 src_df_LDADD
+= $(LIBICONV
)
279 src_du_LDADD
+= $(LIBICONV
)
280 src_getlimits_LDADD
+= $(LIBICONV
)
281 src_printf_LDADD
+= $(LIBICONV
)
282 src_ptx_LDADD
+= $(LIBICONV
)
283 src_realpath_LDADD
+= $(LIBICONV
)
284 src_split_LDADD
+= $(LIBICONV
)
285 src_stdbuf_LDADD
+= $(LIBICONV
)
286 src_timeout_LDADD
+= $(LIBICONV
)
287 src_truncate_LDADD
+= $(LIBICONV
)
290 src_pinky_LDADD
+= $(GETADDRINFO_LIB
)
291 src_who_LDADD
+= $(GETADDRINFO_LIB
)
293 # for gethostname, uname
294 src_hostname_LDADD
+= $(GETHOSTNAME_LIB
)
295 src_uname_LDADD
+= $(GETHOSTNAME_LIB
)
298 src_kill_LDADD
+= $(LIBTHREAD
)
301 src_sort_LDADD
+= $(LIB_PTHREAD
)
303 # Get the release year from lib/version-etc.c.
305 `sed -n '/.*COPYRIGHT_YEAR = \([0-9][0-9][0-9][0-9]\) };/s//\1/p' \
306 $(top_srcdir)/lib/version-etc.c`
314 # Use 'ginstall' in the definition of PROGRAMS and in dependencies to avoid
315 # confusion with the 'install' target. The install rule transforms 'ginstall'
316 # to install before applying any user-specified name transformations.
318 transform
= s
/ginstall
/install/; $(program_transform_name
)
319 src_ginstall_SOURCES
= src
/install.c src
/prog-fprintf.c
$(copy_sources
)
321 # This is for the '[' program. Automake transliterates '[' and '/' to '_'.
322 src___SOURCES
= src
/lbracket.c
324 src_cp_SOURCES
= src
/cp.c
$(copy_sources
)
325 src_dir_SOURCES
= src
/ls.c src
/ls-dir.c
326 src_vdir_SOURCES
= src
/ls.c src
/ls-vdir.c
327 src_id_SOURCES
= src
/id.c src
/group-list.c
328 src_groups_SOURCES
= src
/groups.c src
/group-list.c
329 src_ls_SOURCES
= src
/ls.c src
/ls-ls.c
330 src_ln_SOURCES
= src
/ln.c src
/relpath.c src
/relpath.h
331 src_chown_SOURCES
= src
/chown.c src
/chown-core.c
332 src_chgrp_SOURCES
= src
/chgrp.c src
/chown-core.c
333 src_kill_SOURCES
= src
/kill.c src
/operand2sig.c
334 src_realpath_SOURCES
= src
/realpath.c src
/relpath.c src
/relpath.h
335 src_timeout_SOURCES
= src
/timeout.c src
/operand2sig.c
337 src_mv_SOURCES
= src
/mv.c src
/remove.c
$(copy_sources
)
338 src_rm_SOURCES
= src
/rm.c src
/remove.c
340 src_mkdir_SOURCES
= src
/mkdir.c src
/prog-fprintf.c
341 src_rmdir_SOURCES
= src
/rmdir.c src
/prog-fprintf.c
343 src_df_SOURCES
= src
/df.c src
/find-mount-point.c
344 src_stat_SOURCES
= src
/stat.c src
/find-mount-point.c
346 src_uname_SOURCES
= src
/uname.c src
/uname-uname.c
347 src_arch_SOURCES
= src
/uname.c src
/uname-arch.c
349 src_md5sum_CPPFLAGS
= -DHASH_ALGO_MD5
=1 $(AM_CPPFLAGS
)
350 src_sha1sum_SOURCES
= src
/md5sum.c
351 src_sha1sum_CPPFLAGS
= -DHASH_ALGO_SHA1
=1 $(AM_CPPFLAGS
)
352 src_sha224sum_SOURCES
= src
/md5sum.c
353 src_sha224sum_CPPFLAGS
= -DHASH_ALGO_SHA224
=1 $(AM_CPPFLAGS
)
354 src_sha256sum_SOURCES
= src
/md5sum.c
355 src_sha256sum_CPPFLAGS
= -DHASH_ALGO_SHA256
=1 $(AM_CPPFLAGS
)
356 src_sha384sum_SOURCES
= src
/md5sum.c
357 src_sha384sum_CPPFLAGS
= -DHASH_ALGO_SHA384
=1 $(AM_CPPFLAGS
)
358 src_sha512sum_SOURCES
= src
/md5sum.c
359 src_sha512sum_CPPFLAGS
= -DHASH_ALGO_SHA512
=1 $(AM_CPPFLAGS
)
361 src_ginstall_CPPFLAGS
= -DENABLE_MATCHPATHCON
=1 $(AM_CPPFLAGS
)
363 # Ensure we don't link against libcoreutils.a as that lib is
364 # not compiled with -fPIC which causes issues on 64 bit at least
365 src_libstdbuf_so_LDADD
=
367 # Note libstdbuf is only compiled if GCC is available
368 # (as per the check in configure.ac), so these flags should be available.
369 # libtool is probably required to relax this dependency.
370 src_libstdbuf_so_LDFLAGS
= -shared
371 src_libstdbuf_so_CFLAGS
= -fPIC
$(AM_CFLAGS
)
373 BUILT_SOURCES
+= src
/dircolors.h
374 src
/dircolors.h
: src
/dcgen src
/dircolors.hin
375 $(AM_V_GEN
)rm -f
$@
$@
-t
376 $(AM_V_at
)$(PERL
) -w
-- $(srcdir)/src
/dcgen \
377 $(srcdir)/src
/dircolors.hin
> $@
-t
378 $(AM_V_at
)chmod a-w
$@
-t
381 BUILT_SOURCES
+= src
/primes.h
382 CLEANFILES
+= src
/primes.h
383 src
/primes.h
: src
/make-prime-list
384 $(AM_V_GEN
)rm -f
$@
$@
-t
385 $(AM_V_at
)src
/make-prime-list
5000 > $@
-t
386 $(AM_V_at
)chmod a-w
$@
-t
389 # false exits nonzero even with --help or --version.
390 # test doesn't support --help or --version.
391 # Tell automake to exempt then from that installcheck test.
392 AM_INSTALLCHECK_STD_OPTIONS_EXEMPT
= src
/false src
/test
394 # Compare fs.h with the list of file system names/magic-numbers in the
395 # Linux statfs man page. This target prints any new name/number pairs.
396 # Also compare against /usr/include/linux/magic.h
397 .PHONY
: src
/fs-magic-compare
398 src
/fs-magic-compare
: src
/fs-magic src
/fs-kernel-magic src
/fs-def
399 join -v1
-t@ src
/fs-magic src
/fs-def
400 join -v1
-t@ src
/fs-kernel-magic src
/fs-def
402 CLEANFILES
+= src
/fs-def
404 grep
'^# *define ' src
/fs.h |
$(ASSORT
) > $@
-t
&& mv
$@
-t
$@
406 # Massage bits of the statfs man page and definitions from
407 # /usr/include/linux/magic.h to be in a form consistent with what's in fs.h.
408 fs_normalize_perl_subst
= \
409 -e
's/MINIX_SUPER_MAGIC\b/MINIX/;' \
410 -e
's/MINIX_SUPER_MAGIC2\b/MINIX_30/;' \
411 -e
's/MINIX2_SUPER_MAGIC\b/MINIX_V2/;' \
412 -e
's/MINIX2_SUPER_MAGIC2\b/MINIX_V2_30/;' \
413 -e
's/MINIX3_SUPER_MAGIC\b/MINIX_V3/;' \
414 -e
's/CIFS_MAGIC_NUMBER/CIFS/;' \
415 -e
's/(_SUPER)?_MAGIC//;' \
416 -e
's/\s+0x(\S+)/" 0x" . uc $$1/e;' \
417 -e
's/(\s+0x)(\X{3})\b/$${1}0$$2/;' \
418 -e
's/(\s+0x)(\X{6})\b/$${1}00$$2/;' \
419 -e
's/(\s+0x)(\X{7})\b/$${1}0$$2/;' \
421 -e
's/^\043define\s+//;' \
422 -e
's/^_(XIAFS)/$$1/;' \
423 -e
's/^USBDEVICE/USBDEVFS/;' \
424 -e
's/NTFS_SB/NTFS/;' \
425 -e
's/^/\043 define S_MAGIC_/;' \
426 -e
's,\s*/\* .*? \*/,,;'
428 CLEANFILES
+= src
/fs-magic
429 src
/fs-magic
: Makefile
431 |perl
-ne
'/File system types:/.../Nobody kno/ and print' \
433 $(fs_normalize_perl_subst
) \
434 | grep
-Ev
'S_MAGIC_EXT[34]|STACK_END' \
438 CLEANFILES
+= src
/fs-kernel-magic
439 src
/fs-kernel-magic
: Makefile
440 perl
-ne
'/^#define.*0x/ and print' /usr
/include/linux
/magic.h \
442 $(fs_normalize_perl_subst
) \
443 | grep
-Ev
'S_MAGIC_EXT[34]|STACK_END' \
447 BUILT_SOURCES
+= src
/fs-is-local.h
448 src
/fs-is-local.h
: src
/stat.c src
/extract-magic
450 $(AM_V_at
)$(PERL
) $(srcdir)/src
/extract-magic \
451 --local
$(srcdir)/src
/stat.c
> $@t
452 $(AM_V_at
)chmod a-w
$@t
455 BUILT_SOURCES
+= src
/fs.h
456 src
/fs.h
: src
/stat.c src
/extract-magic
458 $(AM_V_at
)$(PERL
) $(srcdir)/src
/extract-magic \
459 $(srcdir)/src
/stat.c
> $@t
460 $(AM_V_at
)chmod a-w
$@t
463 BUILT_SOURCES
+= src
/version.c
464 src
/version.c
: Makefile
466 $(AM_V_at
)printf
'#include <config.h>\n' > $@t
467 $(AM_V_at
)printf
'char const *Version = "$(PACKAGE_VERSION)";\n' >> $@t
468 $(AM_V_at
)chmod a-w
$@t
471 BUILT_SOURCES
+= src
/version.h
472 src
/version.h
: Makefile
474 $(AM_V_at
)printf
'extern char const *Version;\n' > $@t
475 $(AM_V_at
)chmod a-w
$@t
478 DISTCLEANFILES
+= src
/version.c src
/version.h
479 MAINTAINERCLEANFILES
+= $(BUILT_SOURCES
)
488 # Ensure that the list of programs in README matches the list
489 # of programs we can build.
490 check-local
: check-README check-duplicate-no-install
493 $(AM_V_GEN
)rm -rf
$(pr
) $(pm
)
494 $(AM_V_at
)echo
$(all_programs
) \
496 | sed
-e
's,$(EXEEXT)$$,,' \
498 -e
's/^ginstall$$/install/' \
500 |
$(ASSORT
) -u
> $(pm
) && \
501 sed
-n
'/^The programs .* are:/,/^[a-zA-Z]/p' $(top_srcdir
)/README \
502 | sed
-n
'/^ */s///p' | tr
-s
' ' '\n' > $(pr
)
503 $(AM_V_at
)diff
$(pm
) $(pr
) && rm -rf
$(pr
) $(pm
)
505 # Ensure that a by-default-not-installed program (listed in
506 # $(no_install__progs) is not also listed as another $(EXTRA_PROGRAMS)
507 # entry, because if that were to happen, it *would* be installed
509 .PHONY
: check-duplicate-no-install
510 check-duplicate-no-install
: src
/tr
511 $(AM_V_GEN
)test -z
"`echo '$(EXTRA_PROGRAMS)' | tr ' ' '\n' | uniq -d`"
513 # Use the just-built 'ginstall', when not cross-compiling.
515 cu_install_program
= @INSTALL_PROGRAM@
517 cu_install_program
= src
/ginstall
519 INSTALL_PROGRAM
= $(cu_install_program
)