[PATCH 5/6] configure: allow picking up dwarf version for compilation from command line

Eric Pouech eric.pouech at gmail.com
Tue Sep 28 10:21:43 CDT 2021


- specifying -gdwarf-X will configure dwarf version X for compilation
  (recent compilers will support 2 up to 5, Wine doesn't support 5 yet)
- <regular> compilation: either picked up in one of CFLAGS options
  (when present), or gotten from DEBUGFORMAT as fallback
- cross compilation: either picked up in one of CROSSCFLAGS options,
  (when present), or gotten from CROSSDEBUGFORMAT as fallback
- renamed CROSSDEBUG into CROSSDEBUGFORMAT in sake of clarity and
  coherency with DEBUGFORMAT

Default version for both compilations is still dwarf 2

V2:  with Jacek's suggestions on making both compilations regular/cross as
coherent as possiblex)

Signed-off-by: Eric Pouech <eric.pouech at gmail.com>

---
 configure.ac |   50 ++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 36 insertions(+), 14 deletions(-)

diff --git a/configure.ac b/configure.ac
index c0a126293c4..7b97740788d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1031,21 +1031,31 @@ then
         esac
 
         dnl Determine debug info format
+        AC_SUBST(CROSSDEBUGFORMAT)
         AC_SUBST(CROSSDEBUG)
-        if test -z "$CROSSDEBUG"
+	if test -n "$CROSSDEBUG"
+	then
+	    AS_ECHO("CROSSDEBUG is deprecated. Please use CROSSDEBUGFORMAT instead.") >&AS_MESSAGE_FD
+	fi
+	CROSSDEBUGFORMAT=${CROSSDEBUGFORMAT:-$CROSSDEBUG}
+        if test -z "$CROSSDEBUGFORMAT"
         then
           for ac_flag in $CROSSCFLAGS; do
             case $ac_flag in
-             -gdwarf*)    CROSSDEBUG=dwarf ;;
-             -gcodeview)  CROSSDEBUG=pdb ;;
-             -g)          CROSSDEBUG=${CROSSDEBUG:-dwarf} ;;
+             -gdwarf*)    CROSSDEBUGFORMAT=$ac_flag ;;
+             -gcodeview)  CROSSDEBUGFORMAT=pdb ;;
+             -g)          CROSSDEBUGFORMAT=dwarf ;;
             esac
           done
         fi
-        case $CROSSDEBUG in
-          *dwarf)  WINE_TRY_CROSSCFLAGS([-gdwarf-2])
-                   WINE_TRY_CROSSCFLAGS([-gstrict-dwarf]) ;;
-          pdb)     WINE_TRY_CROSSCFLAGS([-gcodeview]) ;;
+        case $CROSSDEBUGFORMAT in
+          *dwarf-3)        WINE_TRY_CROSSCFLAGS([-gdwarf-3])
+                           WINE_TRY_CROSSCFLAGS([-gstrict-dwarf]) ;;
+          *dwarf-4)        WINE_TRY_CROSSCFLAGS([-gdwarf-4])
+                           WINE_TRY_CROSSCFLAGS([-gstrict-dwarf]) ;;
+          *dwarf|*dwarf-2) WINE_TRY_CROSSCFLAGS([-gdwarf-2])
+                           WINE_TRY_CROSSCFLAGS([-gstrict-dwarf]) ;;
+          codeview|pdb)    WINE_TRY_CROSSCFLAGS([-gcodeview]) ;;
         esac
 
         WINE_TRY_CROSSCFLAGS([-fexcess-precision=standard],[AC_SUBST(EXCESS_PRECISION_CFLAGS,"-fexcess-precision=standard")])
@@ -2040,12 +2050,24 @@ char*f(const char *h,char n) {return strchr(h,n);}]])],[ac_cv_c_logicalop_noisy=
   esac
 
   dnl Default to dwarf-2 debug info
-  for ac_flag in $CFLAGS; do
-    case $ac_flag in
-      -g) WINE_TRY_CFLAGS([-gdwarf-2])
-          WINE_TRY_CFLAGS([-gstrict-dwarf]) ;;
-    esac
-  done
+  AC_SUBST(DEBUGFORMAT)
+  if test -z "$DEBUGFORMAT"
+  then
+    for ac_flag in $CFLAGS; do
+      case $ac_flag in
+        -gdwarf*)    DEBUGFORMAT=$ac_flag ;;
+        -g)          DEBUGFORMAT=-gdwarf ;;
+      esac
+     done
+  fi
+  case $DEBUGFORMAT in
+    *dwarf-3)        WINE_TRY_CFLAGS([-gdwarf-3])
+                     WINE_TRY_CFLAGS([-gstrict-dwarf]) ;;
+    *dwarf-4)        WINE_TRY_CFLAGS([-gdwarf-4])
+                     WINE_TRY_CFLAGS([-gstrict-dwarf]) ;;
+    *dwarf|*dwarf-2) WINE_TRY_CFLAGS([-gdwarf-2])
+                     WINE_TRY_CFLAGS([-gstrict-dwarf]) ;;
+  esac
 
   dnl Disable gcc builtins except for Mingw
   AC_SUBST(MSVCRTFLAGS,"")




More information about the wine-devel mailing list