# Template file for 'libcxx'
pkgname=libcxx
version=6.0.1
revision=1
wrksrc="${pkgname}-${version}.src"
build_style=cmake
hostmakedepends="clang llvm python"
makedepends="libcxxabi-devel llvm llvm-libunwind-devel"
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="NCSA, MIT"
distfiles="http://www.llvm.org/releases/${version}/${pkgname}-${version}.src.tar.xz"
checksum=7654fbc810a03860e6f01a54c2297a0b9efb04c0b9aa0409251d9bdb3726fc67

case "$XBPS_TARGET_MACHINE" in
	arm*) _broken="libcxxabi doesn't build on arm." ;;
	*) configure_args+="
		 -DLIBCXX_CXX_ABI=libcxxabi
		 -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON
		 -DLIBCXX_CXX_ABI_LIBRARY_PATH=${XBPS_CROSS_BASE}/usr/lib
		 -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
		"
		LDFLAGS="-Wl,--no-as-needed -lunwind -Wl,--as-needed"
esac

case "$XBPS_TARGET_MACHINE" in
	*-musl) configure_args+=" -DLIBCXX_HAS_MUSL_LIBC=YES"
esac

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
}

pre_configure() {
	export CC="clang"
	export CXX="clang++"
	if [ "$CROSS_BUILD" ]; then
		for _gccdir in /usr/lib/gcc/$XBPS_CROSS_TRIPLET/*.*.*; do
			CFLAGS+=" --target=$XBPS_CROSS_TRIPLET --sysroot=/usr/$XBPS_CROSS_TRIPLET -B$_gccdir"
			CXXFLAGS+=" --target=$XBPS_CROSS_TRIPLET --sysroot=/usr/$XBPS_CROSS_TRIPLET -B$_gccdir"
			LDFLAGS+=" -L$_gccdir"
		done
	fi

}
libcxx-devel_package() {
	short_desc+=" - development files"
	depends="${sourcepkg}>=${version}_${revision}"
	pkg_install() {
		vmove usr/include
		vmove "usr/lib/*.so"
		vmove "usr/lib/*.a"
	}
}
