All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 0/3] Add qoriq-rcw C reimplementation + libmcpp dep
@ 2026-07-01 12:19 Philippe Nunes via buildroot
  2026-07-01 12:19 ` [Buildroot] [PATCH 1/3] package/mcpp: new package Philippe Nunes via buildroot
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Philippe Nunes via buildroot @ 2026-07-01 12:19 UTC (permalink / raw)
  To: buildroot; +Cc: Philippe Nunes

This series adds a host-only C reimplementation of NXP's rcw.py for the
pbiformat=2 QorIQ family (LS1028, LS1088, LS2088, LX2160), packaged as
a reusable library (libqoriq-rcw) and a CLI built on top (qoriq-rcw-c).
The library depends on mcpp (a portable C preprocessor that ships as a
reusable libmcpp) for in-process preprocessing of .rcw sources.

Motivation:

  - The existing host-qoriq-rcw package wraps NXP's rcw.py reference,
    which (a) is slow due to Python startup overhead on every invocation,
    (b) requires host Python at build time, and (c) shells out to
    gcc -E for preprocessing. The C implementation here uses libmcpp
    in-process for hermetic preprocessing and runs ~10x faster on
    typical .rcw inputs.

  - Beyond the rcw.py reference, qoriq-rcw-c adds two recovery features:
      --dump        read live RCW from /dev/mem on a running board
      --dump-flash  recover PBL + PBI from the bootrom slot(s) in
                    NOR / SD / eMMC
    Useful when bringing up a new board or debugging a bad flash.

  - The existing host-qoriq-rcw package is untouched. Users who prefer
    the rcw.py reference can keep using it; the new package is fully
    independent.

Patch breakdown:

  1/3  package/mcpp: new package
       Matsui CPP, a portable C90/C99/C++98 preprocessor with a
       reusable libmcpp. Built host-only with --enable-mcpplib so the
       library + public header are available to other host packages.

  2/3  package/libqoriq-rcw: new package
       Library form of the C reimplementation. host-meson-package,
       depends on host-mcpp. Sets -Dtests=false and -Dman=disabled:
       the tests/ subdir links libcmocka (only validates library
       internals, never executed by Buildroot), and the man-page
       step requires pandoc. Both options were added upstream (v1.0.1
       for 'tests', v1.0.2 for 'man') specifically to support
       distro/Buildroot packaging.

  3/3  package/qoriq-rcw-c: new package
       CLI on top of libqoriq-rcw. host-meson-package, depends on
       host-libqoriq-rcw (transitively pulling in host-mcpp). Also
       sets -Dman=disabled; the option landed upstream in v1.0.1.

Naming note: the upstream project is just called "qoriq-rcw"; the "-c"
suffix on the Buildroot package name is purely a disambiguator from
the existing host-qoriq-rcw package (which is the rcw.py wrapper).
The installed binary itself is still named qoriq-rcw.

Tested:
  - check-package clean on all files (0 warnings).
  - End-to-end build of host-qoriq-rcw-c succeeds against the real
    upstream tarballs (mcpp 2.7.2 from SourceForge, libqoriq-rcw 1.0.2
    and qoriq-rcw 1.0.1 from GitHub).
  - 'qoriq-rcw --help' runs from host/bin/, .rcwi data files install
    cleanly under host/share/qoriq-rcw/.
  - Fork CI test-pkg matrix (32 toolchains), all green:
    https://gitlab.com/evAdopter/buildroot/-/pipelines/2641099395

Philippe Nunes (3):
  package/mcpp: new package
  package/libqoriq-rcw: new package
  package/qoriq-rcw-c: new package

 DEVELOPERS                             |  5 +++++
 package/Config.in.host                 |  3 +++
 package/libqoriq-rcw/Config.in.host    | 14 +++++++++++++
 package/libqoriq-rcw/libqoriq-rcw.hash |  5 +++++
 package/libqoriq-rcw/libqoriq-rcw.mk   | 27 ++++++++++++++++++++++++++
 package/mcpp/Config.in.host            |  9 +++++++++
 package/mcpp/mcpp.hash                 |  5 +++++
 package/mcpp/mcpp.mk                   | 18 +++++++++++++++++
 package/qoriq-rcw-c/Config.in.host     | 19 ++++++++++++++++++
 package/qoriq-rcw-c/qoriq-rcw-c.hash   |  5 +++++
 package/qoriq-rcw-c/qoriq-rcw-c.mk     | 25 ++++++++++++++++++++++++
 11 files changed, 135 insertions(+)
 create mode 100644 package/libqoriq-rcw/Config.in.host
 create mode 100644 package/libqoriq-rcw/libqoriq-rcw.hash
 create mode 100644 package/libqoriq-rcw/libqoriq-rcw.mk
 create mode 100644 package/mcpp/Config.in.host
 create mode 100644 package/mcpp/mcpp.hash
 create mode 100644 package/mcpp/mcpp.mk
 create mode 100644 package/qoriq-rcw-c/Config.in.host
 create mode 100644 package/qoriq-rcw-c/qoriq-rcw-c.hash
 create mode 100644 package/qoriq-rcw-c/qoriq-rcw-c.mk

-- 
2.50.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH 1/3] package/mcpp: new package
  2026-07-01 12:19 [Buildroot] [PATCH 0/3] Add qoriq-rcw C reimplementation + libmcpp dep Philippe Nunes via buildroot
@ 2026-07-01 12:19 ` Philippe Nunes via buildroot
  2026-07-06  8:23   ` Vincent Jardin via buildroot
  2026-07-01 12:19 ` [Buildroot] [PATCH 2/3] package/libqoriq-rcw: " Philippe Nunes via buildroot
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 14+ messages in thread
From: Philippe Nunes via buildroot @ 2026-07-01 12:19 UTC (permalink / raw)
  To: buildroot; +Cc: Philippe Nunes

mcpp (Matsui CPP) is a portable C/C++ preprocessor, implemented as
both a CLI and a reusable library (libmcpp). It is conformant to
ISO/ANSI C90, C99 and C++98 standards and validated against the
official preprocessor test suite.

This Buildroot package builds a host-only flavour of mcpp with
--enable-mcpplib, so that libmcpp.{a,so} and the public header
mcpp_lib.h are available for other host packages to embed
preprocessor functionality in-process (i.e. without forking a
real cpp binary). The standalone mcpp(1) CLI is installed as
well.

Upstream: https://mcpp.sourceforge.net/

Signed-off-by: Philippe Nunes <nunes.philippe@free.fr>
---
 DEVELOPERS                  |  3 +++
 package/Config.in.host      |  1 +
 package/mcpp/Config.in.host |  9 +++++++++
 package/mcpp/mcpp.hash      |  5 +++++
 package/mcpp/mcpp.mk        | 18 ++++++++++++++++++
 5 files changed, 36 insertions(+)
 create mode 100644 package/mcpp/Config.in.host
 create mode 100644 package/mcpp/mcpp.hash
 create mode 100644 package/mcpp/mcpp.mk

diff --git a/DEVELOPERS b/DEVELOPERS
index 5a09be9bff..03fe739986 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2725,6 +2725,9 @@ F:	package/adsp-ldr/
 N:	Philipp Richter <richterphilipp.pops@gmail.com>
 F:	package/libtorrent-rasterbar/
 
+N:	Philippe Nunes <nunes.philippe@free.fr>
+F:	package/mcpp/
+
 N:	Philippe Proulx <eeppeliteloop@gmail.com>
 F:	package/babeltrace2/
 F:	package/lttng-babeltrace/
diff --git a/package/Config.in.host b/package/Config.in.host
index df57cc0c17..50798d142b 100644
--- a/package/Config.in.host
+++ b/package/Config.in.host
@@ -65,6 +65,7 @@ menu "Host utilities"
 	source "package/lpc3250loader/Config.in.host"
 	source "package/lttng-babeltrace/Config.in.host"
 	source "package/lzma-alone/Config.in.host"
+	source "package/mcpp/Config.in.host"
 	source "package/mender-artifact/Config.in.host"
 	source "package/meson-tools/Config.in.host"
 	source "package/mfgtools/Config.in.host"
