# $NetBSD: Makefile,v 1.22 2023/11/08 13:19:53 wiz Exp $ PKGREVISION= 1 .include "../../lang/llvm/version.mk" DISTNAME= libcxxabi-${LLVM_VERSION}.src PKGNAME= ${DISTNAME:S/.src//:S/libcxxabi-/wasi-libcxx-/} CATEGORIES= lang devel MAINTAINER= pkgsrc-users@NetBSD.org HOMEPAGE= https://libcxxabi.llvm.org/ COMMENT= C++ Standard Librares (libc++/libc++abi) for WASI/WebAssembly LICENSE= apache-2.0 WRKSRC= ${WRKDIR} # libcxx requires libcxxabi's cxxabi.h to build, but libcxxabi requires # libcxx's includes to build, so we have this unholy extra distfiles thing # in both of them to get them to build against each other without causing # circular dependencies. This must be kept in sync with libcxxabi/Makefile. LIBCXX= libcxx-${LLVM_VERSION}.src EXTRA_DIST+= ${LIBCXX}${EXTRACT_SUFX} SITES.${LIBCXX}${EXTRACT_SUFX}= \ ${MASTER_SITES:=${GITHUB_PROJECT}/releases/download/${GITHUB_RELEASE}/} TOOL_DEPENDS+= lld-[0-9]*:../../devel/lld # Workaround for header conflicts BUILDLINK_TRANSFORM+= rm:-I/usr/include BUILDLINK_TRANSFORM+= rm:-I${PREFIX}/include BUILD_DIRS+= build_libcxx BUILD_DIRS+= build_libcxxabi INSTALL_DIRS+= ${BUILD_DIRS} USE_LANGUAGES= c c++ USE_CMAKE= yes SSP_SUPPORTED= no PKGSRC_USE_STACK_CHECK= no CMAKE_ARGS+= -DCMAKE_BUILD_TYPE=Release CMAKE_ARGS+= -DLIBCXXABI_LIBCXX_INCLUDES=${WRKDIR}/libcxx/include CMAKE_ARGS+= -DLIBCXXABI_USE_LLVM_UNWINDER=OFF CMAKE_ARGS+= -DCMAKE_C_COMPILER_WORKS=1 CMAKE_ARGS+= -DCMAKE_CXX_COMPILER_WORKS=1 CMAKE_ARGS+= -DCXX_SUPPORTS_CXX11=ON CMAKE_ARGS+= -DLLVM_COMPILER_CHECKED=ON CMAKE_ARGS+= -DUNIX:BOOL=ON CMAKE_ARGS+= -DCMAKE_SYSROOT=${BUILDLINK_DIR}/wasi CMAKE_ARGS+= -DCMAKE_CXX_COMPILER_TARGET=wasm32-wasi CMAKE_ARGS+= -DLLVM_CONFIG_PATH=${PREFIX}/bin/llvm-config CMAKE_ARGS+= -DLIBCXX_LIBDIR_SUFFIX=/wasm32-wasi CMAKE_ARGS+= -DLIBCXX_INCLUDE_BENCHMARKS:BOOL=FALSE CMAKE_ARGS+= -DLIBCXX_INCLUDE_TESTS:BOOL=FALSE CMAKE_ARGS+= -DLIBCXX_ENABLE_THREADS:BOOL=OFF CMAKE_ARGS+= -DLIBCXX_HAS_PTHREAD_API:BOOL=OFF CMAKE_ARGS+= -DLIBCXX_HAS_EXTERNAL_THREAD_API:BOOL=OFF CMAKE_ARGS+= -DLIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF CMAKE_ARGS+= -DLIBCXX_HAS_WIN32_THREAD_API:BOOL=OFF CMAKE_ARGS+= -DLIBCXX_ENABLE_SHARED:BOOL=OFF CMAKE_ARGS+= -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY:BOOL=OFF CMAKE_ARGS+= -DLIBCXX_ENABLE_EXCEPTIONS:BOOL=OFF CMAKE_ARGS+= -DLIBCXX_ENABLE_FILESYSTEM:BOOL=OFF CMAKE_ARGS+= -DLIBCXX_CXX_ABI=libcxxabi CMAKE_ARGS+= -DLIBCXX_HAS_MUSL_LIBC:BOOL=ON CMAKE_ARGS+= -DLIBCXX_ABI_VERSION=2 CMAKE_ARGS+= -DLIBCXXABI_LIBDIR_SUFFIX=/wasm32-wasi CMAKE_ARGS+= -DLIBCXXABI_ENABLE_EXCEPTIONS:BOOL=OFF CMAKE_ARGS+= -DLIBCXXABI_ENABLE_SHARED:BOOL=OFF CMAKE_ARGS+= -DLIBCXXABI_SILENT_TERMINATE:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_ENABLE_THREADS:BOOL=OFF CMAKE_ARGS+= -DLIBCXXABI_HAS_PTHREAD_API:BOOL=OFF CMAKE_ARGS+= -DLIBCXXABI_HAS_EXTERNAL_THREAD_API:BOOL=OFF CMAKE_ARGS+= -DLIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL=OFF CMAKE_ARGS+= -DLIBCXXABI_HAS_WIN32_THREAD_API:BOOL=OFF CMAKE_ARGS+= -DLIBCXX_SUPPORTS_FNO_EXCEPTIONS_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_NOSTDLIBXX_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_NODEFAULTLIBS_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_HAS_COMMENT_LIB_PRAGMA:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_FALIGNED_ALLOCATION_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_NOSTDINCXX_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_FVISIBILITY_INLINES_HIDDEN_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_FVISIBILITY_EQ_HIDDEN_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_WALL_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_WEXTRA_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_W_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_WWRITE_STRINGS_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_WNO_UNUSED_PARAMETER_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_WNO_LONG_LONG_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_WERROR_EQ_RETURN_TYPE_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_WEXTRA_SEMI_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_WNO_COVERED_SWITCH_DEFAULT_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_WNO_SUGGEST_OVERRIDE_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_WNO_IGNORED_ATTRIBUTES_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXX_SUPPORTS_EHS_FLAG:BOOL=OFF CMAKE_ARGS+= -DLIBCXX_SUPPORTS_EHA_FLAG:BOOL=OFF CMAKE_ARGS+= -DLIBCXX_SUPPORTS_ZL_FLAG:BOOL=OFF CMAKE_ARGS+= -DLIBCXX_SUPPORTS_NODEFAULTLIB_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_FNO_EXCEPTIONS_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_NOSTDLIBXX_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_NODEFAULTLIBS_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_HAS_COMMENT_LIB_PRAGMA:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_FALIGNED_ALLOCATION_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_NOSTDINCXX_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_FVISIBILITY_INLINES_HIDDEN_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_FVISIBILITY_EQ_HIDDEN_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WALL_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WEXTRA_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_W_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WWRITE_STRINGS_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WNO_UNUSED_PARAMETER_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WNO_LONG_LONG_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WERROR_EQ_RETURN_TYPE_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WEXTRA_SEMI_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WNO_COVERED_SWITCH_DEFAULT_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WNO_SUGGEST_OVERRIDE_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WNO_IGNORED_ATTRIBUTES_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_EHS_FLAG:BOOL=OFF CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_EHA_FLAG:BOOL=OFF CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_ZL_FLAG:BOOL=OFF CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_NODEFAULTLIB_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WCHAR_SUBSCRIPTS_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WCONVERSION_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WMISMATCHED_TAGS_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WMISSING_BRACES_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WNEWLINE_EOF_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WUNUSED_FUNCTION_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WSHADOW_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WSHORTEN_64_TO_32_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WSIGN_COMPARE_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WSIGN_CONVERSION_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WSTRICT_ALIASING_EQ_2_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WSTRICT_OVERFLOW_EQ_4_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WUNUSED_PARAMETER_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_WUNUSED_VARIABLE_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_PEDANTIC_FLAG:BOOL=ON CMAKE_ARGS+= -DLIBCXXABI_SUPPORTS_FSTRICT_ALIASING_FLAG:BOOL=ON CMAKE_ARGS+= -DCMAKE_CXX_LINK_FLAGS=${LDFLAGS:Q} CMAKE_ARGS+= -DCMAKE_C_FLAGS=-fno-exceptions CMAKE_ARGS+= -DCMAKE_CXX_FLAGS=-fno-exceptions CMAKE_ARGS+= -DLIBCXX_CXX_ABI=system-libcxxabi CMAKE_ARGS+= -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${WRKDIR}/libcxxabi/include CMAKE_INSTALL_PREFIX= ${PREFIX}/wasi # avoid conflict with stddef.h CPPFLAGS.NetBSD+= -D__DEFINED_max_align_t=1 post-extract: ${MKDIR} ${WRKDIR}/build_libcxx ${MKDIR} ${WRKDIR}/build_libcxxabi ${LN} -f -s ${WRKDIR}/${DISTNAME} ${WRKDIR}/libcxxabi ${LN} -f -s ${WRKDIR}/${LIBCXX} ${WRKDIR}/libcxx do-configure: cd ${WRKSRC} && cd build_libcxx && \ ${PKGSRC_SETENV} ${_CONFIGURE_CMAKE_ENV} \ cmake ${CMAKE_ARGS} ../libcxx cd ${WRKSRC} && cd build_libcxxabi && \ ${PKGSRC_SETENV} ${_CONFIGURE_CMAKE_ENV} \ cmake ${CMAKE_ARGS} ../libcxxabi # Run llvm-ranlib again on the archives. Fixes mystery build failure # in Firefox due to missing index (see PR pkg/56590). Might be a MAKE_JOBS # problem in this package? post-install: ${PREFIX}/bin/llvm-ranlib \ ${DESTDIR}${PREFIX}/wasi/lib/wasm32-wasi/libc++.a ${PREFIX}/bin/llvm-ranlib \ ${DESTDIR}${PREFIX}/wasi/lib/wasm32-wasi/libc++abi.a .include "../../lang/llvm/buildlink3.mk" .include "../../lang/wasi-libc/buildlink3.mk" .include "../../lang/wasi-compiler-rt/buildlink3.mk" ABI= # 32 CFLAGS= -O2 CXXFLAGS= -O2 PKGSRC_COMPILER= clang CLANGBASE= ${PREFIX} BUILDLINK_DEPMETHOD.clang= build .include "../../lang/clang/buildlink3.mk" .include "../../mk/bsd.pkg.mk"