aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Moench-Tegeder <cmt@FreeBSD.org>2021-11-24 20:58:57 +0000
committerChristoph Moench-Tegeder <cmt@FreeBSD.org>2021-11-24 20:58:57 +0000
commitbf143897d312fc861061eeca33d4cf3e777b6728 (patch)
treeb49650942cecd9a5e7276ff9ea22b0e3807abdf4
parentd30a15797673e67199fe8a3fcbf437c5235237a9 (diff)
downloadports-bf143897d312fc861061eeca33d4cf3e777b6728.tar.gz
ports-bf143897d312fc861061eeca33d4cf3e777b6728.zip
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)
-rw-r--r--devel/wasi-libcxx/Makefile75
1 files changed, 74 insertions, 1 deletions
diff --git a/devel/wasi-libcxx/Makefile b/devel/wasi-libcxx/Makefile
index 5bd273616f9b..eb5fe7308a65 100644
--- a/devel/wasi-libcxx/Makefile
+++ b/devel/wasi-libcxx/Makefile
@@ -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