diff --git a/package/mcpp/Config.in.host b/package/mcpp/Config.in.host
new file mode 100644
index 0000000000..b5fb6e30c4
--- /dev/null
+++ b/package/mcpp/Config.in.host
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_HOST_MCPP
+	bool "host mcpp"
+	help
+	  A portable C/C++ preprocessor, implemented as both a library
+	  (libmcpp) and a stand-alone command-line tool. Designed to be
+	  embedded by other tools that need in-process C-preprocessor
+	  expansion without forking gcc -E.
+
+	  http://mcpp.sourceforge.net/
diff --git a/package/mcpp/mcpp.hash b/package/mcpp/mcpp.hash
new file mode 100644
index 0000000000..b61627fb04
--- /dev/null
+++ b/package/mcpp/mcpp.hash
@@ -0,0 +1,5 @@
+# Locally calculated
+sha256  3b9b4421888519876c4fc68ade324a3bbd81ceeb7092ecdbbc2055099fcb8864  mcpp-2.7.2.tar.gz
+
+# Locally calculated
+sha256  adcd59c07ccdb072c8e1d40adb5cac670fcf3f51ba3a7fb41d46362bfd883b1b  LICENSE
diff --git a/package/mcpp/mcpp.mk b/package/mcpp/mcpp.mk
new file mode 100644
index 0000000000..18cf99bc66
--- /dev/null
+++ b/package/mcpp/mcpp.mk
@@ -0,0 +1,18 @@
+################################################################################
+#
+# mcpp
+#
+################################################################################
+
+MCPP_VERSION = 2.7.2
+MCPP_SITE = https://downloads.sourceforge.net/project/mcpp/mcpp/V.$(MCPP_VERSION)
+
+MCPP_LICENSE = BSD-2-Clause
+MCPP_LICENSE_FILES = LICENSE
+
+# --enable-mcpplib builds libmcpp.{a,so} alongside the mcpp CLI. The
+# library is what most consumers embed (libqoriq-rcw, etc.); without
+# this flag only the standalone CLI is built.
+HOST_MCPP_CONF_OPTS = --enable-mcpplib
+
+$(eval $(host-autotools-package))
-- 
2.50.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH 2/3] package/libqoriq-rcw: new package
  2026-07-01 12:19 [Buildroot] [PATCH 0/3] Add qoriq-rcw C reimplementation + libmcpp dep Philippe Nunes via buildroot
  2026-07-01 12:19 ` [Buildroot] [PATCH 1/3] package/mcpp: new package Philippe Nunes via buildroot
@ 2026-07-01 12:19 ` Philippe Nunes via buildroot
  2026-07-06  8:19   ` Vincent Jardin via buildroot
  2026-07-01 12:19 ` [Buildroot] [PATCH 3/3] package/qoriq-rcw-c: " Philippe Nunes via buildroot
  2026-07-07 16:09 ` [Buildroot] [PATCH v2 0/3] Add qoriq-rcw C reimplementation + libmcpp dep Philippe Nunes via buildroot
  3 siblings, 1 reply; 14+ messages in thread
From: Philippe Nunes via buildroot @ 2026-07-01 12:19 UTC (permalink / raw)
  To: buildroot; +Cc: Philippe Nunes

libqoriq-rcw is a C17 reimplementation of NXP's rcw.py for the
pbiformat=2 QorIQ family (LS1028, LS1088, LS2088, LX2160). It compiles
and decompiles RCW (Reset Configuration Word) binaries used by the
SoC bootrom, and exposes the same functionality as a reusable shared
library + pkg-config + public header.

Built as a host-only meson package with -Dtests=false -Dman=disabled.
The upstream tests/ subdir links libcmocka (only validates library
internals -- never executed by Buildroot), and the man-page step
requires pandoc (heavy Haskell-runtime tool typically absent from
packagers' minimal images). The 'tests' option landed upstream in
v1.0.1, the 'man' feature option in v1.0.2; we pin to v1.0.2.

Depends on host-mcpp for in-process C preprocessor support; the
library uses libmcpp instead of shelling out to gcc -E so that the
preprocessing of .rcw sources is hermetic and self-contained.

Upstream: https://github.com/vjardin/libqoriq-rcw

Signed-off-by: Philippe Nunes <nunes.philippe@free.fr>
---
 DEVELOPERS                             |  1 +
 package/Config.in.host                 |  1 +
 package/libqoriq-rcw/Config.in.host    | 14 +++++++++++++
 package/libqoriq-rcw/libqoriq-rcw.hash |  5 +++++
 package/libqoriq-rcw/libqoriq-rcw.mk   | 27 ++++++++++++++++++++++++++
 5 files changed, 48 insertions(+)
 create mode 100644 package/libqoriq-rcw/Config.in.host
 create mode 100644 package/libqoriq-rcw/libqoriq-rcw.hash
 create mode 100644 package/libqoriq-rcw/libqoriq-rcw.mk

diff --git a/DEVELOPERS b/DEVELOPERS
index 03fe739986..830ea99cb7 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2726,6 +2726,7 @@ N:	Philipp Richter <richterphilipp.pops@gmail.com>
 F:	package/libtorrent-rasterbar/
 
 N:	Philippe Nunes <nunes.philippe@free.fr>
+F:	package/libqoriq-rcw/
 F:	package/mcpp/
 
 N:	Philippe Proulx <eeppeliteloop@gmail.com>
diff --git a/package/Config.in.host b/package/Config.in.host
index 50798d142b..e44506198d 100644
--- a/package/Config.in.host
+++ b/package/Config.in.host
@@ -61,6 +61,7 @@ menu "Host utilities"
 	source "package/jq/Config.in.host"
 	source "package/kmod/Config.in.host"
 	source "package/libp11/Config.in.host"
+	source "package/libqoriq-rcw/Config.in.host"
 	source "package/llvm-project/lld/Config.in.host"
 	source "package/lpc3250loader/Config.in.host"
 	source "package/lttng-babeltrace/Config.in.host"
diff --git a/package/libqoriq-rcw/Config.in.host b/package/libqoriq-rcw/Config.in.host
new file mode 100644
index 0000000000..42c09ec329
--- /dev/null
+++ b/package/libqoriq-rcw/Config.in.host
@@ -0,0 +1,14 @@
+config BR2_PACKAGE_HOST_LIBQORIQ_RCW
+	bool "host libqoriq-rcw"
+	select BR2_PACKAGE_HOST_MCPP
+	help
+	  C17 reimplementation of NXP's rcw.py as a shared/static
+	  library. Compiles QorIQ/Layerscape Reset Configuration Word
+	  (RCW) sources into binary images for the pbiformat=2 SoC
+	  family (LS1028, LS1088, LS2088, LX2160). Produces
+	  byte-identical output to rcw.py for those SoCs.
+
+	  Used by the host-qoriq-rcw-c CLI for the actual compile,
+	  --dump, --dump-flash, and decompile operations.
+
+	  https://github.com/vjardin/libqoriq-rcw
diff --git a/package/libqoriq-rcw/libqoriq-rcw.hash b/package/libqoriq-rcw/libqoriq-rcw.hash
new file mode 100644
index 0000000000..17a4b5cc10
--- /dev/null
+++ b/package/libqoriq-rcw/libqoriq-rcw.hash
@@ -0,0 +1,5 @@
+# Locally calculated
+sha256  6393cc3139068fa362c5f3a9ec4ae915704e4e848278f4eaa3f7cad465ed9b6b  libqoriq-rcw-1.0.2.tar.gz
+
+# Locally calculated
+sha256  30a111209bd81aa8d8c110087bff83ba112f82eb4e42630e5cba46cf0daa21ac  LICENSE
diff --git a/package/libqoriq-rcw/libqoriq-rcw.mk b/package/libqoriq-rcw/libqoriq-rcw.mk
new file mode 100644
index 0000000000..6cbec14969
--- /dev/null
+++ b/package/libqoriq-rcw/libqoriq-rcw.mk
@@ -0,0 +1,27 @@
+################################################################################
+#
+# libqoriq-rcw
+#
+################################################################################
+
+LIBQORIQ_RCW_VERSION = 1.0.2
+LIBQORIQ_RCW_SITE = $(call github,vjardin,libqoriq-rcw,v$(LIBQORIQ_RCW_VERSION))
+
+LIBQORIQ_RCW_LICENSE = BSD-3-Clause
+LIBQORIQ_RCW_LICENSE_FILES = LICENSE
+
+LIBQORIQ_RCW_INSTALL_STAGING = YES
+
+HOST_LIBQORIQ_RCW_DEPENDENCIES = host-mcpp
+
+# Skip both the cmocka-based unit tests and the pandoc-rendered man
+# page. The tests/ subdir links libcmocka and only validates the
+# library implementation itself (CRC, bit-packing, parse/decompile
+# round-trips); Buildroot never executes them. The man-page step
+# requires pandoc, a heavy Haskell-runtime tool typically absent
+# from packagers' minimal images, and host packages don't install
+# man pages anyway. The 'tests' option landed upstream in v1.0.1,
+# the 'man' feature option in v1.0.2.
+HOST_LIBQORIQ_RCW_CONF_OPTS = -Dtests=false -Dman=disabled
+
+$(eval $(host-meson-package))
-- 
2.50.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH 3/3] package/qoriq-rcw-c: new package
  2026-07-01 12:19 [Buildroot] [PATCH 0/3] Add qoriq-rcw C reimplementation + libmcpp dep Philippe Nunes via buildroot
  2026-07-01 12:19 ` [Buildroot] [PATCH 1/3] package/mcpp: new package Philippe Nunes via buildroot
  2026-07-01 12:19 ` [Buildroot] [PATCH 2/3] package/libqoriq-rcw: " Philippe Nunes via buildroot
@ 2026-07-01 12:19 ` Philippe Nunes via buildroot
  2026-07-06  8:15   ` Vincent Jardin via buildroot
  2026-07-07 16:09 ` [Buildroot] [PATCH v2 0/3] Add qoriq-rcw C reimplementation + libmcpp dep Philippe Nunes via buildroot
  3 siblings, 1 reply; 14+ messages in thread
From: Philippe Nunes via buildroot @ 2026-07-01 12:19 UTC (permalink / raw)
  To: buildroot; +Cc: Philippe Nunes

qoriq-rcw-c is a C reimplementation of NXP's rcw.py CLI for the
pbiformat=2 QorIQ family (LS1028, LS1088, LS2088, LX2160). Built on
top of libqoriq-rcw, it compiles a .rcw source file (preprocessed
in-process via libmcpp) to the binary RCW + PBI image consumed by
the SoC bootrom.

Beyond the rcw.py reference, qoriq-rcw-c adds two recovery features:

  --dump        read the live RCW from /dev/mem on a running board
                (post-PLL-lock RCWSR state; no PBI commands)
  --dump-flash  recover the PBL preamble + PBI commands from the
                bootrom slot(s) in NOR / SD / eMMC

Built as a host-only meson package with -Dman=disabled to skip the
pandoc-based man page (host packages don't install man pages anyway,
and pandoc is a heavy Haskell-runtime build dep). The 'man' feature
option landed upstream in v1.0.1; we pin to v1.0.1.

The "-c" suffix in the Buildroot package name distinguishes the
independent C implementation from the existing host-qoriq-rcw
package, which wraps NXP's rcw.py reference. The upstream project
itself is just "qoriq-rcw"; the suffix is purely a Buildroot-side
disambiguator (the installed binary is still named qoriq-rcw).

Upstream: https://github.com/vjardin/qoriq-rcw

