# Template file for 'libcxx'
pkgname=libcxx
version=3.9.0
revision=2
build_style=cmake
hostmakedepends="cmake"
case "$XBPS_TARGET_MACHINE" in
arm*)
	# libcxxabi doesn't build on arm.
	;;
*)
	configure_args+=" -DLIBCXX_CXX_ABI=libcxxabi -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON"
	makedepends="llvm-libunwind-devel libcxxabi-devel"
	LDFLAGS="-Wl,--no-as-needed -lunwind -Wl,--as-needed"
esac
case "$XBPS_TARGET_MACHINE" in
	*-musl) configure_args+=" -DLIBCXX_HAS_MUSL_LIBC=YES"
esac
make_build_args="VERBOSE=1"
short_desc="New implementation of the C++ standard library, targeting C++11"
maintainer="Juan RP <xtraeme@voidlinux.eu>"
homepage="http://libcxx.llvm.org"
license="BSD"
distfiles="http://www.llvm.org/releases/${version}/${pkgname}-${version}.src.tar.xz"
checksum=d0b38d51365c6322f5666a2a8105785f2e114430858de4c25a86b49f227f5b06
wrksrc=${pkgname}-${version}.src

post_extract() {
	case "$XBPS_TARGET_MACHINE" in
	*-musl)
		patch -Np1 <${FILESDIR}/libcxx-0001-musl-hacks.patch
		sed -i 's/!defined(_GCC_MAX_ALIGN_T)/& \&\& !defined(__DEFINED_max_align_t)/' include/stddef.h
	esac
}
post_configure() {
	(
	mkdir -p ${wrksrc}/build-static
	cd ${wrksrc}/build-static
	if [ "$CROSS_BUILD" ]; then
		cp ${wrksrc}/build/cross_${XBPS_CROSS_TRIPLET}.cmake .
	fi
	cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release \
		${configure_args} -DLIBCXX_ENABLE_SHARED=OFF ..
	)
}
post_build() {
	(
	cd ${wrksrc}/build-static
	${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}
	)
}
post_install() {
	(
	cd ${wrksrc}/build-static
	${make_cmd} DESTDIR=${DESTDIR} ${make_install_args} ${make_install_target}
	)
}
libcxx-devel_package() {
	short_desc+=" - development files"
	depends="${sourcepkg}>=${version}_${revision}"
	pkg_install() {
		vmove usr/include
		vmove "usr/lib/*.so"
		vmove "usr/lib/*.a"
	}
}