mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
71 lines
2.9 KiB
Plaintext
71 lines
2.9 KiB
Plaintext
/**
|
|
* @defgroup pkg Packages
|
|
* @{
|
|
* @brief External libraries and applications
|
|
* @details What are packages? RIOT packages:
|
|
* * pull a specific tested version most often from the (a) origin source
|
|
* * patch them to match the RIOT architecture
|
|
* * provide a specific tested configuration
|
|
* (such configuration may enable or disable features)
|
|
* * integrate the packages build process into the RIOT one
|
|
* * they have RIOT tests and/or examples to test/build them
|
|
*
|
|
* Using packages
|
|
* ==============
|
|
* To add a package to the list of compiled modules you have to add it to the
|
|
* `USEPKG` macro in your application's Makefile. If the package provides
|
|
* header files you might need to update the `INCLUDE` macro, too:
|
|
*
|
|
* ~~~~~~~~ {.mk}
|
|
* USEPKG += <pkg_name>
|
|
* INCLUDE += $(RIOTPKG)/<pkg_name>/...
|
|
* ~~~~~~~~
|
|
*
|
|
* When the package can be built out-of-source, the source code of external
|
|
* packages is fetched in a global location in:
|
|
*
|
|
* ~~~~~~~~ {.mk}
|
|
* $(RIOTBASE)/build/pkg/$(PKG_NAME)
|
|
* ~~~~~~~~
|
|
*
|
|
* When out-of-source build is not possible (for example because the package
|
|
* build system doesn't allow it), the source code is fetched in the build
|
|
* directory of the application under:
|
|
*
|
|
* ~~~~~~~~ {.mk}
|
|
* $(BINDIR)/pkg/$(PKG_NAME)
|
|
* ~~~~~~~~
|
|
*
|
|
* In this case, the source and the build directory are the same (currently,
|
|
* this applies to the micropython and openthread packages).
|
|
*
|
|
* Porting an external library
|
|
* ===========================
|
|
* Structure of a package
|
|
* ----------------------
|
|
* This module provides porting information for libraries and applications to use
|
|
* with RIOT (to build an external module). If you'd like to add a package to RIOT
|
|
* you need to add a directory with the name of your package to this directory.
|
|
* This directory should contain at least one file:
|
|
*
|
|
* * **Makefile**: A Makefile describing how to get the upstream application,
|
|
* apply the patch and how to build the package as a RIOT module.
|
|
* A rough template for several methods of acquiring a package is provided in
|
|
* `pkg/Makefile.git` and `pkg/Makefile.http`.
|
|
*
|
|
* Patch files can be included in a `patches` directory in the package dir.
|
|
* These are applied to the upstream package to make it build with RIOT.
|
|
*
|
|
* Creating a patch with git
|
|
* -------------------------
|
|
* Assuming your upstream library resides in a git repository, you can create the
|
|
* patch files as follows:
|
|
* * checkout the targeted version of the upstream application
|
|
* * create a new branch (e.g. `riot-port`)
|
|
* * conduct necessary changes (e.g. edit, add, or remove some files)
|
|
* * commit your changes using `git commit`
|
|
* * create the patch files using `git format-patch -n riot-port`
|
|
* * move the resulting patch files to the patches directory of your package.
|
|
* @}
|
|
*/
|