From 85b225cdd00b9a483a603b8b124a829ffbf92b88 Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Sun, 2 Oct 2022 03:07:40 +0100
Subject: [PATCH] Unbundle cJSON

Signed-off-by: Sam James <sam@gentoo.org>
--- a/configure.ac
+++ b/configure.ac
@@ -62,6 +62,8 @@ AC_ARG_ENABLE([profiling],
     AS_HELP_STRING([--enable-profiling], [Enable iperf3 profiling binary]))
 AM_CONDITIONAL([ENABLE_PROFILING], [test x$enable_profiling = xyes])
 
+PKG_CHECK_MODULES([libcjson], [libcjson >= 1.7.15])
+
 # Check for the math library (needed by cjson on some platforms)
 AC_SEARCH_LIBS(floor, [m], [], [
 echo "floor()"
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -10,8 +10,6 @@ include_HEADERS         = iperf_api.h                                   # Define
 
 # Specify the source files and flags for the iperf library
 libiperf_la_SOURCES     = \
-                        cjson.c \
-                        cjson.h \
                         flowlabel.h \
                         iperf.h \
                         iperf_api.c \
@@ -44,10 +42,13 @@ libiperf_la_SOURCES     = \
                         units.c \
                         units.h \
                         version.h
+libiperf_la_CPPFLAGS    = $(CPPFLAGS) @libcjson_CFLAGS@
+libiperf_la_LIBADD      = @libcjson_LIBS@
 
 # Specify the sources and various flags for the iperf binary
 iperf3_SOURCES          = main.c
-iperf3_LDADD            = libiperf.la
+iperf3_CPPFLAGS         = $(CPPFLAGS) @libcjson_CFLAGS@
+iperf3_LDADD            = libiperf.la @libcjson_LIBS@
 
 if ENABLE_PROFILING
 # If the iperf-profiled-binary is enabled
--- a/src/iperf.h
+++ b/src/iperf.h
@@ -65,7 +65,7 @@
 
 #include "timer.h"
 #include "queue.h"
-#include "cjson.h"
+#include <cjson/cJSON.h>
 #include "iperf_time.h"
 
 #if defined(HAVE_SSL)
--- a/src/iperf_api.c
+++ b/src/iperf_api.c
@@ -81,7 +81,7 @@
 #endif /* HAVE_SCTP_H */
 #include "timer.h"
 
-#include "cjson.h"
+#include <cjson/cJSON.h>
 #include "units.h"
 #include "iperf_util.h"
 #include "iperf_locale.h"
--- a/src/iperf_tcp.c
+++ b/src/iperf_tcp.c
@@ -42,7 +42,7 @@
 #include "iperf_api.h"
 #include "iperf_tcp.h"
 #include "net.h"
-#include "cjson.h"
+#include <cjson/cJSON.h>
 
 #if defined(HAVE_FLOWLABEL)
 #include "flowlabel.h"
--- a/src/iperf_udp.c
+++ b/src/iperf_udp.c
@@ -46,7 +46,7 @@
 #include "iperf_udp.h"
 #include "timer.h"
 #include "net.h"
-#include "cjson.h"
+#include <cjson/cJSON.h>
 #include "portable_endian.h"
 
 #if defined(HAVE_INTTYPES_H)
--- a/src/iperf_util.c
+++ b/src/iperf_util.c
@@ -46,7 +46,7 @@
 #include <errno.h>
 #include <fcntl.h>
 
-#include "cjson.h"
+#include <cjson/cJSON.h>
 #include "iperf.h"
 #include "iperf_api.h"
 
--- a/src/iperf_util.h
+++ b/src/iperf_util.h
@@ -28,7 +28,7 @@
 #define __IPERF_UTIL_H
 
 #include "iperf_config.h"
-#include "cjson.h"
+#include <cjson/cJSON.h>
 #include <sys/select.h>
 #include <stddef.h>
 
