[VOL-5051] - Triage bbsim build
[VOL-5092] - verify_bbsim_unit-test repository failures in jenkins job history.
makefiles/*
-----------
o Merge in latest library makefiles.
o Some legacy retained:
tools.mk => makefiles/docker/include.mk
makefiles/lint/docker/*.mk (replace with docker/include.mk.new)
Makefile
--------
o Remove bogus foobar target.
o Target docs-lint now maps to library target lint-doc8.
docs/Makefile
-------------
o venv install now handled by makefiles/virtualenv.mk
o Replaced inlined doc8 lint target with makefiles/lint/doc8 (lint-doc8)
o Use std defines for SHELL= and other constants.
o Replace separator ';' with '&&' in commands using venv (detect errors).
config.mk
---------
o Enable lint targets for doc8, docker & json.
o More lint checks can be enabled but cleanup is needed first.
docs/Makefile
requirements.txt
----------------
o Identified a few python module problems documented in VOL-5092.
o Makefile wild target(%) matching stray dependencies so hardcode sphinx targets to act on.
o Added hyphen/success to "make docs" until VOL-5092 can be straightened out.
Change-Id: Ibe4006747ee610bfe8ac0fdbb339e5e18e6e9176
diff --git a/makefiles/bootstrap.mk b/makefiles/bootstrap.mk
new file mode 100644
index 0000000..eec469b
--- /dev/null
+++ b/makefiles/bootstrap.mk
@@ -0,0 +1,80 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Intent: Dependency-free macros used to source library makefiles
+# and define the build environment.
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG-bootstrap_mk),$(warning ENTER))
+
+##---------------------##
+##---] CONSTANTS [---##
+##---------------------##
+is-false = $(if $(1),true,$(null))
+is-true = $(if $(1),$(null),true)
+
+##--------------------------##
+##---] LIBRARY MACROS [---##
+##--------------------------##
+is-null = $(if $(1),$(null),$(error $(1)= is undef))
+# is-null-var = $(if $($(1)),$(null),$(error $(1)= is undef))
+
+## [origin]
+## foreach: var=automatic, origin=undef
+is-null-var-orig = $(strip \
+ $(foreach varname,$(1),\
+ $(warning ** is-null-var: varname=$(varname), origin=$(origin 1), origin=$(origin var))\
+ )\
+)
+# $(if $(1),$(call is-null-var-indirect,$($(1))),$(error $(1)= is undef)))\
+
+is-null-var-indirect = $(if $(1),$(null),$(error $(1)= is undef))
+
+# origin - undefned
+# default
+# environment
+# environment override
+# automatic
+# null(blah) ? - true
+
+## -----------------------------------------------------------------------
+## Intent: Given an indirect var containing varname of a makefile *_ROOT
+## parent director, derive a *_MKDIR variable and conditionally
+## include the makefile hierarchy.
+## -----------------------------------------------------------------------
+## Given:
+## o var containing OPT_ROOT=path
+## Return:
+## o OPT_MKDIR=$(OPT_ROOT)/makefiles
+## o If exists include $(OPT_MKDIR)/include.mk
+## -----------------------------------------------------------------------
+# library-include := $(call mk-library-include,blah)
+
+mk-library-include=$(strip \
+ $(warning mk-library-include: $$1[$(1)] = [$($(1))]))\
+ $(call is-null-var,1)\
+ $(foreach var,$($(1)),\
+ $(info var=$(var) is-null=$(call is-null-var,var))\
+ $(foreach val,$$(var),\
+ $(info val=$(val))\
+ $(foreach makedir,$(subst _ROOT,_MKDIR,$(var)),\
+$(warning makedir=$(makedir))\
+)\
+)\
+)\
+)
+
+
+# $(warning makedir=$(makedir))\
+ $(if $($(makedir)),$(null),\
+ $(eval $(makedir)=$$$$($(var))/makefiles)\
+$(warning $(makedir) = $($($(makedir))))\
+$(info $$(wildcard $(val)/makefiles/include.mk) = $(wildcard $(val)/makefiles/include.mk))\
+ $(foreach mf,$(wildcard $(wildcard $(val)/makefiles/include.mk)),\
+$(warning $$(eval include $(mf)))\
+ $(eval include $(mf)))\
+))))\
+)
+
+$(if $(DEBUG-bootstrap_mk),$(warning LEAVE))
+
+# [EOF]