pkgsrc/lang/wasi-libcxx/Makefile
wiz 6c9c406275 wasi-libcxx: revert previous
This does lots of manual cmake steps, do not use cmake/build.mk for now
2023-01-25 22:25:14 +00:00

182 lines
8 KiB
Makefile

# $NetBSD: Makefile,v 1.18 2023/01/25 22:25:14 wiz Exp $
.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}/}
BUILD_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"