Nicholas Fraser : configure: Add --enable-build-id option.

Alexandre Julliard julliard at winehq.org
Thu Feb 18 16:06:07 CST 2021


Module: wine
Branch: master
Commit: 13ca3c883334801e2cadc699c2d35bb783e435dc
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=13ca3c883334801e2cadc699c2d35bb783e435dc

Author: Nicholas Fraser <nfraser at codeweavers.com>
Date:   Tue Feb 16 16:15:32 2021 -0500

configure: Add --enable-build-id option.

Build-ids are required for doing certain kinds of performance tracing. For
example build-ids let Linux perf find the correct objects and transfer them
to other machines via "perf archive".

Signed-off-by: Nicholas Fraser <nfraser at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 configure    | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 configure.ac | 11 ++++++++++
 2 files changed, 82 insertions(+)

diff --git a/configure b/configure
index fc6c7dede2f..08936ff0ec1 100755
--- a/configure
+++ b/configure
@@ -842,6 +842,7 @@ enable_option_checking
 enable_win16
 enable_win64
 enable_tests
+enable_build_id
 enable_maintainer_mode
 enable_silent_rules
 enable_werror
@@ -2580,6 +2581,7 @@ Optional Features:
   --enable-win64          build a Win64 emulator on AMD64 (won't run Win32
                           binaries)
   --disable-tests         do not build the regression tests
+  --enable-build-id       include .buildid section in output objects
   --enable-maintainer-mode
                           enable maintainer-specific build rules
   --enable-silent-rules   use silent build rules (override: "make V=1")
@@ -3910,6 +3912,11 @@ if test "${enable_tests+set}" = set; then :
   enableval=$enable_tests;
 fi
 
+# Check whether --enable-build-id was given.
+if test "${enable_build_id+set}" = set; then :
+  enableval=$enable_build_id;
+fi
+
 # Check whether --enable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then :
   enableval=$enable_maintainer_mode;
@@ -10677,6 +10684,41 @@ if test "x$ac_cv_crosscflags__Werror" = xyes; then :
   EXTRACROSSCFLAGS="$EXTRACROSSCFLAGS -Werror"
 fi
         fi
+        if test "x$enable_build_id" = "xyes"
+        then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the cross-compiler supports -Wl,--build-id" >&5
+$as_echo_n "checking whether the cross-compiler supports -Wl,--build-id... " >&6; }
+if ${ac_cv_crosscflags__Wl___build_id+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_wine_try_cflags_saved=$CFLAGS
+ac_wine_try_cflags_saved_cc=$CC
+ac_wine_try_cflags_saved_exeext=$ac_exeext
+CFLAGS="$CFLAGS $EXTRACROSSCFLAGS -nostartfiles -nodefaultlibs -Wl,--build-id"
+CC="$CROSSCC"
+ac_exeext=".exe"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int __cdecl mainCRTStartup(void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_crosscflags__Wl___build_id=yes
+else
+  ac_cv_crosscflags__Wl___build_id=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+CFLAGS=$ac_wine_try_cflags_saved
+CC=$ac_wine_try_cflags_saved_cc
+ac_exeext=$ac_wine_try_cflags_saved_exeext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crosscflags__Wl___build_id" >&5
+$as_echo "$ac_cv_crosscflags__Wl___build_id" >&6; }
+if test "x$ac_cv_crosscflags__Wl___build_id" = xyes; then :
+  CROSSCFLAGS="$CROSSCFLAGS -Wl,--build-id"
+                            CROSSLDFLAGS="$CROSSLDFLAGS -Wl,--build-id"
+fi
+        fi
 
         CFLAGS=$saved_CFLAGS
         CC="$ac_save_CC"
@@ -17795,6 +17837,35 @@ fi
 $as_echo "$ac_cv_cflags__Werror" >&6; }
 if test "x$ac_cv_cflags__Werror" = xyes; then :
   EXTRACFLAGS="$EXTRACFLAGS -Werror"
+fi
+  fi
+  if test "x$enable_build_id" = "xyes"
+  then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Wl,--build-id" >&5
+$as_echo_n "checking whether the compiler supports -Wl,--build-id... " >&6; }
+if ${ac_cv_cflags__Wl___build_id+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_wine_try_cflags_saved=$CFLAGS
+CFLAGS="$CFLAGS -Wl,--build-id"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main(int argc, char **argv) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_cflags__Wl___build_id=yes
+else
+  ac_cv_cflags__Wl___build_id=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+CFLAGS=$ac_wine_try_cflags_saved
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags__Wl___build_id" >&5
+$as_echo "$ac_cv_cflags__Wl___build_id" >&6; }
+if test "x$ac_cv_cflags__Wl___build_id" = xyes; then :
+  CFLAGS="$CFLAGS -Wl,--build-id"
+                      LDFLAGS="$LDFLAGS -Wl,--build-id"
 fi
   fi
 fi
diff --git a/configure.ac b/configure.ac
index 5e392ff5ed6..caff5d1fe52 100644
--- a/configure.ac
+++ b/configure.ac
@@ -31,6 +31,7 @@ dnl **** Command-line arguments ****
 AC_ARG_ENABLE(win16, AS_HELP_STRING([--disable-win16],[do not include Win16 support]))
 AC_ARG_ENABLE(win64, AS_HELP_STRING([--enable-win64],[build a Win64 emulator on AMD64 (won't run Win32 binaries)]))
 AC_ARG_ENABLE(tests, AS_HELP_STRING([--disable-tests],[do not build the regression tests]))
+AC_ARG_ENABLE(build-id, AS_HELP_STRING([--enable-build-id],[include .buildid section in output objects]))
 AC_ARG_ENABLE(maintainer-mode, AS_HELP_STRING([--enable-maintainer-mode],[enable maintainer-specific build rules]))
 AC_ARG_ENABLE(silent-rules, AS_HELP_STRING([--enable-silent-rules],[use silent build rules (override: "make V=1")]))
 AC_ARG_ENABLE(werror, AS_HELP_STRING([--enable-werror],[treat compilation warnings as errors]))
@@ -1086,6 +1087,11 @@ then
         then
             WINE_TRY_CROSSCFLAGS([-Werror])
         fi
+        if test "x$enable_build_id" = "xyes"
+        then
+            WINE_TRY_CROSSCFLAGS([-Wl,--build-id], [CROSSCFLAGS="$CROSSCFLAGS -Wl,--build-id"
+                            CROSSLDFLAGS="$CROSSLDFLAGS -Wl,--build-id"])
+        fi
 
         CFLAGS=$saved_CFLAGS
         CC="$ac_save_CC"
@@ -2111,6 +2117,11 @@ char*f(const char *h,char n) {return strchr(h,n);}]])],[ac_cv_c_logicalop_noisy=
   then
       WINE_TRY_CFLAGS([-Werror])
   fi
+  if test "x$enable_build_id" = "xyes"
+  then
+      WINE_TRY_CFLAGS([-Wl,--build-id], [CFLAGS="$CFLAGS -Wl,--build-id"
+                      LDFLAGS="$LDFLAGS -Wl,--build-id"])
+  fi
 fi
 
 dnl **** Disable Fortify, it has too many false positives




More information about the wine-cvs mailing list