devel/wasi-libcxx: actually disable exceptions
This port was accidentially using the base system compiler for some
parts of the configure stages - which gives wrong results in the
compiler feature tests, as base clang on FreeBSD 13.0 (llvm 11) does
not know about the wasm32 target.
Worse, even with the correct compiler some of the feature tests depend
on a present and usable libc++ for the wasi target, which we don't
have yet (this port will build one, but before...).
The end result was that the build system failed to figure out the
compiler flags for disabling exceptions (-fno-exceptions in clang's
case) and built the wasm libc++ with exceptions enabled. But exceptions
are not (yet) supported in wasi-sdk, so trying to build any code against
this wasm libc++ failed with linker errors like
wasm-ld: error: /usr/local/share/wasi-sysroot/lib/wasm32-wasi/libc++.a(string.cpp.o): undefined symbol: __cxa_allocate_exception
wasm-ld: error: /usr/local/share/wasi-sysroot/lib/wasm32-wasi/libc++.a(string.cpp.o): undefined symbol: __cxa_throw
To solve that, we have to force the configure stages to use the correct
compiler by pushing CC/CXX and related variables into CONFIGURE_ENV
and specify the results of the compiler feature tests via cmake
arguments. That is a horrible workaround, but short of a full bootstrap
build, I can't see any other solution to the chicken-and-egg problem
with wasi-libcxx requiring a functional wasi-libc++ to build.
PR: 260005
Approved by: greg at unrelenting dot technology (maintainer)
(cherry picked from commit bf143897d3
)
This commit is contained in:
parent
1f5c7bb26d
commit
44c66a772c
1 changed files with 74 additions and 1 deletions
|
@ -1,5 +1,6 @@
|
|||
PORTNAME= libcxx
|
||||
DISTVERSION= 13.0.0
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= devel lang
|
||||
MASTER_SITES= https://github.com/llvm/llvm-project/releases/download/llvmorg-${DISTVERSION:S/rc/-rc/}/ \
|
||||
https://${PRE_}releases.llvm.org/${LLVM_RELEASE}/${RCDIR}
|
||||
|
@ -30,6 +31,9 @@ LLVM_PREFIX= ${PREFIX}/llvm${LLVM_SUFFIX}
|
|||
WASI_SYSROOT= ${LOCALBASE}/share/wasi-sysroot
|
||||
WRKSRC= ${WRKDIR}/${DISTNAME}/libcxx
|
||||
|
||||
CONFIGURE_ENV+= CC="${CC}" CFLAGS="${CFLAGS}"
|
||||
CONFIGURE_ENV+= CXX="${CXX}" CXXFLAGS="${CXXFLAGS}"
|
||||
|
||||
CMAKE_INSTALL_PREFIX= ${PREFIX}/share/wasi-sysroot
|
||||
CMAKE_ARGS= -DCMAKE_C_COMPILER_WORKS=1 \
|
||||
-DCMAKE_CXX_COMPILER_WORKS=1 \
|
||||
|
@ -63,7 +67,76 @@ CMAKE_ARGS= -DCMAKE_C_COMPILER_WORKS=1 \
|
|||
-DLIBCXXABI_HAS_EXTERNAL_THREAD_API:BOOL=OFF \
|
||||
-DLIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF \
|
||||
-DLIBCXXABI_HAS_WIN32_THREAD_API:BOOL=OFF \
|
||||
-DLIBCXXABI_LIBCXX_INCLUDES=${CONFIGURE_WRKSRC}/include/c++/v1
|
||||
-DLIBCXXABI_LIBCXX_INCLUDES=${CONFIGURE_WRKSRC}/include/c++/v1 \
|
||||
-DLIBCXX_SUPPORTS_FNO_EXCEPTIONS_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_NOSTDLIBXX_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_NODEFAULTLIBS_FLAG:BOOL=ON \
|
||||
-DLIBCXX_HAS_COMMENT_LIB_PRAGMA:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_FALIGNED_ALLOCATION_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_NOSTDINCXX_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_FVISIBILITY_INLINES_HIDDEN_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_FVISIBILITY_EQ_HIDDEN_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_WALL_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_WEXTRA_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_W_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_WWRITE_STRINGS_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_WNO_UNUSED_PARAMETER_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_WNO_LONG_LONG_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_WERROR_EQ_RETURN_TYPE_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_WEXTRA_SEMI_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_WUNDEF_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_WNO_USER_DEFINED_LITERALS_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_WNO_COVERED_SWITCH_DEFAULT_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_WNO_SUGGEST_OVERRIDE_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_WNO_IGNORED_ATTRIBUTES_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_WNO_ERROR_FLAG:BOOL=ON \
|
||||
-DLIBCXX_SUPPORTS_EHS_FLAG:BOOL=OFF \
|
||||
-DLIBCXX_SUPPORTS_EHA_FLAG:BOOL=OFF \
|
||||
-DLIBCXX_SUPPORTS_ZL_FLAG:BOOL=OFF \
|
||||
-DLIBCXX_SUPPORTS_NODEFAULTLIB_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_FNO_EXCEPTIONS_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_NOSTDLIBXX_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_NODEFAULTLIBS_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_HAS_COMMENT_LIB_PRAGMA:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_FALIGNED_ALLOCATION_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_NOSTDINCXX_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_FVISIBILITY_INLINES_HIDDEN_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_FVISIBILITY_EQ_HIDDEN_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WALL_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WEXTRA_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_W_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WWRITE_STRINGS_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WNO_UNUSED_PARAMETER_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WNO_LONG_LONG_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WERROR_EQ_RETURN_TYPE_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WEXTRA_SEMI_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WUNDEF_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WNO_USER_DEFINED_LITERALS_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WNO_COVERED_SWITCH_DEFAULT_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WNO_SUGGEST_OVERRIDE_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WNO_IGNORED_ATTRIBUTES_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WNO_ERROR_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_EHS_FLAG:BOOL=OFF \
|
||||
-DLIBCXXABI_SUPPORTS_EHA_FLAG:BOOL=OFF \
|
||||
-DLIBCXXABI_SUPPORTS_ZL_FLAG:BOOL=OFF \
|
||||
-DLIBCXXABI_SUPPORTS_NODEFAULTLIB_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WCHAR_SUBSCRIPTS_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WCONVERSION_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WMISMATCHED_TAGS_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WMISSING_BRACES_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WNEWLINE_EOF_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WUNUSED_FUNCTION_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WSHADOW_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WSHORTEN_64_TO_32_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WSIGN_COMPARE_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WSIGN_CONVERSION_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WSTRICT_ALIASING_EQ_2_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WSTRICT_OVERFLOW_EQ_4_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WUNUSED_PARAMETER_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WUNUSED_VARIABLE_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_WX_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_PEDANTIC_FLAG:BOOL=ON \
|
||||
-DLIBCXXABI_SUPPORTS_FSTRICT_ALIASING_FLAG:BOOL=ON
|
||||
|
||||
post-extract:
|
||||
@${MKDIR} ${WRKDIR}/.build_cxxabi
|
||||
|
|
Loading…
Reference in a new issue