From: Ian Jackson Date: Thu, 26 Dec 2019 01:40:09 +0000 (+0000) Subject: Big incompatible change: Rename `Subdir' to `Dir' X-Git-Tag: subdirmk/0.3~49 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?p=subdirmk.git;a=commitdiff_plain;h=cf4ae9ff56d9313777f95d53092412023f806571 Big incompatible change: Rename `Subdir' to `Dir' We want completion to be easy, and we have Suffix now. `Dir' is as good as `Subdir' I think (and a bit shorter). Signed-off-by: Ian Jackson --- diff --git a/README b/README index 20658ae..be1ece7 100644 --- a/README +++ b/README @@ -26,7 +26,7 @@ Basic approach -------------- The developer is expected to write a makefile fragment, in each -relevant subdirectory, called `Subdir.sd.mk'. +relevant subdirectory, called `Dir.sd.mk'. These fragments may contain ordinary make language. Unqualified filenames are relative to the build toplevel, and all commands all run @@ -36,11 +36,11 @@ However, the sigil & is treated specially. By and large, it refers to `the build directory corresponding to this .sd.mk file', etc. There are a variety of convenient constructions. -The result is that to a large extent, the Subdir.sd.mk has an easy way +The result is that to a large extent, the Dir.sd.mk has an easy way to namespace its "local" make variables, and an easy way to refer to its "local" filenames (and filenames in general). -The Subdir.sd.mk's are filtered, fed through autoconf in the usual way +The Dir.sd.mk's are filtered, fed through autoconf in the usual way (for @..@-substitutions) and included by one autogenerated toplevel makefile. @@ -52,7 +52,7 @@ Each subdirectory is also provided with an autogenerated `Makefile' which exists purely to capture ordinary make invocations and arrange for something suitable to happen. -Where there are dependencies between subdirectories, each Subdir.sd.mk +Where there are dependencies between subdirectories, each Dir.sd.mk can simply refer to files in other subdirectories directly. Invocation, "recursive" per-directory targets @@ -69,7 +69,7 @@ Each subdirectory has its own `all' target. For example a subdirectory `src' has a target `src/all'. The rules for these are automatically generated from the settings of the per-directory &TARGETS variables. &TARGETS is magic in this way. (In -src/Subdir.sd.mk, &TARGETS of course refers to a make variable called +src/Dir.sd.mk, &TARGETS of course refers to a make variable called src_TARGETS.) The `all' target in a parent directory is taken to imply the `all' @@ -98,7 +98,7 @@ Prefix.sd.mk, Suffix.sd.mk, Final.sd.mk, inclusion The files Prefix.sd.mk and Suffix.sd.mk in the toplevel of the source are automatically processed before and after each individual -directory's Subdir.sd.mk, and the &-substituted contents therefore +directory's Dir.sd.mk, and the &-substituted contents therefore appear once for each subdirectory. This lets you do per-directory boilerplate. Some useful boilerplate @@ -107,10 +107,10 @@ is already provided in subdirmk, for you to reference like this: &:include subdirmk/clean.sd.mk For example you could put that in Suffix.sd.mk. -The top-level Subdir.sd.mk is the first makefile included after the +The top-level Dir.sd.mk is the first makefile included after the autogenerated `main.mk' which merely has some basic settings and includes. So if you want to get in early and set global variables, -put them near the top of Subdir.sd.mk. +put them near the top of Dir.sd.mk. The file Final.sd.mk in the toplevel directory is processed and included after all the other files. @@ -127,14 +127,14 @@ Global definitions ------------------ If want to set global variables, such as CC, that should only be done -once. You can put them in your top-level Subdir.sd.mk, or a separate +once. You can put them in your top-level Dir.sd.mk, or a separate file you `include' and declare using SUBDIRMK_MAKEFILES. If you need different settings of variables like CC for different subdirectories, you should probably do that with target-specific variable settings. See the info node `(make) Target-specific'. -Subdirectory templates `.sd.mk' vs plain autoconf templates `.mk.in' +Directory templates `.sd.mk' vs plain autoconf templates `.mk.in' -------------------------------------------------------------------- There are two kinds of template files. @@ -146,12 +146,12 @@ There are two kinds of template files. Instantiated Usu. once per subdir Once only - Need to be mentioned No, but Subdir.sd.mk All not in subdirmk/ + Need to be mentioned No, but Dir.sd.mk All not in subdirmk/ in configure.ac? via SUBDIRMK_SUBDIRS via SUBDIRMK_MAKEFILES How to include `&:include foo.sd.mk' `include foo.mk' in all relevant .sd.mk in only one - (but not needed for Subdir.sd.mk + (but not needed for Dir.sd.mk Prefix, Suffix, Final) If you `include subdirmk/regen.mk', dependency management and @@ -167,7 +167,7 @@ locations: (i) In the build tree, or in the source tree ? - (ii) In (or relative to) the subdirectory to which this Subdir.sd.mk + (ii) In (or relative to) the subdirectory to which this Dir.sd.mk relates, or relative to the project's top level ? (iii) Absolute or relative pathname ? Usually relative pathnames @@ -394,7 +394,7 @@ In your configure.ac, say m4_include([subdirmk/subdirmk.ac]) SUBDIRMK_SUBDIRS([...list of subdirectories in relative syntax...]) -Write a Subdir.sd.mk in each directory. The toplevel one should +Write a Dir.sd.mk in each directory. The toplevel one should probably contain: include subdirmk/usual.mk @@ -410,7 +410,7 @@ Hints ----- You can convert your project incrementally. Start with the top-level -Makefile.in and rename it to Subdir.sd.mk, and add the appropriate +Makefile.in and rename it to Dir.sd.mk, and add the appropriate stuff to configure.ac, and fix everything up. Leave the existing $(MAKE) -C for your existing subdirectories alone. Then you can convert individual subdirectories, or classes of subdirectories, at diff --git a/example/.gitignore b/example/.gitignore index 2318691..a10f2d3 100644 --- a/example/.gitignore +++ b/example/.gitignore @@ -21,7 +21,7 @@ .makefiles.stamp /main.mk Makefile -Subdir.mk +Dir.mk Final.mk *.tmp diff --git a/example/Subdir.sd.mk b/example/Dir.sd.mk similarity index 80% rename from example/Subdir.sd.mk rename to example/Dir.sd.mk index 5c2040a..7c0fd2c 100644 --- a/example/Subdir.sd.mk +++ b/example/Dir.sd.mk @@ -1,4 +1,4 @@ -# subdirmk example - top-level Subdir.sd.mk +# subdirmk example - top-level Dir.sd.mk # Copyright 2019 Mark Wooding # Copyright 2019 Ian Jackson # SPDX-License-Identifier: LGPL-2.0-or-later diff --git a/example/lib/Subdir.sd.mk b/example/lib/Dir.sd.mk similarity index 100% rename from example/lib/Subdir.sd.mk rename to example/lib/Dir.sd.mk diff --git a/example/lib/t/Subdir.sd.mk b/example/lib/t/Dir.sd.mk similarity index 100% rename from example/lib/t/Subdir.sd.mk rename to example/lib/t/Dir.sd.mk diff --git a/example/src/Subdir.sd.mk b/example/src/Dir.sd.mk similarity index 100% rename from example/src/Subdir.sd.mk rename to example/src/Dir.sd.mk diff --git a/generate b/generate index 4a04506..a6a6cda 100755 --- a/generate +++ b/generate @@ -7,7 +7,7 @@ # $(srcdir)/subdirmk/generate [--srcdir=SRCDIR] [--] SUBDIR... # # generates in each subdirectory -# Subdir.mk.tmp +# Dir.mk.tmp # Makefile # and in toplevel # main.mk.tmp @@ -333,9 +333,9 @@ sub filter_subdir_mk ($) { my ($f, $enoentok) = @_; process_input_mk($targets, "${srcdir}/$f", \$esclit, $enoentok); }; - $pi->("Prefix.sd.mk", 1); - $pi->("${dir_prefix}Subdir.sd.mk", 0); - $pi->("Suffix.sd.mk", 1); + $pi->("Prefix.sd.mk", 1); + $pi->("${dir_prefix}Dir.sd.mk", 0); + $pi->("Suffix.sd.mk", 1); } sub process_subtree ($$); @@ -351,7 +351,7 @@ sub process_subtree ($$) { # ^ this is the only var which we need before we come back from # the recursion. - push @output_makefiles, "${dir_prefix}Subdir.mk"; + push @output_makefiles, "${dir_prefix}Dir.mk"; write_makefile($dir_prefix, scalar @$path); my %targets = (all => []); @@ -364,12 +364,12 @@ sub process_subtree ($$) { } set_dir_vars($path); - start_output_file("${dir_prefix}Subdir.mk.tmp"); + start_output_file("${dir_prefix}Dir.mk.tmp"); if ($node->[2]) { filter_subdir_mk(\%targets); } else { - my $sdmk = "${dir_prefix}Subdir.sd.mk"; + my $sdmk = "${dir_prefix}Dir.sd.mk"; if (stat $sdmk) { die "subdirmk: $sdmk unexpectedly exists (${dir_prefix} not mentioned on subdirmk/generate command line, maybe directory is missing from SUBDIRMK_SUBDIRS)"; diff --git a/regen.mk.in b/regen.mk.in index bdb1b27..7150bb1 100644 --- a/regen.mk.in +++ b/regen.mk.in @@ -5,7 +5,7 @@ # Usage: # include subdirmk/regen.mk -# (probably in toplevel Subdir.sd.mk) +# (probably in toplevel Dir.sd.mk) # # Arranges that config.status is automatically rerun to update # makefiles from templates, whenever a template *.sd.mk or *.mk.in is @@ -55,15 +55,15 @@ main.mk $(SUBDIRMK_MAKEFILES) $(CONFIG_STATUS_OUTPUTS): .makefiles.stamp # This filtering arranges that we can often run config.status to # generate only particular output files. We look for *inputs* that # have changed. If the only inputs that have changed are ones that we -# know affect only one output (Subdir.sd.mk, Final.sd.mk and *.mk.in), +# know affect only one output (Dir.sd.mk, Final.sd.mk and *.mk.in), # we pass config.status the corresponding output file names. # Otherwise we pass nothing and config.status does them all. We need -# to mention Subdir.sd.mk twice because if $(top_srcdir) is `.', make +# to mention Dir.sd.mk twice because if $(top_srcdir) is `.', make # elides the directory part from $?. Similarly but not identically # Final.sd.mk. $(SUBDIRMK_REGEN_NDEBUG): REGEN STAMP WANTS DEPS=$? ./$(CONFIG_STATUS) $(if \ - $(filter-out Subdir.sd.mk %/Subdir.sd.mk \ + $(filter-out Dir.sd.mk %/Dir.sd.mk \ Final.sd.mk $(top_srcdir)/Final.sd.mk \ %.mk.in \ , $?),, \ diff --git a/subdirmk.ac b/subdirmk.ac index 9498a86..142b6f5 100644 --- a/subdirmk.ac +++ b/subdirmk.ac @@ -14,7 +14,7 @@ m4_map_args_w([$1],[_SUBDIRMK_SUBDIR(],[/)])])dnl AC_DEFUN_ONCE([_SUBDIRMK_INIT],[ AC_CONFIG_FILES([ main.mk:main.mk.tmp - Subdir.mk:Subdir.mk.tmp + Dir.mk:Dir.mk.tmp Final.mk:Final.mk.tmp ],[],[ '$srcdir'/subdirmk/generate --srcdir='$srcdir' $subdirmk_subdirs @@ -24,7 +24,7 @@ AC_DEFUN_ONCE([_SUBDIRMK_INIT],[ AC_DEFUN([_SUBDIRMK_SUBDIR],[ subdirmk_subdirs="$subdirmk_subdirs '$1'" - AC_CONFIG_FILES([$1Subdir.mk:$1Subdir.mk.tmp]) + AC_CONFIG_FILES([$1Dir.mk:$1Dir.mk.tmp]) ]) AC_DEFUN([SUBDIRMK_MAKEFILES], diff --git a/tests/example/check b/tests/example/check index 16cb7a2..d7fff17 100755 --- a/tests/example/check +++ b/tests/example/check @@ -37,7 +37,7 @@ reset_times () { reset_times echo 'for-check-1:' >>../src/for-test.sd.mk make -j4 for-check-1 -grep '^for-check-1:' src/Subdir.mk || false +grep '^for-check-1:' src/Dir.mk || false : ----- for-check-2 ----- reset_times diff --git a/tests/filter/Subdir.mk.expected b/tests/filter/Dir.mk.expected similarity index 100% rename from tests/filter/Subdir.mk.expected rename to tests/filter/Dir.mk.expected diff --git a/tests/filter/Subdir.sd.mk b/tests/filter/Dir.sd.mk similarity index 100% rename from tests/filter/Subdir.sd.mk rename to tests/filter/Dir.sd.mk diff --git a/tests/filter/main.mk.expected b/tests/filter/main.mk.expected index cd40d9f..58a3024 100644 --- a/tests/filter/main.mk.expected +++ b/tests/filter/main.mk.expected @@ -3,15 +3,15 @@ top_srcdir=@top_srcdir@ abs_top_srcdir=@abs_top_srcdir@ SUBDIRMK_MAKEFILES := MAKEFILE_TEMPLATES := -SUBDIRMK_MAKEFILES += Subdir.mk -SUBDIRMK_MAKEFILES += sub/Subdir.mk -SUBDIRMK_MAKEFILES += sub/dir/Subdir.mk +SUBDIRMK_MAKEFILES += Dir.mk +SUBDIRMK_MAKEFILES += sub/Dir.mk +SUBDIRMK_MAKEFILES += sub/dir/Dir.mk SUBDIRMK_MAKEFILES += Final.mk +MAKEFILE_TEMPLATES += ./Dir.sd.mk MAKEFILE_TEMPLATES += ./Final.sd.mk MAKEFILE_TEMPLATES += ./Prefix.sd.mk -MAKEFILE_TEMPLATES += ./Subdir.sd.mk MAKEFILE_TEMPLATES += ./Suffix.sd.mk MAKEFILE_TEMPLATES += ./doctest.sd.mk -MAKEFILE_TEMPLATES += ./sub/dir/Subdir.sd.mk +MAKEFILE_TEMPLATES += ./sub/dir/Dir.sd.mk MAKEFILE_TEMPLATES += ./sub/dir/doctest.sd.mk include $(SUBDIRMK_MAKEFILES) diff --git a/tests/filter/sub/Subdir.mk.expected b/tests/filter/sub/Dir.mk.expected similarity index 100% rename from tests/filter/sub/Subdir.mk.expected rename to tests/filter/sub/Dir.mk.expected diff --git a/tests/filter/sub/dir/Subdir.mk.expected b/tests/filter/sub/dir/Dir.mk.expected similarity index 100% rename from tests/filter/sub/dir/Subdir.mk.expected rename to tests/filter/sub/dir/Dir.mk.expected diff --git a/tests/filter/sub/dir/Subdir.sd.mk b/tests/filter/sub/dir/Dir.sd.mk similarity index 100% rename from tests/filter/sub/dir/Subdir.sd.mk rename to tests/filter/sub/dir/Dir.sd.mk diff --git a/usual.mk.in b/usual.mk.in index 66c71eb..d7067d1 100644 --- a/usual.mk.in +++ b/usual.mk.in @@ -5,7 +5,7 @@ # Usage: # include subdirmk/usual.mk -# (probably in toplevel Subdir.sd.mk) +# (probably in toplevel Dir.sd.mk) # # Provides various conventional `make' variables, and a # rule for compiling C programs.