3 * Addressed an issue in which NL_ENABLE_COVERAGE,
4 NL_ENABLE_DEBUG, and NL_ENABLE_OPTIMIZATION failed to
5 correctly transform their respective flags when the values
6 they control are satisfied from the configuration cache.
10 * Incorporated changes to refactor makedirs to use sentinel
11 files rather than forced phony targets. Renamed makedirs
12 (MAKEDIRS and MAKEDIRS_TARGETS) to foreign dependencies
13 (NLFOREIGN_SUBDIR_DEPENDENCIES and
14 NLFOREIGN_FILE_DEPENDENCIES).
16 * Added foreign dependency examples to the project skeleton.
18 * Addressed an issue to allow nl-check-file-with-subroutine to
19 tolerate parallel builds.
21 * Addressed shellcheck and other minor issues with
26 * Addressed an issue in which the use of MAKDIRS and
27 MAKEDIRS_TARGETS resulted in undesireable target rebuilds.
31 * Added support for project-global targets and target
32 subdirectories that can be used to allow for "build from
33 anywhere plus dependencies" functionality that does not
34 first require a top-level build.
36 * Added jobs support for tools/packages/build to take
37 advantage of multi-CPUs/-cores when available.
41 * Ensure that 'coverage-recursive' is included in the
42 canonical set of known recursive targets such that
43 dependency rules like "$(RECURSIVE_TARGETS):
44 $(lib_LIBRARIES)" work correctly.
48 * Collapse generate-coverage-report and
49 generate-coverage-report-with-filter into a single function.
53 * Suppress non-failure diagnostic output from bootstrap tool actions
54 unless there is failure status from those actions or the
55 verbose flag has been asserted.
57 * Ensure failure status from bootstrap tool actions is
58 captured and passed to invoking processes.
62 * Allow examples/bootstrap may be run from anywhere.
68 * Ensure that several scripts that use bashisms specify bash
69 for the shebang. Additionally, invoke bash through env to
70 maximize downrev shell compatibility.
72 * Add tools/host/... to .gitignore.
76 * Fix awk invocation error in tools/packages/build triggered by
81 * Address a typo in bootstrap scripts introduced in 1.6.17.
85 * Avoid potential disagreement among srcdir and abs_srcdir for
88 * Address shellcheck warnings.
92 * Allow absolute paths in PRETTY_FILES.
96 * Remove redundant libtool m4 libraries.
100 * Update MANIFEST to ensure that 'make dist' works correctly.
104 * Update coreutils to a newer version s.t. they build cleanly
105 on linux systems with GLIBC 2.28 or newer. Remove the strip
106 from install libraries to allow coreutils to be installed on
111 * install-headers target now depends on BUILT_SOURCES to
112 enable installation of generated headers
116 * Changed the bootstrap shebang from sh to bash to address a
117 bashism that arrived at 1.6.10.
121 * Added additional up-front checks to the bootstrap script to
122 ensure required executables are available.
126 * Now that both automake and pure make headers and footers are
127 co-mingled, address an issues in which the .DEFAULT_GOAL
128 specifications in the repos.mak footer were conflicting with
129 makefiles that wanted a different default goal by moving
130 those .DEFAULT_GOAL specifications to Makefile-bootstrap.
134 * Downgraded m4 from 1.4.17 to 1.4.5 since 1.4.5 seems to be the
135 last version of m4 that does not abort on invocation in the m4
136 *rintf and friends compatibility and portability library.
138 * Leverage both automake and pure make headers and footers by
139 including the latter in the former.
141 * Reworked how verbose progress is handled to simplify
142 specification of progress macros.
144 * Rebased several automake header macros implementations on their
145 pure make equivalents.
149 * Addressed issues with NL_FILTERED_CANONICAL in which the desired
150 content to be filtered was not filtering correctly and in which
151 the desired filtered canonical variables were not emitted in
156 * Added code coverage support for clang, which uses a link flag
157 --coverage instead of linking to a library(-lgov) as gcc does
158 for code coverage functions.
162 * Addressed an issue in which the failure to make the 'repos-warning'
163 target order-only caused dependent repo paths to be repeatedly
164 and unnecessarily remade which, in turn, caused git operations
165 and the configuration or build to fail.
169 * Added support for pulling down remote package dependencies using
170 git clone (default) or git submodule depending on the setting of
171 pull.method in repos.conf.
175 * Added support for coverage-local and check-local targets. Added
176 documentation for all coverage-related targets.
180 * Take a different approach to version flapping against 'make
181 distcheck' by leaving VERSION_FILE as an immediate (:=) variable
182 and instead creating a two-level <PACKAGE>_VERSION variable, the
183 first of which is set from VERSION_FILE by default at make
184 recursion level zero (0).
188 * Address an issue with VERSION_FILE on clean source code control
189 clones or unarchived distribution in which 'make dist' or
190 'make distcheck' fail. VERSION_FILE should be and is
191 intentionally a deferred (=) rather than an immediate (:=)
192 variable to ensure late evaluation AFTER .local-version MAY
193 be created rather than when the makefile containing it is
198 * Added support to repos.conf for a 'commit' key such that a
199 hash or tag other than HEAD for a given repository and
200 branch may be synchronized and checked out.
202 * Made a minor change to the 'bootstrap' script such that it emits
203 the actual action commands that will be executed when the verbose
208 * Address a number of issues with building the prepackaged GNU
209 autotools subset included in nlbuild-autotools for Ubuntu
212 - Fixed "Unescaped left brace in regex is deprecated" that
213 was formerly a warning in Perl 5.22 and is now a hard error
216 - Address new glibc glob interface changes by upgrading from
217 make-3.82 to make-4.1 and applying relevant Ubuntu Bionic
220 * Add support to the package 'build' script to find and apply
221 patches for the above.
225 * Since the '--name-only' option only appears in git-2.6 and later
226 and there are production systems using git version as old as
227 git-1.9, do not use '--name-only' when processing 'repos.conf'.
231 * Addressed a number of typos and grammatical errors in comments
236 * Added support for pulling down remote package dependencies
239 * Addressed an issue in which nl_enable_coverage.m4 did not work
240 correctly on some Linux distributions by specifying coverage
241 libraries under LIBS rather than LDFLAGS.
245 * Addressed an issue where 'mkskeleton' failed while trying to
246 generate "third_party/Makefile.am".
250 * Addressed an issue with NL_{SAVE,RESTORE}_WERROR in which
251 -Werror=<specific> was not handled.
255 * Addressed an issue with the 'make coverage' target where certain
256 make versions may have sensitivites to trailing slashes in order-
261 * Refactored m4 and autotools auxilliary files to ensure that
262 third-party content remains under third_party/....
263 * Addressed issues with generating distributions on Mac OS X
264 where GNU software, including wget, is not available in PATH.
265 * Addressed issue with missing files in MANIFEST.
269 * Remove package archives and prebuilt in-package binaries.
270 * Ensure that GNU tool build process is completely self-sufficient
271 and has no dependencies on installed host binaries.
272 * Add support for generating versioned core and prebuilt package binary
274 * Ensure that 'bootstrap' can work with either prebuilt in-package
275 binaries or with installed host binaries.
279 * Specify the correct m4 URL.
283 * Added the support for detection of supported C++ version.
287 * Use the arguments passed, as designed and intended, to
288 NL_PROG_LNDIR rather than hard-coded values for the GNU cp
293 * Make the 'pretty' and 'pretty-check' targets dependent on
294 $(PRETTY_FILES) and then iterate on a filtered version of $(^) so
295 that make's VPATH engine can be leveraged to find sources and
296 headers that are not in directly stat-able paths listed in
301 * Added support for coding style formatting and checking targets.
305 * Improve the code coverage generation process to cover an entire
310 * Properly handle package optionality when using pkg-config to
311 detect external packages.
315 * Added support for a recursive 'install-headers' target to allow
316 packages that wish to leverage it to install their public headers
317 and only their public headers to DESTDIR on 'make install-headers'
318 without performing any additional build actions.
322 * Refactored NL_WITH_PACKAGE into NL_WITH_REQUIRED_EXTERNAL_PACKAGE,
323 NL_WITH_OPTIONAL_EXTERNAL_PACKAGE, NL_WITH_REQUIRED_INTERNAL_PACKAGE,
324 and NL_WITH_OPTIONAL_INTERNAL_PACKAGE.
328 * Initial revision with GNU m4 1.4.17, autoconf 2.68, automake 1.14.1,
329 libtool 2.4.2, make 3.82, and coreutils 8.21.