summaryrefslogtreecommitdiff
path: root/Documentation/meson.build
AgeCommit message (Collapse)Author
2020-09-24Documentation: Search for dot binaryRicardo Ribalda
Doxygen depends on dot to generate the documentation. Make this dependency explicit on the meson file. Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2020-08-20Documentation: Guides: Pipeline Handler Writer's GuideChris Chinchilla
Introduce a pipeline-handler writers guide to provide a walk through of the steps and concepts required to implement a new Pipeline Handler. Signed-off-by: Chris Chinchilla <chris@gregariousmammal.com> [Reflow/Rework, update to mainline API] Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> [Further reworks and review] Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2020-08-20Documentation: Guides: Application Writer's GuideChris Chinchilla
Provide a tutorial and walk through guide for writing an applications with libcamera. Signed-off-by: Chris Chinchilla <chris@gregariousmammal.com> [Reflow/Rework, update to mainline API] Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> [Further reworks and review] Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2020-08-20Documentation: Guides: Developer's Guide to libcameraChris Chinchilla
Create an introduction and overview for new developers to libcamera. Provide an overview of the Camera Stack, and Architecture of libcamera and introduce the main concepts of libcamera. Signed-off-by: Chris Chinchilla <chris@gregariousmammal.com> [Kieran: Rework/Reflow, add diagrams, licensing] Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2020-05-18meson: Rename variables storing headers listsLaurent Pinchart
The list of public, IPA and internal header files are stored in three meson variables, named libcamera_api, libcamera_ipa_api and libcamera_headers respectively. The lack of uniformity is a bit confusing. Fix it by renaming those variables to libcamera_public_headers, libcamera_ipa_headers and libcamera_internal_headers. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Acked-by: Jacopo Mondi <jacopo@jmondi.org> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2020-05-13licenses: License all meson files under CC0-1.0Laurent Pinchart
In an attempt to clarify the license terms of all files in the libcamera project, the build system files deserve particular attention. While they describe how the binaries are created, they are not themselves transformed into any part of binary distributions of the software, and thus don't influence the copyright on the binary packages. They are however subject to copyright, and thus influence the distribution terms of the source packages. Most of the meson.build files would not meet the threshold of originality criteria required for copyright protection. Some of the more complex meson.build files may be eligible for copyright protection. To avoid any ambiguity and uncertainty, state our intent to not assert copyrights on the build system files by putting them in the public domain with the CC0-1.0 license. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Acked-by: Giulio Benetti <giulio.benetti@micronovasrl.com> Acked-by: Jacopo Mondi <jacopo@jmondi.org> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Acked-by: Naushir Patuck <naush@raspberrypi.com> Acked-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Acked-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Acked-by: Paul Elder <paul.elder@ideasonboard.com> Acked-by: Show Liu <show.liu@linaro.org>
2020-01-31Documentation: Add linkcheck targetKieran Bingham
Sphinx provides a run-target to verify external links specified in the documentation. This requires an active connection to be able to validate the links. Add a meson target to integrate the linkcheck facility into our build and test system. Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-11-20ipa: Switch to the plain C APIJacopo Mondi
Switch IPA communication to the plain C API. As the IPAInterface class is easier to use for pipeline handlers than a plain C API, retain it and add an IPAContextWrapper that translate between the C++ and the C APIs. On the IPA module side usage of IPAInterface may be desired for IPAs implemented in C++ that want to link to libcamera. For those IPAs, a new IPAInterfaceWrapper helper class is introduced to wrap the IPAInterface implemented internally by the IPA module into an ipa_context, ipa_context_ops and ipa_callback_ops. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
2019-09-15libcamera: Move ipa includes to the same level as libcameraLaurent Pinchart
The ipa includes are located in include/libcamera/ipa/. This gives an incorrect impression that they are a sub-part of the rest of the libcamera API, while they are the API towards the IPA the same way that include/libcamera/ contains the API towards applications. To clarify this, move them to include/ipa/. The IPA headers are however still part of libcamera, so installing them to ${prefix}/include/ipa/ would make little sense. To fix this, move the application facing API to ${prefix}/include/libcamera/libcamera/ when installed, and the IPA to ${prefix}/include/libcamera/ipa/. When major versions of libcamera will be released, they could then be installed side by side in ${prefix}/include/libcamera-${version}/. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
2019-08-16readme: Move index page content to READMEKieran Bingham
Move the introduction content from the index.rst to the README.rst so that it can also be found quickly from the top level. Include the README.rst directly into the index.rst to continue serving it as the front page material. Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-07-09libcamera: Rework automatic version generation to avoid rebuildsLaurent Pinchart
Commit b817bcec6b53 ("libcamera: Auto generate version information") generates version information in order to automatically include it various locations (Sphinx and Doxygen documentation, libcamera::version variable available at runtime, and version.h available at compile time). Unfortunately this causes lots of unnecessary rebuilds when modifying the git tree state, which hinders development. The problem is caused by the generated version.h being listed as a dependency for the whole libcamera. This is required as meson (to the best of my knowledge) doesn't provide a way to explicitly specify the dependency of a single object file (camera_manager.o in this case, as camera_manager.cpp is the only consumer of the generated version string) on the custom target used to generate version.h. The dependency can't be automatically detected at build time, like dependencies on normal headers that are generated by parsing the source, because the version.h header may not exist yet. The build could then fail in a racy way. This change attempts at solving the issue by generating a version.cpp instead of a version.h to set the git-based version. This minimises the number of files that need to be rebuild when then git tree state changes, while retaining the main purpose of the original automatic version generation, the ability to access the git-based version string at runtime. We however lose the ability to access git-based version information at build time in an application building against libcamera, but there is no expected use case for this. The version string is moved from the libcamera namespace to the CameraManager class in order to avoid including version.h inside libcamera (in version.cpp and in camera_manager.cpp), which would create dependencies causing more rebuild steps, as described above. On the other hand, major, minor and patch level version numbers are useful at build time. This commit changes the generation of version.h in order to add three macros named LIBCAMERA_VERSION_MAJOR, LIBCAMERA_VERSION_MINOR and LIBCAMERA_VERSION_PATCH for this purpose. version.h is not included by any other libcamera header or source file, and thus doesn't force a rebuild of the library. The Sphinx and Doxygen documentation keep their git-based version information, which is set during the configuration of the build and then doesn't track git commits. We may want to investigate how to improve this, but given that git-based version for the documentation has very few use cases outside of tagging nightly builds, this isn't considered an issue at the moment. The documentation install directory now uses the base version string, in order to avoid increasing the number of documentation directories needlessly. This shouldn't cause any issue as the API should not change without a change to the version number. The version number generation and handling code now also standardises the version variables to not start with a 'v' prefix in meson, in order to simplify their handling. The prefix is added when generating the relevant files. Note that we go back to specifying the fallback version in the main meson.build, in the call to the project() function. For the time being I believe this should be a good compromise to avoid unnecessary recompilation, and moving the fallback version to a different file for tarball releases can be built on top of this. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-07-04Documentation: Wrap extended doc_install_dir lineKieran Bingham
The doc_install_dir is longer than 80 chars. Wrap it accordingly. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2019-07-04libcamera: Auto generate version informationKieran Bingham
Generate a version string, and provide a global string object which allows applications to interrogate the current libcamera version information. The version header is automatically updated by meson on each build. The string roughly follows the semver [0] conventions of major.minor.patch-label as a value. [0] https://semver.org/ A script (utils/gen-version.sh) is provided which is modelled upon the processing from autoconf's git-version-gen. The gen-version.sh script will look for tags in the form vX.Y as starting points for the version string. While the repository does not have any matching tags, v0.0 will be assumed, resulting in versions with both major and minor being set to '0', and the patch count resulting from the number of patches in the history to that point. Finally, a uniquely identifying shortened hash is provided from git: v0.0.509+0ec0edf7 Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2019-05-23meson: Fix coding style in meson.build filesLaurent Pinchart
Consistently go for 4 spaces indentation, and always put a space between the colon in argument lists, as per the examples from the meson documentation. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-04-28Documentation: Drop install directive for DoxyfileNiklas Söderlund
Building the documentation reports warnings, WARNING: Project targetting '>= 0.40' but tried to use feature introduced in '0.50.0': install arg in configure_file WARNING: Project specifies a minimum meson_version '>= 0.40' but uses features which were added in newer versions: * 0.50.0: {'install arg in configure_file'} Due to the usage of the directive configure_file { install: false } in Documentation/meason.build which is introduced in meson 0.50. As we do not wish to install the Doxyfile no install_dir is set so there is no need to explicitly state that it should not be installed. Silence the warning by dropping the install directive. Fixes: 53c4d4c34fc49b95 ("Documentation: Generate source code documentation using Doxygen") Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-01-14Documentation: quieten sphinx-build outputKieran Bingham
The output of the sphinx-build for our documentation is overly verbose. Reduce this output to warnings and errors with the '-q' quiet option. Acked-by: Jacopo Mondi <jacopo@jmondi.org> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2018-12-14Documentation: Add architecture documentationLaurent Pinchart
The documentation is copied mostly verbatim from the website, with small modifications to the ascii art diagrams to make them compile. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Acked-by: Jacopo Mondi <jacopo@jmondi.org> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2018-12-13Documentation: Add coding style documentJacopo Mondi
Add document to summarize the coding style adopted by libcamera. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
2018-12-12Documentation: Generate source code documentation using DoxygenLaurent Pinchart
Extend the documentation build system to automatically generate documentation from source code using Doxygen. This is currently separate from the sphinx documentation, and should be integrated using the breathe (and possibly exhale) extensions. As the Documentation/meson.build file needs to reference the variables holding the source files, move the Documentation directory to the end of the subdirs() in the top-level meson.build. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2018-12-12Documentation: Don't hardcode install directoryLaurent Pinchart
Use the datadir option to select the directory in which to install documentation. This defaults to $prefix/share so this doesn't introduce any change in the default case. While at it use join_paths() to join patch components instead of hardcoding the / separator. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2018-12-11Documentation: Set install_dir in custom_target()Laurent Pinchart
The custom_target() function accepts an install_dir parameter. Along with setting install to true, this can be used to replace the install_subdir() function. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2018-11-28Documentation: Introduce sphinx documentationKieran Bingham
Utilise sphinx-build to generate documentation in HTML form, and populate with some initial content. An initial conf.py is generated from sphinx-quickstart and answering initial questions. Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>