All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Hamilton <adhamilt@gmail.com>
To: grub-devel@gnu.org
Cc: daniel.kiper@oracle.com, Andrew Hamilton <adhamilt@gmail.com>
Subject: [PATCH] libgcrypt: Allow GRUB to Build With Clang
Date: Sat, 30 Aug 2025 22:32:39 -0500	[thread overview]
Message-ID: <20250831033239.340703-1-adhamilt@gmail.com> (raw)

Attempts to build GRUB with Clang were failing due to errors
such as:
error: redefinition of typedef 'gcry_md_hd_t' is a C11 feature

Correct this by adding a compiler pramga to disable the
Clang "typedef-redefinition" warnings. This required an update
to crypto.h and the import_gcry.py script to add the pragma
to libgcrypt-grub's types.h due to "u16" and similar types.

Signed-off-by: Andrew Hamilton <adhamilt@gmail.com>
---
 include/grub/crypto.h | 9 +++++++++
 util/import_gcry.py   | 6 +++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/include/grub/crypto.h b/include/grub/crypto.h
index b0d7add1d..55e21de6f 100644
--- a/include/grub/crypto.h
+++ b/include/grub/crypto.h
@@ -245,6 +245,15 @@ typedef struct gcry_md_spec
   struct gcry_md_spec *next;
 } gcry_md_spec_t;
 
+/*
+ * Clang defaults to flagging type redefinitions as warnings.
+ * A few "forward declarations" in this file are needed due
+ * to inter-relationship complexities between GRUB and 
+ * libgcrypt.
+ */
+#ifdef __clang__
+#pragma GCC diagnostic ignored "-Wtypedef-redefinition"
+#endif
 typedef struct gcry_md_handle*gcry_md_hd_t;
 
 struct gcry_mpi;
diff --git a/util/import_gcry.py b/util/import_gcry.py
index 086bde77c..1e23ee760 100644
--- a/util/import_gcry.py
+++ b/util/import_gcry.py
@@ -608,7 +608,11 @@ with codecs.open (os.path.join (cipher_dir_out, "crypto.lst"), "w", "utf-8") as
                 continue
             with codecs.open (infile, "r", "utf-8") as f:
                 if src == "types.h":
-                    fw.write (f.read ().replace ("float f;", "").replace ("double g;", ""))
+                    fw.write (f.read ().replace ("float f;", "").replace ("double g;", "") \
+                     .replace("#ifndef HAVE_BYTE",
+                              "#ifdef __clang__\n" \
+                              "#pragma GCC diagnostic ignored \"-Wtypedef-redefinition\"\n#endif\n" \
+                              "#ifndef HAVE_BYTE"))
                     continue
 
                 if src == "cipher-proto.h":
-- 
2.47.2


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

             reply	other threads:[~2025-08-31  3:33 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-31  3:32 Andrew Hamilton [this message]
2025-09-02 13:24 ` [PATCH] libgcrypt: Allow GRUB to Build With Clang Daniel Kiper via Grub-devel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250831033239.340703-1-adhamilt@gmail.com \
    --to=adhamilt@gmail.com \
    --cc=daniel.kiper@oracle.com \
    --cc=grub-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.