So I managed to foil GDB into building (fully on macos with Clang-15,
and all the way to the link on FreeBSD with Clang-16 where static
linking failed due to an undefined symbol: _libmd_SHA256_Init because
in FreeBSD these functions are of course in libmd, not libc).
GDB's build is horribly overly complex and obtuse and abuses many
Autoconf features and invents many new non-standard configure flags, all
for code that shouldn't really be so unportable. But by using these
flags to turn off "developer" features, and by overloading one of the
otherwise unused environment variables that ends up on the tail of the
list of CFLAGS I managed to get rid of the warnings.
GCC is now failing on macos with what look like some real errors
(attached below my sig). I'll retry the FreeBSD build without
static-linking and see how far it gets with GCC.
BTW, I have confirmed that GCC ignores "-Wno-*" options where the option
is unknown or invalid, so unconditionally giving "-Wno-everything" is
safe for it.
Anyway I was able to get it to work with the following patches:
Index: external/gpl3/gdb/dist/bfd/development.sh
===================================================================
RCS file: /cvs/master/m-NetBSD/main/src/external/gpl3/gdb/dist/bfd/development.sh,v
retrieving revision 1.1.1.5
diff -u -r1.1.1.5 development.sh
--- external/gpl3/gdb/dist/bfd/development.sh 15 Sep 2020 01:41:57 -0000 1.1.1.5
+++ external/gpl3/gdb/dist/bfd/development.sh 9 Sep 2024 05:01:27 -0000
@@ -16,7 +16,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Controls whether to enable development-mode features by default.
-development=true
+development=false
# Indicate whether this is a release branch.
-experimental=true
+experimental=false
Index: tools/Makefile.gnuhost
===================================================================
RCS file: /cvs/master/m-NetBSD/main/src/tools/Makefile.gnuhost,v
retrieving revision 1.53
diff -u -r1.53 Makefile.gnuhost
--- tools/Makefile.gnuhost 13 Jun 2020 10:49:17 -0000 1.53
+++ tools/Makefile.gnuhost 9 Sep 2024 05:58:34 -0000
@@ -51,6 +51,14 @@
.MAKEOVERRIDES+= _GNU_CFGSRC
.endif
+.if defined(HOST_LDFLAGS) && defined(HOST_LDSTATIC)
+. if empty(HOST_LDFLAGS:M*${HOST_LDSTATIC}*)
+HOST_LDFLAGS+= ${HOST_LDSTATIC}
+. endif
+.elif !defined(HOST_LDFLAGS) && defined(HOST_LDSTATIC)
+HOST_LDFLAGS= ${HOST_LDSTATIC}
+.endif
+
CONFIGURE_ENV+= \
AR=${HOST_AR:Q} \
AWK=${TOOL_AWK:Q} \
@@ -62,6 +70,7 @@
CXXFLAGS=${HOST_CXXFLAGS:Q} \
INSTALL=${HOST_INSTALL_FILE:Q} \
LDFLAGS=${HOST_LDFLAGS:Q} \
+ LDSTATIC=${HOST_LDSTATIC:Q} \
LEX=${LEX:Q} \
FLEX=${LEX:Q} \
M4=${TOOL_M4:Q} \
@@ -74,7 +83,39 @@
CONFIGURE_ARGS+=--prefix=${TOOLDIR}
.if ${MKPIC} == "no"
-CONFIGURE_ARGS+=--disable-shared
+CONFIGURE_ARGS+= --disable-shared
+.endif
+
+CONFIGURE_ARGS+=--disable-maintainer-mode
+CONFIGURE_ARGS+=--disable-werror
+CONFIGURE_ARGS+=--disable-build-warnings
+CONFIGURE_ENV+= ERROR_ON_WARNING=no
+
+# XXX need some way to inject -Wno-everything!
+#
+# this configure args is actually tested against the compiler with the current
+# conftest.c as '-Weverything' which causes so many errors the compiler gives up
+# and so configure thinks it doesn't accept the option at all!
+#
+# --enable-build-warnings=-Wno-everything
+#
+# Maybe:
+CONFIGURE_ENV+= DEBUGINFOD_CFLAGS=-Wno-everything
+
+.if defined(HOST_LDSTATIC) && !empty(HOST_LDSTATIC)
+CONFIGURE_ARGS+= --enable-static
+.endif
+
+MAKE_ENV+= CFLAGS=${HOST_CFLAGS:Q}
+MAKE_ENV+= CPPFLAGS=${HOST_CPPFLAGS:Q}
+MAKE_ENV+= CXXFLAGS=${HOST_CXXFLAGS:Q}
+MAKE_ENV+= LDFLAGS=${HOST_LDFLAGS:Q}
+MAKE_ENV+= LDSTATIC=${HOST_LDLDSTATIC:Q}
+
+.if defined(HOST_LDSTATIC) && !empty(HOST_LDSTATIC) && defined(USE_LIBTOOL)
+# work around libtool brain-damage
+# xxx this doesn't always work very well.... (see also src/tools/binutils/Makefile which uses "--static", two hyphens)
+MAKE_ARGS+= LDFLAGS="${HOST_LDSTATIC} -all-static"
.endif
.if ${MAKEVERBOSE} == 0
Index: share/mk/bsd.host.mk
===================================================================
RCS file: /cvs/master/m-NetBSD/main/src/share/mk/bsd.host.mk,v
retrieving revision 1.5
diff -u -r1.5 bsd.host.mk
--- share/mk/bsd.host.mk 9 Aug 2020 21:13:38 -0000 1.5
+++ share/mk/bsd.host.mk 8 Sep 2024 23:27:44 -0000
@@ -16,18 +16,18 @@
# Helpers for cross-compiling
HOST_CC?= cc
-HOST_CFLAGS?= ${HOST_DBG}
+HOST_CFLAGS?= ${HOST_DBG} -std=gnu99 -Wno-everything
HOST_COMPILE.c?=${HOST_CC} ${HOST_CFLAGS} ${HOST_DTRACE_OPTS} ${HOST_CPPFLAGS} -c
HOST_COMPILE.cc?= ${HOST_CXX} ${HOST_CXXFLAGS} ${HOST_DTRACE_OPTS} ${HOST_CPPFLAGS} -c
HOST_LINK.cc?= ${HOST_CXX} ${HOST_CXXFLAGS} ${HOST_CPPFLAGS} ${HOST_LDFLAGS}
.if defined(HOSTPROG_CXX)
HOST_LINK.c?= ${HOST_LINK.cc}
.else
-HOST_LINK.c?= ${HOST_CC} ${HOST_CFLAGS} ${HOST_CPPFLAGS} ${HOST_LDFLAGS}
+HOST_LINK.c?= ${HOST_CC} ${HOST_CFLAGS} ${HOST_CPPFLAGS} ${HOST_LDSTATIC} ${HOST_LDFLAGS}
.endif
HOST_CXX?= c++
-HOST_CXXFLAGS?= ${HOST_DBG}
+HOST_CXXFLAGS?= ${HOST_DBG} -std=gnu++14 -Wno-everything
HOST_CPP?= cpp
HOST_CPPFLAGS?=
--
Greg A. Woods <gwoods%acm.org@localhost>
Kelowna, BC +1 250 762-7675 RoboHack <woods%robohack.ca@localhost>
Planix, Inc. <woods%planix.com@localhost> Avoncote Farms <woods%avoncote.ca@localhost>
c++ -fno-PIE -c -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -fno-strict-aliasing -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -DHAVE_CONFIG_H -I. -I. -I/Volumes/work/woods/m-NetBSD-current/tools/gcc/../../external/gpl3/gcc/dist/gcc -I/Volumes/work/woods/m-NetBSD-current/tools/gcc/../../external/gpl3/gcc/dist/gcc/. -I/Volumes/work/woods/m-NetBSD-current/tools/gcc/../../external/gpl3/gcc/dist/gcc/../include -I/Volumes/work/woods/m-NetBSD-current/tools/gcc/../../external/gpl3/gcc/dist/gcc/../libcpp/include -I/Users/woods/build/woods/very.local/current-x86_64-amd64-tools/include -I/Users/woods/build/woods/very.local/current-x86_64-amd64-tools/include -I/Users/woods/build/woods/very.local/current-x86_64-amd64-tools/include -I/Volumes/work/woods/m-NetBSD-current/tools/gcc/../../external/gpl3/gcc/dist/gcc/.
./libdecnumber -I/Volumes/work/woods/m-NetBSD-current/tools/gcc/../../external/gpl3/gcc/dist/gcc/../libdecnumber/dpd -I../libdecnumber -I/Volumes/work/woods/m-NetBSD-current/tools/gcc/../../external/gpl3/gcc/dist/gcc/../libbacktrace -DNETBSD_TOOLS -DTARGET_SYSTEM_ROOT=0 -DTARGET_SYSTEM_ROOT_RELOCATABLE -o gcov.o -MT gcov.o -MMD -MP -MF ./.deps/gcov.TPo /Volumes/work/woods/m-NetBSD-current/tools/gcc/../../external/gpl3/gcc/dist/gcc/gcov.c
clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
In file included from /Volumes/work/woods/m-NetBSD-current/tools/gcc/../../external/gpl3/gcc/dist/gcc/gcov.c:39:
In file included from /Volumes/work/woods/m-NetBSD-current/tools/gcc/../../external/gpl3/gcc/dist/gcc/system.h:233:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/map:2529:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/functional:526:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/boyer_moore_searcher.h:27:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/vector:321:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/formatter_bool.h:20:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/formatter_integral.h:32:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/locale:202:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:550:5: error: '__abi_tag__' attribute only applies to structs, variables, functions, and namespaces
_LIBCPP_INLINE_VISIBILITY
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__config:891:37: note: expanded from macro '_LIBCPP_INLINE_VISIBILITY'
# define _LIBCPP_INLINE_VISIBILITY _LIBCPP_HIDE_FROM_ABI
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__config:870:26: note: expanded from macro '_LIBCPP_HIDE_FROM_ABI'
__attribute__((__abi_tag__(_LIBCPP_TOSTRING(_LIBCPP_ODR_SIGNATURE))))
^
In file included from /Volumes/work/woods/m-NetBSD-current/tools/gcc/../../external/gpl3/gcc/dist/gcc/gcov.c:39:
In file included from /Volumes/work/woods/m-NetBSD-current/tools/gcc/../../external/gpl3/gcc/dist/gcc/system.h:233:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/map:2529:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/functional:526:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__functional/boyer_moore_searcher.h:27:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/vector:321:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/formatter_bool.h:20:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__format/formatter_integral.h:32:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/locale:202:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:551:37: error: expected ';' at end of declaration list
char_type toupper(char_type __c) const
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:557:48: error: too many arguments provided to function-like macro invocation
const char_type* toupper(char_type* __low, const char_type* __high) const
^
/Volumes/work/woods/m-NetBSD-current/tools/gcc/../../external/gpl3/gcc/dist/gcc/../include/safe-ctype.h:146:9: note: macro 'toupper' defined here
#define toupper(c) do_not_use_toupper_with_safe_ctype
^
Attachment:
pgpj0GZpxxqxR.pgp
Description: OpenPGP Digital Signature