All of lore.kernel.org
 help / color / mirror / Atom feed
From: Viresh Kumar <viresh.kumar@linaro.org>
To: Linus Walleij <linus.walleij@linaro.org>,
	Bartosz Golaszewski <brgl@bgdev.pl>
Cc: "Viresh Kumar" <viresh.kumar@linaro.org>,
	"Vincent Guittot" <vincent.guittot@linaro.org>,
	linux-gpio@vger.kernel.org, "Kent Gibson" <warthog618@gmail.com>,
	"Miguel Ojeda" <miguel.ojeda.sandonis@gmail.com>,
	"Wedson Almeida Filho" <wedsonaf@google.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	stratos-dev@op-lists.linaro.org,
	"Gerard Ryan" <g.m0n3y.2503@gmail.com>
Subject: [PATCH V6 8/8] libgpiod: Integrate building of rust bindings with make
Date: Mon, 26 Sep 2022 16:38:20 +0530	[thread overview]
Message-ID: <4beb7106a7fec40f4aa9541a2c04f7a652ba31ad.1664189248.git.viresh.kumar@linaro.org> (raw)
In-Reply-To: <cover.1664189248.git.viresh.kumar@linaro.org>

Lets make build rust bindings as well.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 README                    |  8 +++++---
 TODO                      |  8 --------
 bindings/Makefile.am      |  6 ++++++
 bindings/rust/Makefile.am | 18 ++++++++++++++++++
 configure.ac              | 16 ++++++++++++++++
 5 files changed, 45 insertions(+), 11 deletions(-)
 create mode 100644 bindings/rust/Makefile.am

diff --git a/README b/README
index 814a0f161fd2..68b5d69f9b66 100644
--- a/README
+++ b/README
@@ -119,9 +119,9 @@ TOOLS
 BINDINGS
 --------
 
-High-level, object-oriented bindings for C++ and python3 are provided. They
-can be enabled by passing --enable-bindings-cxx and --enable-bindings-python
-arguments respectively to configure.
+High-level, object-oriented bindings for C++, python3 and Rust are provided.
+They can be enabled by passing --enable-bindings-cxx, --enable-bindings-python
+and --enable-bindings-rust arguments respectively to configure.
 
 C++ bindings require C++11 support and autoconf-archive collection if building
 from git.
@@ -132,6 +132,8 @@ the PYTHON_CPPFLAGS and PYTHON_LIBS variables in order to point the build
 system to the correct locations. During native builds, the configure script
 can auto-detect the location of the development files.
 
+Rust bindings require cargo support.
+
 TESTING
 -------
 
diff --git a/TODO b/TODO
index 8bb4d8f3ad56..cf4fd7b4a962 100644
--- a/TODO
+++ b/TODO
@@ -28,14 +28,6 @@ and is partially functional.
 
 ----------
 
-* implement rust bindings
-
-With Rust gaining popularity as a low-level system's language and the
-possibility of it making its way into the linux kernel, it's probably time to
-provide Rust bindings to libgpiod as part of the project.
-
-----------
-
 * implement a simple daemon for controlling GPIOs in C together with a client
   program
 
diff --git a/bindings/Makefile.am b/bindings/Makefile.am
index 8f8c762f254f..004ae23dbc58 100644
--- a/bindings/Makefile.am
+++ b/bindings/Makefile.am
@@ -14,3 +14,9 @@ if WITH_BINDINGS_PYTHON
 SUBDIRS += python
 
 endif
+
+if WITH_BINDINGS_RUST
+
+SUBDIRS += rust
+
+endif
diff --git a/bindings/rust/Makefile.am b/bindings/rust/Makefile.am
new file mode 100644
index 000000000000..79a52bc691ae
--- /dev/null
+++ b/bindings/rust/Makefile.am
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+# SPDX-FileCopyrightText: 2022 Viresh Kumar <viresh.kumar@linaro.org>
+
+command = cargo build --release --lib
+
+if WITH_TESTS
+command += --tests
+endif
+
+if WITH_EXAMPLES
+command += --examples
+endif
+
+all:
+	$(command)
+
+clean:
+	cargo clean
diff --git a/configure.ac b/configure.ac
index 6ac1d8ed8a40..37cfdb3644f7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -212,6 +212,21 @@ then
 		[AC_SUBST(PYTHON_LIBS, [`$PYTHON-config --libs`])])
 fi
 
