core: introduce the BR2_EXTERNAL variable
This commit introduces the BR2_EXTERNAL environment variable, which
will allow to keep Buildroot customization (board-specific
configuration files or root filesystem overlays, package Config.in and
makefiles, as well as defconfigs) outside of the Buildroot tree.
This commit only introduces the variable itself, and ensures that it
is available within Config.in options. This allows us to use
$BR2_EXTERNAL in a 'source' statement in Config.in.
Following patches extend the usage of BR2_EXTERNAL to other areas
(packages and defconfigs).
In details, this commit:
* Introduces the BR2_EXTERNAL Kconfig option. This option has no
prompt, and is therefore not visible to the user and also not
stored in the .config file. It is automatically set to the value of
the BR2_EXTERNAL environment variable. The only purpose of this
BR2_EXTERNAL Kconfig option is to allow $BR2_EXTERNAL to be
properly expanded when used inside Kconfig source statements.
* Calculates the BR2_EXTERNAL value to use. If passed on the command
line, then this value is taken in priority, and saved to a
.br-external hidden file in the output directory. If not passed on
the command line, then we read the .br-external file from the
output directory. This allows the user to not pass the BR2_EXTERNAL
value at each make invocation. If no BR2_EXTERNAL value is passed,
we define it to support/dummy-external, so that the kconfig code
finds an existing $(BR2_EXTERNAL)/package/Config.in file to
include.
* Passes the BR2_EXTERNAL into the *config environment, so that its
value is found when parsing/evaluating Config.in files and .config
values.
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Acked-by: Ryan Barnett <rjbarnet@rockwellcollins.com>
Tested-by: "Samuel Martin" <s.martin49@gmail.com>
Acked-by: "Samuel Martin" <s.martin49@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2013-12-05 20:11:10 +01:00
|
|
|
# Packages included in BR2_EXTERNAL are not part of buildroot, so they
|
|
|
|
# should not be included in the manual.
|
2013-10-18 22:31:25 +02:00
|
|
|
manual-update-lists: manual-check-dependencies-lists
|
2013-03-25 14:28:08 +01:00
|
|
|
$(Q)$(call MESSAGE,"Updating the manual lists...")
|
|
|
|
$(Q)BR2_DEFCONFIG="" TOPDIR=$(TOPDIR) O=$(O)/docs/manual/.build \
|
core: introduce the BR2_EXTERNAL variable
This commit introduces the BR2_EXTERNAL environment variable, which
will allow to keep Buildroot customization (board-specific
configuration files or root filesystem overlays, package Config.in and
makefiles, as well as defconfigs) outside of the Buildroot tree.
This commit only introduces the variable itself, and ensures that it
is available within Config.in options. This allows us to use
$BR2_EXTERNAL in a 'source' statement in Config.in.
Following patches extend the usage of BR2_EXTERNAL to other areas
(packages and defconfigs).
In details, this commit:
* Introduces the BR2_EXTERNAL Kconfig option. This option has no
prompt, and is therefore not visible to the user and also not
stored in the .config file. It is automatically set to the value of
the BR2_EXTERNAL environment variable. The only purpose of this
BR2_EXTERNAL Kconfig option is to allow $BR2_EXTERNAL to be
properly expanded when used inside Kconfig source statements.
* Calculates the BR2_EXTERNAL value to use. If passed on the command
line, then this value is taken in priority, and saved to a
.br-external hidden file in the output directory. If not passed on
the command line, then we read the .br-external file from the
output directory. This allows the user to not pass the BR2_EXTERNAL
value at each make invocation. If no BR2_EXTERNAL value is passed,
we define it to support/dummy-external, so that the kconfig code
finds an existing $(BR2_EXTERNAL)/package/Config.in file to
include.
* Passes the BR2_EXTERNAL into the *config environment, so that its
value is found when parsing/evaluating Config.in files and .config
values.
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Acked-by: Ryan Barnett <rjbarnet@rockwellcollins.com>
Tested-by: "Samuel Martin" <s.martin49@gmail.com>
Acked-by: "Samuel Martin" <s.martin49@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2013-12-05 20:11:10 +01:00
|
|
|
BR2_EXTERNAL=$(TOPDIR)/support/dummy-external \
|
2013-12-06 00:41:57 +01:00
|
|
|
python -B $(TOPDIR)/support/scripts/gen-manual-lists.py
|
2013-03-25 14:28:08 +01:00
|
|
|
|
2013-10-18 22:31:25 +02:00
|
|
|
# we can't use suitable-host-package here because that's not available in
|
|
|
|
# the context of 'make release'
|
|
|
|
manual-check-dependencies:
|
|
|
|
$(Q)if [ -z "$(shell support/dependencies/check-host-asciidoc.sh)" ]; then \
|
|
|
|
echo "You need a sufficiently recent asciidoc on your host" \
|
|
|
|
"to generate the manual"; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
|
|
|
$(Q)if [ -z "`which w3m 2>/dev/null`" ]; then \
|
|
|
|
echo "You need w3m on your host to generate the manual"; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
|
|
|
|
|
|
|
manual-check-dependencies-pdf:
|
|
|
|
$(Q)if [ -z "`which dblatex 2>/dev/null`" ]; then \
|
|
|
|
echo "You need dblatex on your host to generate the pdf manual"; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
|
|
|
|
|
|
|
manual-check-dependencies-lists:
|
|
|
|
$(Q)if ! python -c "import argparse" >/dev/null 2>&1 ; then \
|
|
|
|
echo "You need python with argparse on your host to generate" \
|
|
|
|
"the list of packages in the manual"; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
|
|
|
|
2012-04-17 16:45:22 +02:00
|
|
|
################################################################################
|
infra: consistently use double dollar signs inside inner-xxx-targets
The inner-xxx-targets in the buildroot package infrastructures are
evaluated using $(eval) which causes variable references to be a bit
different than in regular make code. As we want most references to be
expanded only at the time of the $(eval) we should not use standard
references $(VAR) but rather use double dollar signs $$(VAR). This includes
function references like $(call), $(subst), etc. The only exception is the
reference to pkgdir/pkgname and numbered variables, which are parameters to
the inner block: $(1), $(2), etc.
This patch introduces consistent usage of double-dollar signs throughout the
different inner-xxx-targets blocks.
In some cases, this would potentially cause circular references, in
particular when the value of HOST_FOO_VAR would be obtained from the
corresponding FOO_VAR if HOST_FOO_VAR is not defined. In these cases, a test
is added to check for a host package (the only case where such constructions
are relevant; these are not circular).
Benefits of these changes are:
- behavior of variables is now again as expected. For example, setting
$(2)_VERSION = virtual in pkg-virtual.mk will effectively work, while
originally it would cause very odd results.
- The output of 'make printvars' is now much more useful. This target shows
the value of all variables, and the expression that led to that value.
However, if the expression was coming from an inner-xxx-targets block, and
was using single dollar signs, it would show in printvars as
VAR = value (value)
while if double dollar signs are used, it would effectively look like
VAR = value (actual expression)
as is intended.
This improvement is for example effective for FOO_DL_VERSION, FOO_RAWNAME,
FOO_SITE_METHOD and FOO_MAKE.
The correctness of this patch has been verified using 'make printvars',
'make manual' and 'make legal-info' before and after applying this patch,
and comparing the output.
Insight-provided-by: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-06-11 21:12:24 +02:00
|
|
|
# GENDOC_INNER -- generates the make targets needed to build a specific type of
|
|
|
|
# asciidoc documentation.
|
2012-04-17 16:45:22 +02:00
|
|
|
#
|
|
|
|
# argument 1 is the name of the document and must be a subdirectory of docs/;
|
|
|
|
# the top-level asciidoc file must have the same name
|
|
|
|
# argument 2 is the type of document to generate (-f argument of a2x)
|
|
|
|
# argument 3 is the document type as used in the make target
|
|
|
|
# argument 4 is the output file extension for the document type
|
|
|
|
# argument 5 is the human text for the document type
|
|
|
|
# argument 6 (optional) are extra arguments for a2x
|
|
|
|
#
|
|
|
|
# The variable <DOCUMENT_NAME>_SOURCES defines the dependencies.
|
infra: consistently use double dollar signs inside inner-xxx-targets
The inner-xxx-targets in the buildroot package infrastructures are
evaluated using $(eval) which causes variable references to be a bit
different than in regular make code. As we want most references to be
expanded only at the time of the $(eval) we should not use standard
references $(VAR) but rather use double dollar signs $$(VAR). This includes
function references like $(call), $(subst), etc. The only exception is the
reference to pkgdir/pkgname and numbered variables, which are parameters to
the inner block: $(1), $(2), etc.
This patch introduces consistent usage of double-dollar signs throughout the
different inner-xxx-targets blocks.
In some cases, this would potentially cause circular references, in
particular when the value of HOST_FOO_VAR would be obtained from the
corresponding FOO_VAR if HOST_FOO_VAR is not defined. In these cases, a test
is added to check for a host package (the only case where such constructions
are relevant; these are not circular).
Benefits of these changes are:
- behavior of variables is now again as expected. For example, setting
$(2)_VERSION = virtual in pkg-virtual.mk will effectively work, while
originally it would cause very odd results.
- The output of 'make printvars' is now much more useful. This target shows
the value of all variables, and the expression that led to that value.
However, if the expression was coming from an inner-xxx-targets block, and
was using single dollar signs, it would show in printvars as
VAR = value (value)
while if double dollar signs are used, it would effectively look like
VAR = value (actual expression)
as is intended.
This improvement is for example effective for FOO_DL_VERSION, FOO_RAWNAME,
FOO_SITE_METHOD and FOO_MAKE.
The correctness of this patch has been verified using 'make printvars',
'make manual' and 'make legal-info' before and after applying this patch,
and comparing the output.
Insight-provided-by: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-06-11 21:12:24 +02:00
|
|
|
#
|
|
|
|
# Since this function will be called from within an $(eval ...)
|
|
|
|
# all variable references except the arguments must be $$-quoted.
|
2012-04-17 16:45:22 +02:00
|
|
|
################################################################################
|
|
|
|
define GENDOC_INNER
|
|
|
|
$(1): $(1)-$(3)
|
|
|
|
.PHONY: $(1)-$(3)
|
|
|
|
$(1)-$(3): $$(O)/docs/$(1)/$(1).$(4)
|
|
|
|
|
2013-10-18 22:31:25 +02:00
|
|
|
manual-check-dependencies-$(3):
|
|
|
|
|
2014-08-15 15:40:36 +02:00
|
|
|
MANUAL_$(2)_ASCIIDOC_CONF = docs/$(1)/asciidoc-$(2).conf
|
|
|
|
ifneq ($$(wildcard $$(MANUAL_$(2)_ASCIIDOC_CONF)),)
|
|
|
|
MANUAL_$(2)_ASCIIDOC_OPTS += -f $$(MANUAL_$(2)_ASCIIDOC_CONF)
|
|
|
|
endif
|
|
|
|
|
2013-03-25 14:28:08 +01:00
|
|
|
$$(O)/docs/$(1)/$(1).$(4): docs/$(1)/$(1).txt \
|
infra: consistently use double dollar signs inside inner-xxx-targets
The inner-xxx-targets in the buildroot package infrastructures are
evaluated using $(eval) which causes variable references to be a bit
different than in regular make code. As we want most references to be
expanded only at the time of the $(eval) we should not use standard
references $(VAR) but rather use double dollar signs $$(VAR). This includes
function references like $(call), $(subst), etc. The only exception is the
reference to pkgdir/pkgname and numbered variables, which are parameters to
the inner block: $(1), $(2), etc.
This patch introduces consistent usage of double-dollar signs throughout the
different inner-xxx-targets blocks.
In some cases, this would potentially cause circular references, in
particular when the value of HOST_FOO_VAR would be obtained from the
corresponding FOO_VAR if HOST_FOO_VAR is not defined. In these cases, a test
is added to check for a host package (the only case where such constructions
are relevant; these are not circular).
Benefits of these changes are:
- behavior of variables is now again as expected. For example, setting
$(2)_VERSION = virtual in pkg-virtual.mk will effectively work, while
originally it would cause very odd results.
- The output of 'make printvars' is now much more useful. This target shows
the value of all variables, and the expression that led to that value.
However, if the expression was coming from an inner-xxx-targets block, and
was using single dollar signs, it would show in printvars as
VAR = value (value)
while if double dollar signs are used, it would effectively look like
VAR = value (actual expression)
as is intended.
This improvement is for example effective for FOO_DL_VERSION, FOO_RAWNAME,
FOO_SITE_METHOD and FOO_MAKE.
The correctness of this patch has been verified using 'make printvars',
'make manual' and 'make legal-info' before and after applying this patch,
and comparing the output.
Insight-provided-by: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-06-11 21:12:24 +02:00
|
|
|
$$($$(call UPPERCASE,$(1))_SOURCES) \
|
2013-10-18 22:31:25 +02:00
|
|
|
manual-check-dependencies \
|
|
|
|
manual-check-dependencies-$(3) \
|
2013-03-25 14:28:08 +01:00
|
|
|
manual-update-lists
|
infra: consistently use double dollar signs inside inner-xxx-targets
The inner-xxx-targets in the buildroot package infrastructures are
evaluated using $(eval) which causes variable references to be a bit
different than in regular make code. As we want most references to be
expanded only at the time of the $(eval) we should not use standard
references $(VAR) but rather use double dollar signs $$(VAR). This includes
function references like $(call), $(subst), etc. The only exception is the
reference to pkgdir/pkgname and numbered variables, which are parameters to
the inner block: $(1), $(2), etc.
This patch introduces consistent usage of double-dollar signs throughout the
different inner-xxx-targets blocks.
In some cases, this would potentially cause circular references, in
particular when the value of HOST_FOO_VAR would be obtained from the
corresponding FOO_VAR if HOST_FOO_VAR is not defined. In these cases, a test
is added to check for a host package (the only case where such constructions
are relevant; these are not circular).
Benefits of these changes are:
- behavior of variables is now again as expected. For example, setting
$(2)_VERSION = virtual in pkg-virtual.mk will effectively work, while
originally it would cause very odd results.
- The output of 'make printvars' is now much more useful. This target shows
the value of all variables, and the expression that led to that value.
However, if the expression was coming from an inner-xxx-targets block, and
was using single dollar signs, it would show in printvars as
VAR = value (value)
while if double dollar signs are used, it would effectively look like
VAR = value (actual expression)
as is intended.
This improvement is for example effective for FOO_DL_VERSION, FOO_RAWNAME,
FOO_SITE_METHOD and FOO_MAKE.
The correctness of this patch has been verified using 'make printvars',
'make manual' and 'make legal-info' before and after applying this patch,
and comparing the output.
Insight-provided-by: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-06-11 21:12:24 +02:00
|
|
|
$$(Q)$$(call MESSAGE,"Generating $(5) $(1)...")
|
|
|
|
$$(Q)mkdir -p $$(@D)/.build
|
|
|
|
$$(Q)rsync -au docs/$(1)/*.txt $$(@D)/.build
|
|
|
|
$$(Q)a2x $(6) -f $(2) -d book -L -r $$(TOPDIR)/docs/images \
|
2014-09-14 13:07:35 +02:00
|
|
|
--asciidoc-opts="$$(MANUAL_$(2)_ASCIIDOC_OPTS)" \
|
|
|
|
-D $$(@D) $$(@D)/.build/$(1).txt
|
infra: consistently use double dollar signs inside inner-xxx-targets
The inner-xxx-targets in the buildroot package infrastructures are
evaluated using $(eval) which causes variable references to be a bit
different than in regular make code. As we want most references to be
expanded only at the time of the $(eval) we should not use standard
references $(VAR) but rather use double dollar signs $$(VAR). This includes
function references like $(call), $(subst), etc. The only exception is the
reference to pkgdir/pkgname and numbered variables, which are parameters to
the inner block: $(1), $(2), etc.
This patch introduces consistent usage of double-dollar signs throughout the
different inner-xxx-targets blocks.
In some cases, this would potentially cause circular references, in
particular when the value of HOST_FOO_VAR would be obtained from the
corresponding FOO_VAR if HOST_FOO_VAR is not defined. In these cases, a test
is added to check for a host package (the only case where such constructions
are relevant; these are not circular).
Benefits of these changes are:
- behavior of variables is now again as expected. For example, setting
$(2)_VERSION = virtual in pkg-virtual.mk will effectively work, while
originally it would cause very odd results.
- The output of 'make printvars' is now much more useful. This target shows
the value of all variables, and the expression that led to that value.
However, if the expression was coming from an inner-xxx-targets block, and
was using single dollar signs, it would show in printvars as
VAR = value (value)
while if double dollar signs are used, it would effectively look like
VAR = value (actual expression)
as is intended.
This improvement is for example effective for FOO_DL_VERSION, FOO_RAWNAME,
FOO_SITE_METHOD and FOO_MAKE.
The correctness of this patch has been verified using 'make printvars',
'make manual' and 'make legal-info' before and after applying this patch,
and comparing the output.
Insight-provided-by: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-06-11 21:12:24 +02:00
|
|
|
-$$(Q)rm -rf $$(@D)/.build
|
2012-04-17 16:45:22 +02:00
|
|
|
endef
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# GENDOC -- generates the make targets needed to build asciidoc documentation.
|
|
|
|
#
|
|
|
|
# argument 1 is the name of the document and must be a subdirectory of docs/;
|
|
|
|
# the top-level asciidoc file must have the same name
|
|
|
|
#
|
|
|
|
# The variable <DOCUMENT_NAME>_SOURCES defines the dependencies.
|
|
|
|
################################################################################
|
|
|
|
define GENDOC
|
2014-09-14 13:07:35 +02:00
|
|
|
$(call GENDOC_INNER,$(pkgname),xhtml,html,html,HTML,\
|
|
|
|
--xsltproc-opts "--stringparam toc.section.depth 1")
|
|
|
|
$(call GENDOC_INNER,$(pkgname),chunked,split-html,chunked,split HTML,\
|
|
|
|
--xsltproc-opts "--stringparam toc.section.depth 1")
|
|
|
|
$(call GENDOC_INNER,$(pkgname),pdf,pdf,pdf,PDF,\
|
|
|
|
--dblatex-opts "-P latex.output.revhistory=0")
|
2014-08-15 15:40:35 +02:00
|
|
|
$(call GENDOC_INNER,$(pkgname),text,text,text,text)
|
|
|
|
$(call GENDOC_INNER,$(pkgname),epub,epub,epub,ePUB)
|
|
|
|
clean: $(pkgname)-clean
|
|
|
|
$(pkgname)-clean:
|
|
|
|
$$(Q)$$(RM) -rf $$(O)/docs/$(pkgname)
|
|
|
|
.PHONY: $(pkgname) $(pkgname)-clean manual-update-lists
|
2012-04-17 16:45:22 +02:00
|
|
|
endef
|
|
|
|
|
2013-09-03 10:45:41 +02:00
|
|
|
MANUAL_SOURCES = $(sort $(wildcard docs/manual/*.txt) $(wildcard docs/images/*))
|
2014-08-15 15:40:35 +02:00
|
|
|
$(eval $(call GENDOC))
|