diff --git a/srcpkgs/gcc-c++-multilib b/srcpkgs/gcc-c++-multilib new file mode 120000 index 00000000000..b08d5af5795 --- /dev/null +++ b/srcpkgs/gcc-c++-multilib @@ -0,0 +1 @@ +gcc \ No newline at end of file diff --git a/srcpkgs/gcc-multilib b/srcpkgs/gcc-multilib new file mode 120000 index 00000000000..b08d5af5795 --- /dev/null +++ b/srcpkgs/gcc-multilib @@ -0,0 +1 @@ +gcc \ No newline at end of file diff --git a/srcpkgs/gcc-objc-multilib b/srcpkgs/gcc-objc-multilib new file mode 120000 index 00000000000..b08d5af5795 --- /dev/null +++ b/srcpkgs/gcc-objc-multilib @@ -0,0 +1 @@ +gcc \ No newline at end of file diff --git a/srcpkgs/gcc/gcc-c++-multilib.template b/srcpkgs/gcc/gcc-c++-multilib.template new file mode 100644 index 00000000000..74e610edc70 --- /dev/null +++ b/srcpkgs/gcc/gcc-c++-multilib.template @@ -0,0 +1,22 @@ +# Template file for 'gcc-c++-multilib'. +# +short_desc="GCC C++ compiler (multilib files)" +long_desc=" + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + + On architectures with multilib support, the package contains files and + dependencies for the non-default multilib architecture(s)." + +noverifyrdeps=yes + +Add_dependency run gcc-c++ ">=${version}" +Add_dependency run gcc-multilib ">=${version}" +Add_dependency run libstdc++32-devel ">=${version}" + +do_install() { + local libmddir="usr/lib/gcc/${_triplet}/${_majorver}" + + for f in std sup; do + vmove usr/lib32/lib${f}c++.a ${libmddir}/32 + done +} diff --git a/srcpkgs/gcc/gcc-c++.template b/srcpkgs/gcc/gcc-c++.template index c520d98f9e5..b7ca817ad90 100644 --- a/srcpkgs/gcc/gcc-c++.template +++ b/srcpkgs/gcc/gcc-c++.template @@ -1,6 +1,5 @@ # Template file for 'gcc-c++'. # -revision=3 short_desc="GCC C++ support" long_desc="${long_desc} diff --git a/srcpkgs/gcc/gcc-fortran.template b/srcpkgs/gcc/gcc-fortran.template index fc2b69c7007..9525895a6e6 100644 --- a/srcpkgs/gcc/gcc-fortran.template +++ b/srcpkgs/gcc/gcc-fortran.template @@ -1,6 +1,5 @@ # Template file for 'gcc-fortran'. # -revision=3 short_desc="GCC Fortran compiler frontend" long_desc="${long_desc} diff --git a/srcpkgs/gcc/gcc-go.template b/srcpkgs/gcc/gcc-go.template index 8a431e9c3a0..99a64eed3a0 100644 --- a/srcpkgs/gcc/gcc-go.template +++ b/srcpkgs/gcc/gcc-go.template @@ -1,6 +1,5 @@ # Template file for 'gcc-go'. # -revision=3 short_desc="GCC Go compiler frontend" long_desc="${long_desc} diff --git a/srcpkgs/gcc/gcc-multilib.template b/srcpkgs/gcc/gcc-multilib.template new file mode 100644 index 00000000000..8cbf24b7e90 --- /dev/null +++ b/srcpkgs/gcc/gcc-multilib.template @@ -0,0 +1,24 @@ +# Template file for 'gcc-c-multilib'. +# +short_desc="GCC C compiler (multilib files)" +long_desc=" + This is the GNU C compiler, a fairly portable optimizing compiler for C. + + On architectures with multilib support, the package contains files and + dependencies for the non-default multilib architecture(s)." + +noverifyrdeps=yes + +Add_dependency run gcc ">=${version}" +Add_dependency run libgcc32 ">=${version}" +Add_dependency run libgomp32 ">=${version}" +Add_dependency run zlib32 +Add_dependency run glibc32-devel + +do_install() { + local libmddir="usr/lib/gcc/${_triplet}/${_majorver}" + + vmove ${libmddir}/32 ${libmddir} + vmove "usr/lib32/libssp*.a" ${libmddir}/32 + vinstall host-${_triplet}/gcc/specs 644 ${libmddir} +} diff --git a/srcpkgs/gcc/gcc-objc++.template b/srcpkgs/gcc/gcc-objc++.template index 0b122f2da39..6667fff8cef 100644 --- a/srcpkgs/gcc/gcc-objc++.template +++ b/srcpkgs/gcc/gcc-objc++.template @@ -1,6 +1,5 @@ # Template file for 'gcc-objc++'. # -revision=3 short_desc="GCC Objective-C++ support" long_desc="${long_desc} diff --git a/srcpkgs/gcc/gcc-objc-multilib.template b/srcpkgs/gcc/gcc-objc-multilib.template new file mode 100644 index 00000000000..3d1b985eebf --- /dev/null +++ b/srcpkgs/gcc/gcc-objc-multilib.template @@ -0,0 +1,21 @@ +# Template file for 'gcc-objc-multilib'. +# +short_desc="The GNU Objective-C compiler (multilib files)" +long_desc=" + This is the GNU Objective-C compiler, which compiles Objective-C on + platforms supported by the GCC compiler. + + On architectures with multilib support, the package contains files and + dependencies for the non-default multilib architecture(s)." + +noverifyrdeps=yes + +Add_dependency run gcc-multilib ">=${version}" +Add_dependency run gcc-objc ">=${version}" +Add_dependency run libobjc32 ">=${version}" + +do_install() { + local libmddir="/usr/lib/gcc/${_triplet}/${_majorver}" + + vmove "usr/lib32/libobjc*.a" ${libmddir}/32 +} diff --git a/srcpkgs/gcc/gcc-objc.template b/srcpkgs/gcc/gcc-objc.template index 4fa0e7d3f77..793b0cf63fc 100644 --- a/srcpkgs/gcc/gcc-objc.template +++ b/srcpkgs/gcc/gcc-objc.template @@ -1,6 +1,5 @@ # Template file for 'gcc-objc'. # -revision=3 short_desc="GCC Objective-C support" long_desc="${long_desc} diff --git a/srcpkgs/gcc/gcc.rshlibs b/srcpkgs/gcc/gcc.rshlibs index 0167f35af9c..baa7e41b092 100644 --- a/srcpkgs/gcc/gcc.rshlibs +++ b/srcpkgs/gcc/gcc.rshlibs @@ -6,3 +6,4 @@ libmpfr.so.4 libgmp.so.10 libdl.so.2 libz.so.1 +ld-linux.so.2 diff --git a/srcpkgs/gcc/libgcc32.template b/srcpkgs/gcc/libgcc32.template new file mode 100644 index 00000000000..67ab4771f2d --- /dev/null +++ b/srcpkgs/gcc/libgcc32.template @@ -0,0 +1,12 @@ +# Template file for 'libgcc32'. +# +short_desc="GCC version ${version} shared library support (32bit)" +long_desc="${long_desc} + + This package contains the 32bit GCC shared library for x86_64 systems." + +noverifyrdeps=yes + +do_install() { + vmove "usr/lib32/libgcc_s.so*" usr/lib32 +} diff --git a/srcpkgs/gcc/libgfortran.template b/srcpkgs/gcc/libgfortran.template index 3a9d92fac39..1b71d951f6e 100644 --- a/srcpkgs/gcc/libgfortran.template +++ b/srcpkgs/gcc/libgfortran.template @@ -1,6 +1,5 @@ # Template file for 'libgfortran'. # -revision=1 short_desc="GCC Fortran library ${version} shared library support" long_desc="${long_desc} diff --git a/srcpkgs/gcc/libgo.template b/srcpkgs/gcc/libgo.template index fd2ba294c2e..e956d6f9546 100644 --- a/srcpkgs/gcc/libgo.template +++ b/srcpkgs/gcc/libgo.template @@ -1,6 +1,5 @@ # Template file for 'libgo'. # -revision=2 short_desc="Go library ${version} shared library support" long_desc="${long_desc} diff --git a/srcpkgs/gcc/libgomp.template b/srcpkgs/gcc/libgomp.template index b3409af5290..7d02ec5162e 100644 --- a/srcpkgs/gcc/libgomp.template +++ b/srcpkgs/gcc/libgomp.template @@ -1,6 +1,5 @@ # Template file for 'gcc-libgomp'. # -revision=1 short_desc="GCC OpenMP v3.0 shared support library" long_desc="${long_desc} diff --git a/srcpkgs/gcc/libgomp32.template b/srcpkgs/gcc/libgomp32.template new file mode 100644 index 00000000000..089d95fb6f2 --- /dev/null +++ b/srcpkgs/gcc/libgomp32.template @@ -0,0 +1,16 @@ +# Template file for 'libgomp32'. +# +short_desc="GCC OpenMP v3.0 shared support library (32bit)" +long_desc="${long_desc} + + This package contains the 32bit GCC shared support library which is needed + for OpenMP v3.0 support." + +noverifyrdeps=yes + +Add_dependency run libgcc32 +Add_dependency run glibc32 + +do_install() { + vmove "usr/lib32/libgomp.*" usr/lib32 +} diff --git a/srcpkgs/gcc/libmudflap.template b/srcpkgs/gcc/libmudflap.template index 603170f29b5..e9a96b2dd9d 100644 --- a/srcpkgs/gcc/libmudflap.template +++ b/srcpkgs/gcc/libmudflap.template @@ -1,6 +1,5 @@ # Template file for 'gcc-libmudflap'. # -revision=2 short_desc="GCC mudflap shared support library" long_desc="${long_desc} diff --git a/srcpkgs/gcc/libmudflap32-devel.template b/srcpkgs/gcc/libmudflap32-devel.template new file mode 100644 index 00000000000..be68b25d42d --- /dev/null +++ b/srcpkgs/gcc/libmudflap32-devel.template @@ -0,0 +1,16 @@ +# Template file for 'libmudflap32-devel'. +# +short_desc="GCC 32bit mudflap support libraries (development files)" +long_desc=" + The libmudflap libraries are used by GCC for instrumenting pointer + and array dereferencing operations. + + This package contains the headers and the static libraries." + +Add_dependency run gcc-multilib +Add_dependency run glibc32-devel +Add_dependency run libmudflap32 + +do_install() { + vmove "usr/lib32/libmudflap*.a" usr/lib32 +} diff --git a/srcpkgs/gcc/libmudflap32.template b/srcpkgs/gcc/libmudflap32.template new file mode 100644 index 00000000000..262c4ff2b43 --- /dev/null +++ b/srcpkgs/gcc/libmudflap32.template @@ -0,0 +1,15 @@ +# Template file for 'libmudflap32'. +# +short_desc="GCC mudflap shared support libraries (32bit)" +long_desc=" + The libmudflap libraries are used by GCC for instrumenting pointer + and array dereferencing operations." + +noverifyrdeps=yes + +Add_dependency run gcc-multilib +Add_dependency run glibc32 + +do_install() { + vmove "usr/lib32/libmudflap*.so*" usr/lib32 +} diff --git a/srcpkgs/gcc/libobjc.template b/srcpkgs/gcc/libobjc.template index cf55142609c..917352c0b9b 100644 --- a/srcpkgs/gcc/libobjc.template +++ b/srcpkgs/gcc/libobjc.template @@ -1,6 +1,5 @@ # Template file for 'libobjc'. # -revision=1 short_desc="GCC Objective-C shared library support" long_desc="${long_desc} diff --git a/srcpkgs/gcc/libobjc32.template b/srcpkgs/gcc/libobjc32.template new file mode 100644 index 00000000000..37b7837d710 --- /dev/null +++ b/srcpkgs/gcc/libobjc32.template @@ -0,0 +1,16 @@ +# Template file for 'libobjc32'. +# +short_desc="GCC Objective-C shared library support (32bit)" +long_desc="${long_desc} + + This package contains the 32bit GCC Objective-C shared support library + which is needed to run Objective-C dynamically linked programs." + +noverifyrdeps=yes + +Add_dependency run libgcc32 +Add_dependency run glibc32 + +do_install() { + vmove "usr/lib32/libobjc.so*" usr/lib32 +} diff --git a/srcpkgs/gcc/libquadmath.template b/srcpkgs/gcc/libquadmath.template index 2726fbd3cdd..51440f16604 100644 --- a/srcpkgs/gcc/libquadmath.template +++ b/srcpkgs/gcc/libquadmath.template @@ -1,6 +1,5 @@ # Template file for 'libquadmath' # -revision=1 short_desc="GCC quad match ${version} shared library support" long_desc="${long_desc} diff --git a/srcpkgs/gcc/libssp.template b/srcpkgs/gcc/libssp.template index 434b88671ea..99df9633363 100644 --- a/srcpkgs/gcc/libssp.template +++ b/srcpkgs/gcc/libssp.template @@ -1,6 +1,5 @@ # Template file for 'libssp'. # -revision=1 short_desc="GCC SSP shared library support" long_desc="${long_desc} diff --git a/srcpkgs/gcc/libssp32.template b/srcpkgs/gcc/libssp32.template new file mode 100644 index 00000000000..1ffcaf0277d --- /dev/null +++ b/srcpkgs/gcc/libssp32.template @@ -0,0 +1,15 @@ +# Template file for 'libssp32'. +# +short_desc="GCC SSP shared library support (32bit)" +long_desc="${long_desc} + + This package contains the 32bit Stack Smashing Protection shared library + provided by GCC." + +noverifyrdeps=yes + +Add_dependency run glibc32 + +do_install() { + vmove "usr/lib32/libssp.so*" usr/lib32 +} diff --git a/srcpkgs/gcc/libstdc++.template b/srcpkgs/gcc/libstdc++.template index 3bca259a769..1b1c6a3c497 100644 --- a/srcpkgs/gcc/libstdc++.template +++ b/srcpkgs/gcc/libstdc++.template @@ -1,6 +1,5 @@ # Template file for 'gcc-libstdc++'. # -revision=2 short_desc="GCC Standard C++ Library" long_desc="${long_desc} diff --git a/srcpkgs/gcc/libstdc++32-devel.template b/srcpkgs/gcc/libstdc++32-devel.template new file mode 100644 index 00000000000..3d77fcc7c04 --- /dev/null +++ b/srcpkgs/gcc/libstdc++32-devel.template @@ -0,0 +1,17 @@ +# Template file for 'libstdc++32-devel'. +# +short_desc="GCC Standard C++ Library (32bit) development files" +long_desc="${long_desc} + + This package contains a rewritten 32bit standard compliant GCC Standard + C++ development files and headers for x86_64 systems." + +noverifyrdeps=yes + +Add_dependency run libstdc++-devel +Add_dependency run libstdc++32 + +do_install() { + vmove usr/include/c++/${_majorver}/${_triplet}/32 \ + usr/include/c++/${_majorver}/${_triplet} +} diff --git a/srcpkgs/gcc/libstdc++32.template b/srcpkgs/gcc/libstdc++32.template new file mode 100644 index 00000000000..a3cc13f55df --- /dev/null +++ b/srcpkgs/gcc/libstdc++32.template @@ -0,0 +1,17 @@ +# Template file for 'libstdc++32'. +# +short_desc="GCC Standard C++ Library (32bit)" +long_desc="${long_desc} + + This package contains a rewritten standard compliant GCC Standard + C++ library 32bit for x86_64 systems." + +noverifyrdeps=yes + +Add_dependency run libgcc32 +Add_dependency run glibc32 +Add_dependency run libstdc++ + +do_install() { + vmove "usr/lib32/libstdc++.so*" usr/lib32 +} diff --git a/srcpkgs/gcc/template b/srcpkgs/gcc/template index 8ddbb94b332..7f6635794c9 100644 --- a/srcpkgs/gcc/template +++ b/srcpkgs/gcc/template @@ -1,16 +1,13 @@ # Template build file for 'gcc' -# -# NOTE: don't forget to sync with gcc-multilib when this package is updated. pkgname=gcc _majorver=4.6 -version=${_majorver}.2 +version=${_majorver}.3 distfiles="http://ftp.gnu.org/pub/gnu/gcc/gcc-$version/gcc-$version.tar.bz2" -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" -checksum=60b05463dfe18d40d68fb8a71b25b408a01f86cc6ceaf5e6b22238b6b0f450c2 +checksum=e8f5853d4eec2f5ebaf8a72ae4d53c436aacf98153b2499f8635b48c4718a093 long_desc=" The GNU C Compiler, with support for building C code. @@ -18,18 +15,14 @@ long_desc=" for ObjectiveC++ install gcc-objc++, for Go install gcc-go, for Fortran install gcc-fortran." -subpackages="libgcc libgo libssp libssp-devel libstdc++ libstdc++-devel libgomp" -subpackages="${subpackages} libquadmath libquadmath-devel libgo-devel libgomp-devel" -subpackages="${subpackages} libmudflap libmudflap-devel libobjc libobjc-devel" -subpackages="${subpackages} libgfortran libgfortran-devel gcc-fortran" -subpackages="${subpackages} gcc-c++ gcc-objc gcc-objc++ gcc-go" - -Add_dependency run libgcc ">=${version}" Add_dependency run libgomp ">=${version}" Add_dependency run binutils Add_dependency run libelf Add_dependency run libssp-devel ">=${version}" +Add_dependency build perl +Add_dependency build flex +Add_dependency build zlib-devel Add_dependency build gmp-devel Add_dependency build mpfr-devel Add_dependency build mpc-devel @@ -37,11 +30,27 @@ Add_dependency build cloog-ppl-devel Add_dependency build libelf-devel if [ "${XBPS_MACHINE}" = "x86_64" ]; then + # Required stuff for multilib packages. + Add_dependency build glibc32-devel + Add_dependency build zlib32-devel + + subpackages="gcc-multilib gcc-c++-multilib" + subpackages="${subpackages} gcc-objc-multilib libgcc32 libgomp32" + subpackages="${subpackages} libmudflap32-devel libmudflap32" + subpackages="${subpackages} libobjc32 libssp32 libstdc++32-devel" + subpackages="${subpackages} libstdc++32" + _triplet="${XBPS_MACHINE}-unknown-linux-gnu" else _triplet="${XBPS_MACHINE}-pc-linux-gnu" fi +subpackages="${subpackages} libgcc libgo libssp libssp-devel libstdc++ libstdc++-devel libgomp" +subpackages="${subpackages} libquadmath libquadmath-devel libgo-devel libgomp-devel" +subpackages="${subpackages} libmudflap libmudflap-devel libobjc libobjc-devel" +subpackages="${subpackages} libgfortran libgfortran-devel gcc-fortran" +subpackages="${subpackages} gcc-c++ gcc-objc gcc-objc++ gcc-go" + do_configure() { # As specified in the LFS book, disable installing libiberty. sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in @@ -50,14 +59,15 @@ do_configure() { CONFIG_SHELL=/bin/bash ./configure --libexecdir=/usr/lib \ --enable-clocale=gnu --disable-bootstrap --libdir=/usr/lib \ - --enable-threads=posix --enable-__cxa_atexit --disable-multilib \ + --enable-threads=posix --enable-__cxa_atexit --enable-multilib \ --enable-languages=c,c++,objc,obj-c++,fortran,go,lto --enable-tls \ --with-mpfr=$XBPS_MASTERDIR/usr --with-gmp=$XBPS_MASTERDIR/usr \ --disable-rpath --with-system-zlib --enable-shared \ --with-ppl=${XBPS_MASTERDIR}/usr --with-cloog=${XBPS_MASTERDIR}/usr \ --enable-lto --with-libelf=${XBPS_MASTERDIR}/usr \ --enable-linker-build-id --enable-gnu-unique-object \ - --enable-checking=release ${CONFIGURE_SHARED_ARGS} + --enable-checking=release --enable-__cxa_atexit \ + --disable-libstdcxx-pch ${CONFIGURE_SHARED_ARGS} } do_build() { @@ -67,8 +77,9 @@ do_build() { do_install() { if [ "$XBPS_MACHINE" = "x86_64" ]; then vmkdir usr/lib - cd ${DESTDIR}/usr && ln -sf lib lib64 && cd ${wrksrc} + 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 @@ -95,6 +106,16 @@ do_install() { rm -f ${DESTDIR}/usr/lib/libffi* rm -f ${DESTDIR}/usr/share/man/man3/ffi* + # Remove unused stuff for multilib. + if [ "${XBPS_MACHINE}" = "x86_64" ]; 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 + # Remove all python scripts in libdir. rm -f ${DESTDIR}/usr/lib/*.py diff --git a/srcpkgs/libgcc32 b/srcpkgs/libgcc32 new file mode 120000 index 00000000000..b08d5af5795 --- /dev/null +++ b/srcpkgs/libgcc32 @@ -0,0 +1 @@ +gcc \ No newline at end of file diff --git a/srcpkgs/libgomp32 b/srcpkgs/libgomp32 new file mode 120000 index 00000000000..b08d5af5795 --- /dev/null +++ b/srcpkgs/libgomp32 @@ -0,0 +1 @@ +gcc \ No newline at end of file diff --git a/srcpkgs/libmudflap32 b/srcpkgs/libmudflap32 new file mode 120000 index 00000000000..b08d5af5795 --- /dev/null +++ b/srcpkgs/libmudflap32 @@ -0,0 +1 @@ +gcc \ No newline at end of file diff --git a/srcpkgs/libmudflap32-devel b/srcpkgs/libmudflap32-devel new file mode 120000 index 00000000000..b08d5af5795 --- /dev/null +++ b/srcpkgs/libmudflap32-devel @@ -0,0 +1 @@ +gcc \ No newline at end of file diff --git a/srcpkgs/libobjc32 b/srcpkgs/libobjc32 new file mode 120000 index 00000000000..b08d5af5795 --- /dev/null +++ b/srcpkgs/libobjc32 @@ -0,0 +1 @@ +gcc \ No newline at end of file diff --git a/srcpkgs/libssp32 b/srcpkgs/libssp32 new file mode 120000 index 00000000000..b08d5af5795 --- /dev/null +++ b/srcpkgs/libssp32 @@ -0,0 +1 @@ +gcc \ No newline at end of file diff --git a/srcpkgs/libstdc++32 b/srcpkgs/libstdc++32 new file mode 120000 index 00000000000..b08d5af5795 --- /dev/null +++ b/srcpkgs/libstdc++32 @@ -0,0 +1 @@ +gcc \ No newline at end of file diff --git a/srcpkgs/libstdc++32-devel b/srcpkgs/libstdc++32-devel new file mode 120000 index 00000000000..b08d5af5795 --- /dev/null +++ b/srcpkgs/libstdc++32-devel @@ -0,0 +1 @@ +gcc \ No newline at end of file