Improve broken-on-gcc checks

Mark powerpc* and riscv broken.

Refactor and add a TRY_GCC_BROKEN option to build anyway.  This
simplifies things for people trying to get gcc builds working
while letting other developers know that they aren't expected to work.

Reviewed by:	jhb, emaste
Improves:	4c0dfd5959 arm: fail early on gcc builds
Differential Revision:	https://reviews.freebsd.org/D45230
This commit is contained in:
Brooks Davis 2024-05-17 21:34:37 +01:00
parent 1062db3070
commit 61ad1ddc5a

View File

@ -175,7 +175,24 @@ LIBCOMPAT_INCLUDE_DIRS+= arm
.if ((defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == "gcc") || \
(!defined(X_COMPILER_TYPE) && ${COMPILER_TYPE} == "gcc"))
.if ${TARGET} == "arm"
.error "armv6/armv7 build are broken with gcc. See https://reviews.freebsd.org/D36754"
_GCC_BROKEN="https://reviews.freebsd.org/D36754"
.endif
.if ${TARGET_ARCH} == "powerpc"
_GCC_BROKEN=Missing atomic builtins in libc++.
.endif
.if ${TARGET_ARCH:Mpowerpc64*}
_GCC_BROKEN=libsys.so.7.full has a LOAD segment with RWX permissions.
.endif
.if ${TARGET} == "riscv"
_GCC_BROKEN=boot code linker script issues.
.endif
.if defined(_GCC_BROKEN)
.warning Target ${TARGET} is broken with GCC: ${_GCC_BROKEN}
.if defined(TRY_GCC_BROKEN)
.warning Trying build anyway.
.else
.error Avoiding broken build. Define TRY_GCC_BROKEN to try anyway.
.endif
.endif
.endif