Signed-off-by: Philippe Nunes <nunes.philippe@free.fr>
---
 DEVELOPERS                           |  1 +
 package/Config.in.host               |  1 +
 package/qoriq-rcw-c/Config.in.host   | 19 +++++++++++++++++++
 package/qoriq-rcw-c/qoriq-rcw-c.hash |  5 +++++
 package/qoriq-rcw-c/qoriq-rcw-c.mk   | 25 +++++++++++++++++++++++++
 5 files changed, 51 insertions(+)
 create mode 100644 package/qoriq-rcw-c/Config.in.host
 create mode 100644 package/qoriq-rcw-c/qoriq-rcw-c.hash
 create mode 100644 package/qoriq-rcw-c/qoriq-rcw-c.mk

diff --git a/DEVELOPERS b/DEVELOPERS
index 830ea99cb7..36edb3a767 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2728,6 +2728,7 @@ F:	package/libtorrent-rasterbar/
 N:	Philippe Nunes <nunes.philippe@free.fr>
 F:	package/libqoriq-rcw/
 F:	package/mcpp/
+F:	package/qoriq-rcw-c/
 
 N:	Philippe Proulx <eeppeliteloop@gmail.com>
 F:	package/babeltrace2/
diff --git a/package/Config.in.host b/package/Config.in.host
index e44506198d..5192f4b18d 100644
--- a/package/Config.in.host
+++ b/package/Config.in.host
@@ -102,6 +102,7 @@ menu "Host utilities"
 	source "package/python3/Config.in.host"
 	source "package/qemu/Config.in.host"
 	source "package/qoriq-rcw/Config.in.host"
+	source "package/qoriq-rcw-c/Config.in.host"
 	source "package/qt6/Config.in.host"
 	source "package/raspberrypi-usbboot/Config.in.host"
 	source "package/rauc/Config.in.host"
diff --git a/package/qoriq-rcw-c/Config.in.host b/package/qoriq-rcw-c/Config.in.host
new file mode 100644
index 0000000000..f8ca8d0de6
--- /dev/null
+++ b/package/qoriq-rcw-c/Config.in.host
@@ -0,0 +1,19 @@
+config BR2_PACKAGE_HOST_QORIQ_RCW_C
+	bool "host qoriq-rcw-c (C implementation)"
+	select BR2_PACKAGE_HOST_LIBQORIQ_RCW
+	help
+	  C CLI built on top of libqoriq-rcw -- a faster drop-in
+	  replacement for NXP's rcw.py for the pbiformat=2 SoC family
+	  (LS1028, LS1088, LS2088, LX2160).
+
+	  Adds two capabilities beyond rcw.py:
+	    --dump          read live RCW from /dev/mem on a running
+	                    board (post-PLL-lock RCWSR state, no PBI)
+	    --dump-flash    recover PBL + PBI from the bootrom slot(s)
+	                    in NOR / SD / eMMC
+
+	  Naming note: the existing host-qoriq-rcw package consumes
+	  the upstream NXP rcw.py reference implementation; the "-c"
+	  suffix here distinguishes the independent C implementation.
+
+	  https://github.com/vjardin/qoriq-rcw
diff --git a/package/qoriq-rcw-c/qoriq-rcw-c.hash b/package/qoriq-rcw-c/qoriq-rcw-c.hash
new file mode 100644
index 0000000000..911a2c2e63
--- /dev/null
+++ b/package/qoriq-rcw-c/qoriq-rcw-c.hash
@@ -0,0 +1,5 @@
+# Locally calculated
+sha256  977d501752045533fa725fe93e6e21b8cbbdf118da8944a939e9932ee1160529  qoriq-rcw-1.0.1.tar.gz
+
+# Locally calculated
+sha256  30a111209bd81aa8d8c110087bff83ba112f82eb4e42630e5cba46cf0daa21ac  LICENSE
diff --git a/package/qoriq-rcw-c/qoriq-rcw-c.mk b/package/qoriq-rcw-c/qoriq-rcw-c.mk
new file mode 100644
index 0000000000..a8258b121e
--- /dev/null
+++ b/package/qoriq-rcw-c/qoriq-rcw-c.mk
@@ -0,0 +1,25 @@
+################################################################################
+#
+# qoriq-rcw-c
+#
+################################################################################
+
+# The upstream project is named "qoriq-rcw"; the "-c" suffix in the
+# Buildroot package name distinguishes it from the existing
+# host-qoriq-rcw package (which wraps NXP's rcw.py reference).
+QORIQ_RCW_C_VERSION = 1.0.1
+QORIQ_RCW_C_SITE = $(call github,vjardin,qoriq-rcw,v$(QORIQ_RCW_C_VERSION))
+QORIQ_RCW_C_SOURCE = qoriq-rcw-$(QORIQ_RCW_C_VERSION).tar.gz
+
+QORIQ_RCW_C_LICENSE = BSD-3-Clause
+QORIQ_RCW_C_LICENSE_FILES = LICENSE
+
+HOST_QORIQ_RCW_C_DEPENDENCIES = host-libqoriq-rcw
+
+# Skip the pandoc-rendered man page: pandoc is a heavy Haskell-
+# runtime build-time tool typically absent from packagers' minimal
+# images, and host packages don't install man pages anyway. The
+# 'man' feature option landed upstream in v1.0.1.
+HOST_QORIQ_RCW_C_CONF_OPTS = -Dman=disabled
+
+$(eval $(host-meson-package))
-- 
2.50.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [Buildroot] [PATCH 3/3] package/qoriq-rcw-c: new package
  2026-07-01 12:19 ` [Buildroot] [PATCH 3/3] package/qoriq-rcw-c: " Philippe Nunes via buildroot
@ 2026-07-06  8:15   ` Vincent Jardin via buildroot
  2026-07-06 16:04     ` Philippe Nunes via buildroot
  0 siblings, 1 reply; 14+ messages in thread
From: Vincent Jardin via buildroot @ 2026-07-06  8:15 UTC (permalink / raw)
  To: Philippe Nunes; +Cc: buildroot

Hi Philippe,

Thanks for leading a Buildroot package on this tool.

See below some few comments,

Le 01/07/26 14:19, Philippe Nunes via buildroot a écrit :
> qoriq-rcw-c is a C reimplementation of NXP's rcw.py CLI for the
> pbiformat=2 QorIQ family (LS1028, LS1088, LS2088, LX2160). Built on
> top of libqoriq-rcw, it compiles a .rcw source file (preprocessed
> in-process via libmcpp) to the binary RCW + PBI image consumed by
> the SoC bootrom.
> 
> Beyond the rcw.py reference, qoriq-rcw-c adds two recovery features:
> 
>   --dump        read the live RCW from /dev/mem on a running board
>                 (post-PLL-lock RCWSR state; no PBI commands)
>   --dump-flash  recover the PBL preamble + PBI commands from the
>                 bootrom slot(s) in NOR / SD / eMMC

Right, but it means that the tool has to be compiled and run on the target,
not the host only.

> +++ b/package/qoriq-rcw-c/Config.in.host
> @@ -0,0 +1,19 @@
> +config BR2_PACKAGE_HOST_QORIQ_RCW_C
> +	bool "host qoriq-rcw-c (C implementation)"
> +	select BR2_PACKAGE_HOST_LIBQORIQ_RCW
> +	help
> +	  C CLI built on top of libqoriq-rcw -- a faster drop-in
> +	  replacement for NXP's rcw.py for the pbiformat=2 SoC family
> +	  (LS1028, LS1088, LS2088, LX2160).

The main benefit (aka faster) to that it avoid pulling/compiling
a full python framework for the host mode, so we get a quick build.

> +
> +	  Adds two capabilities beyond rcw.py:
> +	    --dump          read live RCW from /dev/mem on a running
> +	                    board (post-PLL-lock RCWSR state, no PBI)
> +	    --dump-flash    recover PBL + PBI from the bootrom slot(s)
> +	                    in NOR / SD / eMMC

No, those options are not for the host. Moreover, the Config.in does
not need to detail all the runtime options.

> +# The upstream project is named "qoriq-rcw"; the "-c" suffix in the
> +# Buildroot package name distinguishes it from the existing
> +# host-qoriq-rcw package (which wraps NXP's rcw.py reference).

No need to duplicaate many time the same information.

> +QORIQ_RCW_C_VERSION = 1.0.1
> +QORIQ_RCW_C_SITE = $(call github,vjardin,qoriq-rcw,v$(QORIQ_RCW_C_VERSION))
> +QORIQ_RCW_C_SOURCE = qoriq-rcw-$(QORIQ_RCW_C_VERSION).tar.gz
> +
> +QORIQ_RCW_C_LICENSE = BSD-3-Clause
> +QORIQ_RCW_C_LICENSE_FILES = LICENSE
> +
> +HOST_QORIQ_RCW_C_DEPENDENCIES = host-libqoriq-rcw
> +
> +# Skip the pandoc-rendered man page: pandoc is a heavy Haskell-
> +# runtime build-time tool typically absent from packagers' minimal
> +# images, and host packages don't install man pages anyway. The
> +# 'man' feature option landed upstream in v1.0.1.
> +HOST_QORIQ_RCW_C_CONF_OPTS = -Dman=disabled

A short comment such as:
> +# Skip the pandoc-rendered man page: pandoc requires a full Haskell

would be better.


Best regards,
  Vincent
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Buildroot] [PATCH 2/3] package/libqoriq-rcw: new package
  2026-07-01 12:19 ` [Buildroot] [PATCH 2/3] package/libqoriq-rcw: " Philippe Nunes via buildroot
@ 2026-07-06  8:19   ` Vincent Jardin via buildroot
  2026-07-06 15:56     ` Philippe Nunes via buildroot
  0 siblings, 1 reply; 14+ messages in thread
From: Vincent Jardin via buildroot @ 2026-07-06  8:19 UTC (permalink / raw)
  To: Philippe Nunes; +Cc: buildroot

