summaryrefslogtreecommitdiff
path: root/src/Makefile.am
diff options
context:
space:
mode:
Diffstat (limited to 'src/Makefile.am')
-rw-r--r--src/Makefile.am365
1 files changed, 365 insertions, 0 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..863a32b
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,365 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-
+
+## Copyright (C) 1990, 1991, 1993-2007 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software Foundation,
+## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+EXTRA_PROGRAMS = chroot df hostid nice pinky stty su uname uptime users who
+
+bin_SCRIPTS = groups
+bin_PROGRAMS = [ chgrp chown chmod cp dd dircolors du \
+ ginstall link ln dir vdir ls mkdir \
+ mkfifo mknod mv nohup readlink rm rmdir shred stat sync touch unlink \
+ cat cksum comm csplit cut expand fmt fold head join md5sum \
+ nl od paste pr ptx sha1sum sha224sum sha256sum sha384sum sha512sum \
+ shuf sort split sum tac tail tr tsort unexpand uniq wc \
+ basename date dirname echo env expr factor false \
+ hostname id kill logname pathchk printenv printf pwd seq sleep tee \
+ test true tty whoami yes \
+ base64 \
+ $(OPTIONAL_BIN_PROGS) $(DF_PROG)
+
+noinst_PROGRAMS = setuidgid
+
+noinst_HEADERS = \
+ chown-core.h \
+ copy.h \
+ cp-hash.h \
+ dircolors.h \
+ fs.h \
+ ls.h \
+ remove.h \
+ system.h \
+ wheel-size.h \
+ wheel.h
+
+EXTRA_DIST = dcgen dircolors.hin tac-pipe.c \
+ groups.sh wheel-gen.pl extract-magic c99-to-c89.diff
+BUILT_SOURCES =
+CLEANFILES = $(SCRIPTS) su
+
+AM_CPPFLAGS = -I$(top_srcdir)/lib
+
+# Sometimes, the expansion of $(LIBINTL) includes -lc which may
+# include modules defining variables like `optind', so libcoreutils.a
+# must precede $(LIBINTL) in order to ensure we use GNU getopt.
+# But libcoreutils.a must also follow $(LIBINTL), since libintl uses
+# replacement functions defined in libcoreutils.a.
+LDADD = ../lib/libcoreutils.a $(LIBINTL) ../lib/libcoreutils.a
+
+# for eaccess in lib/euidaccess.c.
+cp_LDADD = $(LDADD) $(LIB_EACCESS)
+ginstall_LDADD = $(LDADD) $(LIB_EACCESS)
+mv_LDADD = $(LDADD) $(LIB_EACCESS)
+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)
+ls_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+pr_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+shred_LDADD = $(LDADD) $(LIB_GETHRXTIME) $(LIB_FDATASYNC)
+shuf_LDADD = $(LDADD) $(LIB_GETHRXTIME)
+vdir_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+
+## 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)
+
+sleep_LDADD = $(nanosec_libs)
+tail_LDADD = $(nanosec_libs)
+
+# If necessary, add -lm to resolve use of pow in lib/strtod.c.
+uptime_LDADD = $(LDADD) $(POW_LIB) $(GETLOADAVG_LIBS)
+
+su_LDADD = $(LDADD) $(LIB_CRYPT)
+
+dir_LDADD += $(LIB_ACL_TRIVIAL) $(LIB_ACL)
+ls_LDADD += $(LIB_ACL_TRIVIAL) $(LIB_ACL)
+vdir_LDADD += $(LIB_ACL_TRIVIAL) $(LIB_ACL)
+cp_LDADD += $(LIB_ACL)
+mv_LDADD += $(LIB_ACL)
+ginstall_LDADD += $(LIB_ACL)
+
+$(PROGRAMS): ../lib/libcoreutils.a
+
+SUFFIXES = .sh
+
+# Get the release year from ../lib/version-etc.c.
+RELEASE_YEAR = \
+ `sed -n '/.*COPYRIGHT_YEAR = \([0-9][0-9][0-9][0-9]\) };/s//\1/p' \
+ $(top_srcdir)/lib/version-etc.c`
+
+.sh:
+ rm -f $@ $@-t
+ sed \
+ -e 's!@''bindir''@!$(bindir)!' \
+ -e 's/@''RELEASE_YEAR'@/$(RELEASE_YEAR)/ \
+ -e 's/@''GNU_PACKAGE''@/$(GNU_PACKAGE)/' \
+ -e 's/@''PACKAGE_BUGREPORT''@/$(PACKAGE_BUGREPORT)/' \
+ -e 's/@''VERSION''@/$(VERSION)/' $< > $@-t
+ chmod +x $@-t
+ mv $@-t $@
+
+all-local: su$(EXEEXT)
+
+installed_su = $(DESTDIR)$(bindir)/`echo su|sed '$(transform)'`
+
+setuid_root_mode = a=rx,u+s
+
+INSTALL_SU = \
+ p=su; \
+ echo " $(INSTALL_PROGRAM) $$p $(installed_su)"; \
+ $(INSTALL_PROGRAM) $$p $(installed_su); \
+ echo " chown root $(installed_su)"; \
+ chown root $(installed_su); \
+ echo " chmod $(setuid_root_mode) $(installed_su)"; \
+ chmod $(setuid_root_mode) $(installed_su)
+
+install-root: su$(EXEEXT)
+ @$(INSTALL_SU)
+
+install-exec-local: su$(EXEEXT)
+ @TMPFILE=$(DESTDIR)$(bindir)/.su-$$$$; \
+ rm -f $$TMPFILE; \
+ echo > $$TMPFILE; \
+## See if we can create a setuid root executable in $(bindir).
+## If not, then don't even try to install su.
+ can_create_suid_root_executable=no; \
+ chown root $$TMPFILE > /dev/null 2>&1 \
+ && chmod $(setuid_root_mode) $$TMPFILE > /dev/null 2>&1 \
+ && can_create_suid_root_executable=yes; \
+ rm -f $$TMPFILE; \
+ if test $$can_create_suid_root_executable = yes; then \
+ $(INSTALL_SU); \
+ else \
+ echo "WARNING: insufficient access; not installing su"; \
+ echo "NOTE: to install su, run 'make install-root' as root"; \
+ fi
+
+uninstall-local:
+# Remove su only if it's one we installed.
+ @if grep '$(GNU_PACKAGE)' $(installed_su) > /dev/null 2>&1; then \
+ echo " rm -f $(installed_su)"; \
+ rm -f $(installed_su); \
+ else :; fi
+
+# Use `ginstall' in the definition of PROGRAMS and in dependencies to avoid
+# confusion with the `install' target. The install rule transforms `ginstall'
+# to install before applying any user-specified name transformations.
+
+transform = s/ginstall/install/; @program_transform_name@
+ginstall_SOURCES = install.c copy.c cp-hash.c
+
+# This is for the '[' program. Automake transliterates '[' to '_'.
+__SOURCES = lbracket.c
+
+cp_SOURCES = cp.c copy.c cp-hash.c
+dir_SOURCES = ls.c ls-dir.c
+vdir_SOURCES = ls.c ls-vdir.c
+ls_SOURCES = ls.c ls-ls.c
+chown_SOURCES = chown.c chown-core.c
+chgrp_SOURCES = chgrp.c chown-core.c
+
+mv_SOURCES = mv.c copy.c cp-hash.c remove.c
+rm_SOURCES = rm.c remove.c
+
+md5sum_SOURCES = md5sum.c
+md5sum_CPPFLAGS = -DHASH_ALGO_MD5=1 $(AM_CPPFLAGS)
+sha1sum_SOURCES = md5sum.c
+sha1sum_CPPFLAGS = -DHASH_ALGO_SHA1=1 $(AM_CPPFLAGS)
+sha224sum_SOURCES = md5sum.c
+sha224sum_CPPFLAGS = -DHASH_ALGO_SHA224=1 $(AM_CPPFLAGS)
+sha256sum_SOURCES = md5sum.c
+sha256sum_CPPFLAGS = -DHASH_ALGO_SHA256=1 $(AM_CPPFLAGS)
+sha384sum_SOURCES = md5sum.c
+sha384sum_CPPFLAGS = -DHASH_ALGO_SHA384=1 $(AM_CPPFLAGS)
+sha512sum_SOURCES = md5sum.c
+sha512sum_CPPFLAGS = -DHASH_ALGO_SHA512=1 $(AM_CPPFLAGS)
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g'
+
+BUILT_SOURCES += dircolors.h
+dircolors.h: dcgen dircolors.hin
+ @rm -f $@ $@-t
+ $(PERL) -w -- $(srcdir)/dcgen $(srcdir)/dircolors.hin > $@-t
+ @chmod a-w $@-t
+ mv $@-t $@
+
+wheel_size = 5
+
+BUILT_SOURCES += wheel-size.h
+wheel-size.h: Makefile.am
+ @rm -f $@ $@-t
+ echo '#define WHEEL_SIZE $(wheel_size)' > $@-t
+ @chmod a-w $@-t
+ mv $@-t $@
+
+BUILT_SOURCES += wheel.h
+wheel.h: wheel-gen.pl Makefile.am
+ @rm -f $@ $@-t
+ $(srcdir)/wheel-gen.pl $(wheel_size) > $@-t
+ @chmod a-w $@-t
+ mv $@-t $@
+
+# false exits nonzero even with --help or --version.
+# test doesn't support --help or --version.
+# Tell automake to exempt then from that installcheck test.
+AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = false test
+
+BUILT_SOURCES += fs.h
+fs.h: stat.c extract-magic
+ rm -f $@
+ $(PERL) $(srcdir)/extract-magic $(srcdir)/stat.c > $@t
+ @chmod a-w $@t
+ mv $@t $@
+
+MAINTAINERCLEANFILES = $(BUILT_SOURCES)
+
+# Sort in traditional ASCII order, regardless of the current locale;
+# otherwise we may get into trouble with distinct strings that the
+# current locale considers to be equal.
+ASSORT = LC_ALL=C sort
+
+all_programs = \
+ $(bin_PROGRAMS) \
+ $(bin_SCRIPTS) \
+ $(EXTRA_PROGRAMS)
+
+all_programs.list:
+ @echo $(all_programs) | tr ' ' '\n' | sed -e 's,$(EXEEXT)$$,,' \
+ | $(ASSORT) -u
+
+pm = progs-makefile
+pr = progs-readme
+# Ensure that the list of programs in README matches the list
+# of programs we can build.
+check: check-README check-misc
+.PHONY: check-README
+check-README:
+ rm -rf $(pr) $(pm)
+ echo $(all_programs) \
+ | tr -s ' ' '\n' | sed -e 's,$(EXEEXT)$$,,' \
+ | $(ASSORT) -u > $(pm) && \
+ sed -n '/^The programs .* are:/,/^[a-zA-Z]/p' $(top_srcdir)/README \
+ | sed -n '/^ */s///p' | tr -s ' ' '\n' > $(pr)
+ diff $(pm) $(pr) && rm -rf $(pr) $(pm)
+
+# Ensure that the list of programs and author names is accurate.
+au_dotdot = authors-dotdot
+au_actual = authors-actual
+.PHONY: check-AUTHORS
+check-AUTHORS: $(all_programs)
+ rm -f $(au_actual) $(au_dotdot)
+ for i in `ls $(all_programs) | sed -e 's,$(EXEEXT)$$,,' \
+ | $(ASSORT) -u`; do \
+ test "$$i" = '[' && continue; \
+ exe=$$i; \
+ if test "$$i" = install; then \
+ exe=ginstall; \
+ elif test "$$i" = test; then \
+ exe='['; \
+ fi; \
+ ./$$exe --version \
+ |sed -n '/Written by /{ s//'"$$i"': /; s/,* and /, /; s/\.$$//; p; }'; \
+ done > $(au_actual)
+ sed -n '/:/p' $(top_srcdir)/AUTHORS > $(au_dotdot)
+ diff $(au_actual) $(au_dotdot) && rm -f $(au_actual) $(au_dotdot)
+
+# Make sure we don't define any S_IS* macros in src/*.c files.
+# Not a big deal, but they're already defined via system.h.
+#
+# Also make sure we don't use st_blocks. Use ST_NBLOCKS instead.
+# This is a bit of a kludge, since it prevents use of the string
+# even in comments, but for now it does the job with no false positives.
+.PHONY: check-misc
+check-misc:
+ cd $(srcdir); grep '^# *define *S_IS' $(SOURCES) && exit 1 || :
+ cd $(srcdir); grep st_blocks $(SOURCES) && exit 1 || :
+ cd $(srcdir); grep '^# *define .*defined' $(SOURCES) && exit 1 || :
+
+# Extract the list of authors from each file.
+sed_filter = s/^ *//;s/N_ (//;s/^"//;s/")*$$//
+# Sometimes the string is on the same line as the #define...
+s1 = '/^\#define AUTHORS \([^\\]\)/{;s//\1/;$(sed_filter);p;q;}'
+# Sometimes the string is on the backslash-continued line after the #define.
+s2 = '/^\#define AUTHORS \\\\/{;n;$(sed_filter);p;q;}'
+# FIXME: handle *.sh; and use $(all_programs), not $(SOURCES)
+../AUTHORS: $(SOURCES)
+ rm -f $@-t
+ ( \
+ set -e; \
+ echo "Here are the names of the programs in this package,"; \
+ echo "each followed by the name(s) of its author(s)."; \
+ echo; \
+ for i in $(SOURCES); do \
+ a=`sed -n $(s1) $$i`; \
+ test "$$a" && : \
+ || a=`sed -n $(s2) $$i`; \
+ if test "$$a"; then \
+ prog=`echo $$i|sed 's/\.c$$//'`; \
+ echo "$$prog: $$a"; \
+ fi; \
+ done | $(ASSORT) -u ) > $@-t
+ chmod a-w $@-t
+ mv $@-t $@
+
+# The following rule is not designed to be portable,
+# and relies on tools that not everyone has.
+
+# Most functions in src/*.c should have static scope.
+# Any that don't must be marked with `extern', but `main'
+# and `usage' are exceptions. They're always extern, but
+# don't need to be marked.
+#
+# The second nm|grep checks for file-scope variables with `extern' scope.
+.PHONY: sc_tight_scope
+sc_tight_scope: $(all_programs)
+ @t=exceptions-$$$$; \
+ trap "s=$$?; rm -f $$t; exit $$s" 0 1 2 13 15; \
+ ( printf '^main$$\n^usage$$\n'; \
+ grep -h -A1 '^extern .*[^;]$$' $(SOURCES) \
+ | grep -vE '^(extern |--)' |sed 's/^/^/;s/ .*/$$/' ) > $$t; \
+ nm -e *.$(OBJEXT) \
+ | sed -n 's/.* T //p' \
+ | grep -Ev -f $$t && \
+ { echo 'the above functions should have static scope' 1>&2; \
+ exit 1; } || : ; \
+ ( printf '^program_name$$\n'; \
+ sed -n 's/^extern int \([^ ][^ ]*\);$$/^\1$$/p' \
+ $(noinst_HEADERS) ) > $$t; \
+ nm -e *.$(OBJEXT) \
+ | sed -n 's/.* [BD] //p' \
+ | grep -Ev -f $$t && \
+ { echo 'the above variables should have static scope' 1>&2; \
+ exit 1; } || :