ports/devel/wasi-libcxx/Makefile
Charlie Li c6c4482d77
devel/wasi-libcxx: explicitly disable LIBCXXABI_USE_LLVM_UNWINDER
LLVM 18 enables this by default, which is not wanted here. This is
effectively a no-op for other LLVM versions.

Context: https://github.com/WebAssembly/wasi-sdk/pull/377
2024-03-27 14:57:23 -04:00

89 lines
3.2 KiB
Makefile

PORTNAME= libcxx
DISTVERSION?= 0
PORTREVISION?= 0
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}/
PKGNAMEPREFIX= wasi-
PKGNAMESUFFIX= ${LLVM_VERSION}
DISTNAME= llvm-project-${DISTVERSION}.src
DISTFILES= llvm-project-${DISTVERSION}.src${EXTRACT_SUFX}
MAINTAINER= vishwin@FreeBSD.org
COMMENT= C++ standard library for WebAssembly System Interface
WWW= https://llvm.org/
LICENSE= LLVM2
LICENSE_NAME= Apache License 2.0 with LLVM Exceptions
LICENSE_FILE= ${WRKSRC}/llvm/LICENSE.TXT
LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
.if ${DISTVERSION} == 0
IGNORE= is a meta port; there is nothing to build
PKGNAMESUFFIX= -master
.endif
BUILD_DEPENDS= ${WASI_SYSROOT}/include/stdarg.h:devel/wasi-libc \
wasi-compiler-rt${LLVM_VERSION}>0:devel/wasi-compiler-rt${LLVM_VERSION}
USES= cmake llvm:${LLVM_SUFFIX} tar:xz
LLVM_RELEASE= ${DISTVERSION:C/rc.*//}
LLVM_SUFFIX= ${LLVM_RELEASE:C/\.[0-9]\.[0-9]$//}
DISTINFO_FILE= ${PORTSDIR}/${LLVM_PORT}/distinfo
SSP_UNSAFE= yes
NO_ARCH= yes
PLIST= ${.CURDIR}/pkg-plist
CONFIGURE_ENV+= CC="${CC}" CFLAGS="${CFLAGS}" \
CXX="${CXX}" CXXFLAGS="${CXXFLAGS}"
CC= ${LOCALBASE}/bin/clang${LLVM_VERSION}
CXX= ${LOCALBASE}/bin/clang++${LLVM_VERSION}
WASI_SYSROOT= ${LOCALBASE}/share/wasi-sysroot
TRIPLE= wasm32-wasi
WITHOUT_CPU_CFLAGS= yes
# try to sync with https://github.com/WebAssembly/wasi-sdk
# Makefile and wasi-sdk.cmake
CMAKE_INSTALL_PREFIX= ${PREFIX}/share/wasi-sysroot
CMAKE_SOURCE_PATH= ${WRKSRC}/runtimes
CMAKE_ARGS= -DCMAKE_AR=${LOCALBASE}/bin/llvm-ar${LLVM_VERSION} \
-DCMAKE_RANLIB=${LOCALBASE}/bin/llvm-ranlib${LLVM_VERSION} \
-DCMAKE_C_COMPILER_TARGET=${TRIPLE} \
-DCMAKE_CXX_COMPILER_TARGET=${TRIPLE} \
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \
-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY \
-DCMAKE_C_COMPILER_WORKS=ON \
-DCMAKE_CXX_COMPILER_WORKS=ON \
-DCMAKE_STAGING_PREFIX=${CMAKE_INSTALL_PREFIX} \
-DLLVM_CONFIG_PATH=${LOCALBASE}/bin/${LLVM_CONFIG} \
-DCXX_SUPPORTS_CXX11=ON \
-DLIBCXX_ENABLE_THREADS:BOOL=OFF \
-DLIBCXX_HAS_PTHREAD_API:BOOL=OFF \
-DLIBCXX_HAS_EXTERNAL_THREAD_API:BOOL=OFF \
-DLIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF \
-DLIBCXX_HAS_WIN32_THREAD_API:BOOL=OFF \
-DLLVM_COMPILER_CHECKED=ON \
-DLIBCXX_ENABLE_SHARED:BOOL=OFF \
-DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY:BOOL=OFF \
-DLIBCXX_ENABLE_EXCEPTIONS:BOOL=OFF \
-DLIBCXX_ENABLE_FILESYSTEM:BOOL=OFF \
-DLIBCXX_CXX_ABI=libcxxabi \
-DLIBCXX_HAS_MUSL_LIBC:BOOL=ON \
-DLIBCXX_ABI_VERSION=2 \
-DLIBCXXABI_ENABLE_EXCEPTIONS:BOOL=OFF \
-DLIBCXXABI_ENABLE_SHARED:BOOL=OFF \
-DLIBCXXABI_SILENT_TERMINATE:BOOL=ON \
-DLIBCXXABI_ENABLE_THREADS:BOOL=OFF \
-DLIBCXXABI_HAS_PTHREAD_API:BOOL=OFF \
-DLIBCXXABI_HAS_EXTERNAL_THREAD_API:BOOL=OFF \
-DLIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF \
-DLIBCXXABI_HAS_WIN32_THREAD_API:BOOL=OFF \
-DLIBCXXABI_USE_LLVM_UNWINDER:BOOL=OFF \
-DUNIX:BOOL=ON \
-DCMAKE_SYSROOT=${WASI_SYSROOT} \
-DLIBCXX_LIBDIR_SUFFIX=/${TRIPLE} \
-DLIBCXXABI_LIBDIR_SUFFIX=/${TRIPLE} \
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi"
.include <bsd.port.mk>