Hi Philippe,

Thanks for leading this packaging into Buildroot.

see below,

Le 01/07/26 14:19, Philippe Nunes via buildroot a écrit :
> libqoriq-rcw is a C17 reimplementation of NXP's rcw.py for the
> pbiformat=2 QorIQ family (LS1028, LS1088, LS2088, LX2160). It compiles
> and decompiles RCW (Reset Configuration Word) binaries used by the
> SoC bootrom, and exposes the same functionality as a reusable shared
> library + pkg-config + public header.
> 
> Built as a host-only meson package with -Dtests=false -Dman=disabled.
> The upstream tests/ subdir links libcmocka (only validates library
> internals -- never executed by Buildroot), and the man-page step
> requires pandoc (heavy Haskell-runtime tool typically absent from
> packagers' minimal images). The 'tests' option landed upstream in
> v1.0.1, the 'man' feature option in v1.0.2; we pin to v1.0.2.

No need of providing version history on all the versions into the commit log.

> Depends on host-mcpp for in-process C preprocessor support; the
> library uses libmcpp instead of shelling out to gcc -E so that the
> preprocessing of .rcw sources is hermetic and self-contained.
> 
> +	  Used by the host-qoriq-rcw-c CLI for the actual compile,
> +	  --dump, --dump-flash, and decompile operations.

This help information is not for the library. See my other comment.

> +# Skip both the cmocka-based unit tests and the pandoc-rendered man
> +# page. The tests/ subdir links libcmocka and only validates the
> +# library implementation itself (CRC, bit-packing, parse/decompile
> +# round-trips); Buildroot never executes them. The man-page step
> +# requires pandoc, a heavy Haskell-runtime tool typically absent
> +# from packagers' minimal images, and host packages don't install
> +# man pages anyway. The 'tests' option landed upstream in v1.0.1,
> +# the 'man' feature option in v1.0.2.
> +HOST_LIBQORIQ_RCW_CONF_OPTS = -Dtests=false -Dman=disabled

Please, provide shorter coments.

Best regards,
  Vincent
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Buildroot] [PATCH 1/3] package/mcpp: new package
  2026-07-01 12:19 ` [Buildroot] [PATCH 1/3] package/mcpp: new package Philippe Nunes via buildroot
@ 2026-07-06  8:23   ` Vincent Jardin via buildroot
  2026-07-06 15:49     ` Philippe Nunes via buildroot
  0 siblings, 1 reply; 14+ messages in thread
From: Vincent Jardin via buildroot @ 2026-07-06  8:23 UTC (permalink / raw)
  To: Philippe Nunes; +Cc: buildroot

Hi Philippe,

Thanks, see below,

> diff --git a/package/mcpp/Config.in.host b/package/mcpp/Config.in.host
> new file mode 100644
> index 0000000000..b5fb6e30c4
> --- /dev/null
> +++ b/package/mcpp/Config.in.host
> @@ -0,0 +1,9 @@
> +config BR2_PACKAGE_HOST_MCPP
> +	bool "host mcpp"

The same can be needed on the target.

> +# --enable-mcpplib builds libmcpp.{a,so} alongside the mcpp CLI. The
> +# library is what most consumers embed (libqoriq-rcw, etc.); without
> +# this flag only the standalone CLI is built.
> +HOST_MCPP_CONF_OPTS = --enable-mcpplib

A shorter comment could be good enough:

 # builds libmcpp.{a,so} alongside the mcpp CLI

Best regards,
  Vincent
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Buildroot] [PATCH 1/3] package/mcpp: new package
  2026-07-06  8:23   ` Vincent Jardin via buildroot
@ 2026-07-06 15:49     ` Philippe Nunes via buildroot
  0 siblings, 0 replies; 14+ messages in thread
From: Philippe Nunes via buildroot @ 2026-07-06 15:49 UTC (permalink / raw)
  To: Vincent Jardin; +Cc: buildroot

Hi Vincent,

On 7/6/26 10:23, Vincent Jardin wrote:
> Hi Philippe,
>
> Thanks, see below,
>
>> diff --git a/package/mcpp/Config.in.host b/package/mcpp/Config.in.host
>> new file mode 100644
>> index 0000000000..b5fb6e30c4
>> --- /dev/null
>> +++ b/package/mcpp/Config.in.host
>> @@ -0,0 +1,9 @@
>> +config BR2_PACKAGE_HOST_MCPP
>> +	bool "host mcpp"
> The same can be needed on the target.

Ack, adding BR2_PACKAGE_MCPP in v2.

>> +# --enable-mcpplib builds libmcpp.{a,so} alongside the mcpp CLI. The
>> +# library is what most consumers embed (libqoriq-rcw, etc.); without
>> +# this flag only the standalone CLI is built.
>> +HOST_MCPP_CONF_OPTS = --enable-mcpplib
> A shorter comment could be good enough:
>
>   # builds libmcpp.{a,so} alongside the mcpp CLI

I agree. Fixed in v2.

Thanks.

Philippe



_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Buildroot] [PATCH 2/3] package/libqoriq-rcw: new package
  2026-07-06  8:19   ` Vincent Jardin via buildroot
@ 2026-07-06 15:56     ` Philippe Nunes via buildroot
  0 siblings, 0 replies; 14+ messages in thread
From: Philippe Nunes via buildroot @ 2026-07-06 15:56 UTC (permalink / raw)
  To: Vincent Jardin; +Cc: buildroot

Hi Vincent,

On 7/6/26 10:19, Vincent Jardin wrote:
> Hi Philippe,
>
> Thanks for leading this packaging into Buildroot.
>
> see below,
>
> Le 01/07/26 14:19, Philippe Nunes via buildroot a écrit :
>> libqoriq-rcw is a C17 reimplementation of NXP's rcw.py for the
>> pbiformat=2 QorIQ family (LS1028, LS1088, LS2088, LX2160). It compiles
>> and decompiles RCW (Reset Configuration Word) binaries used by the
>> SoC bootrom, and exposes the same functionality as a reusable shared
>> library + pkg-config + public header.
>>
>> Built as a host-only meson package with -Dtests=false -Dman=disabled.
>> The upstream tests/ subdir links libcmocka (only validates library
>> internals -- never executed by Buildroot), and the man-page step
>> requires pandoc (heavy Haskell-runtime tool typically absent from
>> packagers' minimal images). The 'tests' option landed upstream in
>> v1.0.1, the 'man' feature option in v1.0.2; we pin to v1.0.2.
> No need of providing version history on all the versions into the commit log.

Ack, dropped in v2.

>> Depends on host-mcpp for in-process C preprocessor support; the
>> library uses libmcpp instead of shelling out to gcc -E so that the
>> preprocessing of .rcw sources is hermetic and self-contained.
>>
>> +	  Used by the host-qoriq-rcw-c CLI for the actual compile,
>> +	  --dump, --dump-flash, and decompile operations.
> This help information is not for the library. See my other comment.
Removed in v2.
>> +# Skip both the cmocka-based unit tests and the pandoc-rendered man
>> +# page. The tests/ subdir links libcmocka and only validates the
>> +# library implementation itself (CRC, bit-packing, parse/decompile
>> +# round-trips); Buildroot never executes them. The man-page step
>> +# requires pandoc, a heavy Haskell-runtime tool typically absent
>> +# from packagers' minimal images, and host packages don't install
>> +# man pages anyway. The 'tests' option landed upstream in v1.0.1,
>> +# the 'man' feature option in v1.0.2.
>> +HOST_LIBQORIQ_RCW_CONF_OPTS = -Dtests=false -Dman=disabled
Trimmed to a single line in v2:
     # skip cmocka-based unit tests and pandoc-generated man page

Also adding a target variant (BR2_PACKAGE_LIBQORIQ_RCW) to satisfy patch 
3's target build, which needs libqoriq-rcw at runtime for the --dump / 
--dump-flash recovery modes.

Thanks.

Philippe

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Buildroot] [PATCH 3/3] package/qoriq-rcw-c: new package
  2026-07-06  8:15   ` Vincent Jardin via buildroot
