new file mode 100644
@@ -0,0 +1,136 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+// SPDX-FileCopyrightText: 2023 Benjamin Li <benl@squareup.com>
+
+// Instructions:
+// - Check out this repository as external/libgpiod.
+// - Move this build file to the project's root directory.
+
+//
+// libgpiod main library
+//
+
+cc_library {
+ name: "libgpiod",
+ defaults: [
+ "libgpiod_defaults",
+ ],
+ srcs: [
+ "lib/*.c",
+ "bindings/cxx/*.cpp",
+ ],
+ export_include_dirs: [
+ "include",
+ "bindings/cxx",
+ ],
+}
+
+cc_defaults {
+ name: "libgpiod_defaults",
+ device_specific: true,
+ cpp_std: "gnu++17",
+ cflags: [
+ // You may want to edit this with the version from configure.ac of
+ // the release you are using.
+ "-DGPIOD_VERSION_STR=\"unstable\"",
+ ],
+ cppflags: [
+ // Google C++ style is to not use exceptions, but this library does
+ // use them.
+ "-fexceptions",
+ ],
+ // Google C++ style is to not use runtime type information, but this
+ // library does use it.
+ rtti: true,
+}
+
+//
+// libgpiod tools
+//
+
+phony {
+ name: "libgpiod_tools",
+ required: [
+ "gpiodetect",
+ "gpioget",
+ "gpioinfo",
+ "gpiomon",
+ "gpionotify",
+ "gpioset",
+ ],
+}
+
+cc_binary {
+ name: "gpiodetect",
+ defaults: [
+ "libgpiod_defaults",
+ "libgpiod_tools_defaults",
+ ],
+ srcs: [
+ "tools/gpiodetect.c",
+ ],
+}
+
+cc_binary {
+ name: "gpioget",
+ defaults: [
+ "libgpiod_defaults",
+ "libgpiod_tools_defaults",
+ ],
+ srcs: [
+ "tools/gpioget.c",
+ ],
+}
+
+cc_binary {
+ name: "gpioinfo",
+ defaults: [
+ "libgpiod_defaults",
+ "libgpiod_tools_defaults",
+ ],
+ srcs: [
+ "tools/gpioinfo.c",
+ ],
+}
+
+cc_binary {
+ name: "gpiomon",
+ defaults: [
+ "libgpiod_defaults",
+ "libgpiod_tools_defaults",
+ ],
+ srcs: [
+ "tools/gpiomon.c",
+ ],
+}
+
+cc_binary {
+ name: "gpionotify",
+ defaults: [
+ "libgpiod_defaults",
+ "libgpiod_tools_defaults",
+ ],
+ srcs: [
+ "tools/gpionotify.c",
+ ],
+}
+
+cc_binary {
+ name: "gpioset",
+ defaults: [
+ "libgpiod_defaults",
+ "libgpiod_tools_defaults",
+ ],
+ srcs: [
+ "tools/gpioset.c",
+ ],
+}
+
+cc_defaults {
+ name: "libgpiod_tools_defaults",
+ srcs: [
+ "tools/tools-common.c",
+ ],
+ shared_libs: [
+ "libgpiod",
+ ],
+}
Add an Android.bp file for Soong, the Android build system, to build the library including C++ bindings along with all the CLI tools. This reference Android build file will live in a contrib/ folder to indiciate it is a less-maintained part of libgpiod. It will need to be moved to the root directory in order to use it, though, as Soong doesn't let Blueprint files reference sources in a parent directory. error: external/libgpiod/contrib/Android.bp:5:1: module "libgpiod" variant "...": Path is outside directory: ../include error: external/libgpiod/contrib/Android.bp:5:1: module "libgpiod" variant "...": Path is outside directory: ../bindings/cxx error: external/libgpiod/contrib/Android.bp:5:1: module "libgpiod" variant "...": Path is outside directory: ../lib/*.c error: external/libgpiod/contrib/Android.bp:5:1: module "libgpiod" variant "...": Path is outside directory: ../bindings/cxx/*.cpp Signed-off-by: Benjamin Li <benl@squareup.com> --- contrib/Android.bp | 136 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 contrib/Android.bp