From 5ee21206a8b83ee3a006388161ba3d8bb836ac56 Mon Sep 17 00:00:00 2001 From: Hugo Melder Date: Mon, 9 Jan 2023 23:30:22 +0100 Subject: [PATCH] Windows MSVC debug symbols, gnustep-tests extension, and typo fixes (#30) * Conditionally add PDB Debug Info on Windows MSVC * Add make debug and no-silent options * Update gnustep-tests help prompt --- TestFramework/gnustep-tests.in | 35 +++++++++++++++++++++------------- m4/gs_check_abi20_linker.m4 | 4 ++-- target.make | 8 ++++++++ 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/TestFramework/gnustep-tests.in b/TestFramework/gnustep-tests.in index 905a3569..1d8f5789 100755 --- a/TestFramework/gnustep-tests.in +++ b/TestFramework/gnustep-tests.in @@ -49,6 +49,9 @@ export GSTESTDIR GSTESTMODE=normal +GSMAKEOPTIONS="debug=yes" +GSVERBOSECFLAG= + # Argument checking while test $# != 0 do @@ -60,6 +63,12 @@ do --debug) GSTESTDBG="$GSTESTDIR/gdb.cmds" ;; + --make-debug) + GSMAKEOPTIONS+=" --debug" + ;; + --make-no-silent) + GSMAKEOPTIONS+=" --no-silent" + ;; --developer) GSTESTDEV=yes ;; @@ -82,6 +91,8 @@ do ;; --verbose) GSVERBOSE=yes + GSMAKEOPTIONS+=" messages=yes" + GSVERBOSECFLAG="-v" ;; --failfast) GSTESTMODE=failfast @@ -95,7 +106,9 @@ do echo "Use 'gnustep-tests --documentation' for full details." echo "Use 'gnustep-tests --clean' to remove old logs and leftover files." echo "Use 'gnustep-tests --failfast' to stop after the first failure." - echo "Use 'gnustep-tests --debug' to run gdb for any failed tests." + echo "Use 'gnustep-tests --debug' to run gdb/lldb for any failed tests." + echo "Use 'gnustep-tests --make-debug' to enable make debug output." + echo "Use 'gnustep-tests --make-no-silent' to disable silent make output." echo "Use 'gnustep-tests --developer' to treat hopes as real tests." echo "Use 'gnustep-tests --verbose' for full/detailed log output." echo "Use 'gnustep-tests --sequential' to disable parallel building." @@ -350,23 +363,19 @@ build_test () tmp=`basename $TESTFILE .c` if test x"$tmp" = x"$TESTFILE" then - BUILD_CMD="$CXX -o ./obj/$TESTNAME $TESTFILE $ADDITIONAL_CXXFLAGS $ADDITIONAL_LDFLAGS" + BUILD_CMD="$CXX -o $GSVERBOSECFLAG ./obj/$TESTNAME $TESTFILE $ADDITIONAL_CXXFLAGS $ADDITIONAL_LDFLAGS" else - BUILD_CMD="$CC -o ./obj/$TESTNAME $TESTFILE $ADDITIONAL_CFLAGS $ADDITIONAL_LDFLAGS" + BUILD_CMD="$CC -o $GSVERBOSECFLAG ./obj/$TESTNAME $TESTFILE $ADDITIONAL_CFLAGS $ADDITIONAL_LDFLAGS" fi else - BUILD_CMD="$OBJCXX -o ./obj/$TESTNAME $TESTFILE $GSTESTFLAGS $GSTESTLIBS" + BUILD_CMD="$OBJCXX -o $GSVERBOSECFLAG ./obj/$TESTNAME $TESTFILE $GSTESTFLAGS $GSTESTLIBS" fi else - BUILD_CMD="$CC -o ./obj/$TESTNAME $TESTFILE $GSTESTFLAGS $GSTESTLIBS" + BUILD_CMD="$CC -o $GSVERBOSECFLAG ./obj/$TESTNAME $TESTFILE $GSTESTFLAGS $GSTESTLIBS" fi else - if test x"$GSVERBOSE" = xyes - then - BUILD_CMD="$MAKE_CMD messages=yes debug=yes $TESTNAME" - else - BUILD_CMD="$MAKE_CMD debug=yes $TESTNAME" - fi + echo $GSMAKEOPTIONS + BUILD_CMD="$MAKE_CMD $GSMAKEOPTIONS $TESTNAME" fi # Redirect errors to stdout so it shows up in the log, @@ -716,9 +725,9 @@ ${tmp}_OBJC_FILES=$TESTFILE" echo "Building in $dir" >>$GSTESTLOG if test -r ./make-check.env then - ( . ./make-check.env; . ./TestInfo > /dev/null 2>&1; $MAKE_CMD -j 4 debug=yes) >>$GSTESTLOG 2>&1 + ( . ./make-check.env; . ./TestInfo > /dev/null 2>&1; $MAKE_CMD -j 4 $GSMAKEOPTIONS) >>$GSTESTLOG 2>&1 else - ( . ./TestInfo > /dev/null 2>&1; $MAKE_CMD -j 4 debug=yes) >>$GSTESTLOG 2>&1 + ( . ./TestInfo > /dev/null 2>&1; $MAKE_CMD -j 4 $GSMAKEOPTIONS) >>$GSTESTLOG 2>&1 fi build_state=$? fi diff --git a/m4/gs_check_abi20_linker.m4 b/m4/gs_check_abi20_linker.m4 index 349782bf..6cf212ee 100644 --- a/m4/gs_check_abi20_linker.m4 +++ b/m4/gs_check_abi20_linker.m4 @@ -11,7 +11,7 @@ AC_DEFUN([GS_CHECK_ABI20_LINKER], [dnl AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_PROG_GREP]) AC_CACHE_CHECK([for an gnustep-2.0 ABI compatible linker],[gs_cv_abi20_linker], [dnl - gs_cv_abi20_linker="unkown" + gs_cv_abi20_linker="unknown" AS_VAR_PUSHDEF([LD], [gs_cv_abi20_linker_prog]) LD=$($CC --print-prog-name=ld) if $LD --version | $GREP -q 'GNU ld'; then @@ -30,4 +30,4 @@ AC_DEFUN([GS_CHECK_ABI20_LINKER], [dnl AC_MSG_WARN([The detected linker might not produce working Objective-C binaries using the gnustep-2.0 ABI. Consider using gold or LLD.]) fi AS_VAR_IF([_gs_abi20_linker], ["yes"], [$1], [$2]) -]) \ No newline at end of file +]) diff --git a/target.make b/target.make index 1cf611f0..c04fa11f 100644 --- a/target.make +++ b/target.make @@ -46,6 +46,14 @@ endif INTERNAL_CFLAGS = -pthread INTERNAL_OBJCFLAGS = -pthread INTERNAL_LDFLAGS = + +ifeq ($(debug), yes) + # Embed PDB Debug Info on Windows MSVC + ifeq ($(findstring windows, $(GNUSTEP_TARGET_OS)), windows) + INTERNAL_LDFLAGS += -Wl,-debug + endif +endif + ifneq ($(findstring android, $(GNUSTEP_TARGET_OS)), android) ifneq ($(GNUSTEP_TARGET_OS), windows) INTERNAL_LDFLAGS = -pthread