@ 2026-07-06 16:04     ` Philippe Nunes via buildroot
  0 siblings, 0 replies; 14+ messages in thread
From: Philippe Nunes via buildroot @ 2026-07-06 16:04 UTC (permalink / raw)
  To: Vincent Jardin; +Cc: buildroot

Hi Vincent,

On 7/6/26 10:15, Vincent Jardin wrote:
> Hi Philippe,
>
> Thanks for leading a Buildroot package on this tool.
>
> See below some few comments,
>
> Le 01/07/26 14:19, Philippe Nunes via buildroot a écrit :
>> qoriq-rcw-c is a C reimplementation of NXP's rcw.py CLI for the
>> pbiformat=2 QorIQ family (LS1028, LS1088, LS2088, LX2160). Built on
>> top of libqoriq-rcw, it compiles a .rcw source file (preprocessed
>> in-process via libmcpp) to the binary RCW + PBI image consumed by
>> the SoC bootrom.
>>
>> Beyond the rcw.py reference, qoriq-rcw-c adds two recovery features:
>>
>>    --dump        read the live RCW from /dev/mem on a running board
>>                  (post-PLL-lock RCWSR state; no PBI commands)
>>    --dump-flash  recover the PBL preamble + PBI commands from the
>>                  bootrom slot(s) in NOR / SD / eMMC
> Right, but it means that the tool has to be compiled and run on the target,
> not the host only.

Ack. v2 adds BR2_PACKAGE_QORIQ_RCW_C and BR2_PACKAGE_LIBQORIQ_RCW  (the 
target CLI needs the target library at runtime).

>> +++ b/package/qoriq-rcw-c/Config.in.host
>> @@ -0,0 +1,19 @@
>> +config BR2_PACKAGE_HOST_QORIQ_RCW_C
>> +	bool "host qoriq-rcw-c (C implementation)"
>> +	select BR2_PACKAGE_HOST_LIBQORIQ_RCW
>> +	help
>> +	  C CLI built on top of libqoriq-rcw -- a faster drop-in
>> +	  replacement for NXP's rcw.py for the pbiformat=2 SoC family
>> +	  (LS1028, LS1088, LS2088, LX2160).
> The main benefit (aka faster) to that it avoid pulling/compiling
> a full python framework for the host mode, so we get a quick build.
>
Reworded the help text in v2 to mention avoiding the host 
Python dependency explicitly.

>> +
>> +	  Adds two capabilities beyond rcw.py:
>> +	    --dump          read live RCW from /dev/mem on a running
>> +	                    board (post-PLL-lock RCWSR state, no PBI)
>> +	    --dump-flash    recover PBL + PBI from the bootrom slot(s)
>> +	                    in NOR / SD / eMMC
> No, those options are not for the host. Moreover, the Config.in does
> not need to detail all the runtime options.

Dropped the --dump / --dump-flash enumeration from Config.in in v2.

>> +# The upstream project is named "qoriq-rcw"; the "-c" suffix in the
>> +# Buildroot package name distinguishes it from the existing
>> +# host-qoriq-rcw package (which wraps NXP's rcw.py reference).
> No need to duplicaate many time the same information.

Removed in v2. The "-c" suffix rationale stays in the commit body only.
>> +QORIQ_RCW_C_VERSION = 1.0.1
>> +QORIQ_RCW_C_SITE = $(call github,vjardin,qoriq-rcw,v$(QORIQ_RCW_C_VERSION))
>> +QORIQ_RCW_C_SOURCE = qoriq-rcw-$(QORIQ_RCW_C_VERSION).tar.gz
>> +
>> +QORIQ_RCW_C_LICENSE = BSD-3-Clause
>> +QORIQ_RCW_C_LICENSE_FILES = LICENSE
>> +
>> +HOST_QORIQ_RCW_C_DEPENDENCIES = host-libqoriq-rcw
>> +
>> +# Skip the pandoc-rendered man page: pandoc is a heavy Haskell-
>> +# runtime build-time tool typically absent from packagers' minimal
>> +# images, and host packages don't install man pages anyway. The
>> +# 'man' feature option landed upstream in v1.0.1.
>> +HOST_QORIQ_RCW_C_CONF_OPTS = -Dman=disabled
> A short comment such as:
>> +# Skip the pandoc-rendered man page: pandoc requires a full Haskell

Fixed in v2 using your wording.

Thanks.

Philippe




_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH v2 0/3] Add qoriq-rcw C reimplementation + libmcpp dep
  2026-07-01 12:19 [Buildroot] [PATCH 0/3] Add qoriq-rcw C reimplementation + libmcpp dep Philippe Nunes via buildroot
                   ` (2 preceding siblings ...)
  2026-07-01 12:19 ` [Buildroot] [PATCH 3/3] package/qoriq-rcw-c: " Philippe Nunes via buildroot
@ 2026-07-07 16:09 ` Philippe Nunes via buildroot
  2026-07-07 16:09   ` [Buildroot] [PATCH v2 1/3] package/mcpp: new package Philippe Nunes via buildroot
                     ` (2 more replies)
  3 siblings, 3 replies; 14+ messages in thread
From: Philippe Nunes via buildroot @ 2026-07-07 16:09 UTC (permalink / raw)
  To: buildroot; +Cc: Philippe Nunes

This series adds a C reimplementation of NXP's rcw.py for the
pbiformat=2 QorIQ family (LS1028, LS1088, LS2088, LX2160), packaged
as a reusable library (libqoriq-rcw) and a CLI built on top
(qoriq-rcw-c). Both host and target variants are built. The library
depends on mcpp (a portable C preprocessor with a reusable libmcpp)
for in-process preprocessing of .rcw sources.

Patch breakdown:

  1/3  package/mcpp: new package
       Matsui CPP + libmcpp. Autotools, host + target. Ships three
       Buildroot-side patches for GCC 14/15 compile compatibility
       (upstream is dead, last release 2008).

  2/3  package/libqoriq-rcw: new package
       Library form of the C reimplementation. host-meson + meson,
       depends on mcpp. -Dtests=false -Dman=disabled skip the
       cmocka and pandoc build-time dependencies.

  3/3  package/qoriq-rcw-c: new package
       CLI on top of libqoriq-rcw. host-meson + meson, depends on
       libqoriq-rcw. -Dman=disabled.

