This is an automated email from the ASF dual-hosted git repository. tvb pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/buildstream-plugins.git
commit 6e51cbca386c787090b7c561b87a6f89997d77da Author: Tristan van Berkom <[email protected]> AuthorDate: Fri Mar 18 17:14:29 2022 +0900 Initially adding cmake element From bst-plugins-experimental --- src/buildstream_plugins/elements/cmake.py | 69 +++++++++++++++++++++++++++ src/buildstream_plugins/elements/cmake.yaml | 72 +++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+) diff --git a/src/buildstream_plugins/elements/cmake.py b/src/buildstream_plugins/elements/cmake.py new file mode 100644 index 0000000..ccecaa5 --- /dev/null +++ b/src/buildstream_plugins/elements/cmake.py @@ -0,0 +1,69 @@ +# +# Copyright (C) 2018 Codethink Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Authors: +# Tristan Van Berkom <[email protected]> + +""" +cmake - CMake build element +=========================== +This is a `BuildElement +<https://docs.buildstream.build/master/buildstream.buildelement.html#module-buildstream.buildelement>`_ +implementation for using the `CMake <https://cmake.org/>`_ build system. + +You will often want to pass additional arguments to the ``cmake`` program for +specific configuration options. This should be done on a per-element basis by +setting the ``cmake-local`` variable. Here is an example: + +.. code:: yaml + + variables: + cmake-local: | + -DCMAKE_BUILD_TYPE=Debug + +If you want to pass extra options to ``cmake`` for every element in your +project, set the ``cmake-global`` variable in your project.conf file. Here is +an example of that: + +.. code:: yaml + + elements: + cmake: + variables: + cmake-global: | + -DCMAKE_BUILD_TYPE=Release + +Here is the default configuration for the ``cmake`` element in full: + + .. literalinclude:: ../../../src/buildstream_plugins/elements/cmake.yaml + :language: yaml + +See `built-in functionality documentation +<https://docs.buildstream.build/master/buildstream.buildelement.html#core-buildelement-builtins>`_ for +details on common configuration options for build elements. +""" + +from buildstream import BuildElement + + +# Element implementation for the 'cmake' kind. +class CMakeElement(BuildElement): + + BST_MIN_VERSION = "2.0" + + +# Plugin entry point +def setup(): + return CMakeElement diff --git a/src/buildstream_plugins/elements/cmake.yaml b/src/buildstream_plugins/elements/cmake.yaml new file mode 100644 index 0000000..cffa201 --- /dev/null +++ b/src/buildstream_plugins/elements/cmake.yaml @@ -0,0 +1,72 @@ +# CMake default configuration + +variables: + + build-dir: _builddir + + # Project-wide extra arguments to be passed to `cmake` + cmake-global: '' + + # Element-specific extra arguments to be passed to `cmake`. + cmake-local: '' + + # For backwards compatibility only, do not use. + cmake-extra: '' + + # The cmake generator to use + generator: Ninja + + cmake-args: | + + -DCMAKE_INSTALL_PREFIX:PATH="%{prefix}" \ + -DCMAKE_INSTALL_LIBDIR:PATH="%{lib}" %{cmake-extra} %{cmake-global} %{cmake-local} + + cmake: | + + cmake -B%{build-dir} -H"%{conf-root}" -G"%{generator}" %{cmake-args} + + make: cmake --build %{build-dir} -- ${JOBS} + make-install: env DESTDIR="%{install-root}" cmake --build %{build-dir} --target install + + # Set this if the sources cannot handle parallelization. + # + # notparallel: True + +config: + + # Commands for configuring the software + # + configure-commands: + - | + %{cmake} + + # Commands for building the software + # + build-commands: + - | + %{make} + + # Commands for installing the software into a + # destination folder + # + install-commands: + - | + %{make-install} + + # Commands for stripping debugging information out of + # installed binaries + # + strip-commands: + - | + %{strip-binaries} + +# Use max-jobs CPUs for building and enable verbosity +environment: + JOBS: -j%{max-jobs} + V: 1 + +# And dont consider JOBS or V as something which may +# affect build output. +environment-nocache: +- JOBS +- V