+AC_ARG_ENABLE([bindings-rust],
+	[AS_HELP_STRING([--enable-bindings-rust],[enable rust bindings [default=no]])],
+	[if test "x$enableval" = xyes; then with_bindings_rust=true; fi],
+	[with_bindings_rust=false])
+AM_CONDITIONAL([WITH_BINDINGS_RUST], [test "x$with_bindings_rust" = xtrue])
+
+if test "x$with_bindings_rust" = xtrue
+then
+	AC_CHECK_PROG([has_cargo], [cargo], [true], [false])
+	if test "x$has_cargo" = xfalse
+	then
+		AC_MSG_ERROR([cargo not found - needed for rust bindings])
+	fi
+fi
+
 AC_CHECK_PROG([has_doxygen], [doxygen], [true], [false])
 AM_CONDITIONAL([HAS_DOXYGEN], [test "x$has_doxygen" = xtrue])
 if test "x$has_doxygen" = xfalse
@@ -246,6 +261,7 @@ AC_CONFIG_FILES([Makefile
 		 bindings/python/Makefile
 		 bindings/python/examples/Makefile
 		 bindings/python/tests/Makefile
+		 bindings/rust/Makefile
 		 man/Makefile])
 
 AC_OUTPUT
-- 
2.31.1.272.g89b43f80a514


  parent reply	other threads:[~2022-09-26 12:31 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-26 11:08 [PATCH V6 0/8] libgpiod: Add Rust bindings Viresh Kumar
2022-09-26 11:08 ` [PATCH V6 1/8] libgpiod: Add libgpiod-sys rust crate Viresh Kumar
2022-09-26 11:08 ` [PATCH V6 2/8] libgpiod-sys: Add pre generated rust bindings Viresh Kumar
2022-09-26 11:08 ` [PATCH V6 3/8] libgpiod: Add rust wrapper crate Viresh Kumar
2022-09-26 13:29   ` Bartosz Golaszewski
2022-09-26 15:26     ` Viresh Kumar
2022-09-27 13:18       ` Bartosz Golaszewski
2022-09-27 13:57         ` Viresh Kumar
2022-09-27 15:25           ` Bartosz Golaszewski
2022-09-28 11:10             ` Viresh Kumar
2022-09-28 12:20               ` Bartosz Golaszewski
2022-09-28 15:17                 ` Viresh Kumar
2022-09-28 17:54                   ` Bartosz Golaszewski
2022-09-29  6:54                     ` Viresh Kumar
2022-09-29  7:37                       ` Bartosz Golaszewski
2022-09-29  8:58                         ` Viresh Kumar
2022-09-29 11:16                           ` Bartosz Golaszewski
2022-09-29 11:43                         ` Kent Gibson
2022-09-29 13:55                     ` Miguel Ojeda
2022-10-11  4:16                       ` Viresh Kumar
2022-10-11  4:25                         ` Kent Gibson
2022-10-11  4:37                           ` Viresh Kumar
2022-10-11  4:46                             ` Viresh Kumar
2022-10-13  6:12                         ` Viresh Kumar
2022-10-14  9:45                           ` Bartosz Golaszewski
2022-10-14  9:57                             ` Viresh Kumar
2022-10-14 14:25                               ` Bartosz Golaszewski
2022-10-14 16:06                                 ` Kent Gibson
2022-10-17 11:26                                   ` Viresh Kumar
2022-10-17 11:34                                     ` Kent Gibson
2022-10-17 11:37                                       ` Viresh Kumar
2022-09-26 11:08 ` [PATCH V6 4/8] libgpiod: Add rust examples Viresh Kumar
2022-09-26 11:08 ` [PATCH V6 5/8] libgpiod: Add gpiosim rust crate Viresh Kumar
2022-09-26 11:08 ` [PATCH V6 6/8] gpiosim: Add pre generated rust bindings Viresh Kumar
2022-09-26 11:08 ` [PATCH V6 7/8] libgpiod: Add rust tests Viresh Kumar
2022-09-26 11:08 ` Viresh Kumar [this message]
2022-09-26 15:57 ` [PATCH V6 0/8] libgpiod: Add Rust bindings Viresh Kumar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4beb7106a7fec40f4aa9541a2c04f7a652ba31ad.1664189248.git.viresh.kumar@linaro.org \
    --to=viresh.kumar@linaro.org \
    --cc=alex.bennee@linaro.org \
    --cc=brgl@bgdev.pl \
    --cc=g.m0n3y.2503@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=miguel.ojeda.sandonis@gmail.com \
    --cc=stratos-dev@op-lists.linaro.org \
    --cc=vincent.guittot@linaro.org \
    --cc=warthog618@gmail.com \
    --cc=wedsonaf@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.