Naming note: upstream project is "qoriq-rcw"; the Buildroot package
name has a "-c" suffix to disambiguate from the existing
host-qoriq-rcw package (which wraps NXP's rcw.py reference). The
installed binary is qoriq-rcw.

Both libqoriq-rcw and qoriq-rcw-c gate on BR2_TOOLCHAIN_GCC_AT_LEAST_8
because upstream declares c_std=c17 in meson.build.

Tested:
  - check-package clean on all files (0 warnings).
  - Full nbxv3 (LX2160A, aarch64) image cross-build succeeds; the
    installed target binaries include qoriq-rcw under /usr/bin/.
  - Fork CI test-pkg matrix:
    https://gitlab.com/evAdopter/buildroot/-/pipelines/2659083836

Changes v1 -> v2 (addressing Vincent Jardin's on-list review):

  patch 1/3 (mcpp):
    * added target variant alongside host (Suggested-by: Vincent)
    * shortened the --enable-mcpplib inline comment
    * added three Buildroot-side patches to fix GCC 14/15 compile
      breakage in mcpp's 2008-era C code:
        0001 expand: split chained assignment between differently-
             typed pointers (-Wincompatible-pointer-types is a hard
             error in GCC 14+)
        0002 system: request POSIX.1-2008 so readlink() is declared
             (mcpp defaults to POSIX.1-1990 which pre-dates it)
        0003 system: rename true/false labels reserved in modern C

  patch 2/3 (libqoriq-rcw):
    * added target variant to satisfy patch 3's target build
    * dropped version-history sentence from commit body
    * removed consumer-oriented text from Config.in help
    * shortened the CONF_OPTS inline comment
    * gated on BR2_TOOLCHAIN_GCC_AT_LEAST_8 (c17)
    * bumped upstream to v1.0.2 (adds the 'man' meson option)

  patch 3/3 (qoriq-rcw-c):
    * added target variant per Vincent's request (Suggested-by:) --
      the --dump / --dump-flash recovery modes must run on the board
      itself
    * dropped the --dump / --dump-flash enumeration from Config.in
    * reworded the "faster than rcw.py" help text to name the
      concrete benefit (avoids pulling in host Python)
    * removed the duplicate "-c suffix" comment from .mk
    * shortened the pandoc-skip comment
    * gated on BR2_TOOLCHAIN_GCC_AT_LEAST_8 (transitive)
    * bumped upstream to v1.0.1 (adds the 'man' meson option)

Philippe Nunes (3):
  package/mcpp: new package
  package/libqoriq-rcw: new package
  package/qoriq-rcw-c: new package

 DEVELOPERS                                    |  5 ++
 package/Config.in                             |  3 +
 package/Config.in.host                        |  3 +
 package/libqoriq-rcw/Config.in                | 14 +++++
 package/libqoriq-rcw/Config.in.host           | 10 +++
 package/libqoriq-rcw/libqoriq-rcw.hash        |  4 ++
 package/libqoriq-rcw/libqoriq-rcw.mk          | 23 +++++++
 ...ined-assignment-between-differently-.patch | 36 +++++++++++
 ...POSIX.1-2008-so-readlink-is-declared.patch | 36 +++++++++++
 ...ue-false-labels-they-are-reserved-in.patch | 63 +++++++++++++++++++
 package/mcpp/Config.in                        |  7 +++
 package/mcpp/Config.in.host                   |  7 +++
 package/mcpp/mcpp.hash                        |  4 ++
 package/mcpp/mcpp.mk                          | 19 ++++++
 package/qoriq-rcw-c/Config.in                 | 13 ++++
 package/qoriq-rcw-c/Config.in.host            | 10 +++
 package/qoriq-rcw-c/qoriq-rcw-c.hash          |  4 ++
 package/qoriq-rcw-c/qoriq-rcw-c.mk            | 22 +++++++
 18 files changed, 283 insertions(+)
 create mode 100644 package/libqoriq-rcw/Config.in
 create mode 100644 package/libqoriq-rcw/Config.in.host
 create mode 100644 package/libqoriq-rcw/libqoriq-rcw.hash
 create mode 100644 package/libqoriq-rcw/libqoriq-rcw.mk
 create mode 100644 package/mcpp/0001-expand-split-chained-assignment-between-differently-.patch
 create mode 100644 package/mcpp/0002-system-request-POSIX.1-2008-so-readlink-is-declared.patch
 create mode 100644 package/mcpp/0003-system-rename-true-false-labels-they-are-reserved-in.patch
 create mode 100644 package/mcpp/Config.in
 create mode 100644 package/mcpp/Config.in.host
 create mode 100644 package/mcpp/mcpp.hash
 create mode 100644 package/mcpp/mcpp.mk
 create mode 100644 package/qoriq-rcw-c/Config.in
 create mode 100644 package/qoriq-rcw-c/Config.in.host
 create mode 100644 package/qoriq-rcw-c/qoriq-rcw-c.hash
 create mode 100644 package/qoriq-rcw-c/qoriq-rcw-c.mk

-- 
2.54.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH v2 1/3] package/mcpp: new package
  2026-07-07 16:09 ` [Buildroot] [PATCH v2 0/3] Add qoriq-rcw C reimplementation + libmcpp dep Philippe Nunes via buildroot
@ 2026-07-07 16:09   ` Philippe Nunes via buildroot
  2026-07-07 16:09   ` [Buildroot] [PATCH v2 2/3] package/libqoriq-rcw: " Philippe Nunes via buildroot
  2026-07-07 16:10   ` [Buildroot] [PATCH v2 3/3] package/qoriq-rcw-c: " Philippe Nunes via buildroot
  2 siblings, 0 replies; 14+ messages in thread
From: Philippe Nunes via buildroot @ 2026-07-07 16:09 UTC (permalink / raw)
  To: buildroot; +Cc: Philippe Nunes, Vincent Jardin

mcpp (Matsui CPP) is a portable C/C++ preprocessor. Builds both
host and target with --enable-mcpplib, so libmcpp.{a,so} and
mcpp_lib.h are available to other packages in addition to the
standalone mcpp(1) CLI.

Upstream: https://mcpp.sourceforge.net/

Suggested-by: Vincent Jardin <vjardin@free.fr>
Signed-off-by: Philippe Nunes <nunes.philippe@free.fr>
---
 DEVELOPERS                                    |  3 +
 package/Config.in                             |  1 +
 package/Config.in.host                        |  1 +
 ...ined-assignment-between-differently-.patch | 36 +++++++++++
 ...POSIX.1-2008-so-readlink-is-declared.patch | 36 +++++++++++
 ...ue-false-labels-they-are-reserved-in.patch | 63 +++++++++++++++++++
 package/mcpp/Config.in                        |  7 +++
 package/mcpp/Config.in.host                   |  7 +++
 package/mcpp/mcpp.hash                        |  4 ++
 package/mcpp/mcpp.mk                          | 19 ++++++
 10 files changed, 177 insertions(+)
 create mode 100644 package/mcpp/0001-expand-split-chained-assignment-between-differently-.patch
 create mode 100644 package/mcpp/0002-system-request-POSIX.1-2008-so-readlink-is-declared.patch
 create mode 100644 package/mcpp/0003-system-rename-true-false-labels-they-are-reserved-in.patch
 create mode 100644 package/mcpp/Config.in
 create mode 100644 package/mcpp/Config.in.host
 create mode 100644 package/mcpp/mcpp.hash
 create mode 100644 package/mcpp/mcpp.mk

diff --git a/DEVELOPERS b/DEVELOPERS
index 5a09be9bff..03fe739986 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2725,6 +2725,9 @@ F:	package/adsp-ldr/
 N:	Philipp Richter <richterphilipp.pops@gmail.com>
 F:	package/libtorrent-rasterbar/
 
+N:	Philippe Nunes <nunes.philippe@free.fr>
+F:	package/mcpp/
+
 N:	Philippe Proulx <eeppeliteloop@gmail.com>
 F:	package/babeltrace2/
 F:	package/lttng-babeltrace/
diff --git a/package/Config.in b/package/Config.in
index 27f61ca7bc..944f971db7 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2328,6 +2328,7 @@ menu "Text and terminal handling"
 	source "package/libunibreak/Config.in"
 	source "package/libunistring/Config.in"
 	source "package/linenoise/Config.in"
+	source "package/mcpp/Config.in"
 	source "package/ncurses/Config.in"
 	source "package/newt/Config.in"
 	source "package/oniguruma/Config.in"
diff --git a/package/Config.in.host b/package/Config.in.host
index df57cc0c17..50798d142b 100644
--- a/package/Config.in.host
+++ b/package/Config.in.host
@@ -65,6 +65,7 @@ menu "Host utilities"
 	source "package/lpc3250loader/Config.in.host"
 	source "package/lttng-babeltrace/Config.in.host"
 	source "package/lzma-alone/Config.in.host"
+	source "package/mcpp/Config.in.host"
 	source "package/mender-artifact/Config.in.host"
 	source "package/meson-tools/Config.in.host"
 	source "package/mfgtools/Config.in.host"
diff --git a/package/mcpp/0001-expand-split-chained-assignment-between-differently-.patch b/package/mcpp/0001-expand-split-chained-assignment-between-differently-.patch
new file mode 100644
index 0000000000..ee9657ea7c
--- /dev/null
+++ b/package/mcpp/0001-expand-split-chained-assignment-between-differently-.patch
@@ -0,0 +1,36 @@
+From: Philippe Nunes <nunes.philippe@free.fr>
+Date: Mon, 7 Jul 2026 12:00:00 +0200
+Subject: [PATCH] expand: split chained assignment between differently-typed
+ pointers
+
+GCC 14 promotes -Wincompatible-pointer-types from warning to error by
+default. The chained assignment `m_inf->args = m_inf->loc_args = NULL`
+in src/expand.c has different pointer types on each side
+(char * vs LOCATION *) so the assignment fails to build on GCC 14+
+toolchains.
+
+Split the chain into two independent assignments to avoid the
+implicit cross-type conversion.
+
+Upstream: N/A, mcpp is abandoned upstream (last release 2008).
+
+Signed-off-by: Philippe Nunes <nunes.philippe@free.fr>
+---
+ src/expand.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/expand.c b/src/expand.c
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -710,7 +710,8 @@ expand_macro(
+         } else {
+             m_inf->locs.start_col = m_inf->locs.start_line = 0L;
+         }
+-        m_inf->args = m_inf->loc_args = NULL;       /* Default args */
++        m_inf->args = NULL;                         /* Default args */
++        m_inf->loc_args = NULL;
+         for (num = 1, recurs = 0; num < m_num; num++)
+             if (mac_inf[ num].defp == defp)
+                 recurs++;           /* Recursively nested macro     */
+--
+2.39.0
diff --git a/package/mcpp/0002-system-request-POSIX.1-2008-so-readlink-is-declared.patch b/package/mcpp/0002-system-request-POSIX.1-2008-so-readlink-is-declared.patch
new file mode 100644
index 0000000000..10089f0dc8
--- /dev/null
+++ b/package/mcpp/0002-system-request-POSIX.1-2008-so-readlink-is-declared.patch
@@ -0,0 +1,36 @@
+From: Philippe Nunes <nunes.philippe@free.fr>
+Date: Mon, 7 Jul 2026 12:00:00 +0200
+Subject: [PATCH] system: request POSIX.1-2008 so readlink() is declared
+
+configed.H defines _POSIX_C_SOURCE=1 (POSIX.1-1990), which pre-dates
+readlink(2) (added in POSIX.1-2001). Modern glibc treats readlink()
+as guarded by _POSIX_C_SOURCE >= 200112L; with only 1 requested, the
+declaration is invisible, and GCC 15+ turns the resulting
+implicit-declaration into a hard error.
+
+Bump the requested POSIX level to 200809L (POSIX.1-2008) at the top
+of system.c, before any header inclusion. Doing it in this one
+translation unit keeps the change tightly scoped to the file that
+needs readlink(); other .c files continue to see mcpp's default.
+
+Upstream: N/A, mcpp is abandoned upstream (last release 2008).
+
+Signed-off-by: Philippe Nunes <nunes.philippe@free.fr>
+---
+ src/system.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/system.c b/src/system.c
+--- a/src/system.c
++++ b/src/system.c
+@@ -37,6 +37,8 @@
+  *      1. specify the constants in "configed.H" or "noconfig.H",
+  *      2. append the system-dependent routines in this file.
+  */
++#undef  _POSIX_C_SOURCE
++#define _POSIX_C_SOURCE 200809L
+ #if PREPROCESSED
+ #include    "mcpp.H"
+ #else
+--
+2.39.0
diff --git a/package/mcpp/0003-system-rename-true-false-labels-they-are-reserved-in.patch b/package/mcpp/0003-system-rename-true-false-labels-they-are-reserved-in.patch
new file mode 100644
index 0000000000..267431a1cd
--- /dev/null
+++ b/package/mcpp/0003-system-rename-true-false-labels-they-are-reserved-in.patch
@@ -0,0 +1,63 @@
+From: Philippe Nunes <nunes.philippe@free.fr>
+Date: Mon, 7 Jul 2026 12:00:00 +0200
+Subject: [PATCH] system: rename true/false labels (reserved in modern C)
+
+open_file() uses `true:` and `false:` as C label names for goto
+targets. Since C99, <stdbool.h> defines `true` and `false` as macros
+expanding to 1 and 0; in C23 they are outright keywords. Either way,
+using them as identifiers (labels here) is a syntax error on modern
+GCC (>= 14 / 15).
+
+Rename the two labels to `open_success:` and `open_failure:` (with
+the matching goto sites) so the code parses under both classic and
+C23-oriented compilers.
+
+Upstream: N/A, mcpp is abandoned upstream (last release 2008).
+
+Signed-off-by: Philippe Nunes <nunes.philippe@free.fr>
+---
+ src/system.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/system.c b/src/system.c
+--- a/src/system.c
++++ b/src/system.c
+@@ -3431,7 +3431,7 @@ search:
+     if (! fullname)                 /* Non-existent or directory    */
+         return  FALSE;
+     if (standard && included( fullname))        /* Once included    */
+-        goto  true;
++        goto  open_success;
+         
+     if ((max_open != 0 && max_open <= include_nest)
+                             /* Exceed the known limit of open files */
+@@ -3458,12 +3458,12 @@ search:
+         if ((fp = fopen( fullname, "r")) == NULL) {
+             file->fp = fopen( cur_fullname, "r");
+             fseek( file->fp, file->pos, SEEK_SET);
+-            goto  false;
++            goto  open_failure;
+         }
+         if (max_open == 0)      /* Remember the limit of the system */
+             max_open = include_nest;
+     } else if (fp == NULL)                  /* No read permission   */ 
+-        goto  false;
++        goto  open_failure;
+     /* Truncate buffer of the includer to save memory   */
+     len = (int) (file->bptr - file->buffer);
+     if (len) {
+@@ -3510,9 +3510,9 @@ search:
+     if (mkdep && ((mkdep & MD_SYSHEADER) || ! infile->sys_header))
+         put_depend( fullname);          /* Output dependency line   */
+ 
+-true:
++open_success:
+     return  TRUE;
+-false:
++open_failure:
+     free( fullname);
+     return  FALSE;
+ }
+
+--
+2.39.0
diff --git a/package/mcpp/Config.in b/package/mcpp/Config.in
new file mode 100644
index 0000000000..7ebcd039a1
--- /dev/null
+++ b/package/mcpp/Config.in
@@ -0,0 +1,7 @@
+config BR2_PACKAGE_MCPP
+	bool "mcpp"
+	help
+	  A portable C/C++ preprocessor with a reusable library
+	  (libmcpp).
+
+	  http://mcpp.sourceforge.net/
diff --git a/package/mcpp/Config.in.host b/package/mcpp/Config.in.host
new file mode 100644
index 0000000000..1d03dc3b57
--- /dev/null
+++ b/package/mcpp/Config.in.host
@@ -0,0 +1,7 @@
+config BR2_PACKAGE_HOST_MCPP
+	bool "host mcpp"
+	help
+	  A portable C/C++ preprocessor with a reusable library
+	  (libmcpp).
+
+	  http://mcpp.sourceforge.net/
diff --git a/package/mcpp/mcpp.hash b/package/mcpp/mcpp.hash
new file mode 100644
index 0000000000..651fcf50b8
--- /dev/null
+++ b/package/mcpp/mcpp.hash
@@ -0,0 +1,4 @@
+# Locally calculated
+sha256  3b9b4421888519876c4fc68ade324a3bbd81ceeb7092ecdbbc2055099fcb8864  mcpp-2.7.2.tar.gz
+# Locally calculated
+sha256  adcd59c07ccdb072c8e1d40adb5cac670fcf3f51ba3a7fb41d46362bfd883b1b  LICENSE
diff --git a/package/mcpp/mcpp.mk b/package/mcpp/mcpp.mk
new file mode 100644
index 0000000000..04ca6e15df
--- /dev/null
+++ b/package/mcpp/mcpp.mk
@@ -0,0 +1,19 @@
+################################################################################
+#
+# mcpp
+#
+################################################################################
+
+MCPP_VERSION = 2.7.2
+MCPP_SITE = https://downloads.sourceforge.net/project/mcpp/mcpp/V.$(MCPP_VERSION)
+MCPP_LICENSE = BSD-2-Clause
+MCPP_LICENSE_FILES = LICENSE
+
+MCPP_INSTALL_STAGING = YES
+
+# builds libmcpp.{a,so} alongside the mcpp CLI
+MCPP_CONF_OPTS = --enable-mcpplib
+HOST_MCPP_CONF_OPTS = --enable-mcpplib
+
+$(eval $(autotools-package))
+$(eval $(host-autotools-package))
-- 
2.54.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH v2 2/3] package/libqoriq-rcw: new package
  2026-07-07 16:09 ` [Buildroot] [PATCH v2 0/3] Add qoriq-rcw C reimplementation + libmcpp dep Philippe Nunes via buildroot
  2026-07-07 16:09   ` [Buildroot] [PATCH v2 1/3] package/mcpp: new package Philippe Nunes via buildroot
