# Template build file for 'gcc-multilib'
pkgname=gcc-multilib
version=4.5.2
_gmp_ver=5.0.1
_mpfr_ver=3.0.0
_mpc_ver=0.8.2
wrksrc="gcc-${version}"
distfiles="
http://ftp.gnu.org/pub/gnu/gcc/gcc-${version}/gcc-${version}.tar.bz2
http://ftp.gnu.org/pub/gnu/gmp/gmp-${_gmp_ver}.tar.bz2
http://www.mpfr.org/mpfr-current/mpfr-${_mpfr_ver}.tar.bz2
http://www.multiprecision.org/mpc/download/mpc-${_mpc_ver}.tar.gz"
build_style=gnu_configure
build_wrksrc=build
configure_script="../configure"
configure_args="--enable-clocale=gnu --enable-shared --disable-bootstrap
--enable-threads=posix --enable-__cxa_atexit --disable-gold --disable-lto
--enable-languages=c,c++,objc,obj-c++ --disable-nls --with-system-zlib
--enable-multilib LDFLAGS="
short_desc="The GNU C Compiler suite (multilib libraries)"
maintainer="Juan RP <xtraeme@gmail.com>"
checksum="
1d9362275ffd9d19fd41f1c3dae0805d6e3991c4d5aa80851f2eaf1bbaa21f88
a2a610f01fd3298dc08c87bf30498c2402590e1bcb227fc40b15ee6d280939fb
8f4e5f9c53536cb798a30455ac429b1f9fc75a0f8af32d6e0ac31ebf1024821f
ae79f8d41d8a86456b68607e9ca398d00f8b7342d1d83bcf4428178ac45380c7"
long_desc="
 The GNU C Compiler suite, with support for C, C++, ObjC and ObjC++.

 This package installs the 32 bit libraries required to compile 32 bit
 code on x86_64 systems."

subpackages="libgcc32 libssp32 libgomp32 libobjc32 libstdc++32 libmudflap32"
subpackages="${subpackages} libstdc++32-devel libmudflap32-devel"
subpackages="${subpackages} gcc-c++-multilib gcc-objc-multilib"
subpackages="${subpackages} gcc-objc++-multilib"

disable_parallel_build=yes
noverifyrdeps=yes
only_for_archs=x86_64

Add_dependency run gcc		">=${version}"
Add_dependency run libgcc32	">=${version}"
Add_dependency run libgomp32	">=${version}"
Add_dependency run zlib32
Add_dependency run glibc32-devel

Add_dependency build glibc32-devel
Add_dependency build zlib32-devel

pre_configure()
{
	# As specified in the LFS book, disable installing libiberty.
	sed -i 's/install_to_$(INSTALL_DEST) //' ${wrksrc}/libiberty/Makefile.in

	# "Add" ppl-0.11 compatibility
	sed -i "/ppl_minor_version=/s#10#11#" ${wrksrc}/configure

	# Do not run fixincludes
	sed -i 's@\./fixinc\.sh@-c true@' ${wrksrc}/gcc/Makefile.in

	mkdir -p ${build_wrksrc}/gmp

	{ mv ${XBPS_BUILDDIR}/gmp-${_gmp_ver} ${wrksrc}/gmp; \
	mv ${XBPS_BUILDDIR}/mpfr-${_mpfr_ver} ${wrksrc}/mpfr; \
	mv ${XBPS_BUILDDIR}/mpc-${_mpc_ver} ${wrksrc}/mpc; } || return 1

	cp -a ${wrksrc}/gmp/*.h ${wrksrc}/${build_wrksrc}/gmp
}

pre_install()
{
	mkdir -p ${DESTDIR}/usr/lib
	cd ${DESTDIR}/usr && ln -sf lib lib64 && cd ${wrksrc}/${build_wrksrc}
}

post_install()
{
	local libmddir="/usr/lib/gcc/x86_64-unknown-linux-gnu/${version}"
	local dirn _dir_

	# We are only interested in 32bit stuff, remove anything else.
	rm -rf ${DESTDIR}/usr/{lib64,libexec,bin,share}
	rm -f ${DESTDIR}/usr/lib/*.{spec,a,so*}
	rm -f ${DESTDIR}/usr/lib32/{libiberty*,*.py}
	rm -rf ${DESTDIR}/${libmddir}/{include,include-fixed,install-tools,plugin}
	rm -f ${DESTDIR}/${libmddir}/*.{a,o}

	# Move around some stuff for multilib.
	mv ${DESTDIR}/usr/lib32/lib{std,sup}c++.a ${DESTDIR}/${libmddir}/32
	mv ${DESTDIR}/usr/lib32/lib{gomp,objc*}.a ${DESTDIR}/${libmddir}/32
	mv ${DESTDIR}/usr/lib32/libssp*.a ${DESTDIR}/${libmddir}/32

	# Keep libstdc++ 32bit headers, remove anything else.
	mv ${DESTDIR}/usr/include/c++/${version}/x86_64-unknown-linux-gnu/32 \
		${wrksrc}/xbps_32bits_libstdc++
	rm -rf ${DESTDIR}/usr/include/c++/${version}/*
	install -d ${DESTDIR}/usr/include/c++/${version}/x86_64-unknown-linux-gnu
	mv ${wrksrc}/xbps_32bits_libstdc++ \
		${DESTDIR}/usr/include/c++/${version}/x86_64-unknown-linux-gnu/32
	# Install specs file overriding native gcc with no multilib support.
	install -m644 ${wrksrc}/build/gcc/specs \
		${DESTDIR}/${libmddir}
}
