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

Reply via email to