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
