# Template build file for 'gcc' pkgname=gcc _majorver=4.7 version=${_majorver}.3 revision=3 short_desc="The GNU C Compiler" maintainer="Juan RP " homepage="http://gcc.gnu.org" license="GFDL-1.2, GPL-3, LGPL-2.1" distfiles="http://ftp.gnu.org/pub/gnu/gcc/gcc-$version/gcc-$version.tar.bz2" checksum=2f7c37eb4fc14422ff2358a9ef59c974a75ab41204ef0e49fc34ab1d8981a9c3 hostmakedepends="perl flex" makedepends="zlib-devel gmp-devel mpfr-devel mpc-devel ppl-devel>=1.0 cloog-devel isl-devel" if [ "$XBPS_TARGET_MACHINE" = "x86_64" ]; then # Required stuff for multilib packages. _triplet="${XBPS_MACHINE}-unknown-linux-gnu" makedepends+=" glibc32-devel" elif [ "$XBPS_TARGET_MACHINE" = "armv6l" ]; then _triplet="arm-linux-gnueabihf" else _triplet="${XBPS_TARGET_MACHINE}-pc-linux-gnu" fi if [ "$CROSS_BUILD" ]; then makedepends+=" libfl-devel" fi do_configure() { local _langs _args # As specified in the LFS book, disable installing libiberty. sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in # Do not run fixincludes sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in if [ "$CROSS_BUILD" ]; then export CC_FOR_TARGET="$CC" export GCC_FOR_TARGET="$CC" export CXX_FOR_TARGET="$CXX" _langs="c,c++,lto" _args="--disable-multilib" if [ "$XBPS_TARGET_MACHINE" = "armv6l" ]; then _args+=" --with-arch=armv6 --with-fpu=vfp --with-float=hard" elif [ "$XBPS_TARGET_MACHINE" = "armv7l" ]; then _args+=" --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard" fi _args+=" --host=$XBPS_CROSS_TRIPLET" else _langs="c,c++,objc,obj-c++,fortran,go,lto" fi ./configure --prefix=/usr --mandir=/usr/share/man \ --infodir=/usr/share/info --libexecdir=/usr/lib \ --enable-clocale=gnu --disable-bootstrap --libdir=/usr/lib \ --enable-threads=posix --enable-__cxa_atexit --enable-multilib \ --disable-rpath --with-system-zlib --enable-shared --enable-lto \ --enable-linker-build-id --enable-gnu-unique-object \ --enable-checking=release --disable-libstdcxx-pch \ --with-ppl --enable-cloog-backend=isl --enable-libstdcxx-time \ --enable-tls --enable-languages=${_langs} ${_args} } do_build() { make ${makejobs} } do_install() { if [ "$XBPS_TARGET_MACHINE" = "x86_64" ]; then vmkdir usr/lib cd ${DESTDIR}/usr && ln -sf lib lib64 fi cd ${wrksrc} make DESTDIR=${DESTDIR} install # Make version a symlink of major version to make all versions # from the same series work automagically. mv ${DESTDIR}/usr/lib/gcc/${_triplet}/${version} \ ${DESTDIR}/usr/lib/gcc/${_triplet}/${_majorver} cd ${DESTDIR}/usr/lib/gcc/${_triplet} && ln -sf ${_majorver} ${version} # Ditto for c++ headers. mv ${DESTDIR}/usr/include/c++/${version} \ ${DESTDIR}/usr/include/c++/${_majorver} cd ${DESTDIR}/usr/include/c++ && ln -sf ${_majorver} ${version} # cc symlink. cd ${DESTDIR}/usr/bin && ln -sf gcc cc # rpcgen wants /lib/cpp, make a symlink. cd ${DESTDIR}/usr/lib && ln -sf ../bin/cpp . rm -f ${DESTDIR}/usr/lib64 # Remove libffi stuff. rm -f ${DESTDIR}/usr/lib/libffi* rm -f ${DESTDIR}/usr/share/man/man3/ffi* # Remove unused stuff for multilib. if [ "$XBPS_TARGET_MACHINE" = "x86_64" ]; then if [ -d ${DESTDIR}/usr/lib32 ]; then rm -f ${DESTDIR}/usr/lib32/libffi* rm -f ${DESTDIR}/usr/lib32/libgfortran* rm -f ${DESTDIR}/usr/lib32/libgo.{a,so*} rm -f ${DESTDIR}/usr/lib32/libgobegin.a rm -f ${DESTDIR}/usr/lib32/libquadmath* rm -rf ${DESTDIR}/usr/lib32/go fi fi # Remove all python scripts in libdir. rm -f ${DESTDIR}/usr/lib/*.py # Remove more python stuff. if [ -d ${DESTDIR}/usr/share/gcc-${version}/python ]; then rm -rf ${DESTDIR}/usr/share/gcc-${version}/python fi # Install c89 and c99 wrappers and its manpages, from NetBSD. for f in c89 c99; do vinstall ${FILESDIR}/${f}.sh 755 usr/bin ${f} vinstall ${FILESDIR}/${f}.1 644 usr/share/man/man1 ${f}.1 done } # Multilib packages if [ "$XBPS_TARGET_MACHINE" = "x86_64" ]; then gcc-c++-multilib_package() { depends="gcc-c++>=${_majorver} gcc-multilib>=${_majorver} libstdc++32-devel>=${_majorver}" short_desc="GCC C++ compiler (multilib files)" noverifyrdeps=yes pkg_install() { vmkdir usr/lib/gcc/${_triplet}/${_majorver}/32 mv ${DESTDIR}/usr/lib32/libstdc++.a \ ${PKGDESTDIR}/usr/lib/gcc/${_triplet}/${_majorver}/32 mv ${DESTDIR}/usr/lib32/libsupc++.a \ ${PKGDESTDIR}/usr/lib/gcc/${_triplet}/${_majorver}/32 } } gcc-multilib_package() { depends="gcc>=${_majorver} libgcc32>=${_majorver} libgomp32>=${_majorver} libitm32>=${_majorver} zlib32 glibc32-devel" short_desc="GCC C compiler (multilib files)" noverifyrdeps=yes pkg_install() { vmove usr/lib/gcc/${_triplet}/${_majorver}/32 vmove "usr/lib32/libssp*.a" vinstall ${wrksrc}/host-${_triplet}/gcc/specs 644 usr/lib/gcc/${_triplet}/${_majorver} } } gcc-objc-multilib_package() { depends="gcc-multilib>=${_majorver} gcc-objc>=${_majorver} libobjc32>=${_majorver}" short_desc="The GNU Objective-C compiler (multilib files)" noverifyrdeps=yes pkg_install() { vmkdir usr/lib/gcc/${_triplet}/${_majorver}/32 mv ${DESTDIR}/usr/lib32/libobjc*.a \ ${PKGDESTDIR}/usr/lib/gcc/${_triplet}/${_majorver}/32 } } libgcc32_package() { short_desc="GCC version ${version} shared library support (32bit)" noverifyrdeps=yes pkg_install() { vmove "usr/lib32/libgcc_s.so*" } } libgomp32_package() { depends="libgcc32 glibc32" short_desc="GCC OpenMP v3.0 shared support library (32bit)" noverifyrdeps=yes pkg_install() { vmove "usr/lib32/libgomp.*" } } libitm32_package() { depends="libgcc32" short_desc="GCC Transactional Memory support library (32bit)" noverifyrdeps=yes pkg_install() { vmove "usr/lib32/libitm*" } } libmudflap32-devel_package() { depends="gcc-multilib glibc32-devel libmudflap32" short_desc="GCC 32bit mudflap support libraries (development files)" pkg_install() { vmove "usr/lib32/libmudflap*.a" } } libmudflap32_package() { depends="gcc-multilib glibc32" short_desc="GCC mudflap shared support libraries (32bit)" noverifyrdeps=yes pkg_install() { vmove "usr/lib32/libmudflap*.so*" } } libobjc32_package() { depends="libgcc32 glibc32" short_desc="GCC Objective-C shared library support (32bit)" noverifyrdeps=yes pkg_install() { vmove "usr/lib32/libobjc.so*" } } libssp32_package() { depends="glibc32" short_desc="GCC SSP shared library support (32bit)" noverifyrdeps=yes pkg_install() { vmove "usr/lib32/libssp.so*" } } libstdc++32-devel_package() { depends="libstdc++-devel libstdc++32" short_desc="GCC Standard C++ Library (32bit) development files" noverifyrdeps=yes pkg_install() { vmove usr/include/c++/${_majorver}/${_triplet}/32 } } libstdc++32_package() { depends="libgcc32 glibc32 libstdc++" short_desc="GCC Standard C++ Library (32bit)" noverifyrdeps=yes pkg_install() { vmove "usr/lib32/libstdc++.so*" } } fi # !x86_64 # Disabled packages in cross builds. if [ -z "$CROSS_BUILD" ]; then gcc-fortran_package() { depends="gcc>=${_majorver} libgfortran-devel>=${_majorver}" short_desc="GCC Fortran compiler frontend" pkg_install() { for f in gfortran ${_triplet}-gfortran; do vmove usr/bin/${f} done vmove usr/lib/gcc/${_triplet}/${_majorver}/f951 vmove usr/lib/gcc/${_triplet}/${_majorver}/finclude vmove usr/share/info/gfortran.info vmove usr/share/man/man1/gfortran.1 } } gcc-go_package() { depends="gcc>=${_majorver} libgo-devel>=${_majorver}" short_desc="GCC Go compiler frontend" pkg_install() { for f in gccgo ${_triplet}-gccgo; do vmove usr/bin/${f} done vmove usr/lib/gcc/${_triplet}/${_majorver}/go1 vmove usr/share/info/gccgo.info vmove usr/share/man/man1/gccgo.1 vmove usr/lib/go } } gcc-objc++_package() { depends="gcc-c++>=${_majorver} gcc-objc>=${_majorver}" short_desc="GCC Objective-C++ support" pkg_install() { vmove usr/lib/gcc/${_triplet}/${_majorver}/cc1objplus } } gcc-objc_package() { depends="gcc>=${_majorver} libobjc>=${_majorver}" short_desc="GCC Objective-C support" pkg_install() { vmove usr/lib/gcc/${_triplet}/${_majorver}/include/objc vmove usr/lib/gcc/${_triplet}/${_majorver}/cc1obj } } libgfortran-devel_package() { depends="libgfortran>=${_majorver}" short_desc="GCC Fortran library ${version} - development files" pkg_install() { vmove usr/lib/libgfortran.a vmove usr/lib/gcc/${_triplet}/${_majorver}/libgfortranbegin.a } } libgfortran_package() { short_desc="GCC Fortran library ${version} shared library support" pkg_install() { vmove "usr/lib/libgfortran.so*" vmove usr/lib/libgfortran.spec vinstall ${wrksrc}/COPYING.RUNTIME 644 usr/share/licenses/$pkgname RUNTIME.LIBRARY.EXCEPTION } } libgo-devel_package() { depends="libgo>=${_majorver}" short_desc="GCC Go library ${version} shared library support - development files" pkg_install() { vmove usr/lib/libgo.a vmove usr/lib/libgobegin.a } } libgo_package() { short_desc="Go library ${version} shared library support" pkg_install() { vmove "usr/lib/libgo.so*" vinstall ${wrksrc}/COPYING.RUNTIME 644 usr/share/licenses/$pkgname RUNTIME.LIBRARY.EXCEPTION } } libobjc-devel_package() { depends="libobjc>=${_majorver}" short_desc="GCC Objective-C shared library support (development files)" pkg_install() { vmove "usr/lib/libobjc.*a" } } libobjc_package() { short_desc="GCC Objective-C shared library support" pkg_install() { vmove "usr/lib/libobjc.so*" vinstall ${wrksrc}/COPYING.RUNTIME 644 usr/share/licenses/$pkgname RUNTIME.LIBRARY.EXCEPTION } } libquadmath-devel_package() { depends="libquadmath>=${_majorver}" short_desc="GCC quadmath shared support library (development files)" pkg_install() { vmove "/usr/lib/gcc/${_triplet}/${_majorver}/include/quadmath*" vmove "usr/lib/libquadmath*.a" vmove usr/share/info/libquadmath.info } } libquadmath_package() { short_desc="GCC quad match ${version} shared library support" pkg_install() { vmove "usr/lib/libquadmath.so*" vinstall ${wrksrc}/COPYING.RUNTIME 644 usr/share/licenses/$pkgname RUNTIME.LIBRARY.EXCEPTION } } fi # !CROSS_BUILD libgcc_package() { short_desc="GCC version ${version} shared library support" noverifyrdeps=yes pkg_install() { vmove "usr/lib/libgcc_s.so*" vinstall ${wrksrc}/COPYING.RUNTIME 644 usr/share/licenses/$pkgname RUNTIME.LIBRARY.EXCEPTION } } libgomp-devel_package() { depends="libgomp>=${_majorver}" short_desc="GCC OpenMP v3.0 shared support library - development files" pkg_install() { vmove usr/lib/libgomp.a vmove usr/share/info/libgomp.info } } libgomp_package() { short_desc="GCC OpenMP v3.0 shared support library" replaces="gcc>=4.6.3<4.6.3_3" pkg_install() { vmove usr/lib/gcc/${_triplet}/${_majorver}/include/omp.h vmove "usr/lib/libgomp*.so*" vmove usr/lib/libgomp.spec vinstall ${wrksrc}/COPYING.RUNTIME 644 usr/share/licenses/$pkgname RUNTIME.LIBRARY.EXCEPTION } } libitm_package() { short_desc="GCC Transactional Memory support library" pkg_install() { vmove "usr/lib/libitm.*" vmove usr/share/info/libitm.info } } libmudflap-devel_package() { depends="libmudflap>=${_majorver}" short_desc="GCC mudflap shared support library (development files)" pkg_install() { vmove "usr/lib/libmudflap*.a" } } libmudflap_package() { short_desc="GCC mudflap shared support library" pkg_install() { vmove "usr/lib/libmudflap*.so*" vinstall ${wrksrc}/COPYING.RUNTIME 644 usr/share/licenses/$pkgname RUNTIME.LIBRARY.EXCEPTION } } libssp-devel_package() { depends="glibc-devel libssp>=${_majorver}" short_desc="GCC SSP library support" pkg_install() { vmove "usr/lib/libssp*.a" vmove usr/lib/gcc/${_triplet}/${_majorver}/include/ssp } } libssp_package() { short_desc="GCC SSP shared library support" pkg_install() { vmove "usr/lib/libssp.so*" vinstall ${wrksrc}/COPYING.RUNTIME 644 usr/share/licenses/$pkgname RUNTIME.LIBRARY.EXCEPTION } } libstdc++-devel_package() { depends="libstdc++>=${_majorver}" short_desc="GCC Standard C++ Library (development files)" pkg_install() { vmove "usr/lib/libstdc++.*a" vmove "usr/lib/libsupc++.*" vmove usr/include/c++/${_majorver}/${_triplet}/bits vmove "usr/include/c++/${_majorver}/*.h" } } libstdc++_package() { short_desc="GCC Standard C++ Library" pkg_install() { vmove "usr/lib/libstdc++.so*" vmove usr/share/locale/fr/LC_MESSAGES/libstdc++.mo vmove usr/share/locale/de/LC_MESSAGES/libstdc++.mo vinstall ${wrksrc}/COPYING.RUNTIME 644 usr/share/licenses/$pkgname RUNTIME.LIBRARY.EXCEPTION } } gcc-c++_package() { depends="gcc>=${_majorver} libstdc++-devel>=${_majorver}" short_desc="GCC C++ support" pkg_install() { for f in g++ c++ ${_triplet}-g++ ${_triplet}-c++; do vmove usr/bin/${f} done vmove usr/lib/gcc/${_triplet}/${_majorver}/cc1plus vmove usr/share/man/man1/g++.1 } } gcc_package() { depends="binutils libgomp>=${_majorver} libitm>=${_majorver} libssp-devel>=${_majorver}" pkg_install() { vmove all } }