mirror of
https://github.com/espressif/openthread.git
synced 2026-09-07 09:40:12 +00:00
[build] update nlbuild-autotools to 1.5.1 (#2677)
This commit is contained in:
committed by
Jonathan Hui
parent
4512fc82e8
commit
982b1e6c8f
+2
-2
@@ -74,12 +74,12 @@ AC_CONFIG_SRCDIR([include/openthread/openthread.h])
|
||||
# Tell autoconf where to find auxilliary build tools (e.g. config.guess,
|
||||
# install-sh, missing, etc.)
|
||||
#
|
||||
AC_CONFIG_AUX_DIR([third_party/nlbuild-autotools/repo/autoconf])
|
||||
AC_CONFIG_AUX_DIR([third_party/nlbuild-autotools/repo/third_party/autoconf])
|
||||
|
||||
#
|
||||
# Tell autoconf where to find auxilliary M4 macros
|
||||
#
|
||||
AC_CONFIG_MACRO_DIR([third_party/nlbuild-autotools/repo/autoconf/m4])
|
||||
AC_CONFIG_MACRO_DIRS([third_party/nlbuild-autotools/repo/third_party/autoconf/m4 third_party/nlbuild-autotools/repo/autoconf/m4])
|
||||
|
||||
#
|
||||
# Tell autoconf what file the package is using to aggregate C preprocessor
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
1.4.4
|
||||
1.5.1
|
||||
|
||||
+15
@@ -1,3 +1,18 @@
|
||||
|
||||
1.5.1 (2018-04-20)
|
||||
|
||||
* Addressed a number of typos and grammatical errors in comments
|
||||
and help output.
|
||||
|
||||
1.5.0 (2018-04-19)
|
||||
|
||||
* Added support for pulling down remote package dependencies
|
||||
using git submodule.
|
||||
|
||||
* Addressed an issue in which nl_enable_coverage.m4 did not work
|
||||
correctly on some Linux distributions by specifying coverage
|
||||
libraries under LIBS rather than LDFLAGS.
|
||||
|
||||
1.4.4 (2018-02-06)
|
||||
|
||||
* Addressed an issue where 'mkskeleton' failed while trying to
|
||||
|
||||
+138
-13
@@ -65,9 +65,15 @@ following POSIX-based build host systems:
|
||||
* x86_64-apple-darwin
|
||||
* x86_64-unknown-linux-gnu
|
||||
|
||||
### Build and Install
|
||||
### Build and Install {#Build_and_Install}
|
||||
|
||||
Simply invoke `make tools` at the top-level of your nlbuild-autotools tree.
|
||||
Simply invoke `make tools` at the top-level of your nlbuild-autotools
|
||||
tree or, for example, from your package or project in which you have
|
||||
integrated nlbuild-autotools:
|
||||
|
||||
```
|
||||
make -C third_party/nlbuild-autotools/repo tools
|
||||
```
|
||||
|
||||
### Download and Expand
|
||||
|
||||
@@ -103,12 +109,8 @@ The nlbuild-autotools package is laid out as follows:
|
||||
| automake/post.am | GNU automake Makefile.am footer included by every makefile. |
|
||||
| automake/pre/ | GNU automake Makefile.am headers. |
|
||||
| automake/pre.am | GNU automake Makefile.am header included by every makefile. |
|
||||
| etc/ | Configurations files used by nlbuild-autotools. |
|
||||
| examples/ | Example template files for starting your own nlbuild-autotools-based project. |
|
||||
| scripts/ | Automation scripts for regenerating the build system and for managing package versions. |
|
||||
| third_party/ | Third-party code and infrastructure used by nlbuild-autotools. |
|
||||
| third_party/autoconf/ | GNU autoconf infrastructure provided by third-parties, including GNU. |
|
||||
| third_party/autoconf/m4/ | GNU m4 macros for configure.ac provided by third-parties, including GNU. |
|
||||
| tools/ | Qualified packages of and pre-built instances of GNU autotools. |
|
||||
| tools/host/ | Pre-built instances of GNU autotools (if installed). |
|
||||
| tools/host/i686-pc-cygwin/ | Pre-built instances of GNU autotools for 32-bit Cygwin (if installed). |
|
||||
@@ -116,17 +118,112 @@ The nlbuild-autotools package is laid out as follows:
|
||||
| tools/host/x86_64-apple-darwin/ | Pre-built instances of GNU autotools for 64-bit Mac OS X (if installed). |
|
||||
| tools/host/x86_64-unknown-linux-gnu/ | Pre-built instances of GNU autotools for 64-bit Linux (if installed). |
|
||||
| tools/packages/ | Qualified packages for GNU autotools. |
|
||||
## Internal Package Dependencies and Repositories
|
||||
|
||||
# Interact
|
||||
Your package may have dependencies on other packages that can either
|
||||
be inlined into your package or can be specified externally. If your
|
||||
package has such dependencies, nlbuild-autotools contains support to
|
||||
facilitate easy standalone tests and a successful 'make distcheck'
|
||||
target (which effectively reqires 'configure' with no arguments to
|
||||
produce a successful build) without incurring the costs of inlining
|
||||
these dependencies into your own package.
|
||||
|
||||
There are numerous avenues for nlbuild-autotools support:
|
||||
nlbuild-autotools supports this by providing a means to pull down
|
||||
external git package repositories that your package depends on using
|
||||
git submodules when you use and support --with-<package>=internal as a
|
||||
location for your dependent packages.
|
||||
|
||||
* Bugs and feature requests — [submit to the Issue Tracker](https://github.com/nestlabs/nlbuild-autotools/issues)
|
||||
* Google Groups — discussion and announcements
|
||||
* [nlbuild-autotools-announce](https://groups.google.com/forum/#!forum/nlbuild-autotools-announce) — release notes and new updates on nlbuild-autotools
|
||||
* [nlbuild-autotools-users](https://groups.google.com/forum/#!forum/nlbuild-autotools-users) — discuss use of and enhancements to nlbuild-autotools
|
||||
The example 'Makefile-bootstrap' has been provided as infrastructure to
|
||||
make this easy for you as a package maintainer and for your package
|
||||
users. The bootstrap makefile supports both the generic 'repos' target
|
||||
to pull down all repositories on which your project depends as well as
|
||||
relative path targets to where those repositories might live in your
|
||||
project when they are internal (e.g,
|
||||
third_party/package/repo).
|
||||
|
||||
# FAQ
|
||||
Consequently, you can, for example, invoke:
|
||||
|
||||
```
|
||||
% make -f Makefile-bootstrap repos
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```
|
||||
% make -f Makefile-bootstrap third_party/package/repo
|
||||
```
|
||||
|
||||
to pull down all repositories or just the repository, for example,
|
||||
placed at 'third_party/package/repos'.
|
||||
|
||||
The bootstrap makefile generated for your package is yours to edit and
|
||||
extend. In fact, hooks have been added so that you can do
|
||||
package-specific work, including recursively pulling down repositories
|
||||
for other packages.
|
||||
|
||||
However, an even better and easier approach for your package users is
|
||||
to integrate the bootstrap makefile repository process into your
|
||||
configure script such that when an "internal" package location is
|
||||
detected, it invokes the bootstrap makefile to perform this work on
|
||||
behalf of the user. For example:
|
||||
|
||||
```
|
||||
# Depending on whether my-package has been configured for an internal
|
||||
# location, its directory stem within this package needs to be set
|
||||
# accordingly. In addition, if the location is internal, then we need
|
||||
# to attempt to pull it down using the bootstrap makefile.
|
||||
|
||||
if test "${nl_with_my_package}" = "internal"; then
|
||||
maybe_my_package_dirstem="my-package/repo"
|
||||
my_package_dirstem="third_party/${maybe_my_package_dirstem}"
|
||||
|
||||
AC_MSG_NOTICE([attempting to create internal ${my_package_dirstem}])
|
||||
${MAKE-make} --no-print-directory -C ${ac_confdir} -f Makefile-bootstrap ${my_package_dirstem}
|
||||
|
||||
if test $? -ne 0; then
|
||||
AC_MSG_ERROR([failed to create ${my_package_dirstem}. Please check your network connection or the correctness of 'repos.conf'])
|
||||
fi
|
||||
else
|
||||
maybe_my_package_dirstem=""
|
||||
fi
|
||||
|
||||
AC_SUBST(MY_PACKAGE_SUBDIRS, [${maybe_my_package_dirstem}])
|
||||
AM_CONDITIONAL([PACKAGE_WITH_MY_PACKAGE_INTERNAL], [test "${nl_with_my_package}" = "internal"])
|
||||
```
|
||||
|
||||
Note, the use of AC_SUBST on MY_PACKAGE_SUBDIRS to provide a mechanism
|
||||
to conditionally populate SUBDIRS in the appropriate automake file
|
||||
locations such that GNU autoconf does not generate syntax errors about
|
||||
the potential absence of the subdirectory at bootstrap time.
|
||||
|
||||
Of course, in either case, network connectivity is required to reach
|
||||
the external git server hosting the packages on which your project
|
||||
depends.
|
||||
|
||||
In addition to the 'repos' target, the bootstrap makefile also
|
||||
supports the 'clean-repos' target that undoes the work of the 'repos'
|
||||
target. It will clean-up all of the synchronized repositories, all the
|
||||
while being careful to ensure it does not disturb existing git or git
|
||||
submodule state your project might be using.
|
||||
|
||||
The infrastructure all works, of course, whether you are working in or
|
||||
out of git and whether you have colocated or non-colocated source and
|
||||
build directories.
|
||||
|
||||
### Configuration
|
||||
|
||||
This dependent repository feature of nlbuild-autotools uses a file,
|
||||
'repos.conf', at the top level of your project source directory to
|
||||
determine what external project repositories your package might want
|
||||
to pull down, the location of their git server, the branch you want to
|
||||
pull, and the location in your project in which you want to place
|
||||
them.
|
||||
|
||||
The format of 'repos.conf' precisely follows that used by git
|
||||
submodules. More information is available in 'Makefile-bootstrap' or
|
||||
with `man gitmodules` or `git help gitmodules`.
|
||||
|
||||
# FAQ {#FAQ}
|
||||
|
||||
Q: Why does nlbuild-autotools have an option for its own built versions
|
||||
of GNU autotools rather than leveraging whatever versions exist on
|
||||
@@ -144,6 +241,34 @@ A: Some build host systems such as Mac OS X may not have GNU autotools
|
||||
standalone set of scripts to drive them without reliance on those
|
||||
versions of the tools on the build host system.
|
||||
|
||||
Q: When I rebootstrap my package, I see that a number of files related to
|
||||
nlbuild-autotools have unexpectedly changed. Why is this happening?
|
||||
|
||||
A: From time to time, the packages that comprise GNU autotools change
|
||||
upstream. Frequently, common host operating systems (e.g., Ubuntu) take
|
||||
a stable snapshot of the current autotools for a major release (e.g.,
|
||||
Ubuntu 14). On the next major release (e.g., Ubuntu 16), another snapshot
|
||||
is taken.
|
||||
|
||||
If your package was first bootstrapped with one version of
|
||||
autotools and those bootstrap-generated files checked-in but you
|
||||
later bootstrap with another version of autotools, then you will
|
||||
likely observe this behavior.
|
||||
|
||||
There are two solutions to this problem. First, to ensure a
|
||||
consistent set of bootstrap-generated files, you can build the
|
||||
autotools included with nlbuild-autotools. The bootstrap process
|
||||
will always prefer to use those versions rather than those
|
||||
available on the build host when they are available. See the
|
||||
section [Build and Install](#Build_and_Install) for more
|
||||
information.
|
||||
|
||||
The second way to ensure a consistent set of bootstrap-generated
|
||||
files is to not check them in. This does, however, require that
|
||||
package users, rather than package maintainers, perform the
|
||||
bootstrap process and does require that package users, rather than
|
||||
package maintainers, have autotools available on the build host.
|
||||
|
||||
## Maintainers
|
||||
|
||||
If you are maintaining nlbuild-autotools, you have several key things to know:
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
#
|
||||
# Copyright 2017-2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# Description:
|
||||
# This file is the makefile for inlining optional and required
|
||||
# third-party packages as package-internal copies and for providing
|
||||
# convenience targets for bootstrapping the GNU autotools-based build
|
||||
# system used by this package.
|
||||
#
|
||||
# If your package has dependent git repositories that you might
|
||||
# otherwise be inclined to subtree in, you can define a
|
||||
# "repos.conf" file at the top of your project that enumerates
|
||||
# the repositories, the branch thereof, and where to put it in
|
||||
# your project. An example is shown below:
|
||||
#
|
||||
# [submodule "nlassert"]
|
||||
# path = third_party/nlassert/repo
|
||||
# url = [email protected]:nestlabs/nlassert.git
|
||||
# branch = master
|
||||
# update = none
|
||||
# [submodule "nlunit-test"]
|
||||
# path = third_party/nlunit-test/repo
|
||||
# url = [email protected]:nestlabs/nlunit-test.git
|
||||
# branch = master
|
||||
# update = none
|
||||
#
|
||||
|
||||
ThisMakefile := $(firstword $(MAKEFILE_LIST))
|
||||
|
||||
builddir ?= .
|
||||
abs_builddir ?= $(realpath $(builddir))
|
||||
top_builddir ?= $(builddir)
|
||||
abs_top_builddir ?= $(realpath $(top_builddir))
|
||||
srcdir ?= $(dir $(realpath $(ThisMakefile)))
|
||||
abs_srcdir ?= $(realpath $(srcdir))
|
||||
top_srcdir ?= $(srcdir)
|
||||
abs_top_srcdir ?= $(realpath $(top_srcdir))
|
||||
|
||||
nlbuild_autotools_stem ?= @NLBUILD_AUTOTOOLS_STEM@
|
||||
abs_top_nlbuild_autotools_dir ?= $(abs_top_srcdir)/$(nlbuild_autotools_stem)
|
||||
|
||||
include $(abs_top_nlbuild_autotools_dir)/make/pre.mak
|
||||
include $(abs_top_nlbuild_autotools_dir)/make/host/tools/bootstrap.mak
|
||||
|
||||
#
|
||||
# Add any project-specific bootstrap help commands to this
|
||||
# 'help-hook' target.
|
||||
#
|
||||
# These commands will be executed AFTER the core bootstrap 'help'
|
||||
# target commands.
|
||||
#
|
||||
help-hook:
|
||||
|
||||
#
|
||||
# Add any project-specific bootstrap help commands to this
|
||||
# 'help-bootstrap-hook' target.
|
||||
#
|
||||
# These commands will be executed AFTER the core bootstrap 'help' and
|
||||
# 'help-bootstrap' target commands.
|
||||
#
|
||||
help-bootstrap-hook:
|
||||
|
||||
#
|
||||
# Add any project-specific bootstrap help commands to this
|
||||
# 'help-repos-hook' target.
|
||||
#
|
||||
# These commands will be executed AFTER the core bootstrap 'help' and
|
||||
# 'help-repos' target commands.
|
||||
#
|
||||
help-repos-hook:
|
||||
|
||||
#
|
||||
# Add any project-specific bootstrap repos commands to this
|
||||
# 'repos-hook' target.
|
||||
#
|
||||
# These commands will be executed AFTER the core bootstrap 'repos'
|
||||
# target commands.
|
||||
#
|
||||
repos-hook:
|
||||
|
||||
#
|
||||
# Add any project-specific bootstrap repos commands to this
|
||||
# 'clean-repos-hook' target.
|
||||
#
|
||||
# These commands will be executed BEFORE the core bootstrap 'clean-repos'
|
||||
# target commands.
|
||||
#
|
||||
clean-repos-hook:
|
||||
|
||||
include $(abs_top_nlbuild_autotools_dir)/make/post.mak
|
||||
include $(abs_top_nlbuild_autotools_dir)/make/post/rules/bootstrap.mak
|
||||
@@ -27,9 +27,26 @@ include $(abs_top_nlbuild_autotools_dir)/automake/pre.am
|
||||
DIST_SUBDIRS = \
|
||||
$(NULL)
|
||||
|
||||
# Always build (e.g. for 'make all') these subdirectories.
|
||||
# Here is an example with nlunit-test. Uncomment and adapt or delete
|
||||
# this, as needed. If you choose to use this, please also take a look at
|
||||
# configure.ac and Makefile.am and uncomment the appropriate sections
|
||||
# there.
|
||||
|
||||
SUBDIRS = \
|
||||
# # NLUNIT_TEST_SUBDIRS is not a permanent part of DIST_SUBDIRS since we do not
|
||||
# # ever want to include it in a distribution archive; however, when it's been
|
||||
# # pulled as a 'repo' module, we do want to remove it on invocation of the
|
||||
# # 'distclean' target. Consequently, we conditionally include it in DIST_SUBDIRS
|
||||
# # on invocation of 'distclean-recursive'
|
||||
#
|
||||
# distclean-recursive: DIST_SUBDIRS += $(NLUNIT_TEST_SUBDIRS)
|
||||
|
||||
# Always build (e.g. for 'make all') these subdirectories.
|
||||
# #
|
||||
# # The value of NLUNIT_TEST_SUBDIRS will be populated by configure if
|
||||
# # --with-nlunit_test=internal
|
||||
|
||||
SUBDIRS = \
|
||||
$(NLUNIT_TEST_SUBDIRS) \
|
||||
$(NULL)
|
||||
|
||||
include $(abs_top_nlbuild_autotools_dir)/automake/post.am
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright 2016 Nest Labs Inc. All Rights Reserved.
|
||||
# Copyright 2016-2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -31,6 +31,7 @@ SUBDIRS = \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_DIST = \
|
||||
Makefile-bootstrap \
|
||||
.default-version \
|
||||
bootstrap \
|
||||
bootstrap-configure \
|
||||
@@ -136,10 +137,35 @@ $(distdir)/.dist-version: $(builddir)/.local-version force
|
||||
$(distdir)/.dist-version $(builddir)/.local-version:
|
||||
$(call check-file,$(@F))
|
||||
|
||||
# If you are synchronizing a package on which yours depends using 'repos.conf',
|
||||
# to 'third_party', uncomment and adapt or delete this, as needed. If you choose
|
||||
# to use this, please also take a look at Makefile.am and third_party/Makefile.am
|
||||
# and uncomment the appropriate sections there.
|
||||
|
||||
# #
|
||||
# # When we run 'distcheck' and --with-nlunit_test defaults to 'internal',
|
||||
# # the nlbuild-autotools infrastructure will attempt to create git paths
|
||||
# # to manage the nlunit-test repo. Two directories need to be writable
|
||||
# # to facilitate this.
|
||||
# #
|
||||
# DISTCHECK_CONFIGURE_FLAGS=`chmod u+w .. ../third_party`
|
||||
|
||||
dist distcheck: $(BUILT_SOURCES)
|
||||
|
||||
dist-hook: $(distdir)/.dist-version
|
||||
|
||||
# If you are synchronizing a package on which yours depends using 'repos.conf',
|
||||
# to 'third_party', uncomment and adapt or delete this, as needed. If you choose
|
||||
# to use this, please also take a look at Makefile.am and third_party/Makefile.am
|
||||
# and uncomment the appropriate sections there.
|
||||
|
||||
# #
|
||||
# # Ensure any locally synchronized repositories defined by 'repos.conf'
|
||||
# # are cleaned up.
|
||||
# #
|
||||
# distclean-local:
|
||||
# $(MAKE) -C $(srcdir) -f Makefile-bootstrap clean-repos
|
||||
|
||||
#
|
||||
# Top-level convenience target for making a documentation-only
|
||||
# distribution whose results appear at the top level of the build tree
|
||||
|
||||
+84
-8
@@ -2,7 +2,7 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
#
|
||||
# Copyright 2016-2017 Nest Labs Inc. All Rights Reserved.
|
||||
# Copyright 2016-2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -31,7 +31,7 @@ AC_PREREQ([2.68])
|
||||
#
|
||||
# Initialize autoconf for the package
|
||||
#
|
||||
AC_INIT([@PACKAGE_SHORT_UPPER@],
|
||||
AC_INIT([@PACKAGE_SHORT_LOWER@],
|
||||
m4_esyscmd([@NLBUILD_AUTOTOOLS_STEM@/scripts/mkversion -b `cat .default-version` .]),
|
||||
[@PACKAGE_EMAIL@],
|
||||
[@PACKAGE_SHORT_LOWER@],
|
||||
@@ -268,12 +268,69 @@ AM_CONDITIONAL(@PACKAGE_SHORT_UPPER@_BUILD_DOCS, [test "${nl_cv_build_docs}" = "
|
||||
#
|
||||
AC_MSG_NOTICE([checking required package dependencies])
|
||||
|
||||
# NL_WITH_PACKAGE(...)
|
||||
|
||||
# Check if the build host has pkg-config
|
||||
|
||||
AC_PATH_PROG([PKG_CONFIG],[pkg-config])
|
||||
|
||||
# Here is a package example with nlunit-test. Uncomment and adapt or delete
|
||||
# this, as needed. If you choose to use this, please also take a look at
|
||||
# Makefile.am and third_party/Makefile.am and uncomment the appropriate
|
||||
# sections there.
|
||||
|
||||
# #
|
||||
# # Nlunit-test
|
||||
# #
|
||||
#
|
||||
# if test "${nl_cv_build_tests}" = "yes"; then
|
||||
# NL_WITH_PACKAGE(
|
||||
# [Nlunit-test],
|
||||
# [NLUNIT_TEST],
|
||||
# [nlunit_test],
|
||||
# [-lnlunit-test],
|
||||
# [
|
||||
# # At this point, the internal Nlunit-test package will be neither
|
||||
# # configured nor built, so the normal checks we undertake for an
|
||||
# # external package cannot be run here. Simply set the appropriate
|
||||
# # variables and trust all will be well.
|
||||
#
|
||||
# NLUNIT_TEST_CPPFLAGS="-I\${abs_top_srcdir}/third_party/nlunit-test/repo/src"
|
||||
# NLUNIT_TEST_LDFLAGS="-L${ac_pwd}/third_party/nlunit-test/repo/src"
|
||||
# NLUNIT_TEST_LIBS="-lnlunit-test"
|
||||
# ],
|
||||
# [
|
||||
# # Check for required nlunit-test headers.
|
||||
#
|
||||
# AC_CHECK_HEADERS([nlunit-test.h],
|
||||
# [],
|
||||
# [
|
||||
# AC_MSG_ERROR(The nlunit-test header "$ac_header" is required but cannot be found.)
|
||||
# ])
|
||||
# ])
|
||||
# fi
|
||||
#
|
||||
# # Depending on whether nlunit-test has been configured for an internal
|
||||
# # location, its directory stem within this package needs to be set
|
||||
# # accordingly. In addition, if the location is internal, then we need
|
||||
# # to attempt to pull it down using the bootstrap makefile.
|
||||
#
|
||||
# if test "${nl_with_nlunit_test}" = "internal"; then
|
||||
# maybe_nlunit_test_dirstem="nlunit-test/repo"
|
||||
# nlunit_test_dirstem="third_party/${maybe_nlunit_test_dirstem}"
|
||||
#
|
||||
# AC_MSG_NOTICE([attempting to create internal ${nlunit_test_dirstem}])
|
||||
#
|
||||
# ${MAKE-make} --no-print-directory -C ${srcdir} -f Makefile-bootstrap ${nlunit_test_dirstem}
|
||||
#
|
||||
# if test $? -ne 0; then
|
||||
# AC_MSG_ERROR([failed to create ${nlunit_test_dirstem}. Please check your network connection or the correctness of 'repos.conf'])
|
||||
# fi
|
||||
# else
|
||||
# maybe_nlunit_test_dirstem=""
|
||||
# fi
|
||||
#
|
||||
# AC_SUBST(NLUNIT_TEST_SUBDIRS, [${maybe_nlunit_test_dirstem}])
|
||||
# AM_CONDITIONAL([@PACKAGE_SHORT_UPPER@_WITH_NLUNIT_TEST_INTERNAL], [test "${nl_with_nlunit_test}" = "internal"])
|
||||
|
||||
#
|
||||
# Check for headers
|
||||
#
|
||||
@@ -303,17 +360,35 @@ if test "${ac_no_link}" != "yes"; then
|
||||
AC_CHECK_FUNCS([memcpy])
|
||||
fi
|
||||
|
||||
# Here is an example with nlunit-test. Uncomment and adapt or delete
|
||||
# this, as needed.
|
||||
|
||||
# # Add any nlunit-test CPPFLAGS, LDFLAGS, and LIBS
|
||||
#
|
||||
# CPPFLAGS="${CPPFLAGS} ${NLUNIT_TEST_CPPFLAGS}"
|
||||
# LDFLAGS="${LDFLAGS} ${NLUNIT_TEST_LDFLAGS}"
|
||||
# LIBS="${LIBS} ${NLUNIT_TEST_LIBS}"
|
||||
|
||||
# Add any code coverage CPPFLAGS and LIBS
|
||||
|
||||
CPPFLAGS="${CPPFLAGS} ${NL_COVERAGE_CPPFLAGS}"
|
||||
LIBS="${LIBS} ${NL_COVERAGE_LIBS}"
|
||||
|
||||
# At this point, we can restore the compiler flags to whatever the
|
||||
# user passed in, now that we're clear of an -Werror issues by
|
||||
# user passed in, now that we're clear of any -Werror issues by
|
||||
# transforming -Wno-error back to -Werror.
|
||||
|
||||
NL_RESTORE_WERROR
|
||||
|
||||
# Here is an example with nlunit-test. Uncomment and adapt or delete
|
||||
# this, as needed.
|
||||
|
||||
# # Configure any autotools-based subdirectories
|
||||
#
|
||||
# if test "${nl_with_nlunit_test}" = "internal"; then
|
||||
# AC_CONFIG_SUBDIRS([third_party/nlunit-test/repo])
|
||||
# fi
|
||||
|
||||
#
|
||||
# Identify the various makefiles and auto-generated files for the package
|
||||
#
|
||||
@@ -362,6 +437,10 @@ AC_MSG_NOTICE([
|
||||
Doxygen : ${DOXYGEN:--}
|
||||
GraphViz dot : ${DOT:--}
|
||||
PERL : ${PERL:--}
|
||||
Nlunit-test source : ${nl_with_nlunit_test:--}
|
||||
Nlunit-test compile flags : ${NLUNIT_TEST_CPPFLAGS:--}
|
||||
Nlunit-test link flags : ${NLUNIT_TEST_LDFLAGS:--}
|
||||
Nlunit-test link libraries : ${NLUNIT_TEST_LIBS:--}
|
||||
C Preprocessor : ${CPP}
|
||||
C Compiler : ${CC}
|
||||
C++ Preprocessor : ${CXXCPP}
|
||||
@@ -377,6 +456,3 @@ AC_MSG_NOTICE([
|
||||
Link libraries : ${LIBS}
|
||||
|
||||
])
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
# You can synchronize a remote package on which yours depends with git
|
||||
# to 'third_party' (or another directory).
|
||||
#
|
||||
# Here is an example using nlunit-test. Uncomment and adapter or
|
||||
# delete this, as needed. If you do not have any packages to
|
||||
# sychronize, then this file is unneeded and may be deleted from your
|
||||
# project.
|
||||
#
|
||||
# If you choose to use this, please also take a look at configure.ac,
|
||||
# Makefile.am, and third_party/Makefile.am and uncomment the appropriate
|
||||
# sections there.
|
||||
|
||||
# [submodule "nlunit-test"]
|
||||
# path = third_party/nlunit-test/repo
|
||||
# url = https://github.com/nestlabs/nlunit-test.git
|
||||
# branch = master
|
||||
# update = none
|
||||
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# Copyright 2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# Description:
|
||||
# This file is the generic "header" or pre make header for all
|
||||
# common host-specific (i.e., non-target and -toolchain-specific)
|
||||
# tools included in any makefile used in the build tree.
|
||||
#
|
||||
|
||||
include $(abs_top_nlbuild_autotools_dir)/make/host/tools/tools.mak
|
||||
@@ -0,0 +1,23 @@
|
||||
#
|
||||
# Copyright 2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# Description:
|
||||
# This file is the make header for the nlbuild-autotools
|
||||
# bootstrap script.
|
||||
#
|
||||
|
||||
BOOTSTRAP ?= $(top_srcdir)/bootstrap
|
||||
@@ -0,0 +1,46 @@
|
||||
#
|
||||
# Copyright 2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# Description:
|
||||
# This file is the generic "header" or pre make header for all
|
||||
# common host-specific (i.e., non-target and -toolchain-specific)
|
||||
# tools included in any makefile used in the build tree.
|
||||
#
|
||||
|
||||
CAT ?= cat
|
||||
CHMOD ?= chmod
|
||||
CMP ?= cmp
|
||||
CUT ?= cut
|
||||
FIND ?= find
|
||||
GIT ?= git
|
||||
GREP ?= grep
|
||||
GZIP ?= gzip
|
||||
MKDIR ?= mkdir
|
||||
MV ?= mv
|
||||
|
||||
RMFLAGS = -f
|
||||
ifeq ($(V),1)
|
||||
RMFLAGS += -v
|
||||
endif
|
||||
RM ?= rm $(RMFLAGS)
|
||||
|
||||
RMDIR ?= rmdir
|
||||
SED ?= sed
|
||||
SORT ?= sort
|
||||
TAR ?= tar
|
||||
UNIQ ?= uniq
|
||||
XZ ?= xz
|
||||
@@ -0,0 +1,23 @@
|
||||
#
|
||||
# Copyright 2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# Description:
|
||||
# This file is the generic "footer" or post make header included in
|
||||
# any makefile used in the build tree.
|
||||
#
|
||||
|
||||
include $(abs_top_nlbuild_autotools_dir)/make/post/rules.mak
|
||||
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# Copyright 2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# Description:
|
||||
# This file is the generic "footer" or post make header for all
|
||||
# common rules included in any makefile used in the build tree.
|
||||
#
|
||||
|
||||
include $(abs_top_nlbuild_autotools_dir)/make/post/rules/help.mak
|
||||
include $(abs_top_nlbuild_autotools_dir)/make/post/rules/repos.mak
|
||||
@@ -0,0 +1,126 @@
|
||||
#
|
||||
# Copyright 2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# Description:
|
||||
# This file is the make footer for nlbuild-autotools bootstrap
|
||||
# convenience targets.
|
||||
#
|
||||
|
||||
# The following targets provide some convenience targets for bootstrapping
|
||||
# the GNU autotools-based build system used by this package.
|
||||
|
||||
all check coverage dist distcheck doc docdist install install-headers pretty pretty-check: Makefile
|
||||
$(NL_V_MAKE)$(MAKE) -f $(<) --no-print-directory $(@)
|
||||
|
||||
Makefile: $(top_srcdir)/Makefile.in $(top_srcdir)/configure
|
||||
$(NL_V_CONFIGURE)$(top_srcdir)/configure
|
||||
|
||||
$(top_srcdir)/configure: $(top_srcdir)/configure.ac
|
||||
$(NL_V_BOOTSTRAP_CONFIG)$(BOOTSTRAP) -w config
|
||||
|
||||
Makefile.in: Makefile.am
|
||||
$(NL_V_BOOTSTRAP_MAKE)$(BOOTSTRAP) -w make
|
||||
|
||||
.PHONY: bootstrap
|
||||
bootstrap:
|
||||
$(NL_V_BOOTSTRAP_ALL)$(BOOTSTRAP) -w all
|
||||
|
||||
.PHONY: bootstrap-config
|
||||
bootstrap-config:
|
||||
$(NL_V_BOOTSTRAP_CONFIG)$(BOOTSTRAP) -w config
|
||||
|
||||
.PHONY: bootstrap-make
|
||||
bootstrap-make:
|
||||
$(NL_V_BOOTSTRAP_MAKE)$(BOOTSTRAP) -w make
|
||||
|
||||
define PrintBootstrapHelp
|
||||
$(NL_V_AT)echo " all"
|
||||
$(NL_V_AT)echo " Generate all configured build artifacts for this project."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " bootstrap"
|
||||
$(NL_V_AT)echo " (Re-)generate all build infrastructure for the project, "
|
||||
$(NL_V_AT)echo " including both build configuration scripts and makefiles."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " bootstrap-all"
|
||||
$(NL_V_AT)echo " (Re-)generate all build infrastructure for the project, "
|
||||
$(NL_V_AT)echo " including both build configuration scripts and makefiles."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " bootstrap-config"
|
||||
$(NL_V_AT)echo " (Re-)generate build configuration scripts for the project."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " bootstrap-make"
|
||||
$(NL_V_AT)echo " (Re-)generate build makefiles for the project."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " check"
|
||||
$(NL_V_AT)echo " Generate all configured build artifacts and run all unit "
|
||||
$(NL_V_AT)echo " and functional tests for this project."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " coverage"
|
||||
$(NL_V_AT)echo " Generate all configured build artifacts, run all unit "
|
||||
$(NL_V_AT)echo " and functional tests, and generate code coverage results "
|
||||
$(NL_V_AT)echo " for this project."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " dist"
|
||||
$(NL_V_AT)echo " Generate an archive distribution snapshot for this project."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " distcheck"
|
||||
$(NL_V_AT)echo " Generate an archive distribution snapshot for this project "
|
||||
$(NL_V_AT)echo " and sanity check the resulting distribution by running "
|
||||
$(NL_V_AT)echo " 'make check' on it for this project."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " doc"
|
||||
$(NL_V_AT)echo " Generate documentation for the project."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " docdist"
|
||||
$(NL_V_AT)echo " Generate an archive distribution of the documentation for "
|
||||
$(NL_V_AT)echo " the project."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " install"
|
||||
$(NL_V_AT)echo " Generate all configured build artifacts for this project "
|
||||
$(NL_V_AT)echo " and install them in DESTDIR on the build host system."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " install-headers"
|
||||
$(NL_V_AT)echo " Generate all configured public header artifacts for this "
|
||||
$(NL_V_AT)echo " project and install them in DESTDIR on the build host "
|
||||
$(NL_V_AT)echo " system."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " pretty"
|
||||
$(NL_V_AT)echo " (Re-)format a collection of project source files."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " pretty-check"
|
||||
$(NL_V_AT)echo " Check but do not (re-)format a collection of project "
|
||||
$(NL_V_AT)echo " source files."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " Makefile"
|
||||
$(NL_V_AT)echo " Run 'configure' for this project and generate the"
|
||||
$(NL_V_AT)echo " host-specific makefile."
|
||||
$(NL_V_AT)echo
|
||||
endef # PrintBootstrapHelp
|
||||
|
||||
.PHONY: help-bootstrap-local
|
||||
help-bootstrap-local:
|
||||
$(call PrintBootstrapHelp)
|
||||
|
||||
.PHONY: help-bootstrap-hook
|
||||
help-bootstrap-hook: help-bootstrap-local
|
||||
|
||||
.PHONY: help-bootstrap
|
||||
help-bootstrap: help-bootstrap-local help-bootstrap-hook
|
||||
|
||||
.PHONY: help
|
||||
help: help-bootstrap
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# Copyright 2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# Description:
|
||||
# This file is the make "footer" or post make header for help-related
|
||||
# targets.
|
||||
#
|
||||
|
||||
define PrintHelp
|
||||
$(NL_V_AT)echo "This makefile supports the following build targets:"
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " help"
|
||||
$(NL_V_AT)echo " Display this content."
|
||||
$(NL_V_AT)echo
|
||||
endef # PrintHelp
|
||||
|
||||
.PHONY: help-local
|
||||
help-local:
|
||||
$(call PrintHelp)
|
||||
|
||||
.PHONY: help-hook
|
||||
help-hook: help-local
|
||||
|
||||
.PHONY: help
|
||||
help: help-local help-hook
|
||||
@@ -0,0 +1,190 @@
|
||||
#
|
||||
# Copyright 2017-2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# Description:
|
||||
# This file is a make "footer" or post make header that defines make
|
||||
# convenience targets and templates for interacting with and managing git
|
||||
# submodules in the context of managing project dependencies.
|
||||
#
|
||||
|
||||
ifneq ($(REPOS),)
|
||||
# Stem for the git configuration file for a git repository.
|
||||
|
||||
__REPOS_GIT_CONFIG_STEM := /.git/config
|
||||
|
||||
# Stem for the git cache directory for a git submodule
|
||||
|
||||
__REPOS_GIT_MODULE_CACHE_STEM := /.git/modules
|
||||
|
||||
# git submodule configuration file and path
|
||||
|
||||
__REPOS_GIT_MODULES_FILE := .gitmodules
|
||||
__REPOS_GIT_MODULES_PATH := $(top_srcdir)/$(__REPOS_GIT_MODULES_FILE)
|
||||
|
||||
# Stem for the git configuration file for a git submodule.
|
||||
|
||||
__REPOS_GIT_SUBMODULE_STEM := /.git
|
||||
|
||||
# Git repository configuration for this package, if it exists.
|
||||
|
||||
REPOS_PACKAGE_GIT_PATH := $(top_srcdir)$(__REPOS_GIT_CONFIG_STEM)
|
||||
|
||||
# Sentinel Files
|
||||
|
||||
REPOS_GIT_INIT_SENTINEL := $(top_srcdir)/.repos-git-init-stamp
|
||||
REPOS_GIT_MODULES_SENTINEL := $(top_srcdir)/.repos-git-modules-stamp
|
||||
REPOS_WARNING_SENTINEL := $(top_builddir)/.repos-warning-stamp
|
||||
|
||||
#
|
||||
# REPOS_template <repo file> <repo name>
|
||||
#
|
||||
# This template defines variables and targets used for inlining optional and required
|
||||
# third-party packages as package-internal copies.
|
||||
#
|
||||
# <repo file> - Path to the repo configuration file from which to get values for
|
||||
# named repo.
|
||||
# <repo name> - Name of the repository in <repo file> for which to get values for
|
||||
# branch, local path, and URL.
|
||||
#
|
||||
define REPOS_template
|
||||
$(2)_repo_NAME := $(2)
|
||||
$(2)_repo_BRANCH := $$(call nlGitGetBranchForRepoFromNameFromFile,$(1),$(2))
|
||||
$(2)_repo_PATH := $$(call nlGitGetPathForRepoFromNameFromFile,$(1),$(2))
|
||||
$(2)_repo_URL := $$(call nlGitGetURLForRepoFromNameFromFile,$(1),$(2))
|
||||
|
||||
$(2)_repo_GIT := $$(addsuffix $(__REPOS_GIT_SUBMODULE_STEM),$$($(2)_repo_PATH))
|
||||
$(2)_repo_CACHE := $(top_srcdir)$(__REPOS_GIT_MODULE_CACHE_STEM)/$$($(2)_repo_PATH)
|
||||
|
||||
REPO_NAMES += $$($(2)_repo_NAME)
|
||||
REPO_GITS += $$($(2)_repo_GIT)
|
||||
REPO_PATHS += $$($(2)_repo_PATH)
|
||||
REPO_URLS += $$($(2)_repo_URL)
|
||||
REPO_CACHES += $$($(2)_repo_CACHE)
|
||||
|
||||
# Allow a repo to be made with a path target (e.g., third_party/foo/repo) or
|
||||
# with its actual git target (e.g., third_party/foo/repo/.git).
|
||||
|
||||
$$($(2)_repo_PATH): $$($(2)_repo_GIT)
|
||||
|
||||
$$($(2)_repo_GIT): $(REPOS_PACKAGE_GIT_PATH) repos-warning
|
||||
@echo " SUBMODULE $$(subst $(__REPOS_GIT_SUBMODULE_STEM),,$$(@))"
|
||||
$(NL_V_AT)if ! test -f $(__REPOS_GIT_MODULES_PATH); then \
|
||||
touch $(REPOS_GIT_MODULES_SENTINEL); \
|
||||
fi
|
||||
$(NL_V_AT)$(GIT) -C $(top_srcdir) submodule -q add -f -b $$($(2)_repo_BRANCH) -- $$($(2)_repo_URL) $$($(2)_repo_PATH)
|
||||
endef # REPOS_template
|
||||
|
||||
$(REPOS_PACKAGE_GIT_PATH):
|
||||
$(NL_V_GIT_INIT)$(GIT) -C $(top_srcdir) init -q $(top_srcdir)
|
||||
$(NL_V_AT)touch $(REPOS_GIT_INIT_SENTINEL)
|
||||
|
||||
define PrintReposWarning
|
||||
$(NL_V_AT)echo "The 'repos' target requires external network connectivity to"
|
||||
$(NL_V_AT)echo "reach the following upstream GIT repositories:"
|
||||
$(NL_V_AT)echo ""
|
||||
$(NL_V_AT)for url in $(REPO_URLS); do echo " $${url}"; done
|
||||
$(NL_V_AT)echo ""
|
||||
$(NL_V_AT)echo "and will fail if external network connectivity is not"
|
||||
$(NL_V_AT)echo "available. This package may still be buildable without these"
|
||||
$(NL_V_AT)echo "packages but may require disabling certain features or"
|
||||
$(NL_V_AT)echo "functionality."
|
||||
$(NL_V_AT)echo ""
|
||||
endef # PrintReposWarning
|
||||
|
||||
$(REPOS_WARNING_SENTINEL):
|
||||
$(NL_V_AT)touch $(@)
|
||||
$(call PrintReposWarning)
|
||||
|
||||
.PHONY: repos-warning
|
||||
repos-warning: $(REPOS_WARNING_SENTINEL)
|
||||
|
||||
.PHONY: repos-local
|
||||
repos-local: repos-warning
|
||||
$(NL_V_AT)$(MAKE) -f $(firstword $(MAKEFILE_LIST)) --no-print-directory $(REPO_GITS)
|
||||
|
||||
.PHONY: repos-hook
|
||||
repos-hook: repos-local
|
||||
|
||||
.PHONY: repos
|
||||
repos: repos-local repos-hook
|
||||
|
||||
.PHONY: clean-repos-hook
|
||||
clean-repos-hook:
|
||||
|
||||
.PHONY: clean-repos-local
|
||||
clean-repos-local: clean-repos-hook
|
||||
@echo " CLEAN"
|
||||
$(NL_V_AT)$(GIT) -C $(top_srcdir) submodule -q deinit -f -- $(REPO_PATHS) 2> /dev/null || true
|
||||
$(NL_V_AT)if test -f $(REPOS_GIT_MODULES_SENTINEL); then \
|
||||
$(RM) $(REPOS_GIT_MODULES_SENTINEL); \
|
||||
$(GIT) -C $(top_srcdir) rm -f -q $(__REPOS_GIT_MODULES_PATH) 2> /dev/null; \
|
||||
fi
|
||||
$(NL_V_AT)if test -f $(REPOS_GIT_INIT_SENTINEL); then \
|
||||
$(RM) -r $(dir $(REPOS_PACKAGE_GIT_PATH)); \
|
||||
$(RM) $(REPOS_GIT_INIT_SENTINEL); \
|
||||
fi
|
||||
$(NL_V_AT)$(RM) $(REPOS_WARNING_SENTINEL)
|
||||
$(NL_V_AT)$(GIT) -C $(top_srcdir) rm -rf -q --cached $(REPO_PATHS) 2> /dev/null || true
|
||||
$(NL_V_AT)$(RM) -r $(addprefix $(top_srcdir)/,$(REPO_PATHS))
|
||||
$(NL_V_AT)$(RMDIR) -p $(addprefix $(top_srcdir),$(dir $(REPO_PATHS))) 2> /dev/null || true
|
||||
$(NL_V_AT)$(RM) -r $(REPO_CACHES) 2> /dev/null
|
||||
|
||||
.PHONY: clean-repos
|
||||
clean-repos: clean-repos-local
|
||||
|
||||
# Invoke the REPOS_template for each defined optionally-inlined package repo
|
||||
|
||||
$(foreach repo,$(REPOS),$(eval $(call REPOS_template,$(REPOS_CONFIG),$(repo))))
|
||||
|
||||
define MaybePrintReposHelp
|
||||
$(NL_V_AT)echo " repos"
|
||||
$(NL_V_AT)echo " Clone any upstream, dependent git repositories that this package"
|
||||
$(NL_V_AT)echo " regards as required or optional rather than using '--with-<package>'"
|
||||
$(NL_V_AT)echo " options to specify external instances of those packages."
|
||||
$(NL_V_AT)echo
|
||||
$(NL_V_AT)echo " clean-repos"
|
||||
$(NL_V_AT)echo " This is the opposite of the 'repos' target. This removes, in their"
|
||||
$(NL_V_AT)echo " entirety, any clones of any upstream, dependent git repositories that"
|
||||
$(NL_V_AT)echo " this package regards as required or optional."
|
||||
$(NL_V_AT)echo
|
||||
endef # MaybePrintReposHelp
|
||||
|
||||
.DEFAULT_GOAL := repos
|
||||
else
|
||||
|
||||
define MaybePrintReposHelp
|
||||
endef # MaybePrintReposHelp
|
||||
|
||||
.DEFAULT_GOAL := help
|
||||
endif # REPOS
|
||||
|
||||
define PrintReposHelp
|
||||
$(call MaybePrintReposHelp)
|
||||
endef # PrintReposHelp
|
||||
|
||||
.PHONY: help-repos-local
|
||||
help-repos-local:
|
||||
$(call PrintReposHelp)
|
||||
|
||||
.PHONY: help-repos-hook
|
||||
help-repos-hook: help-repos-local
|
||||
|
||||
.PHONY: help-repos
|
||||
help-repos: help-repos-local help-repos-hook
|
||||
|
||||
.PHONY: help
|
||||
help: help-repos
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# Copyright 2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# Description:
|
||||
# This file is the generic "header" or pre make header included in
|
||||
# any makefile used in the build tree.
|
||||
#
|
||||
|
||||
include $(abs_top_nlbuild_autotools_dir)/make/pre/tools.mak
|
||||
include $(abs_top_nlbuild_autotools_dir)/make/pre/macros.mak
|
||||
@@ -0,0 +1,25 @@
|
||||
#
|
||||
# Copyright 2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# Description:
|
||||
# This file is the make "header" or pre make header for macros common to
|
||||
# all other make headers and files.
|
||||
#
|
||||
|
||||
include $(abs_top_nlbuild_autotools_dir)/make/pre/macros/git.mak
|
||||
include $(abs_top_nlbuild_autotools_dir)/make/pre/macros/repos.mak
|
||||
include $(abs_top_nlbuild_autotools_dir)/make/pre/macros/verbosity.mak
|
||||
@@ -0,0 +1,69 @@
|
||||
#
|
||||
# Copyright 2017-2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# Description:
|
||||
# This file is the make "header" or pre make header that defines make
|
||||
# convenience macros for interacting with git.
|
||||
#
|
||||
|
||||
# nlGitGetConfigFromFileCommand <file>
|
||||
#
|
||||
# Command to get a value for a variable set in the specified git config file <file>.
|
||||
|
||||
nlGitGetConfigFromFileCommand = $(GIT) config --file $(1)
|
||||
|
||||
# nlGitListConfigFromFileCommand <file>
|
||||
#
|
||||
# Command to list all variables set in the specified config file <file>
|
||||
|
||||
nlGitListConfigFromFileCommand = $(call nlGitGetConfigFromFileCommand,$(1)) --list --name-only
|
||||
|
||||
# nlGitGetConfigFromFile <file>
|
||||
#
|
||||
# Get a value for a variable set in the specified git config file <file>.
|
||||
|
||||
nlGitGetConfigFromFile = $(shell $(call nlGitGetConfigFromFileCommand,$(1)))
|
||||
|
||||
# NlGitListConfigFromFile <file>
|
||||
#
|
||||
# List all variables set in the specified config file <file>
|
||||
|
||||
nlGitListConfigFromFile = $(shell $(call nlGitListConfigFromFileCommand,$(1)))
|
||||
|
||||
# nlGitGetValueForRepoFromNameFromFile <file> <repo name> <value>
|
||||
#
|
||||
# Get a value for a repo / submodule variable set in specified git config file <file>.
|
||||
|
||||
nlGitGetValueForRepoFromNameFromFile = $(shell $(call nlGitGetConfigFromFileCommand,$(1)) 'submodule.$(2).$(3)')
|
||||
|
||||
# nlGitGetBranchForRepoFromNameFromFile <file> <repo name>
|
||||
#
|
||||
# Get a the remote branch for a repo / submodule variable set in specified git config file <file>.
|
||||
|
||||
nlGitGetBranchForRepoFromNameFromFile = $(call nlGitGetValueForRepoFromNameFromFile,$(1),$(2),branch)
|
||||
|
||||
# nlGitGetURLForRepoFromNameFromFile <file> <repo name>
|
||||
#
|
||||
# Get a the remote URL for a repo / submodule variable set in specified git config file <file>.
|
||||
|
||||
nlGitGetURLForRepoFromNameFromFile = $(call nlGitGetValueForRepoFromNameFromFile,$(1),$(2),url)
|
||||
|
||||
# nlGitGetPathForRepoFromNameFromFile <file> <repo name>
|
||||
#
|
||||
# Get a the local path for a repo / submodule variable set in specified git config file <file>.
|
||||
|
||||
nlGitGetPathForRepoFromNameFromFile = $(call nlGitGetValueForRepoFromNameFromFile,$(1),$(2),path)
|
||||
@@ -0,0 +1,32 @@
|
||||
#
|
||||
# Copyright 2017-2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# Description:
|
||||
# This file is a make "header" or pre make header that defines make
|
||||
# convenience macros for interacting with and managing git submodules
|
||||
# in the context of managing project dependencies.
|
||||
#
|
||||
|
||||
# Third-party package repository configuration, if it exists, listing all
|
||||
# packages and their names, branches, URLs, and local paths that may be
|
||||
# optionally inlined for this package.
|
||||
#
|
||||
# This file is formatted identically to .gitmodules (see gitmodules(5)).
|
||||
|
||||
REPOS_CONFIG ?= $(top_srcdir)/repos.conf
|
||||
|
||||
REPOS := $(shell if test -f $(REPOS_CONFIG); then $(call nlGitListConfigFromFileCommand,$(REPOS_CONFIG)) | $(GREP) '^submodule\.' | $(CUT) -d '.' -f 2 | $(SORT) | $(UNIQ); fi)
|
||||
@@ -0,0 +1,72 @@
|
||||
#
|
||||
# Copyright 2017-2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# Description:
|
||||
# This file is a make "header" or pre make header that defines make macros
|
||||
# for controlling build verbosity.
|
||||
#
|
||||
|
||||
#
|
||||
# Verbosity
|
||||
#
|
||||
|
||||
NL_DEFAULT_VERBOSITY ?= 0
|
||||
|
||||
NL_V_AT = $(NL_V_AT_$(V))
|
||||
NL_V_AT_ = $(NL_V_AT_$(NL_DEFAULT_VERBOSITY))
|
||||
NL_V_AT_0 = @
|
||||
NL_V_AT_1 =
|
||||
|
||||
NL_V_BOOTSTRAP_ALL = $(NL_V_BOOTSTRAP_ALL_$(V))
|
||||
NL_V_BOOTSTRAP_ALL_ = $(NL_V_BOOTSTRAP_ALL_$(NL_DEFAULT_VERBOSITY))
|
||||
NL_V_BOOTSTRAP_ALL_0 = @echo " BOOTSTRAP all";
|
||||
NL_V_BOOTSTRAP_ALL_1 =
|
||||
|
||||
NL_V_BOOTSTRAP_CONFIG = $(NL_V_BOOTSTRAP_CONFIG_$(V))
|
||||
NL_V_BOOTSTRAP_CONFIG_ = $(NL_V_BOOTSTRAP_CONFIG_$(NL_DEFAULT_VERBOSITY))
|
||||
NL_V_BOOTSTRAP_CONFIG_0 = @echo " BOOTSTRAP config";
|
||||
NL_V_BOOTSTRAP_CONFIG_1 =
|
||||
|
||||
NL_V_BOOTSTRAP_MAKE = $(NL_V_BOOTSTRAP_MAKE_$(V))
|
||||
NL_V_BOOTSTRAP_MAKE_ = $(NL_V_BOOTSTRAP_MAKE_$(NL_DEFAULT_VERBOSITY))
|
||||
NL_V_BOOTSTRAP_MAKE_0 = @echo " BOOTSTRAP make";
|
||||
NL_V_BOOTSTRAP_MAKE_1 =
|
||||
|
||||
NL_V_CONFIGURE = $(NL_V_CONFIGURE_$(V))
|
||||
NL_V_CONFIGURE_ = $(NL_V_CONFIGURE_$(NL_DEFAULT_VERBOSITY))
|
||||
NL_V_CONFIGURE_0 = @echo " CONFIGURE";
|
||||
NL_V_CONFIGURE_1 =
|
||||
|
||||
NL_V_GIT_INIT = $(NL_V_GIT_INIT_$(V))
|
||||
NL_V_GIT_INIT_ = $(NL_V_GIT_INIT_$(NL_DEFAULT_VERBOSITY))
|
||||
NL_V_GIT_INIT_0 = @echo " GIT INIT $(@)";
|
||||
NL_V_GIT_INIT_1 =
|
||||
|
||||
NL_V_MAKE = $(NL_V_MAKE_$(V))
|
||||
NL_V_MAKE_ = $(NL_V_MAKE_$(NL_DEFAULT_VERBOSITY))
|
||||
NL_V_MAKE_0 = @echo " MAKE $(@)";
|
||||
NL_V_MAKE_1 =
|
||||
|
||||
NL_V_MKDIR_P = $(NL_V_MKDIR_P_$(V))
|
||||
NL_V_MKDIR_P_ = $(NL_V_MKDIR_P_$(NL_DEFAULT_VERBOSITY))
|
||||
NL_V_MKDIR_P_0 = @echo " MKDIR $(1)";
|
||||
NL_V_MKDIR_P_1 =
|
||||
|
||||
NL_V_RMDIR = $(NL_V_RMDIR_$(V))
|
||||
NL_V_RMDIR_ = $(NL_V_RMDIR_$(NL_DEFAULT_VERBOSITY))
|
||||
NL_V_RMDIR_0 = @echo " RMDIR $(1)";
|
||||
NL_V_RMDIR_1 =
|
||||
@@ -0,0 +1,25 @@
|
||||
#
|
||||
# Copyright 2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
#
|
||||
# Description:
|
||||
# This file is the generic "header" or pre make header for all
|
||||
# common (i.e., non-host-specific, non-target-specific, and
|
||||
# non-toolchain-specific) tools included in any makefile used in the
|
||||
# build tree.
|
||||
#
|
||||
|
||||
include $(abs_top_nlbuild_autotools_dir)/make/host/tools.mak
|
||||
+3
-1
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# Copyright 2015-2016 Nest Labs Inc. All Rights Reserved.
|
||||
# Copyright 2015-2018 Nest Labs Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -222,7 +222,9 @@ done
|
||||
|
||||
populate "${DIR}" 664 configure.ac .
|
||||
populate "${DIR}" 775 bootstrap .
|
||||
populate "${DIR}" 664 repos.conf .
|
||||
populate "${DIR}" 664 Makefile.am .
|
||||
populate "${DIR}" 664 Makefile-bootstrap .
|
||||
populate "${DIR}" 664 Makefile.am doc
|
||||
populate "${DIR}" 664 Doxyfile.in doc
|
||||
populate "${DIR}" 664 Makefile.am third_party
|
||||
|
||||
+12
-12
@@ -187,20 +187,20 @@ fetch_url_with_command() {
|
||||
shift 2
|
||||
|
||||
if [ -x "${executable}" ]; then
|
||||
cd "${fetchdir}"
|
||||
|
||||
verbose " `echo ${1} | tr '[[:lower:]]' '[[:upper:]]'` ${url}"
|
||||
cd "${fetchdir}"
|
||||
|
||||
verbose " `echo ${1} | tr '[[:lower:]]' '[[:upper:]]'` ${url}"
|
||||
|
||||
${*} "${url}"
|
||||
${*} "${url}"
|
||||
|
||||
status=${?}
|
||||
status=${?}
|
||||
|
||||
if [ ${?} -ne 0 ]; then
|
||||
error "Failed to fetch ${url} with ${1}."
|
||||
fi
|
||||
if [ ${?} -ne 0 ]; then
|
||||
error "Failed to fetch ${url} with ${1}."
|
||||
fi
|
||||
|
||||
cd "${curdir}"
|
||||
fi
|
||||
cd "${curdir}"
|
||||
fi
|
||||
|
||||
return ${status}
|
||||
}
|
||||
@@ -433,8 +433,8 @@ while [ ${#} -gt 0 ]; do
|
||||
;;
|
||||
|
||||
*)
|
||||
usage 1
|
||||
;;
|
||||
usage 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
Reference in New Issue
Block a user