From d51b601b660bacaa1683643e5fc3cc94b58265eb Mon Sep 17 00:00:00 2001
From: John Ericson <John.Ericson@Obsidian.Systems>
Date: Fri, 22 Sep 2023 18:36:34 -0400
Subject: [PATCH] Shuffle libzstd configuring between scripts

Like the prior commit for libdw and libnuma, `AC_DEFINE` to RTS
configure, `AC_SUBST` goes to the top-level configure script, and the
documentation of the m4 macro is improved.
---
 configure.ac          | 11 ++++++-----
 m4/fp_find_libzstd.m4 | 33 ++++++++++++++-------------------
 rts/configure.ac      |  9 +++++++++
 3 files changed, 29 insertions(+), 24 deletions(-)

diff --git a/configure.ac b/configure.ac
index 1cbd5510dff2..150d61388583 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1127,6 +1127,10 @@ FP_ARM_OUTLINE_ATOMICS
 dnl ** IPE data compression
 dnl --------------------------------------------------------------
 FP_FIND_LIBZSTD
+AC_SUBST(UseLibZstd)
+AC_SUBST(UseStaticLibZstd)
+AC_SUBST(LibZstdLibDir)
+AC_SUBST(LibZstdIncludeDir)
 
 dnl ** Other RTS features
 dnl --------------------------------------------------------------
@@ -1289,14 +1293,11 @@ echo "\
    cabal-install : $CABAL
 "
 
-USING_LIBZSTD=$(if [ "$HaveLibZstd" = "1" ]; then echo "YES"; else echo "NO"; fi;)
-STATIC_LIBZSTD=$(if [ "$StaticLibZstd" = "1" ]; then echo "YES"; else echo "NO"; fi;)
-
 echo "\
    Using optional dependencies:
       libnuma : $UseLibNuma
-      libzstd : $USING_LIBZSTD
-         statically linked? : $STATIC_LIBZSTD
+      libzstd : $UseLibZstd
+         statically linked? : ${UseStaticLibZstd:-N/A}
       libdw   : $UseLibdw
 
    Using LLVM tools
diff --git a/m4/fp_find_libzstd.m4 b/m4/fp_find_libzstd.m4
index 40b0f0877a7a..0583c158665b 100644
--- a/m4/fp_find_libzstd.m4
+++ b/m4/fp_find_libzstd.m4
@@ -1,3 +1,13 @@
+# FP_FIND_LIBZSTD
+# --------------------------------------------------------------
+# Check whether we are we want IPE data compression, whether we have
+# libzstd in order to do it, and whether zstd will be statically linked.
+#
+# Sets variables:
+#   - UseLibZstd: [YES|NO]
+#   - UseStaticLibZstd: [YES|NO]
+#   - LibZstdLibDir: optional path
+#   - LibZstdIncludeDir: optional path
 AC_DEFUN([FP_FIND_LIBZSTD],
 [
   dnl ** Is IPE data compression enabled?
@@ -41,8 +51,6 @@ AC_DEFUN([FP_FIND_LIBZSTD],
         ]
       )
 
-    AC_SUBST(LibZstdLibDir)
-
     AC_ARG_WITH(
         libzstd-includes,
         [AS_HELP_STRING(
@@ -55,8 +63,6 @@ AC_DEFUN([FP_FIND_LIBZSTD],
         ]
       )
 
-    AC_SUBST(LibZstdIncludeDir)
-
     CFLAGS2="$CFLAGS"
     CFLAGS="$LIBZSTD_CFLAGS $CFLAGS"
     LDFLAGS2="$LDFLAGS"
@@ -90,16 +96,8 @@ AC_DEFUN([FP_FIND_LIBZSTD],
     LDFLAGS="$LDFLAGS2"
   fi
 
-  AC_DEFINE_UNQUOTED([HAVE_LIBZSTD], [$HaveLibZstd], [Define to 1 if you
-    wish to compress IPE data in compiler results (requires libzstd)])
-
-  AC_DEFINE_UNQUOTED([STATIC_LIBZSTD], [$StaticLibZstd], [Define to 1 if you
-    wish to statically link the libzstd compression library in the compiler
-    (requires libzstd)])
-
   if test $HaveLibZstd = "1" ; then
-    AC_SUBST([UseLibZstd],[YES])
-    AC_SUBST([CabalHaveLibZstd],[True])
+    UseLibZstd=YES
     if test $StaticLibZstd = "1" ; then
       case "${host_os}" in
           darwin*)
@@ -107,14 +105,11 @@ AC_DEFUN([FP_FIND_LIBZSTD],
                   [--enable-static-libzstd is not compatible with darwin]
                 )
       esac
-      AC_SUBST([UseStaticLibZstd],[YES])
-      AC_SUBST([CabalStaticLibZstd],[True])
+      UseStaticLibZstd=YES
     else
-      AC_SUBST([UseStaticLibZstd],[NO])
-      AC_SUBST([CabalStaticLibZstd],[False])
+      UseStaticLibZstd=NO
     fi
   else
-    AC_SUBST([UseLibZstd],[NO])
-    AC_SUBST([CabalHaveLibZstd],[False])
+    UseLibZstd=NO
   fi
 ])
diff --git a/rts/configure.ac b/rts/configure.ac
index a4c0dc2a234b..2dbf9b30a9d9 100644
--- a/rts/configure.ac
+++ b/rts/configure.ac
@@ -33,6 +33,15 @@ GHC_CONVERT_PLATFORM_PARTS([host], [Host])
 FPTOOLS_SET_PLATFORM_VARS([host], [Host])
 FPTOOLS_SET_HASKELL_PLATFORM_VARS([Host])
 
+dnl ** IPE data compression
+dnl --------------------------------------------------------------
+AC_DEFINE_UNQUOTED([HAVE_LIBZSTD], [$CABAL_FLAG_libzstd], [Define to 1 if you
+  wish to compress IPE data in compiler results (requires libzstd)])
+
+AC_DEFINE_UNQUOTED([STATIC_LIBZSTD], [$CABAL_FLAG_static_libzstd], [Define to 1 if you
+  wish to statically link the libzstd compression library in the compiler
+  (requires libzstd)])
+
 dnl ** Other RTS features
 dnl --------------------------------------------------------------
 AC_DEFINE_UNQUOTED([USE_LIBDW], [$CABAL_FLAG_libdw], [Set to 1 to use libdw])
-- 
GitLab