summaryrefslogtreecommitdiff
path: root/Makefile.am
Commit message (Collapse)AuthorAgeFilesLines
* build: support building all tools in a single binaryAlex Deymo2014-07-131-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add the --enable-single-binary option to the configure file. When enabled, this option builds a single binary file containing the selected tools. Which tool gets executed depends on the value of argv[0] which can be set implicitly through symlinks to the single program. This setup reduces significantly the size of a complete coreutils install, since code from lib/libcoreutils.a is not duplicated in every one of the more than 100 binaries. Runtime overhead is increased due to more dynamic libraries being loaded, and extra initialization being performed for all utils. Also initially a larger binary is loaded from storage, though this is usually alleviated due to caching and lazy mmaping of unused blocks, and in fact the single binary should have better caching characteristics. Comparing the size of the individual versus single binary on x86_64: $ cd src $ size coreutils $ size -t $(../build-aux/gen-lists-of-programs.sh --list-progs | grep -Ev '(coreutils|libstdbuf)') | tail -n1 text data bss dec hex filename 1097416 5388 88432 1191236 122d44 src/coreutils 4901010 124964 163768 5189742 4f306e (TOTALS) Storage requirements are reduced similarly: $ cd src $ du -h coreutils $ du -ch $(../build-aux/gen-lists-of-programs.sh --list-progs | grep -Ev '(coreutils|libstdbuf)') | tail -n1 1.2M coreutils 5.3M total When installing, the makefile will create either symlinks or shebangs based on the --enable-single-binary setting, for each configured tool. In this way, all the tools are still callable individually, but they are all implemented by the same "coreutils" binary installed on the same directory. * .gitignore: Add new generated files. * Makefile.am: New rules to generate build-aux/gen-single-binary.sh and install symlinks. * NEWS: Mention the new feature. * README: Add "coreutils" to the list of utils. * bootstrap.conf: Regenerate src/single-binary.mk * build-aux/gen-lists-of-programs.sh: New --list-progs option. * build-aux/gen-single-binary.sh: Regenerate * configure.ac: New --enable-single-binary option and other variables. Disallow --enable-single-binary=symlinks with --program-prefix et. al. * man/coreutils.x: Manpage hook. * man/local.mk: Add manpage hook and fix dependencies. * src/coreutils.c: Multicall implementation. * src/local.mk: New rules for the single binary option. * tests/local.mk: Add $single_binary_progs to support require_built_() from init.cfg * tests/misc/env.sh: Avoid the use of symlink to echo. * tests/misc/help-version.sh: Add exception for coreutils. * tests/install/basic-1.sh: Really avoid using ginstall strip functionality if there is an issue with the independent strip command. * src/kill.c: Changes to call exit() in main. * src/readlink.c: Likewise. * src/shuf.c: Likewise. * src/timeout.c: Likewise. * src/truncate.c: Likewise.
* maint: don't let envvar setting break ChangeLog generationJim Meyering2014-05-031-1/+3
| | | | | * Makefile.am (gen-ChangeLog): Clear amend_git_log when we don't set it, so that an envvar setting cannot cause trouble.
* maint: make ChangeLog generation more robustPádraig Brady2014-04-251-4/+5
| | | | | | * Makefile.am (gen-ChangeLog): Sync changes from GNU hello, to ensure exit status is propagated, and to support an optional git-log-fix file.
* maint: update all copyright year number rangesBernhard Voelker2014-01-021-1/+1
| | | | | | Run "make update-copyright", but then also run this, perl -pi -e 's/2\d\d\d-//' tests/sample-test to make that one script use the single most recent year number.
* maint: update all copyright year number rangesJim Meyering2013-01-011-1/+1
| | | | | | Run "make update-copyright", but then also run this, perl -pi -e 's/2\d\d\d-//' tests/sample-test to make that one script use the single most recent year number.
* build: man page generation: degrade gracefully when perl is lackingStefano Lattarini2012-10-261-19/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit v8.19-118-g57da212, our 'dist-hook' rule tweaked the distributed Makefile.in to make each man page 'man/foo.1' depend on the corresponding source 'src/foo.c' rather than the corresponding program 'src/foo'. That was done to accommodate systems without perl, which cannot run help2man to regenerate the manpage after its corresponding program has been built. This seems a right and proper graceful degradation, in that the man pages dependencies are still 100% correct in a git checkout, while being more lax but "more portable" in a distribution tarball. Alas, that is not the case in practice, as it turns out the tweaked Makefile makes the building of man pages unreliable and potentially incorrect! In fact, assume that instead of the correct a dependency: man/ls.1: src/ls we have the laxer one: man/ls.1: src/ls.c and think of what happens if a user modifies, say, 'src/ls.c', and then runs "make -j4" to rebuild everything. The make process will see that it has to rebuild the man page 'man/ls.1' (because its prerequisite 'src/ls.c' has changed), but won't see that it has to rebuild 'src/ls' *before* re-running 'help2man' to generate that man page; so, if 'man/ls.1' is rebuilt before 'src/ls' (which can happen with concurrent make), our user will get either a build error (if 'src/ls' did non exist) or, worse, a man page with an up-to-date timestamp but an out-of-date content. And what's even worse in all of this is that this problem will be present also for users who have perl installed: this is not a "graceful degradation" at all! In our situation, the best and simplest way to implement a graceful degradation it to keep the correct dependencies for man pages (that is, "man/ls.1: src/ls"), and if perl is not present, just generate dummy man pages reporting that built-time issue and redirecting the user back to either the info documentation or the '--help' output. As a consequence of this change, we also stop distributing man pages, since they will now be generated unconditionally. * Makefile.am (do-not-require-help2man): Remove. (dist-hook): Don't depend on it. * man/local.mk: Remove an obsolete comment. (EXTRA_DIST): Stop distributing generated man pages. ($(EXTRA_MANS)): This no longer needs to depend on $(all_programs). (MAINTAINERCLEANFILES): $(ALL_MANS) Do not list it here, and ... (CLEANFILES): ... list it here, instead. (.x.1): Instead of warning if perl is missing, but then trying to run 'help2man' unconditionally, simply run ... (run_help2man): ... the command referenced by this new variable, that expands to a proper invocation of 'help2man' if perl is present, and to an invocation of a shell script generating a dummy manpage if it is not. (EXTRA_DIST): Distribute that shell script. * man/dummy-man: New shell script. * NEWS (Build-related): Mention this. Fixes coreutils http://bugs.gnu.org/12715.
* tests: reenable "make -C tests ..." commandsJim Meyering2012-09-141-0/+1
| | | | | | | | | | | | The README-documented way to run individual tests was invalidated by the conversion of tests/ to non-recursive make. Add a GNUmakefile shim to reenable that usage. * tests/GNUmakefile: New file, so that "make -C tests ..." works like it did before the conversion of tests/ to non-recursive build. Reported by Bernhard Voelker. * Makefile.am (EXTRA_DIST): Add it. * cfg.mk (sc_prohibit_tab_based_indentation): Also exempt any GNUmakefile from this syntax-check.
* build: build lib/ using non-recursive makeJim Meyering2012-09-111-1/+9
| | | | | | | | | | | | | | | * bootstrap.conf (gnulib_modules): Use the new module. (bootstrap_post_import_hook): Invoke prefix-gnulib-mk. * configure.ac (AC_CONFIG_FILES): Remove lib/Makefile. * lib/Makefile.am: Renamed... * lib/local.mk: ...to this. * src/local.mk (CLEANFILES): Append, don't set. (noinst_LIBRARIES): Likewise. (AM_CPPFLAGS): Don't set this here. * Makefile.am (AM_CPPFLAGS): Define here instead. (noinst_LIBRARIES, CLEANFILES, MOSTLYCLEANDIRS, MOSTLYCLEANFILES): Initialize here, so we can append to them from each included local.mk (SUBDIRS): Remove "lib".
* build: do not require help2man at build-from-tarball timeJim Meyering2012-09-101-1/+19
| | | | | | | | But do retain full dependencies when building from a git clone. We do this by converting the full dependency (of the .1 file on the binary we run with --help) into a dependency on the .c file. * Makefile.am (do-not-require-help2man): New rule. (dist-hook): depend on it.
* build: don't use recursive make for tests/ subdirectoryStefano Lattarini2012-09-051-6/+2
| | | | | | | | | | | | | | | | | | | * Makefile.am (SUBDIRS): Remove 'tests'. (include): The '$(top_srcdir)/tests/local.mk' file. (check-root): Remove this convenience target, it's no longer needed now that the "real" check-root target once in 'tests/Makefile' will land in the top-level makefile. * configure.ac (AC_CONFIG_FILES): Remove 'tests/Makefile'. * tests/Makefile.am: Rename ... * tests/local.mk: ... like this, with a lot of adjustments. * tests/init.cfg: Move ... * init.cfg: ... here. This is necessary, for a limitation of the gnulib-provided 'tests/init.sh', which unconditionally look for 'init.cfg' in the $(srcdir) directory. * tests/*/*.sh: Adjust: expect init.sh to be in '$srcdir/tests', not in '$srcdir', and extend $PATH with './src', not with '../src'. * tests/Coreutils.pm: Adjust similarly. * tests/pr/pr-tests.pl ($pfx): Likewise.
* maint: remove unused target 'install-root'Stefano Lattarini2012-09-011-4/+0
| | | | | | | | | It was unneeded and broken since the removal of 'su' from GNU coreutils, in commit v8.17-16-g928dd73 of 2012-06-06, "su: remove program (util-linux is now the best source for it)". * Makefile.am (install-root): Remove. (ALL_RECURSIVE_TARGETS): Update.
* maint: improve remake rules for maintainersStefano Lattarini2012-09-011-0/+15
| | | | | | | | | | | | | This is a follow up on today's commit v8.19-60-g4f2e62b". * Makefile.am ($(top_srcdir)/m4/cu-progs.m4, $(srcdir)/src/cu-progs.mk): New, generate these files from the 'build-aux/gen-lists-of-programs.sh', the same way it's done from the bootstrap script. * bootstrap.conf (bootstrap_post_import_hook): Add comment about the necessity to keep those new rules synced with the commands here. Enhance those commands so to that the generated files are set read-only.
* build: don't use recursive make to build the 'src' subdirectoryStefano Lattarini2012-09-011-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.am (SUBDIRS): Remove 'src'. Ensure '.' is listed before 'tests' and 'gnulib-tests'. (dist-hook): Adjust: we must now tweak the top-level Makefile.in in $(distdir), not the one in the 'src/' subdir (which is gone). (include): The '$(top_srcdir)/src/local.mk' file. * build-aux/gen-lists-of-programs.sh: Adjust the generation of the automake input fragment. * tests/Makefile.am (.built-programs): Adjust. * cfg.mk (all_programs): Remove this convenience rule; it's no longer needed, now that we can rely directly on the contents of $(all_programs). (sc_option_desc_uppercase, check-programs-vs-x:): Adjust lists of prerequisites accordingly. (all-progs-but-lbracket): Simplify definition accordingly. * configure.ac ($OPTIONAL_BIN_PROGS): Adjust definition. ($OPTIONAL_PKGLIB_PROGS): Likewise. ($NO_INSTALL_PROGS_DEFAULT): Tweak definition, for consistency. (AC_CONFIG_FILES): Remove 'src/Makefile'. * src/Makefile.am: Rename ... * src/local.mk: ... like this, with a lot of adjustments. In addition ... (all_programs): ... remove this now-unneeded convenience target.
* build: refactor how lists of coreutils programs are definedStefano Lattarini2012-09-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is in preparation of future changes. Still, this patch leaves the build system in a better shape; true, with more indirections, but also with less convoluted and brittle hacks. Unfortunately, this commit also makes some rebuild rules incomplete; that will son be fixed by follow-up patches. * build-aux/gen-lists-of-programs.sh: New, generates autoconf and automake input fragments that define "lists" of all coreutils programs, with further distinctions about how and when these programs should be built (by default; if the system is capable enough; only if the user asks for them explicitly). This is useful to avoid duplicating the definitions of these lists among several files (at least 'configure.ac' 'src/Makefile.am'); such duplication had proved a source of inconsistencies and bugs in the past. And the pre-existing way to avoid such duplication, as implemented in 'configure.ac' before this patch, was overly complex and brittle. * Makefile.am (EXTRA_DIST): Distribute the new script. * bootstrap.conf (bootstrap_post_import_hook): Run the new script to generate 'm4/cu-progs.m4' and 'src/cu-progs.mk'. * .gitignore: Ignore those files. * configure.ac: Include 'm4/cu-progs.m4', and decidedly simplify most of the program lists definition and processing accordingly. * src/Makefile.am: Similarly include 'src/cu-progs.mk', containing definition of variables $(default__progs), $(no_install__progs) and $(build_if_possible__progs). Accordingly ... (no_install__progs, build_if_possible__progs): ... remove. (EXTRA_DIST): Adjust definition. Adjust a comment.
* maint: get rid of obsolete script 'cvsu'Stefano Lattarini2012-08-311-1/+0
| | | | | | | | | It was useful only back when coreutils used CVS as its version control system. * build-aux/cvsu: Delete. * Makefile.am (EXTRA_DIST): Remove it. * cfg.mk: Remove the two exemptions for this removed file.
* build: move definition of 'all_programs' in cfg.mkStefano Lattarini2012-08-311-4/+0
| | | | | * Makefile.am: Move definition of target 'all_programs' from here ... * cfg.mk: ... to here, which is the only file where it is used.
* build: don't use recursive make to build the 'man' subdirectoryStefano Lattarini2012-08-301-1/+2
| | | | | | | | | | | | | | | | | | | | * Makefile.am: Include 'man/local.mk'. (SUBDIRS): Remove 'man'. * configure.ac ($MAN): Adjust so that each of its entries has a leading 'man/' component. (AC_CONFIG_FILES): Remove 'man/Makefile'. * man/Makefile.am: Rename ... * man/local.mk: ... like this. With further adjustments: each 'foo.1' target renamed like 'man/foo.1', each '../src/foo.c' dependency as 'src/foo.c', and each '$(srcdir)' usage as '$(srcdir)/man'. Also ... (mandep): Adjust, removing the leading '../' component. Several whitespace adjustments while at it. (ASSORT): Remove, it's already defined in the top-level Makefile.am. * cfg.mk (sc_option_desc_uppercase, sc_man_file_correlation): Remove the associated recipes, they are now directly available from the included 'man/local.mk'. Actually, the other changes in this commit have made these recipes instable and not completely correct, but that will be fixed in later changes.
* build: provide convenience target 'all_programs' also at top-levelStefano Lattarini2012-08-301-0/+4
| | | | | | | | | This will be mostly useful in future changes. * Makefile.am (all_programs): New, simply work by delegating to the same-named target in the 'src/' subdirectory. * cfg.mk (sc_option_desc_uppercase): Take advantage of it. (sc_man_file_correlation): Likewise.
* build: don't use recursive make to build the 'doc' subdirectoryStefano Lattarini2012-08-301-1/+3
| | | | | | | | | | | | | | | | | | | * doc/Makefile.am: Rename ... * doc/local.mk: ... like this. With further adjustments ... (info_TEXINFOS): Prepend 'doc/' to all '*.texi' files listed in here. (coreutils_TEXINFOS): Likewise, and rename ... (doc_coreutils_TEXINFOS): ... like this. (constants.texi): Rename ... (doc/constants.texi): ... like this. Adjust the recipe to avoid spurious errors. (MAINTAINERCLEANFILES): Adjust, and extend with '+=' rather than setting it with '='. (ME): Delete. (find_upper_case_var): Use '$@', not '$(ME)', in error messages. * Makefile.am: Include 'doc/local.mk'. (SUBDIRS): Remove 'doc'. * configure.ac (AC_CONFIG_FILES): Remove 'doc/Makefile'.
* maint: use single copyright year rangeJim Meyering2012-01-271-1/+1
| | | | Run "make update-copyright".
* maint: quote 'like this' or "like this", not `like this'Paul Eggert2012-01-221-3/+3
| | | | | | | | | | | | | | * doc/coreutils.texi (Formatting the file names): coreutils now quotes 'like this'. * man/help2man: * src/timeout.c (usage): Quote 'like this' in diagnostics. * HACKING, Makefile.am, NEWS, README, README-hacking, TODO, cfg.mk: * doc/Makefile.am, doc/coreutils.texi, m4/jm-macros.m4: * man/Makefile.am, man/help2man, src/Makefile.am, src/copy.h: * src/extract-magic, src/ls.c, src/pinky.c, src/pr.c, src/sort.c: * src/split.c, src/timeout.c, src/who.c, tests/dd/skip-seek-past-file: * tests/pr/pr-tests: Quote 'like this' in commentary. * cfg.mk (old_NEWS_hash): Update due to changed old NEWS.
* maint: update all copyright year number rangesJim Meyering2012-01-011-1/+1
| | | | Run "make update-copyright".
* maint: make generated THANKS file read-onlyJim Meyering2011-11-201-2/+2
| | | | * Makefile.am (THANKS): Make generated file read-only.
* maint: add rule to ensure that our commit hook copies are up to dateJim Meyering2011-11-121-0/+14
| | | | | | * Makefile.am (check-git-hook-script-sync): New rule -- not used anywhere, because it depends on having very recent git. * scripts/git-hooks/pre-applypatch: New file.
* maint: fix git-log typos when generating ChangeLogJim Meyering2011-11-021-0/+1
| | | | | | * gnulib: Update to latest, for new gitlog-to-changelog. * Makefile.am (gen-ChangeLog): Use its new --amend=F option. * build-aux/git-log-fix: New file, with ChangeLog fixes.
* tests: introduce make targets check-expensive and check-very-expensiveBernhard Voelker2011-09-241-0/+6
| | | | | | | | * Makefile.am: add shortcuts to run (very) expensive tests. Use "make check-expensive" to run tests with RUN_EXPENSIVE_TESTS=yes, use "make check-very-expensive" to run tests with both RUN_EXPENSIVE_TESTS=yes and RUN_VERY_EXPENSIVE_TESTS=yes. Non-expensive tests are included in all cases.
* maint: remove unnecessary gnulib .diff fileJim Meyering2011-05-291-1/+0
| | | | | | * gl/modules/getloadavg.diff: Remove file. It stopped being useful back in February. * Makefile.am (EXTRA_DIST): Remove it.
* maint: remove unnecessary listing of update-copyright in Makefile.amJim Meyering2011-05-031-1/+0
| | | | | * Makefile.am (changelog_etc): Don't list update-copyright here. It is automatically included via gnulib-tool-generated lib/gnulib.mk.
* maint: stop using .x-sc_* files to list syntax-check exemptionsJim Meyering2011-03-161-27/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead, use the brand new mechanism with which you merely use a variable (derived from the rule name) defined in cfg.mk to an ERE matching the exempted file names. * gnulib: Update to latest, to get maint.mk that implements this. * Makefile.am (syntax_check_exceptions): Remove variable. (EXTRA_DIST): Remove use of the variable. * cfg.mk (sc_x_sc_dist_check): Remove rule, no longer useful. (exclude_file_name_regexp--sc_space_tab): Define variable. (exclude_file_name_regexp--sc_bindtextdomain): Likewise. (exclude_file_name_regexp--sc_unmarked_diagnostics): Likewise. (exclude_file_name_regexp--sc_error_message_uppercase): Likewise. (exclude_file_name_regexp--sc_trailing_blank): Likewise. (exclude_file_name_regexp--sc_system_h_headers): Likewise. (exclude_file_name_regexp--sc_require_config_h_first): Likewise. (exclude_file_name_regexp--sc_require_config_h): Likewise. (exclude_file_name_regexp--sc_po_check): Likewise. (exclude_file_name_regexp--sc_prohibit_always-defined_macros): Likewise. (exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF): Likewise. (exclude_file_name_regexp--sc_program_name): Likewise. (exclude_file_name_regexp--sc_file_system): Likewise. (exclude_file_name_regexp--sc_prohibit_always_true_header_tests): Likewise. (exclude_file_name_regexp--sc_prohibit_fail_0): Likewise. (exclude_file_name_regexp--sc_prohibit_atoi_atof): Likewise. (exclude_file_name_regexp--sc_prohibit_tab_based_indentation): Likewise. (exclude_file_name_regexp--sc_prohibit_stat_st_blocks): Likewise. * configure.ac [whether localtime caches TZ]: Use return 0/1, not exit (0/1) to avoid triggering a sc_prohibit_magic_number_exit failure. * .x-sc_GPL_version: Remove file. * .x-sc_bindtextdomain: Likewise. * .x-sc_error_message_uppercase: Likewise. * .x-sc_file_system: Likewise. * .x-sc_obsolete_symbols: Likewise. * .x-sc_po_check: Likewise. * .x-sc_program_name: Likewise. * .x-sc_prohibit_always-defined_macros: Likewise. * .x-sc_prohibit_always_true_header_tests: Likewise. * .x-sc_prohibit_atoi_atof: Likewise. * .x-sc_prohibit_empty_lines_at_EOF: Likewise. * .x-sc_prohibit_fail_0: Likewise. * .x-sc_prohibit_magic_number_exit: Likewise. * .x-sc_prohibit_stat_st_blocks: Likewise. * .x-sc_prohibit_strcmp: Likewise. * .x-sc_prohibit_tab_based_indentation: Likewise. * .x-sc_require_config_h: Likewise. * .x-sc_require_config_h_first: Likewise. * .x-sc_space_tab (config): Likewise. * .x-sc_sun_os_names: Likewise. * .x-sc_system_h_headers: Likewise. * .x-sc_trailing_blank: Likewise. * .x-sc_unmarked_diagnostics: Likewise. * .x-sc_useless_cpp_parens: Likewise.
* maint: update all copyright year number rangesJim Meyering2011-01-011-1/+1
| | | | Run "make update-copyright".
* maint: generate much of the THANKS fileJim Meyering2011-01-011-1/+26
| | | | | | | | | | | | | | | | | | Before this change, we had a tendency to manually list each contributor's name in THANKS. Now, each commit "Author" is included in the generated THANKS file automatically, and most of the old THANKS file is now a template, THANKS.in. We'll still have to manually list the names of people who report problems without a usable patch. * THANKS.in: New file, derived from THANKS, but removing names of those who are listed as git log 'Author:'s. * THANKS: Remove file. * thanks-gen: New file. * Makefile.am (THANKS): New rule. (EXTRA_DIST): Add .mailmap, THANKS.in and thanks-gen. * .gitignore: Add THANKS and THANKS-to-translators. * .mailmap: Unify on single address and name-spelling per contributor.
* build: update gnulib for linux 2.6.9 nanosleep workaroundJim Meyering2010-11-131-0/+1
| | | | | | | Also, do the following to avoid "make syntax-check" failure induced by new rules. * .x-sc_bindtextdomain: Exempt files with an #ifdef'd "main". * Makefile.am: Add this file.
* tests: rename a syntax-checkJim Meyering2010-05-091-1/+1
| | | | | | | | * cfg.mk (sc_prohibit_always-defined_macros): Rename from sc_always_defined_macros. * .x-sc_prohibit_always-defined_macros: New file, renamed from... * .x-sc_always_defined_macros: ...removed. * Makefile.am (syntax_check_exceptions): Rename here, too.
* maint: extend the always_defined_macros syntax-checkJim Meyering2010-05-031-0/+1
| | | | | | | | | | | | * cfg.mk (gl_generated_headers_): Define. (headers_with_interesting_macro_defs): Remove headers covered by the above. (.re-defmac): Extract symbol names from many more files. (sc_always_defined_macros): Use VC_LIST_EXCEPT, not VC_LIST, so that we can use the usual exception mechanism. Test for $(gnulib_dir), not system.h. * .x-sc_always_defined_macros: New file. Exempt src/seq.c. * Makefile.am (syntax_check_exceptions): Add it here.
* maint: remove now-unnecessary #if HAVE_header_H tests.Jim Meyering2010-04-241-0/+1
| | | | | | | | | | | | | | | * .x-sc_prohibit_always_true_header_tests: New file. * Makefile.am (syntax_check_exceptions): Add it. * src/cat.c: Remove #if HAVE_SYS_IOCTL_H test. * src/copy.c: Likewise. * src/ls.c: Likewise. * src/stty.c: Likewise. * src/install.c: Remove #if HAVE_SYS_WAIT_H test. * src/kill.c: Likewise. * src/operand2sig.c: Likewise. * src/timeout.c: Likewise. * src/pathchk.c: Remove #if HAVE_WCHAR_H test. * src/stat.c: Remove #if HAVE_NETINET_IN_H test.
* maint: new syntax-check rule: prohibit empty lines at EOFJim Meyering2010-04-101-0/+1
| | | | | | | | * cfg.mk (detect_empty_lines_at_EOF_): Define. (sc_prohibit_empty_lines_at_EOF): New rule. * .x-sc_prohibit_empty_lines_at_EOF: New file. Exempt pr test inputs. * Makefile.am (syntax_check_exceptions): Add it. Pádraig Brady suggested to parse the output of tail -n1.
* maint: update all FSF copyright year lists to include 2010Jim Meyering2010-01-011-1/+1
| | | | | | | Use this command: git ls-files | grep -v COPYING \ | xargs env UPDATE_COPYRIGHT_USE_INTERVALS=1 \ build-aux/update-copyright
* tests: prohibit fail=0 initializationJim Meyering2009-10-301-0/+1
| | | | | | * cfg.mk (sc_prohibit_fail_0): New rule. * .x-sc_prohibit_fail_0: New file. * Makefile.am (syntax_check_exceptions): Distribute the new file.
* maint: avoid exiting with magic numberEric Blake2009-10-291-0/+1
| | | | | | | | | | | Cope with gnulib's new sc_prohibit_magic_number_exit rule. * .x-sc_prohibit_magic_number_exit: New file, to add exemptions. * Makefile.am (syntax_check_exceptions): Distribute it. * lib/euidaccess-stat.c (main): Fix culprits. * src/chcon.c (main): Likewise. * src/runcon.c (main): Likewise. * src/setuidgid.c (main): Likewise.
* tests: move a coreutils-specific test from maint.mk to Makefile.amJim Meyering2009-08-291-0/+1
| | | | | * Makefile.am (distcheck-hook): Make taint-distcheck here, since it's no longer done via maint.mk.
* build: prefix a few rules with $(AM_V_GEN)Jim Meyering2009-08-271-6/+6
| | | | | | | * Makefile.am (.version, dist-hook, gen-ChangeLog): Use $(AM_V_GEN) and $(AM_V_at), so that automake's silent-rules option (make V=1/V=0) now controls whether the commands are printed at build time. (THANKS-to-translators, check-ls-dircolors): Likewise.
* maint: teach "make syntax-check" the space-only indentation ruleJim Meyering2009-08-251-0/+1
| | | | | | | * cfg.mk (sc_prohibit_tab_based_indentation): New rule. * .x-sc_prohibit_tab_based_indentation: New file. * Makefile.am (syntax_check_exceptions): Add file, .x-sc_prohibit_tab_based_indentation.
* maint: move the update-copyright rule to gnulib's maint.mkJim Meyering2009-08-041-8/+0
| | | | | | * gnulib: Update submodule to get latest maint.mk. * Makefile.am (update-copyright): Remove rule; now it's in maint.mk. * m4/check-decl.m4: Update sole remaining copyright year list.
* maint: improve update-copyright ruleJoel E. Denny2009-07-291-2/+2
| | | | | | | * Makefile.am (update-copyright): Relax the selection rule to match any file containing the word "Copyright". Correct the exclusion rule so that it also excludes ChangeLog and COPYING files that are not in the top level directory.
* maint: add a rule to automate the annual copyright-year-update processJim Meyering2009-06-271-0/+9
| | | | | | * build-aux/update-copyright: New file. * Makefile.am (changelog_etc): Add update-copyright. (update-copyright): New rule.
* stdbuf: A new program to run a command with modified stdio bufferingPádraig Brady2009-06-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * AUTHORS: Register as the author. * NEWS: Mention this change. * README: Add stdbuf command to list. * configure.ac: Only enable on ELF systems with GCC. * cfg.mk (sc_system_h_headers): Use VC_LIST_EXCEPT rather than VC_LIST, so we can add an exception, if needed. * .x-sc_system_h_headers: New file. Exempt libstdbuf.c. * Makefile.am (syntax_check_exceptions): Add .x-sc_system_h_headers. * doc/coreutils.texi (stdbuf invocation): Add stdbuf info. * man/.gitignore: Ignore generated manpage. * src/.gitignore: Ignore stdbuf and libstdbuf.so binaries. * man/Makefile.am (stdbuf.1): Add dependency. * man/stdbuf.x: New file with example usage. * po/POTFILES.in: Reference new command and shared library sources. * src/Makefile.am (build_if_possible__progs): Add stdbuf and libstdbuf, (pkglib_PROGRAMS): Reference optional shared lib, (libstdbuf_so_LDADD): Ensure we don't link with non PIC libcoreutils.a. (libstdbuf_so_LDFLAGS): Add -shared GCC option, (libstdbuf_so_CFLAGS): Add -fPIC GCC option. (check-README): Exclude libstbuf. (check-AUTHORS): ditto. (sc_tight_scope): Exclude functions starting with __. * src/libstdbuf.c: The LD_PRELOAD shared library to control buffering. * src/stdbuf.c: New file to setup env variables before execing command. * tests/Makefile.am: Reference new test file. * tests/misc/help-version: Set expected exit codes. * tests/misc/invalid-opt: ditto. * tests/misc/stdbuf: Add 9 tests.
* maint: Add a syntax-check to ensure all .x-sc_ files are distributedPádraig Brady2009-06-081-0/+2
| | | | | | | * Makefile.am: Add a couple of missing entries to syntax_check_exceptions for distribution. * cfg.mk: Add a rule to ensure the syntax_check_exceptions list stays in sync with the .x-sc_* files in the repository.
* build: move coreutils-specific rules from maint.mk to new fileJim Meyering2009-04-241-0/+1
| | | | | | | | * dist-check.mk: New file: coreutils-specific rules extracted from maint.mk, now that maint.mk has migrated to gnulib. * Makefile.am (EXTRA_DIST): Add dist-check.mk. * coreutils/cfg.mk: Include $(srcdir)/dist-check.mk. * gnulib: Update submodule to latest.
* build: avoid parallel distcheck failureRalf Wildenhues2009-04-111-0/+5
| | | | | | | | | * Makefile.am (ALL_RECURSIVE_TARGETS): Initialize here, too, to please automake. Add install-root, check-root, distcheck-hook. * cfg.mk (ALL_RECURSIVE_TARGETS): Add sc_tight_scope. * maint.mk (ALL_RECURSIVE_TARGETS): Add patch-check, check-AUTHORS, maintainer-distcheck, vc-dist, taint-distcheck, my-distcheck, alpha, beta, major.
* maint: clean up Makefile.am, rename remaining ChangeLog filesJim Meyering2009-04-041-37/+51
| | | | | | | | | | | * Makefile.am (changelog_etc, syntax_check_exceptions): Define. (EXTRA_DIST): Use. Remove names that are now automatically included: build-aux/git-version-gen, build-aux/vc-list-files. * build-aux/ChangeLog-2007: Rename from */ChangeLog. * doc/ChangeLog-2007: Likewise. * lib/ChangeLog-2007: Likewise. * m4/ChangeLog-2007: Likewise. * po/ChangeLog-2007: Likewise.