From 9e4887bcf45c2f0c54b5e3211c8fa87a2217cded Mon Sep 17 00:00:00 2001 From: Daniel Pouzzner Date: Wed, 21 Feb 2024 16:36:29 -0600 Subject: [PATCH] configure.ac: fix --enable-reproducible-build using -g0 -ffile-prefix-map=... -Wl,--build-id=none. these fixes stabilize the hash of libwolfssl with respect to source and build directory, previously broken for out-of-tree builds. --- configure.ac | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 132f14b0c..97d19e07a 100644 --- a/configure.ac +++ b/configure.ac @@ -451,9 +451,35 @@ then RANLIB=ranlib fi xxx_ranlib_flags=$(${RANLIB} --help 2>&1) - AM_CFLAGS="$AM_CFLAGS -DHAVE_REPRODUCIBLE_BUILD" + AS_CASE([$xxx_ar_flags],[*'use zero for timestamps and uids/gids'*],[AR_FLAGS="Dcr" lt_ar_flags="Dcr"]) AS_CASE([$xxx_ranlib_flags],[*'Use zero for symbol map timestamp'*],[RANLIB="${RANLIB} -D"]) + + AM_CFLAGS="$AM_CFLAGS -DHAVE_REPRODUCIBLE_BUILD -g0" + + # opportunistically use -ffile-prefix-map (added in GCC8 and LLVM10) + + if "$CC" -ffile-prefix-map=/tmp=. -x c - -o /dev/null >/dev/null 2>&1 <<' EOF' + #include + int main(int argc, char **argv) { + (void)argc; (void)argv; return 0; + } + EOF + then + AM_CFLAGS="$AM_CFLAGS -ffile-prefix-map=\$(abs_top_srcdir)/= -ffile-prefix-map=\$(top_srcdir)/=" + fi + + # opportunistically use linker option --build-id=none + + if "$CC" -Wl,--build-id=none -x c - -o /dev/null >/dev/null 2>&1 <<' EOF' + #include + int main(int argc, char **argv) { + (void)argc; (void)argv; return 0; + } + EOF + then + AM_LDFLAGS="$AM_LDFLAGS -Wl,--build-id=none" + fi fi