54fcec90d3
What’s New in Libc++ 12.0.0? New Features Random device support has been made optional. It’s enabled by default and can be disabled by building libc++ with -DLIBCXX_ENABLE_RANDOM_DEVICE=OFF. Disabling random device support can be useful when building the library for platforms that don’t have a source of randomness, such as some embedded platforms. When this is not supported, most of <random> will still be available, but std::random_device will not. Localization support has been made optional. It’s enabled by default and can be disabled by building libc++ with -DLIBCXX_ENABLE_LOCALIZATION=OFF. Disabling localization can be useful when porting to platforms that don’t support the C locale API (e.g. embedded). When localization is not supported, several parts of the library will be disabled: <iostream>, <regex>, <locale> will be completely unusable, and other parts may be only partly available. If libc++ is compiled with a C++20 capable compiler it will be compiled in C++20 mode. Else libc++ will be compiled in C++17 mode. Several unqualified lookups in libc++ have been changed to qualified lookups. This makes libc++ more ADL-proof. The libc++ implementation status pages have been overhauled. Like other parts documentation they now use restructured text instead of html. Starting with libc++12 the status pages are part of libc++’s documentation. More C++20 features have been implemented. libc++ C++20 Status has the full overview of libc++’s C++20 implementation status. Work has started to implement new C++2b features. libc++ C++2b Status has the full overview of libc++’s C++2b implementation status. API Changes By default, libc++ will _not_ include the definition for new and delete, since those are provided in libc++abi. Vendors wishing to provide new and delete in libc++ can build the library with -DLIBCXX_ENABLE_NEW_DELETE_DEFINITIONS=ON to get back the old behavior. This was done to avoid providing new and delete in both libc++ and libc++abi, which is technically an ODR violation. Also note that we couldn’t decide to put the operators in libc++ only, because they are needed from libc++abi (which would create a circular dependency). During the C++20 standardization process some new low-level bit functions have been renamed. Libc++ has renamed these functions to match the C++20 Standard. - ispow2 has been renamed to has_single_bit - ceil2 has been renamed to bit_ceil - floor2 has been renamed to bit_floor - log2p1 has been renamed to bit_width In C++20 mode, std::filesystem::path::u8string() and generic_u8string() now return std::u8string according to P0428, while they return std::string in C++17. This can cause source incompatibility, which is discussed and acknowledged in P1423, but that paper doesn’t suggest any remediation for this incompatibility.
50 lines
1.7 KiB
Makefile
50 lines
1.7 KiB
Makefile
# $NetBSD: Makefile,v 1.11 2021/07/12 18:46:07 adam Exp $
|
|
|
|
.include "../../lang/llvm/version.mk"
|
|
|
|
DISTNAME= libcxxabi-${LLVM_VERSION}.src
|
|
PKGNAME= ${DISTNAME:S/.src//}
|
|
CATEGORIES= lang devel
|
|
|
|
MAINTAINER= pkgsrc-users@NetBSD.org
|
|
HOMEPAGE= https://libcxxabi.llvm.org/
|
|
COMMENT= C++ Standard Library
|
|
LICENSE= apache-2.0
|
|
|
|
# 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
|
|
LLVMDIST= llvm-${LLVM_VERSION}.src
|
|
_EXTRA_DIST= ${LIBCXX}${EXTRACT_SUFX} ${LLVMDIST}${EXTRACT_SUFX}
|
|
SITES.${LIBCXX}${EXTRACT_SUFX}= ${MASTER_SITES:=${GITHUB_PROJECT}/releases/download/${GITHUB_RELEASE}/}
|
|
SITES.${LLLVMDIST}${EXTRACT_SUFX}= ${MASTER_SITES:=${GITHUB_PROJECT}/releases/download/${GITHUB_RELEASE}/}
|
|
|
|
DISTFILES= ${DEFAULT_DISTFILES} ${_EXTRA_DIST}
|
|
|
|
CONFIGURE_DIRS= ${WRKDIR}/build
|
|
CMAKE_ARG_PATH= ${WRKSRC}
|
|
|
|
USE_LANGUAGES= c c++
|
|
USE_CMAKE= yes
|
|
GCC_REQD+= 4.8
|
|
SSP_SUPPORTED= no
|
|
|
|
CMAKE_ARGS+= -DCMAKE_BUILD_TYPE=Release
|
|
CMAKE_ARGS+= -DCMAKE_C_COMPILER=${CC:Q}
|
|
CMAKE_ARGS+= -DCMAKE_CXX_COMPILER=${CXX:Q}
|
|
CMAKE_ARGS+= -DLIBCXXABI_LIBCXX_INCLUDES=${WRKDIR}/${LIBCXX}/include
|
|
CMAKE_ARGS+= -DLIBCXXABI_USE_LLVM_UNWINDER=ON
|
|
|
|
# avoid conflict with stddef.h
|
|
CXXFLAGS.NetBSD+= -D__DEFINED_max_align_t=1
|
|
|
|
post-extract:
|
|
${MKDIR} ${WRKDIR}/build
|
|
${LN} -f -s ${WRKDIR}/${LIBCXX} ${WRKDIR}/libcxx
|
|
${LN} -f -s ${WRKDIR}/${LLVMDIST} ${WRKDIR}/llvm
|
|
|
|
.include "../../lang/libunwind/buildlink3.mk"
|
|
.include "../../lang/llvm/buildlink3.mk"
|
|
.include "../../mk/bsd.pkg.mk"
|