On Tue, Apr 28, 2026 at 09:29:41AM -0400, Tom Lane wrote:
> If we do care, a low-tech solution could be to have a dummy symbol
> declared in each file, along the lines of
> 
> #if HAVE_X86_64_POPCNTQ
> // code for popcntq case
> #elif HAVE_FROBNITZ
> // code for frobnitz case
> ...
> #else
> /* prevent linker complaints about empty module */
> extern int pg_cpu_x86_dummy_variable;
> int   pg_cpu_x86_dummy_variable = 0;
> #endif
> 
> Actually then we'd not need to change the build systems either...

I've been trying to avoid doing that, but it's a far simpler solution, and
in theory it should fix the problem for all platforms, too.  So, it's
probably the way to go.

-- 
nathan
>From d9e128fdcf168c90ebf6d5be0c645ce27b7611ba Mon Sep 17 00:00:00 2001
From: Nathan Bossart <[email protected]>
Date: Tue, 28 Apr 2026 09:05:43 -0500
Subject: [PATCH v3 1/1] avoid ranlib warnings on macOS

---
 src/port/pg_cpu_x86.c          | 7 ++++++-
 src/port/pg_popcount_aarch64.c | 8 +++++++-
 src/port/pg_popcount_x86.c     | 8 +++++++-
 3 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/src/port/pg_cpu_x86.c b/src/port/pg_cpu_x86.c
index 150b4a1d574..2a4eae8688b 100644
--- a/src/port/pg_cpu_x86.c
+++ b/src/port/pg_cpu_x86.c
@@ -263,5 +263,10 @@ x86_hypervisor_tsc_frequency_khz(void)
        return 0;
 }
 
+#else
+
+/* prevent linker complaints about empty module */
+extern int     pg_cpu_x86_dummy_variable;
+int                    pg_cpu_x86_dummy_variable = 0;
 
-#endif                                                 /* defined(USE_SSE2) || 
defined(__i386__) */
+#endif
diff --git a/src/port/pg_popcount_aarch64.c b/src/port/pg_popcount_aarch64.c
index 3969a42523c..68a768bac01 100644
--- a/src/port/pg_popcount_aarch64.c
+++ b/src/port/pg_popcount_aarch64.c
@@ -463,4 +463,10 @@ pg_popcount_masked_neon(const char *buf, int bytes, uint8 
mask)
        return popcnt;
 }
 
-#endif                                                 /* USE_NEON */
+#else
+
+/* prevent linker complaints about empty module */
+extern int     pg_popcount_aarch64_dummy_variable;
+int                    pg_popcount_aarch64_dummy_variable = 0;
+
+#endif
diff --git a/src/port/pg_popcount_x86.c b/src/port/pg_popcount_x86.c
index 91579e6b569..b3a6d8b3b0c 100644
--- a/src/port/pg_popcount_x86.c
+++ b/src/port/pg_popcount_x86.c
@@ -301,4 +301,10 @@ pg_popcount_masked_sse42(const char *buf, int bytes, uint8 
mask)
        return popcnt;
 }
 
-#endif                                                 /* HAVE_X86_64_POPCNTQ 
*/
+#else
+
+/* prevent linker complaints about empty module */
+extern int     pg_popcount_x86_dummy_variable;
+int                    pg_popcount_x86_dummy_variable = 0;
+
+#endif
-- 
2.50.1 (Apple Git-155)

Reply via email to