COMMENT =	C++ standard library for WebAssembly System Interface

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

REVISION =	1

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

BUILD_DEPENDS +=	lang/wasi-libc>=0.20231121

CONFIGURE_ARGS=	\
		-DLLVM_MAIN_SRC_DIR=${WRKDIR}/llvm-${LLVM_V}.src \
		-DCMAKE_MODULE_PATH=${WRKDIR}/cmake-${LLVM_V}.src/Modules \
		-DLLVM_CONFIG_PATH=${LOCALBASE}/bin/llvm-config-${MODCLANG_VERSION} \
		-DLLVM_CMAKE_DIR=${WRKDOR}/${LOCALBASE}/llvm${MODCLANG_VERSION}/lib/cmake/llvm \
		-DCMAKE_C_COMPILER_WORKS=1 \
		-DCMAKE_CXX_COMPILER_WORKS=1 \
		-DCMAKE_CXX_COMPILER_TARGET=wasm32-wasi \
		-DCMAKE_STAGING_PREFIX=${WASI_SYSROOT} \
		-DCMAKE_SYSROOT=${WASI_SYSROOT} \
		-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=/wasm32-wasi \
		-DLIBCXX_SUPPORTS_FNO_EXCEPTIONS_FLAG:BOOL=ON

# XXX so that libcxxabi headers are found during build
pre-build:
	cp ${WRKDIR}/${DISTNAME}/libcxxabi/include/*.h ${WRKSRC}/src/

.include <bsd.port.mk>
