#
#    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 inclinded 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 = git@github.com:nestlabs/nlassert.git
#            branch = master
#            update = none
#        [submodule "nlunit-test"]
#            path = third_party/nlunit-test/repo
#            url = git@github.com: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           ?= third_party/nlbuild-autotools/repo
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