@ 2026-07-07 16:09   ` Philippe Nunes via buildroot
  2026-07-07 16:10   ` [Buildroot] [PATCH v2 3/3] package/qoriq-rcw-c: " Philippe Nunes via buildroot
  2 siblings, 0 replies; 14+ messages in thread
From: Philippe Nunes via buildroot @ 2026-07-07 16:09 UTC (permalink / raw)
  To: buildroot; +Cc: Philippe Nunes

libqoriq-rcw is a C17 reimplementation of NXP's rcw.py, packaged
as a reusable shared library + pkg-config + public header. It
compiles and decompiles RCW (Reset Configuration Word) binaries
for the pbiformat=2 QorIQ family (LS1028, LS1088, LS2088, LX2160).

Both host and target variants are built. The library uses libmcpp
in-process instead of shelling out to gcc -E, so preprocessing is
hermetic. Built with -Dtests=false (skip cmocka unit tests) and
-Dman=disabled (skip pandoc-generated man page).

Upstream: https://github.com/vjardin/libqoriq-rcw
Signed-off-by: Philippe Nunes <nunes.philippe@free.fr>
---
 DEVELOPERS                             |  1 +
 package/Config.in                      |  1 +
 package/Config.in.host                 |  1 +
 package/libqoriq-rcw/Config.in         | 14 ++++++++++++++
 package/libqoriq-rcw/Config.in.host    | 10 ++++++++++
 package/libqoriq-rcw/libqoriq-rcw.hash |  4 ++++
 package/libqoriq-rcw/libqoriq-rcw.mk   | 23 +++++++++++++++++++++++
 7 files changed, 54 insertions(+)
 create mode 100644 package/libqoriq-rcw/Config.in
 create mode 100644 package/libqoriq-rcw/Config.in.host
 create mode 100644 package/libqoriq-rcw/libqoriq-rcw.hash
 create mode 100644 package/libqoriq-rcw/libqoriq-rcw.mk

diff --git a/DEVELOPERS b/DEVELOPERS
index 03fe739986..830ea99cb7 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2726,6 +2726,7 @@ N:	Philipp Richter <richterphilipp.pops@gmail.com>
 F:	package/libtorrent-rasterbar/
 
 N:	Philippe Nunes <nunes.philippe@free.fr>
+F:	package/libqoriq-rcw/
 F:	package/mcpp/
 
 N:	Philippe Proulx <eeppeliteloop@gmail.com>
diff --git a/package/Config.in b/package/Config.in
index 944f971db7..38563a6520 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1854,6 +1854,7 @@ menu "Hardware handling"
 	source "package/libpciaccess/Config.in"
 	source "package/libpri/Config.in"
 	source "package/libqmi/Config.in"
+	source "package/libqoriq-rcw/Config.in"
 	source "package/libqrtr-glib/Config.in"
 	source "package/libraw1394/Config.in"
 	source "package/librtas/Config.in"
diff --git a/package/Config.in.host b/package/Config.in.host
index 50798d142b..e44506198d 100644
--- a/package/Config.in.host
+++ b/package/Config.in.host
@@ -61,6 +61,7 @@ menu "Host utilities"
 	source "package/jq/Config.in.host"
 	source "package/kmod/Config.in.host"
 	source "package/libp11/Config.in.host"
+	source "package/libqoriq-rcw/Config.in.host"
 	source "package/llvm-project/lld/Config.in.host"
 	source "package/lpc3250loader/Config.in.host"
 	source "package/lttng-babeltrace/Config.in.host"
diff --git a/package/libqoriq-rcw/Config.in b/package/libqoriq-rcw/Config.in
new file mode 100644
index 0000000000..687e001c2f
--- /dev/null
+++ b/package/libqoriq-rcw/Config.in
@@ -0,0 +1,14 @@
+config BR2_PACKAGE_LIBQORIQ_RCW
+	bool "libqoriq-rcw"
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8  # C17
+	select BR2_PACKAGE_MCPP
+	help
+	  C17 reimplementation of NXP's rcw.py as a shared/static
+	  library. Compiles QorIQ/Layerscape Reset Configuration Word
+	  sources into binary images for the pbiformat=2 SoC family
+	  (LS1028, LS1088, LS2088, LX2160).
+
+	  https://github.com/vjardin/libqoriq-rcw
+
+comment "libqoriq-rcw needs a toolchain w/ gcc >= 8"
+	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8
diff --git a/package/libqoriq-rcw/Config.in.host b/package/libqoriq-rcw/Config.in.host
new file mode 100644
index 0000000000..4ce2560d56
--- /dev/null
+++ b/package/libqoriq-rcw/Config.in.host
@@ -0,0 +1,10 @@
+config BR2_PACKAGE_HOST_LIBQORIQ_RCW
+	bool "host libqoriq-rcw"
+	select BR2_PACKAGE_HOST_MCPP
+	help
+	  C17 reimplementation of NXP's rcw.py as a shared/static
+	  library. Compiles QorIQ/Layerscape Reset Configuration Word
+	  sources into binary images for the pbiformat=2 SoC family
+	  (LS1028, LS1088, LS2088, LX2160).
+
+	  https://github.com/vjardin/libqoriq-rcw
diff --git a/package/libqoriq-rcw/libqoriq-rcw.hash b/package/libqoriq-rcw/libqoriq-rcw.hash
new file mode 100644
index 0000000000..27612f9f7a
--- /dev/null
+++ b/package/libqoriq-rcw/libqoriq-rcw.hash
@@ -0,0 +1,4 @@
+# Locally calculated
+sha256  6393cc3139068fa362c5f3a9ec4ae915704e4e848278f4eaa3f7cad465ed9b6b  libqoriq-rcw-1.0.2.tar.gz
+# Locally calculated
+sha256  30a111209bd81aa8d8c110087bff83ba112f82eb4e42630e5cba46cf0daa21ac  LICENSE
diff --git a/package/libqoriq-rcw/libqoriq-rcw.mk b/package/libqoriq-rcw/libqoriq-rcw.mk
new file mode 100644
index 0000000000..124a2ebb0a
--- /dev/null
+++ b/package/libqoriq-rcw/libqoriq-rcw.mk
@@ -0,0 +1,23 @@
+################################################################################
+#
+# libqoriq-rcw
+#
+################################################################################
+
+LIBQORIQ_RCW_VERSION = 1.0.2
+LIBQORIQ_RCW_SITE = $(call github,vjardin,libqoriq-rcw,v$(LIBQORIQ_RCW_VERSION))
+
+LIBQORIQ_RCW_LICENSE = BSD-3-Clause
+LIBQORIQ_RCW_LICENSE_FILES = LICENSE
+
+LIBQORIQ_RCW_INSTALL_STAGING = YES
+
+LIBQORIQ_RCW_DEPENDENCIES = mcpp
+HOST_LIBQORIQ_RCW_DEPENDENCIES = host-mcpp
+
+# skip cmocka-based unit tests and pandoc-generated man page
+LIBQORIQ_RCW_CONF_OPTS = -Dtests=false -Dman=disabled
+HOST_LIBQORIQ_RCW_CONF_OPTS = -Dtests=false -Dman=disabled
+
+$(eval $(meson-package))
+$(eval $(host-meson-package))
-- 
2.54.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Buildroot] [PATCH v2 3/3] package/qoriq-rcw-c: new package
  2026-07-07 16:09 ` [Buildroot] [PATCH v2 0/3] Add qoriq-rcw C reimplementation + libmcpp dep Philippe Nunes via buildroot
  2026-07-07 16:09   ` [Buildroot] [PATCH v2 1/3] package/mcpp: new package Philippe Nunes via buildroot
  2026-07-07 16:09   ` [Buildroot] [PATCH v2 2/3] package/libqoriq-rcw: " Philippe Nunes via buildroot
@ 2026-07-07 16:10   ` Philippe Nunes via buildroot
  2 siblings, 0 replies; 14+ messages in thread
