Includes the C library from the Eclipse Tahu project that provides an
implementation of the Sparkplug specification.  This package does not
include the implementations from the Tahu project for other programming
languages other than C.

Only the dynamic C library is built.

Signed-off-by: Ian Abbott <[email protected]>
---
v1 -> v2: Fix LIBTAHU_LICENSE_FILES.  Simplify LIBTAHU_MAKE_OPT.  Only
build the dynamic library.  Patch c/core/Makefile to allow building only
the dynamic library and to fix parallel make.  Install files verbosely
so we can see them in the logfile.
v2 -> v3: Patch the "tahu.h" header file to comment out the definition
of the SPARKPLUG_DEBUG macro and so disable printing of debug messages
to standard output.
---
 ...Fixes-for-parallel-make-and-make-lib.patch | 34 ++++++++
 ...tahu.h-Do-not-define-SPARKPLUG_DEBUG.patch | 28 +++++++
 patches/libtahu-1.0.1/series                  |  2 +
 rules/libtahu.in                              | 11 +++
 rules/libtahu.make                            | 83 +++++++++++++++++++
 5 files changed, 158 insertions(+)
 create mode 100644 
patches/libtahu-1.0.1/0001-c-core-Makefile-Fixes-for-parallel-make-and-make-lib.patch
 create mode 100644 
patches/libtahu-1.0.1/0002-tahu.h-Do-not-define-SPARKPLUG_DEBUG.patch
 create mode 100644 patches/libtahu-1.0.1/series
 create mode 100644 rules/libtahu.in
 create mode 100644 rules/libtahu.make

diff --git 
a/patches/libtahu-1.0.1/0001-c-core-Makefile-Fixes-for-parallel-make-and-make-lib.patch
 
