COMMENT =	C++ standard library for WebAssembly System Interface

DISTNAME =	llvm-${LLVM_V}.src
PKGNAME =	wasi-libcxx-${LLVM_V}
LIBPATH =	libc++.a
BUILDSUBDIR =	runtimes

# In transition from BSD-ish to Apache 2 + LLVM exceptions
PERMIT_PACKAGE =	Yes

BUILD_DEPENDS +=	lang/wasi-libc>=0.20250204

CONFIGURE_ARGS=	\
		-DLLVM_MAIN_SRC_DIR=${WRKDIR}/llvm-${LLVM_V}.src \
		-DLLVM_CONFIG_PATH=${LOCALBASE}/bin/llvm-config-${MODCLANG_VERSION} \
		-DLLVM_CMAKE_DIR=${LOCALBASE}/llvm${MODCLANG_VERSION}/lib/cmake/llvm \
		-DCMAKE_C_COMPILER_WORKS=1 \
		-DCMAKE_CXX_COMPILER_WORKS=1 \
		-DCMAKE_C_COMPILER_TARGET=${TRIPLE} \
		-DCMAKE_CXX_COMPILER_TARGET=${TRIPLE} \
		-DCMAKE_STAGING_PREFIX=${WASI_SYSROOT} \
		-DCMAKE_SYSROOT=${WASI_SYSROOT} \
		-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=OFF \
		-DCMAKE_PLATFORM_RUNTIME_PATH=\; \
		-DUNIX:BOOL=ON \
		-DLIBCXX_ABI_VERSION=2 \
		-DLIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF \
		-DLIBCXX_CXX_ABI=libcxxabi \
		-DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY:BOOL=OFF \
		-DLIBCXX_ENABLE_EXCEPTIONS:BOOL=OFF \
		-DLIBCXX_ENABLE_FILESYSTEM:BOOL=OFF \
		-DLIBCXX_ENABLE_SHARED:BOOL=OFF \
		-DLIBCXX_ENABLE_THREADS:BOOL=OFF \
		-DLIBCXX_HAS_EXTERNAL_THREAD_API:BOOL=OFF \
		-DLIBCXX_HAS_MUSL_LIBC:BOOL=ON \
		-DLIBCXX_HAS_PTHREAD_API:BOOL=OFF \
		-DLIBCXX_HAS_WIN32_THREAD_API:BOOL=OFF \
		-DLIBCXX_INCLUDE_BENCHMARKS:BOOL=OFF \
		-DLIBCXX_INCLUDE_TESTS:BOOL=OFF \
		-DLIBCXX_LIBDIR_SUFFIX=/${TRIPLE} \
		-DLIBCXX_SUPPORTS_FNO_EXCEPTIONS_FLAG:BOOL=ON \
		-DLIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF \
		-DLIBCXXABI_ENABLE_EXCEPTIONS:BOOL=OFF \
		-DLIBCXXABI_ENABLE_SHARED:BOOL=OFF \
		-DLIBCXXABI_ENABLE_THREADS:BOOL=OFF \
		-DLIBCXXABI_HAS_COMMENT_LIB_PRAGMA:BOOL=ON \
		-DLIBCXXABI_HAS_PTHREAD_API:BOOL=OFF \
		-DLIBCXXABI_HAS_EXTERNAL_THREAD_API:BOOL=OFF \
		-DLIBCXXABI_HAS_WIN32_THREAD_API:BOOL=OFF \
		-DLIBCXXABI_USE_LLVM_UNWINDER:BOOL=OFF \
		-DLIBCXXABI_LIBDIR_SUFFIX=/${TRIPLE} \
		-DLIBCXXABI_SILENT_TERMINATE:BOOL=ON \
		-DLIBCXXABI_SUPPORTS_FNO_EXCEPTIONS_FLAG:BOOL=ON \
		-DLIBCXXABI_SUPPORTS_NOSTDLIBXX_FLAG:BOOL=ON \
		-DLIBCXXABI_SUPPORTS_WALL_FLAG:BOOL=ON \
		-DLIBCXXABI_SUPPORTS_W_FLAG:BOOL=ON \
		-DLIBCXXABI_SUPPORTS_WWRITE_STRINGS_FLAG:BOOL=ON \
		-DLIBCXXABI_SUPPORTS_WERROR_EQ_RETURN_TYPE_FLAG:BOOL=ON \
		-DLIBCXXABI_SUPPORTS_WUNDEF_FLAG:BOOL=ON \
		-DLIBCXXABI_SUPPORTS_WNO_SUGGEST_OVERRIDE_FLAG:BOOL=ON \
		-DLIBCXXABI_SUPPORTS_WNO_ERROR_FLAG:BOOL=ON \
		-DLIBCXXABI_SUPPORTS_EHS_FLAG:BOOL=OFF \
		-DLIBCXXABI_SUPPORTS_EHA_FLAG:BOOL=OFF \
		-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 \
		-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi"

.include <bsd.port.mk>
