Skip to content

Commit 7366528

Browse files
authored
Merge e4472a3 into ee388a7
2 parents ee388a7 + e4472a3 commit 7366528

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+507
-227
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
/_install_pkgprotodir/
1515
Makefile
1616
Makefile.in
17+
tags
1718

1819
## Parent directory only
1920
/aclocal.m4

Makefile.am

Lines changed: 72 additions & 72 deletions
Large diffs are not rendered by default.

NEWS.adoc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,12 @@ https://github.com/networkupstools/nut/milestone/12
9797
not normally get into those code paths with the `x*()` methods which
9898
should bail out and abort the program with a common error message when
9999
an allocation fails. [#3293]
100+
* We have long abstracted `(s)size_t` value printing in debug logs etc.
101+
using `PRIuSIZE` and similar macros. They fell back to `"%zu"` when not
102+
provided otherwise, but not all platforms actually deliver these format
103+
characters. Now it is evaluated at `configure` time (to check that the
104+
characters may be used), and if not -- during `nut_stdint.h` parsing to
105+
fit known `int`/`long`/`long long` types. [#3300]
100106

101107
- NUT for Windows specific updates:
102108
* Revised detection of (relative) paths to program and configuration files
@@ -426,11 +432,22 @@ several `FSD` notifications into one executed action. [PR #3097]
426432
* Fixed `m4/ax_realpath_lib.m4` up with more ways to try and gauge the
427433
build-time library name from linker/compiler, to improve the chances
428434
that `nut-scanner` would find them. [#3293]
435+
* Added an option to (primarily) `--disable-threading` for systems with
436+
detected but broken `libpthread` support, or to test alternate code
437+
paths during development or in CI. [#3300]
429438

430439
- Recipes, CI and helper script updates not classified above:
431440
* Fixed CI recipes for PyPI publication of PyNUT(Client) module to also
432441
include the source distribution (was posted for NUT v2.8.1 and v2.8.2
433442
tagged releases, but absent for v2.8.3 and v2.8.4). [#3056]
443+
* A new version of BSD `make` in NetBSD 11 (Beta) aka `bmake` in some other
444+
operating systems, complains about some of our sub-`$(MAKE)` calls despite
445+
the explicit `+` prefix in corresponding lines, possibly because that call
446+
happens not directly in a rule definition, but in a substituted shell code
447+
snippet. The recommended workaround was to add a "Special Source" called
448+
`.MAKE` to let the tool know that we expect sub-makes in that recipe.
449+
However, *other* `make` implementations do not know about this token,
450+
so its support is tried and detected at `configure` time. [PR #3300]
434451
* Updated `make spellcheck` to help avoid asciidoc admonition blocks with
435452
visually invalid sentences (after rendering as a box in HTML or PDF).
436453
[#3077]

UPGRADING.adoc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,10 @@ Changes from 2.8.4 to 2.8.5
125125
updated, either to explicitly package the binding for several versions,
126126
or to not-deliver files no longer installed into the prototype area. [#1792]
127127
128+
- Added a `configure` script option to (primarily) `--disable-threading`
129+
for systems with detected but broken `libpthread` support, which can
130+
cause `nut-scanner` to crash while loading system libraries. [#3300]
131+
128132
- Introduced a new driver category for interaction with OS-reported UPS
129133
devices via D-Bus, with the `nut-upower` driver as the first implementation.
130134
This driver requires `glib-2.0` and `gio-2.0` development libraries to be

clients/Makefile.am

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ $(top_builddir)/common/libcommon.la \
2323
$(top_builddir)/common/libcommonclient.la \
2424
$(top_builddir)/common/libcommonversion.la \
2525
$(top_builddir)/common/libcommonstrjson.la \
26-
$(top_builddir)/common/libparseconf.la: dummy
26+
$(top_builddir)/common/libparseconf.la: dummy @dotMAKE@
2727
+@cd $(@D) && $(MAKE) $(AM_MAKEFLAGS) $(@F)
2828

2929
# Builds from root dir arrange stuff decently. Make sure parallel builds
@@ -39,7 +39,7 @@ LDADD_CLIENT =
3939
if ENABLE_SHARED_PRIVATE_LIBS
4040
$(top_builddir)/common/libcommonversion-private.la \
4141
$(top_builddir)/common/libnutprivate-@NUT_SOURCE_GITREV_SEMVER_UNDERSCORES@-common-all.la \
42-
$(top_builddir)/common/libnutprivate-@NUT_SOURCE_GITREV_SEMVER_UNDERSCORES@-common-client.la: dummy
42+
$(top_builddir)/common/libnutprivate-@NUT_SOURCE_GITREV_SEMVER_UNDERSCORES@-common-client.la: dummy @dotMAKE@
4343
+@cd $(@D) && $(MAKE) $(AM_MAKEFLAGS) $(@F)
4444

4545
$(top_builddir)/common/libcommonversion-private.la: $(top_builddir)/include/nut_version.h

common/Makefile.am

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ else !BUILDING_IN_TREE
9292
BUILT_SOURCES = common-nut_version.c
9393
endif !BUILDING_IN_TREE
9494

95-
$(top_builddir)/include/nut_version.h:
95+
$(top_builddir)/include/nut_version.h: @dotMAKE@
9696
+@if [ -s '$@' ] && ( [ x"$(NUT_VERSION_H_GENERATED)" = xtrue ] || [ x"$${NUT_VERSION_H_GENERATED}" = xtrue ] ) ; then \
9797
if [ x"$(MAINTAINER_GENERATE_HEADER_DEBUG)" = xyes ] ; then \
9898
echo "=== SKIP (common) $@ (NUT_VERSION_H_GENERATED makevar=$(NUT_VERSION_H_GENERATED) shellvar=$${NUT_VERSION_H_GENERATED})" >&2; \

common/common.c

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3767,7 +3767,13 @@ char * mkstr_dynamic(const char *fmt_dynamic, const char *fmt_reference, ...)
37673767
static void vupslog(int priority, const char *fmt, va_list va, int use_strerror)
37683768
{
37693769
int ret, errno_orig = errno;
3770+
#ifdef HAVE_VA_COPY_VARIANT
3771+
size_t bufsize = 128;
3772+
#else
3773+
/* err on the safe(r) side, as re-runs can truncate
3774+
* the output when varargs are re-used */
37703775
size_t bufsize = LARGEBUF;
3776+
#endif
37713777
char *buf = (char *)xcalloc(bufsize, sizeof(char));
37723778

37733779
/* Be pedantic about our limitations */
@@ -3827,7 +3833,7 @@ static void vupslog(int priority, const char *fmt, va_list va, int use_strerror)
38273833
* Based on https://stackoverflow.com/a/72981237/4715872
38283834
*/
38293835
if (bufsize < SIZE_MAX/2) {
3830-
size_t newbufsize = bufsize*2;
3836+
size_t newbufsize = bufsize < LARGEBUF ? LARGEBUF : bufsize*2;
38313837
if (ret > 0) {
38323838
/* Be generous, we snprintfcat() some
38333839
* suffixes, prefix a timestamp, etc. */
@@ -4819,10 +4825,16 @@ void nut_prepare_search_paths(void) {
48194825
size_t count_builtin = 0, count_filtered = 0, i, j, index = 0;
48204826
const char ** filtered_search_paths;
48214827
DIR *dp;
4828+
#if HAVE_DECL_REALPATH
4829+
/* Per docs, buffer must be at least PATH_MAX bytes */
4830+
char realpath_buf[NUT_PATH_MAX + 1] = {0}, *realpath_dirname = NULL;
4831+
#endif
48224832

48234833
/* As a starting point, allow at least as many items as before */
48244834
/* TODO: somehow extend (xrealloc?) if we mix other paths later */
4825-
for (i = 0; search_paths_builtin[i] != NULL; i++) {}
4835+
for (i = 0; search_paths_builtin[i] != NULL; i++) {
4836+
upsdebugx(7, "counting search_paths_builtin[%d] : %s", i, search_paths_builtin[i]);
4837+
}
48264838
count_builtin = i + 1; /* +1 for the NULL */
48274839

48284840
/* Bytes inside should all be zeroed... */
@@ -4834,22 +4846,35 @@ void nut_prepare_search_paths(void) {
48344846
int dupe = 0;
48354847
const char *dirname = search_paths_builtin[i];
48364848

4849+
upsdebugx(7, "%s: checking search_paths_builtin[%" PRIuSIZE " of %" PRIuSIZE "] : %s",
4850+
__func__, i, count_builtin - 1, NUT_STRARG(dirname));
48374851
if ((dp = opendir(dirname)) == NULL) {
48384852
upsdebugx(5, "%s: SKIP "
48394853
"unreachable directory #%" PRIuSIZE " : %s",
4840-
__func__, index++, dirname);
4854+
__func__, index, NUT_STRARG(dirname));
4855+
index++;
48414856
continue;
48424857
}
48434858
index++;
48444859

48454860
#if HAVE_DECL_REALPATH
48464861
/* allocates the buffer we free() later */
4847-
dirname = (const char *)realpath(dirname, NULL);
4862+
upsdebugx(7, "%s: call realpath()", __func__);
4863+
errno = 0;
4864+
realpath_dirname = realpath(dirname, realpath_buf);
4865+
if (errno || !realpath_dirname)
4866+
upsdebug_with_errno(7, "%s: realpath() failed and returned: %s", __func__, NUT_STRARG(realpath_dirname));
4867+
else
4868+
upsdebugx(7, "%s: realpath() returned: %s", __func__, NUT_STRARG(realpath_dirname));
4869+
if (realpath_dirname)
4870+
dirname = (const char *)realpath_dirname;
48484871
#endif
48494872

48504873
/* Revise for duplicates */
48514874
/* Note: (count_filtered == 0) means first existing dir seen, no hassle */
48524875
for (j = 0; j < count_filtered; j++) {
4876+
upsdebugx(7, "%s: check for duplicates filtered_search_paths[%" PRIuSIZE " of %" PRIuSIZE "] : %s",
4877+
__func__, j, count_filtered, NUT_STRARG(filtered_search_paths[j]));
48534878
if (!strcmp(filtered_search_paths[j], dirname)) {
48544879
#if HAVE_DECL_REALPATH
48554880
if (strcmp(search_paths_builtin[i], dirname)) {
@@ -4984,7 +5009,7 @@ static char * get_libname_in_dir(const char* base_libname, size_t base_libname_l
49845009
char current_test_path[NUT_PATH_MAX + 1];
49855010

49865011
upsdebugx(3, "%s('%s', %" PRIuSIZE ", '%s', %i): Entering method...",
4987-
__func__, base_libname, base_libname_length, dirname, index);
5012+
__func__, NUT_STRARG(base_libname), base_libname_length, NUT_STRARG(dirname), index);
49885013

49895014
memset(current_test_path, 0, sizeof(current_test_path));
49905015

@@ -5117,7 +5142,7 @@ static char * get_libname_in_pathset(const char* base_libname, size_t base_libna
51175142
/* First call to tokenization passes the string, others pass NULL */
51185143
pathset_tmp = xstrdup(pathset);
51195144
upsdebugx(4, "%s: Looking for lib %s in a colon-separated path set",
5120-
__func__, base_libname);
5145+
__func__, NUT_STRARG(base_libname));
51215146
while (NULL != (onedir = strtok( (onedir ? NULL : pathset_tmp), ":" ))) {
51225147
libname_path = get_libname_in_dir(base_libname, base_libname_length, onedir, (*counter)++);
51235148
if (libname_path != NULL)
@@ -5153,7 +5178,7 @@ char * get_libname(const char* base_libname)
51535178
size_t base_libname_length = strlen(base_libname);
51545179
struct stat st;
51555180

5156-
upsdebugx(3, "%s('%s'): Entering method...", __func__, base_libname);
5181+
upsdebugx(3, "%s('%s'): Entering method...", __func__, NUT_STRARG(base_libname));
51575182

51585183
/* First, check for an exact hit by absolute/relative path
51595184
* if `base_libname` includes path separator character(s) */

conf/Makefile.am

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,20 @@ SPELLCHECK_SRC = $(dist_sysconf_DATA) \
3737
# We also have to export some variables that may be tainted by relative
3838
# paths when parsing the other makefile (e.g. MKDIR_P that may be defined
3939
# via expanded $(top_builddir)/install-sh):
40-
#%-spellchecked: % Makefile.am $(top_srcdir)/docs/Makefile.am $(abs_srcdir)/$(NUT_SPELL_DICT)
40+
#%-spellchecked: % Makefile.am $(top_srcdir)/docs/Makefile.am $(abs_srcdir)/$(NUT_SPELL_DICT) @dotMAKE@
4141
# +$(MAKE) -s -f $(top_builddir)/docs/Makefile $(AM_MAKEFLAGS) MKDIR_P="$(MKDIR_P)" builddir="$(builddir)" srcdir="$(srcdir)" top_builddir="$(top_builddir)" top_srcdir="$(top_srcdir)" SPELLCHECK_SRC_ONE="$<" SPELLCHECK_SRCDIR="$(srcdir)" SPELLCHECK_BUILDDIR="$(builddir)" $@
4242

4343
# NOTE: Portable suffix rules do not allow prerequisites, so we shim them here
4444
# by a wildcard target in case the make implementation can put the two together.
4545
*-spellchecked: Makefile.am $(top_srcdir)/docs/Makefile.am $(abs_srcdir)/$(NUT_SPELL_DICT)
4646

47-
.sample.sample-spellchecked:
47+
.sample.sample-spellchecked: @dotMAKE@
4848
+$(MAKE) -s -f $(top_builddir)/docs/Makefile $(AM_MAKEFLAGS) MKDIR_P="$(MKDIR_P)" builddir="$(builddir)" srcdir="$(srcdir)" top_builddir="$(top_builddir)" top_srcdir="$(top_srcdir)" SPELLCHECK_SRC_ONE="$<" SPELLCHECK_SRCDIR="$(srcdir)" SPELLCHECK_BUILDDIR="$(builddir)" $@
4949

50-
.in.in-spellchecked:
50+
.in.in-spellchecked: @dotMAKE@
5151
+$(MAKE) -s -f $(top_builddir)/docs/Makefile $(AM_MAKEFLAGS) MKDIR_P="$(MKDIR_P)" builddir="$(builddir)" srcdir="$(srcdir)" top_builddir="$(top_builddir)" top_srcdir="$(top_srcdir)" SPELLCHECK_SRC_ONE="$<" SPELLCHECK_SRCDIR="$(srcdir)" SPELLCHECK_BUILDDIR="$(builddir)" $@
5252

53-
spellcheck spellcheck-interactive spellcheck-sortdict:
53+
spellcheck spellcheck-interactive spellcheck-sortdict: @dotMAKE@
5454
+$(MAKE) -f $(top_builddir)/docs/Makefile $(AM_MAKEFLAGS) MKDIR_P="$(MKDIR_P)" builddir="$(builddir)" srcdir="$(srcdir)" top_builddir="$(top_builddir)" top_srcdir="$(top_srcdir)" SPELLCHECK_SRC="$(SPELLCHECK_SRC)" SPELLCHECK_SRCDIR="$(srcdir)" SPELLCHECK_BUILDDIR="$(builddir)" $@
5555

5656

configure.ac

Lines changed: 68 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ NUT_ARG_WITH_EXPAND_DEFAULT_HELP_SINGLEQUOTE([confdir-examples], [DIRPATH], [Com
317317

318318
dnl ---------------------------------------------------------------------
319319
dnl GNU and BSD make are okay with the syntax, but Sun make/dmake are not:
320-
AC_MSG_CHECKING([whether this make implementation supports export VAR=VAL syntax])
320+
AC_MSG_CHECKING([whether this make implementation supports 'export VAR=VAL' syntax])
321321
dnl # using printf formatting for some funniner shells out there
322322
nut_am_output="`printf 'export VAR=VAL\ntest:\n\t@echo \"VAR=%s%sVAR%s\"\n' '\$' '(' ')' | ${MAKE-make} -f - test`"
323323
nut_am_result="$?"
@@ -330,6 +330,24 @@ AS_IF([test x"${nut_am_result}" = x0 -a x"${nut_am_output}" = x"VAR=VAL"], [
330330
])
331331
AC_SUBST(NUT_AM_MAKE_CAN_EXPORT)
332332

333+
dnl ---------------------------------------------------------------------
334+
dnl Some versions of BSD make (e.g. in NetBSD 11) may require this syntax
335+
dnl in lieu of the more standard "+" prefix, but at least GNU make exploded
336+
dnl with it, so we can not use it everywhere:
337+
AC_MSG_CHECKING([whether this make implementation supports a .MAKE special source (pseudo-goal for sub-makes)])
338+
dnl # using printf formatting for some funniner shells out there
339+
nut_am_output="`printf 'sub: .MAKE\n\t@printf \\\"test:\\\\n\\\\t@echo %s\\\\n\\\" | $(MAKE) -f - test\n' '\\\\\\\"Hello world\\\\\\\"' | ${MAKE-make} -f - sub`"
340+
nut_am_result="$?"
341+
AS_IF([test x"${nut_am_result}" = x0 -a x"${nut_am_output}" = x"Hello world"], [
342+
dotMAKE=".MAKE"
343+
AC_MSG_RESULT(yes)
344+
], [
345+
dotMAKE=""
346+
AC_MSG_RESULT(no: got '${nut_am_output}')
347+
])
348+
AC_SUBST(dotMAKE)
349+
350+
dnl ---------------------------------------------------------------------
333351
dnl Some systems have older autotools without direct macro support for PKG_CONF*
334352
NUT_CHECK_PKGCONFIG
335353

@@ -393,8 +411,8 @@ test "${prefix}" = "NONE" && prefix="${ac_default_prefix}"
393411
test "${exec_prefix}" = "NONE" && exec_prefix='${prefix}'
394412

395413
AS_CASE([x"${nut_with_confdir}"],
396-
[yes], [AC_MSG_ERROR([--with-confdir should specify a path name or expansible expression])],
397-
[/*|?:\*|?:/*|*/*|*'\'*], [
414+
[xyes], [AC_MSG_ERROR([--with-confdir should specify a path name or expansible expression])],
415+
[x/*|x?":\\"*|x?:/*|x*/*|x*'\'*], [
398416
AC_MSG_NOTICE([A non-trivial --with-confdir path was specified (${nut_with_confdir}); any --with-confdir-suffix (${nut_with_confdir_suffix}) or --sysconfdir (${sysconfdir}) values are disregarded])
399417
], [
400418
RESULT_COMMENT=""
@@ -1373,6 +1391,25 @@ if (semaphore != SEM_FAILED)
13731391
)
13741392
AM_CONDITIONAL(HAVE_SEMAPHORE_LIBS, test -n "${SEMLIBS}")
13751393

1394+
dnl ----------------------------------------------------------------------
1395+
dnl Check for --with-threading request
1396+
1397+
NUT_ARG_WITH([threading],
1398+
[If it is possible to parallelize some tools (e.g. nut-scanner), do so?],
1399+
[auto])
1400+
1401+
AC_MSG_CHECKING([Whether to enable support for parallelization of some tools])
1402+
AS_CASE(["${nut_with_threading}"],
1403+
[""|yes], [AM_COND_IF([HAVE_SEMAPHORE_LIBS], [], [AC_MSG_ERROR([pthread support was required but libraries not detected])])],
1404+
[auto],[AM_COND_IF([HAVE_SEMAPHORE_LIBS], [nut_with_threading=yes], [nut_with_threading=no])],
1405+
[no], [],
1406+
[AC_MSG_ERROR([Unsupported value for --with-threading option: "${nut_with_threading}"])]
1407+
)
1408+
AC_MSG_RESULT([${nut_with_threading}])
1409+
NUT_REPORT_FEATURE([Enable support for parallelization of some tools], [${nut_with_threading}], [${SEMLIBS}],
1410+
[WITH_THREADING], [Define to enable build with threading support])
1411+
1412+
dnl ----------------------------------------------------------------------
13761413
AC_CHECK_FUNCS(cfsetispeed tcsendbreak)
13771414
AC_CHECK_FUNCS(seteuid setsid getpassphrase)
13781415
AC_CHECK_FUNCS(on_exit setlogmask)
@@ -1618,6 +1655,24 @@ AS_IF([test x"${ac_cv_func_strdup}" = xyes],
16181655
[AC_MSG_WARN([Required C library routine strdup not found; try adding -D_POSIX_C_SOURCE=200112L])]
16191656
)
16201657

1658+
AC_CACHE_CHECK([for %zu as PRIuSIZE],
1659+
[ac_cv_printfmt_zu],
1660+
[AX_RUN_OR_LINK_IFELSE(
1661+
[AC_LANG_PROGRAM([$CODE_STRINGINCL
1662+
#include <stdlib.h>
1663+
],
1664+
[[size_t n = 123;
1665+
char buf[64];
1666+
snprintf(buf, sizeof(buf), "%zu", n);
1667+
return !strcmp(buf, "123");
1668+
]])],
1669+
[ac_cv_printfmt_zu=yes], [ac_cv_printfmt_zu=no]
1670+
)])
1671+
AS_IF([test x"${ac_cv_printfmt_zu}" = xyes],
1672+
[AC_DEFINE([HAVE_PRINTF_ZU], 1, [defined if standard library has, and C standard allows, the printf("%zu", size_t) support])],
1673+
[AC_MSG_WARN([Desired C library support for printf("%zu", size_t) not found; try adding -D_POSIX_C_SOURCE=200112L])]
1674+
)
1675+
16211676
AC_CACHE_CHECK([for va_copy(dest,src)],
16221677
[ac_cv_have_va_copy],
16231678
[
@@ -3122,8 +3177,14 @@ if test "${nut_with_gpio}" != "no"; then
31223177
fi
31233178

31243179
dnl NOTE: m4 scriptlet also defines WITH_LIBGPIO_VERSION like 0x00020000 in config.h
3125-
NUT_REPORT_DRIVER([build GPIO driver (library v${GPIO_VERSION})], [${nut_with_gpio}], [${nut_gpio_lib}],
3180+
AS_IF([test x"${GPIO_VERSION}" = xnone], [
3181+
REPORT_GPIO_VERSION="library version not detected"
3182+
],[
3183+
REPORT_GPIO_VERSION="library v${GPIO_VERSION}"
3184+
])
3185+
NUT_REPORT_DRIVER([build GPIO driver (${REPORT_GPIO_VERSION})], [${nut_with_gpio}], [${nut_gpio_lib}],
31263186
[WITH_GPIO], [Define to enable GPIO support])
3187+
unset REPORT_GPIO_VERSION
31273188

31283189
dnl ----------------------------------------------------------------------
31293190
dnl The Mac OS X meta-driver looks at IOKit Power Sources keys managed by
@@ -7204,4 +7265,7 @@ AS_IF([test x"${theMAKE}" = x], [theMAKE="make"])
72047265
AC_MSG_NOTICE([==========================================================])
72057266
AC_MSG_NOTICE([Configuration complete: Run '$theMAKE' to build ${NUT_SOURCE_VERSION_REPORT} now.])
72067267
AC_MSG_NOTICE([You may use parallelism if supported by your hardware and 'make' implementation, e.g. '$theMAKE -j 8'])
7268+
AS_IF([test x"${dotMAKE}" = x.MAKE], [
7269+
AC_MSG_NOTICE([WARNING: do not use (parallel) GNU make with this build configuration!])
7270+
])
72077271
AC_MSG_NOTICE([==========================================================])

data/Makefile.am

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ check-local:
1818
# We also have to export some variables that may be tainted by relative
1919
# paths when parsing the other makefile (e.g. MKDIR_P that may be defined
2020
# via expanded $(top_builddir)/install-sh):
21-
#%-spellchecked: % Makefile.am $(top_srcdir)/docs/Makefile.am $(abs_srcdir)/$(NUT_SPELL_DICT)
21+
#%-spellchecked: % Makefile.am $(top_srcdir)/docs/Makefile.am $(abs_srcdir)/$(NUT_SPELL_DICT) @dotMAKE@
2222
# +$(MAKE) -s -f $(top_builddir)/docs/Makefile $(AM_MAKEFLAGS) MKDIR_P="$(MKDIR_P)" builddir="$(builddir)" srcdir="$(srcdir)" top_builddir="$(top_builddir)" top_srcdir="$(top_srcdir)" SPELLCHECK_SRC_ONE="$<" SPELLCHECK_SRCDIR="$(srcdir)" SPELLCHECK_BUILDDIR="$(builddir)" $@
2323

24-
cmdvartab-spellchecked: cmdvartab Makefile.am $(top_srcdir)/docs/Makefile.am $(abs_srcdir)/$(NUT_SPELL_DICT)
24+
cmdvartab-spellchecked: cmdvartab Makefile.am $(top_srcdir)/docs/Makefile.am $(abs_srcdir)/$(NUT_SPELL_DICT) @dotMAKE@
2525
+$(MAKE) -s -f $(top_builddir)/docs/Makefile $(AM_MAKEFLAGS) MKDIR_P="$(MKDIR_P)" builddir="$(builddir)" srcdir="$(srcdir)" top_builddir="$(top_builddir)" top_srcdir="$(top_srcdir)" SPELLCHECK_SRC_ONE="$<" SPELLCHECK_SRCDIR="$(srcdir)" SPELLCHECK_BUILDDIR="$(builddir)" $@
2626

27-
spellcheck spellcheck-interactive spellcheck-sortdict:
27+
spellcheck spellcheck-interactive spellcheck-sortdict: @dotMAKE@
2828
+$(MAKE) -f $(top_builddir)/docs/Makefile $(AM_MAKEFLAGS) MKDIR_P="$(MKDIR_P)" builddir="$(builddir)" srcdir="$(srcdir)" top_builddir="$(top_builddir)" top_srcdir="$(top_srcdir)" SPELLCHECK_SRC="cmdvartab" SPELLCHECK_SRCDIR="$(srcdir)" SPELLCHECK_BUILDDIR="$(builddir)" $@
2929

3030
MAINTAINERCLEANFILES = Makefile.in .dirstamp

0 commit comments

Comments
 (0)