This is a guide to explain various useful targets in Userland component
|
Makefiles. There is a set of targets that all Makefiles must include, plus
|
some addtional targets that are there for convenience.
|
|
component-environment-check::
|
This target is present in all Makefiles. It is defined in
|
$(WS_MAKE_RULES)/environment.mk which is included by
|
$(WS_MAKE_RULES)/shares-macros.mk. It reports on some interesting
|
information about the current environment and whether or not it is suitable
|
to build and/or publish the component.
|
|
component-environment-prep::
|
This target is present in all Makefiles. It is defined in
|
$(WS_MAKE_RULES)/environment.mk which is included by
|
$(WS_MAKE_RULES)/shares-macros.mk. It uses both USERLAND_REQUIRED_PACKAGES
|
and REQUIRED_PACKAGES macro contents to attempt to install any required
|
packages in the current environment. To use this target user has to be
|
assigned "Software Installation" or "Primary Administrator" profile.
|
|
component-test-environment-check::
|
This target is present in all Makefiles. It is defined in
|
$(WS_MAKE_RULES)/environment.mk which is included by
|
$(WS_MAKE_RULES)/shares-macros.mk. It reports on some interesting
|
information about the current environment and whether or not it is suitable
|
to test the component.
|
|
component-test-environment-prep::
|
This target is present in all Makefiles. It is defined in
|
$(WS_MAKE_RULES)/environment.mk which is included by
|
$(WS_MAKE_RULES)/shares-macros.mk. It uses both
|
USERLAND_TEST_REQUIRED_PACKAGES and TEST_REQUIRED_PACKAGES macro contents to
|
attempt to install any required packages in the current environment. To use
|
this target user has to be assigned "Software Installation" or "Primary
|
Administrator" profile.
|
|
download::
|
This target is present in all Makefiles. It can be used at the top level
|
to act across all components, or on an individual component basis. It is
|
typically defined by including $(WS_MAKE_RULES)/common.mk in your component
|
Makefile. This target depends on your component Makefile, so changes to your
|
component Makefile will automatically trigger a re-download and subsequent
|
build steps that depend on it. You can use the MAKEFILE_PREREQ macro to
|
override this behaviour and avoid rebuilding with each Makefile change. This
|
macro should only be used in the calling environment via something like:
|
$ gmake MAKEFILE_PREREQ= install
|
|
unpack::
|
This target is present in all Makefiles. It can be used at the top level
|
to act across all components, or on an individual component basis. It is
|
typically defined by including $(WS_MAKE_RULES)/common.mk in your component
|
Makefile. This target depends on the previously described "download" target,
|
This target will unpack any downloaded source archives. It is an interim
|
step in the source code preparation phase of the build.
|
|
patch::
|
This target is present in all Makefiles. It can be used at the top level
|
to act across all components, or on an individual component basis. It is
|
typically defined by including $(WS_MAKE_RULES)/common.mk in your component
|
Makefile. This target depends on the previously described "unpack" target,
|
This target will patch any unpacked source. It is an interim step in the
|
source code preparation phase of the build.
|
|
prep::
|
This target is present in all Makefiles. It can be used at the top level
|
to act across all components, or on an individual component basis. It is
|
typically defined by including $(WS_MAKE_RULES)/common.mk in your component
|
Makefile. It depends on the previously described "download" target, as well
|
as internal interim targets to unpack source archives and apply patches to
|
the unpacked source.
|
|
build::
|
This target must be present in all Makefiles. It can be used at the top level
|
to act across all components, or on an individual component basis. It is
|
defined in the individual component Makefiles, but most Makefile fragments
|
under $(WS_MAKE_RULES) include targets that allow the definitions to depend
|
on one of several convenience macros $(BUILD_32), $(BUILD_64),
|
$(BUILD_32_and_64), and $(BUILD_NO_ARCH) to build 32-bit support, 64-bit
|
support, both 32 and 64 bit support, or architecture neutral support. The
|
macro used will depend on the component.
|
|
install::
|
This target must be present in all Makefiles. It can be used at the top level
|
to act across all components, or on an individual component basis. It is
|
defined in the individual component Makefiles, but most Makefile fragments
|
under $(WS_MAKE_RULES) include targets that allow the definitions to depend
|
on one of several convenience macros $(INSTALL_32), $(INSTALL_64),
|
$(INSTALL_32_and_64), and $(INSTALL_NO_ARCH) to install 32-bit support, 64-bit
|
support, both 32 and 64 bit support, or architecture neutral support. The
|
macro used will depend on the component and corresponds to the build target
|
macro used.
|
|
pkglint::
|
This target is an optional target is automatically defined in each Makefile
|
by the inclusion of $(WS_MAKE_RULES)/common.mk. It will run the build steps
|
necessary to pkglint the manifests for a component.
|
|
pre-publish::
|
This target is present in all Makefiles. It can be used at the top level
|
to act across all components, or on an individual component basis. It is
|
automatically defined by including $(WS_MAKE_RULES)/common.mk. It depends
|
on the previously described 'install' target and will perform a series of
|
internal, intermediate steps to use the component package manifests to
|
generate and validate consistency of packages for that component.
|
|
NOTE: The pre-publish target aims to help a recipe developer to make sure
|
that the recipe can produce a valid package without actually pushing its
|
bits into his or her repository (allows to experiment, saves some time, and
|
avoids polluting the repository with known-bad code during development cycles).
|
|
publish::
|
This target is present in all Makefiles. It can be used at the top level
|
to act across all components, or on an individual component basis. It is
|
automatically defined by including $(WS_MAKE_RULES)/common.mk. It depends
|
on the previously described 'pre-publish' target and will actually publish
|
packages for that component to the repository configured in $(WS_REPO).
|
|
clean::
|
This target is present in all Makefiles. It can be used at the top level
|
to act across all components, or on an individual component basis. It is
|
automatically defined by including $(WS_MAKE_RULES)/common.mk. It cleans
|
up any files created by building the component with the exception of any
|
downloaded files.
|
|
clobber::
|
|
This target is present in all Makefiles. It can be used at the top level
|
to act across all components, or on an individual component basis. It is
|
automatically defined by including $(WS_MAKE_RULES)/common.mk. It depends
|
on the previously described 'clean' target and additionally cleans up any
|
downloaded source archives.
|
|
REQUIRED_PACKAGES::
|
This target is present in all component Makefiles. It is automatically
|
defined by including $(WS_MAKE_RULES)/common.mk. It is a convenience that can
|
be used to generate the set of REQUIRED_PACKAGES that is needed by the
|
'pkgdepend resolve' portion of package generation and publication (publish
|
target). It automatically appends to the component Makefile, but the results
|
should be manually verified.
|
|
env-check::
|
This target serves as an alias for component-environment-check target. It exists
|
only for user convenience.
|
|
env-prep::
|
This target serves as an alias for component-environment-prep target. It exists
|
only for user convenience.
|
|
test-env-check::
|
This target serves as an alias for component-test-environment-check target.
|
It exists only for user convenience.
|
|
test-env-prep::
|
This target serves as an alias for component-test-environment-prep target. It
|
exists only for user convenience.
|
|
print-VAR
|
This target will print contents of variable VAR and also provide information
|
about variable origin and variable flavor.
|
|
print-value-VAR
|
This target will print contents of variable VAR.
|
|
format
|
This target will apply different refactoring rules to update the Makefile
|
to the current style: deprecation of macros, use of new target, autoindent...
|
The rules are implemented in the userland-component utility.
|
|
update
|
This target will format the Makefile then bump the COMPONENT_REVISION variable
|
if no VERSION value is provided. If a VERSION value is provided it will set
|
the COMPONENT_VERSION to the given value and remove COMPONENT_REVISION.
|
For some supported build style it may peform additional actions like:
|
- infering the latest version if VERSION=latest is passed,
|
- updating the archive checksum.
|
|
update-latest
|
This target is a convenience shortcut for 'update VERSION=latest'.
|