From 753d1206e0e733fcd43594a19f40bd81e31a2a7f Mon Sep 17 00:00:00 2001
From: Steven Cooreman <steven.cooreman@silabs.com>
Date: Wed, 26 Feb 2025 15:44:23 +0100
Subject: [PATCH] Split SetupPayloadHelper out of setup_payload library

SetupPayloadHelper uses filesystem calls, which may not be implemented when
using a standard library which does't provide such functionality (such as
libc++ on embedded targets). This change avoids compiling in the helper
functions into the library on these targets by default, as the only in-tree
consumer of these functions currently is the qrcodetool which is only built
on host.
---
 src/qrcodetool/BUILD.gn    |  2 +-
 src/setup_payload/BUILD.gn | 11 +++++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/qrcodetool/BUILD.gn b/src/qrcodetool/BUILD.gn
index 1783bbb9e1c03f..fb1c687d4da24c 100644
--- a/src/qrcodetool/BUILD.gn
+++ b/src/qrcodetool/BUILD.gn
@@ -30,6 +30,6 @@ executable("qrcodetool") {
   public_deps = [
     "${chip_root}/src/lib/support",
     "${chip_root}/src/platform/logging:stdio",
-    "${chip_root}/src/setup_payload",
+    "${chip_root}/src/setup_payload:setup_payload_helper",
   ]
 }
diff --git a/src/setup_payload/BUILD.gn b/src/setup_payload/BUILD.gn
index e42e2e9ceafcee..fa3ac4dc70da7e 100644
--- a/src/setup_payload/BUILD.gn
+++ b/src/setup_payload/BUILD.gn
@@ -66,8 +66,6 @@ static_library("setup_payload") {
     "QRCodeSetupPayloadParser.h",
     "SetupPayload.cpp",
     "SetupPayload.h",
-    "SetupPayloadHelper.cpp",
-    "SetupPayloadHelper.h",
   ]
 
   cflags = [ "-Wconversion" ]
@@ -80,6 +78,15 @@ static_library("setup_payload") {
   ]
 }
 
+source_set("setup_payload_helper") {
+  sources = [
+    "SetupPayloadHelper.cpp",
+    "SetupPayloadHelper.h",
+  ]
+
+  public_deps = [ "${chip_root}/src/setup_payload" ]
+}
+
 source_set("onboarding-codes-utils") {
   sources = [
     "OnboardingCodesUtil.cpp",