From: Philippe Nunes via buildroot @ 2026-07-07 16:10 UTC (permalink / raw)
  To: buildroot; +Cc: Philippe Nunes, Vincent Jardin

qoriq-rcw-c is a C reimplementation of NXP's rcw.py CLI for the
pbiformat=2 QorIQ family (LS1028, LS1088, LS2088, LX2160). Both
host and target variants are built: the target variant provides
recovery modes (--dump / --dump-flash) that need to run on the
board itself.

The "-c" suffix distinguishes this from the existing host-qoriq-rcw
package which wraps NXP's rcw.py reference; the installed binary
is qoriq-rcw.

Upstream: https://github.com/vjardin/qoriq-rcw

Suggested-by: Vincent Jardin <vjardin@free.fr>
Signed-off-by: Philippe Nunes <nunes.philippe@free.fr>
---
 DEVELOPERS                           |  1 +
 package/Config.in                    |  1 +
 package/Config.in.host               |  1 +
 package/qoriq-rcw-c/Config.in        | 13 +++++++++++++
 package/qoriq-rcw-c/Config.in.host   | 10 ++++++++++
 package/qoriq-rcw-c/qoriq-rcw-c.hash |  4 ++++
 package/qoriq-rcw-c/qoriq-rcw-c.mk   | 22 ++++++++++++++++++++++
 7 files changed, 52 insertions(+)
 create mode 100644 package/qoriq-rcw-c/Config.in
 create mode 100644 package/qoriq-rcw-c/Config.in.host
 create mode 100644 package/qoriq-rcw-c/qoriq-rcw-c.hash
 create mode 100644 package/qoriq-rcw-c/qoriq-rcw-c.mk

diff --git a/DEVELOPERS b/DEVELOPERS
index 830ea99cb7..36edb3a767 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2728,6 +2728,7 @@ F:	package/libtorrent-rasterbar/
 N:	Philippe Nunes <nunes.philippe@free.fr>
 F:	package/libqoriq-rcw/
 F:	package/mcpp/
+F:	package/qoriq-rcw-c/
 
 N:	Philippe Proulx <eeppeliteloop@gmail.com>
 F:	package/babeltrace2/
diff --git a/package/Config.in b/package/Config.in
index 38563a6520..fe515e46c7 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -444,6 +444,7 @@ menu "Firmware"
 	source "package/qoriq-fm-ucode/Config.in"
 	source "package/qoriq-mc-binary/Config.in"
 	source "package/qoriq-mc-utils/Config.in"
+	source "package/qoriq-rcw-c/Config.in"
 	source "package/qoriq-restool/Config.in"
 	source "package/rcw-smarc-sal28/Config.in"
 	source "package/rpi-firmware/Config.in"
diff --git a/package/Config.in.host b/package/Config.in.host
index e44506198d..5192f4b18d 100644
--- a/package/Config.in.host
+++ b/package/Config.in.host
@@ -102,6 +102,7 @@ menu "Host utilities"
 	source "package/python3/Config.in.host"
 	source "package/qemu/Config.in.host"
 	source "package/qoriq-rcw/Config.in.host"
+	source "package/qoriq-rcw-c/Config.in.host"
 	source "package/qt6/Config.in.host"
 	source "package/raspberrypi-usbboot/Config.in.host"
 	source "package/rauc/Config.in.host"
diff --git a/package/qoriq-rcw-c/Config.in b/package/qoriq-rcw-c/Config.in
new file mode 100644
index 0000000000..86f33f1598
--- /dev/null
+++ b/package/qoriq-rcw-c/Config.in
@@ -0,0 +1,13 @@
+config BR2_PACKAGE_QORIQ_RCW_C
+	bool "qoriq-rcw-c (C implementation)"
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8  # libqoriq-rcw uses C17
+	select BR2_PACKAGE_LIBQORIQ_RCW
+	help
+	  C CLI on top of libqoriq-rcw for the pbiformat=2 SoC family
+	  (LS1028, LS1088, LS2088, LX2160). Compiles RCW sources into
+	  binary images and provides recovery modes on live hardware.
+
+	  https://github.com/vjardin/qoriq-rcw
+
+comment "qoriq-rcw-c needs a toolchain w/ gcc >= 8"
+	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8
diff --git a/package/qoriq-rcw-c/Config.in.host b/package/qoriq-rcw-c/Config.in.host
new file mode 100644
index 0000000000..f531e0b797
--- /dev/null
+++ b/package/qoriq-rcw-c/Config.in.host
@@ -0,0 +1,10 @@
+config BR2_PACKAGE_HOST_QORIQ_RCW_C
+	bool "host qoriq-rcw-c (C implementation)"
+	select BR2_PACKAGE_HOST_LIBQORIQ_RCW
+	help
+	  C CLI on top of libqoriq-rcw for the pbiformat=2 SoC family
+	  (LS1028, LS1088, LS2088, LX2160). Avoids pulling in host
+	  Python (the host-qoriq-rcw package wraps NXP's rcw.py Python
+	  reference).
+
+	  https://github.com/vjardin/qoriq-rcw
diff --git a/package/qoriq-rcw-c/qoriq-rcw-c.hash b/package/qoriq-rcw-c/qoriq-rcw-c.hash
new file mode 100644
index 0000000000..95353df2dc
--- /dev/null
+++ b/package/qoriq-rcw-c/qoriq-rcw-c.hash
@@ -0,0 +1,4 @@
+# Locally calculated
+sha256  977d501752045533fa725fe93e6e21b8cbbdf118da8944a939e9932ee1160529  qoriq-rcw-1.0.1.tar.gz
+# Locally calculated
+sha256  30a111209bd81aa8d8c110087bff83ba112f82eb4e42630e5cba46cf0daa21ac  LICENSE
diff --git a/package/qoriq-rcw-c/qoriq-rcw-c.mk b/package/qoriq-rcw-c/qoriq-rcw-c.mk
new file mode 100644
index 0000000000..395bc37984
--- /dev/null
+++ b/package/qoriq-rcw-c/qoriq-rcw-c.mk
@@ -0,0 +1,22 @@
+################################################################################
+#
+# qoriq-rcw-c
+#
+################################################################################
+
+QORIQ_RCW_C_VERSION = 1.0.1
+QORIQ_RCW_C_SITE = $(call github,vjardin,qoriq-rcw,v$(QORIQ_RCW_C_VERSION))
+QORIQ_RCW_C_SOURCE = qoriq-rcw-$(QORIQ_RCW_C_VERSION).tar.gz
+
+QORIQ_RCW_C_LICENSE = BSD-3-Clause
+QORIQ_RCW_C_LICENSE_FILES = LICENSE
+
+QORIQ_RCW_C_DEPENDENCIES = libqoriq-rcw
+HOST_QORIQ_RCW_C_DEPENDENCIES = host-libqoriq-rcw
+
+# skip the pandoc-rendered man page (pandoc requires a full Haskell runtime)
+QORIQ_RCW_C_CONF_OPTS = -Dman=disabled
+HOST_QORIQ_RCW_C_CONF_OPTS = -Dman=disabled
+
+$(eval $(meson-package))
+$(eval $(host-meson-package))
-- 
2.54.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2026-07-07 16:10 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-01 12:19 [Buildroot] [PATCH 0/3] Add qoriq-rcw C reimplementation + libmcpp dep Philippe Nunes via buildroot
2026-07-01 12:19 ` [Buildroot] [PATCH 1/3] package/mcpp: new package Philippe Nunes via buildroot
2026-07-06  8:23   ` Vincent Jardin via buildroot
2026-07-06 15:49     ` Philippe Nunes via buildroot
2026-07-01 12:19 ` [Buildroot] [PATCH 2/3] package/libqoriq-rcw: " Philippe Nunes via buildroot
2026-07-06  8:19   ` Vincent Jardin via buildroot
2026-07-06 15:56     ` Philippe Nunes via buildroot
2026-07-01 12:19 ` [Buildroot] [PATCH 3/3] package/qoriq-rcw-c: " Philippe Nunes via buildroot
2026-07-06  8:15   ` Vincent Jardin via buildroot
2026-07-06 16:04     ` Philippe Nunes via buildroot
2026-07-07 16:09 ` [Buildroot] [PATCH v2 0/3] Add qoriq-rcw C reimplementation + libmcpp dep Philippe Nunes via buildroot
2026-07-07 16:09   ` [Buildroot] [PATCH v2 1/3] package/mcpp: new package Philippe Nunes via buildroot
2026-07-07 16:09   ` [Buildroot] [PATCH v2 2/3] package/libqoriq-rcw: " Philippe Nunes via buildroot
2026-07-07 16:10   ` [Buildroot] [PATCH v2 3/3] package/qoriq-rcw-c: " Philippe Nunes via buildroot

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.