b/patches/libtahu-1.0.1/0001-c-core-Makefile-Fixes-for-parallel-make-and-make-lib.patch
new file mode 100644
index 000000000..602fee06d
--- /dev/null
+++ 
b/patches/libtahu-1.0.1/0001-c-core-Makefile-Fixes-for-parallel-make-and-make-lib.patch
@@ -0,0 +1,34 @@
+From 6f70eff53d370b96070d1362ebcd4ce153b2a172 Mon Sep 17 00:00:00 2001
+From: Ian Abbott <[email protected]>
+Date: Fri, 17 Feb 2023 10:41:20 +0000
+Subject: [PATCH] c/core/Makefile: Fixes for parallel make and make
+ lib/libtahu.so
+
+Change $(TEST) target to depend on the built library files.
+
+Change $(DNAME) target rules to create the lib directory.
+
+Signed-off-by: Ian Abbott <[email protected]>
+---
+ c/core/Makefile | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/c/core/Makefile b/c/core/Makefile
+index 8243a67..17c5e3d 100644
+--- a/c/core/Makefile
++++ b/c/core/Makefile
+@@ -36,9 +36,10 @@ $(SNAME): $(OBJ)
+ 
+ $(DNAME): LDFLAGS += -shared
+ $(DNAME): $(OBJ)
++      mkdir -p lib
+       $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
+ 
+-$(TEST):
++$(TEST): $(SNAME) $(DNAME)
+       $(CC) $(CFLAGS) -o test/test_static $(TEST_OBJ) $(SNAME) -lmosquitto
+       $(CC) $(CFLAGS) $(LD_TEST) -o test/test_dynamic $(TEST_OBJ) -l$(NAME) 
-lmosquitto
+ 
+-- 
+2.39.1
+
diff --git 
a/patches/libtahu-1.0.1/0002-tahu.h-Do-not-define-SPARKPLUG_DEBUG.patch 
b/patches/libtahu-1.0.1/0002-tahu.h-Do-not-define-SPARKPLUG_DEBUG.patch
new file mode 100644
index 000000000..417cec098
--- /dev/null
+++ b/patches/libtahu-1.0.1/0002-tahu.h-Do-not-define-SPARKPLUG_DEBUG.patch
@@ -0,0 +1,28 @@
+From cff7b099c23937bad205833ea1e4e8278690eb21 Mon Sep 17 00:00:00 2001
+From: Ian Abbott <[email protected]>
+Date: Fri, 17 Feb 2023 14:40:58 +0000
+Subject: [PATCH] tahu.h: Do not define SPARKPLUG_DEBUG
+
+If SPARKPLUG_DEBUG is defined in tahu.c, the library will write lots of
+debug messages to standard output.  That's OK for experimentation, but
+not for a live system, so comment out the macro definition.
+---
+ c/core/include/tahu.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/c/core/include/tahu.h b/c/core/include/tahu.h
+index e599146..03fbaaa 100644
+--- a/c/core/include/tahu.h
++++ b/c/core/include/tahu.h
+@@ -29,7 +29,7 @@ extern "C" {
+ #endif
+ 
+ // Enable/disable debug messages
+-#define SPARKPLUG_DEBUG 1
++//#define SPARKPLUG_DEBUG 1
+ 
+ #ifdef SPARKPLUG_DEBUG
+ #define DEBUG_PRINT(...) printf(__VA_ARGS__)
+-- 
+2.39.1
+
diff --git a/patches/libtahu-1.0.1/series b/patches/libtahu-1.0.1/series
new file mode 100644
index 000000000..31edd1b86
--- /dev/null
+++ b/patches/libtahu-1.0.1/series
@@ -0,0 +1,2 @@
+0001-c-core-Makefile-Fixes-for-parallel-make-and-make-lib.patch
+0002-tahu.h-Do-not-define-SPARKPLUG_DEBUG.patch
diff --git a/rules/libtahu.in b/rules/libtahu.in
new file mode 100644
index 000000000..451d40957
--- /dev/null
+++ b/rules/libtahu.in
@@ -0,0 +1,11 @@
+## SECTION=system_libraries
+
+config LIBTAHU
+       tristate
+       prompt "libtahu"
+       help
+         Eclipse Tahu C library for encoding and decoding Sparkplug B
+         messages.
+
+         A typical application will also require an MQTT library such
+         as "mosquitto".
diff --git a/rules/libtahu.make b/rules/libtahu.make
new file mode 100644
index 000000000..26c064c6d
--- /dev/null
+++ b/rules/libtahu.make
@@ -0,0 +1,83 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2023 by Ian Abbott <[email protected]>
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# We provide this package
+#
+PACKAGES-$(PTXCONF_LIBTAHU) += libtahu
+
+#
+# Paths and names
+#
+LIBTAHU_VERSION        := 1.0.1
+LIBTAHU_MD5    := 7e980ed17e34a78d6d61c000e4957292
+LIBTAHU                := libtahu-$(LIBTAHU_VERSION)
+LIBTAHU_SUFFIX := tar.gz
+LIBTAHU_URL    := 
https://github.com/eclipse/tahu/archive/refs/tags/v$(LIBTAHU_VERSION).$(LIBTAHU_SUFFIX)
+LIBTAHU_SOURCE := $(SRCDIR)/$(LIBTAHU).$(LIBTAHU_SUFFIX)
+LIBTAHU_DIR    := $(BUILDDIR)/$(LIBTAHU)
+LIBTAHU_SUBDIR := c/core
+LIBTAHU_LICENSE        := EPL-2.0
+LIBTAHU_LICENSE_FILES  := \
+       file://LICENCE;md5=c7cc8aa73fb5717f8291fcec5ce9ed6c \
+       file://notice.html;md5=618d2440fc58e15450a9416cd6804477
+
+# ----------------------------------------------------------------------------
+# Prepare
+# ----------------------------------------------------------------------------
+
+LIBTAHU_CONF_TOOL      := NO
+
+# ----------------------------------------------------------------------------
+# Compile
+# ----------------------------------------------------------------------------
+
+#LIBTAHU_MAKE_ENV      := $(CROSS_ENV)
+
+# Just build the dynamic library.
+LIBTAHU_MAKE_OPT       := \
+       $(CROSS_ENV_PROGS) \
+       lib/libtahu.so
+
+# ----------------------------------------------------------------------------
+# Install
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/libtahu.install:
+       @$(call targetinfo)
+       @install -m 644 -v -D -t "$(LIBTAHU_PKGDIR)/usr/lib" \
+               "$(LIBTAHU_DIR)/$(LIBTAHU_SUBDIR)/lib/libtahu.so"
+       @install -m 644 -v -D -t "$(LIBTAHU_PKGDIR)/usr/include" \
+               "$(LIBTAHU_DIR)/$(LIBTAHU_SUBDIR)/include/pb.h" \
+               "$(LIBTAHU_DIR)/$(LIBTAHU_SUBDIR)/include/pb_common.h" \
+               "$(LIBTAHU_DIR)/$(LIBTAHU_SUBDIR)/include/pb_decode.h" \
+               "$(LIBTAHU_DIR)/$(LIBTAHU_SUBDIR)/include/pb_encode.h" \
+               "$(LIBTAHU_DIR)/$(LIBTAHU_SUBDIR)/include/tahu.h" \
+               "$(LIBTAHU_DIR)/$(LIBTAHU_SUBDIR)/include/tahu.pb.h"
+       @$(call touch)
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/libtahu.targetinstall:
+       @$(call targetinfo)
+
+       @$(call install_init, libtahu)
+       @$(call install_fixup, libtahu,PRIORITY,optional)
+       @$(call install_fixup, libtahu,SECTION,base)
+       @$(call install_fixup, libtahu,AUTHOR,"Ian Abbott <[email protected]>")
+       @$(call install_fixup, libtahu,DESCRIPTION,missing)
+
+       @$(call install_lib, libtahu, 0, 0, 0644, libtahu)
+
+       @$(call install_finish, libtahu)
+
+       @$(call touch)
+
+# vim: syntax=make
-- 
2.39.1


Reply via email to