spacepaste

  1.  
  2. # Copyright 1999-2016 Gentoo Foundation
  3. # Distributed under the terms of the GNU General Public License v2
  4. EAPI="5"
  5. EPREFIX="/usr/local/share/dcompilers/gdc"
  6. EGIT_REPO_URI="git://github.com/D-Programming-GDC/GDC.git"
  7. EGIT_COMMIT="v2.068.2_gcc4.9"
  8. EGIT_SOURCEDIR="${WORKDIR}/dev"
  9. EGIT_NOUNPACK=1
  10. inherit git-2
  11. IUSE="d"
  12. # Original GCC code starts here
  13. PATCH_VER="1.0"
  14. UCLIBC_VER="1.0"
  15. # Hardened gcc 4 stuff
  16. PIE_VER="0.6.4"
  17. SPECS_VER="0.2.0"
  18. SPECS_GCC_VER="4.4.3"
  19. # arch/libc configurations known to be stable with {PIE,SSP}-by-default
  20. PIE_GLIBC_STABLE="x86 amd64 mips ppc ppc64 arm ia64"
  21. PIE_UCLIBC_STABLE="x86 arm amd64 mips ppc ppc64"
  22. SSP_STABLE="amd64 x86 mips ppc ppc64 arm"
  23. # uclibc need tls and nptl support for SSP support
  24. # uclibc need to be >= 0.9.33
  25. SSP_UCLIBC_STABLE="x86 amd64 mips ppc ppc64 arm"
  26. PIE_MUSL_STABLE="amd64 arm ppc mips x86"
  27. SSP_MUSL_STABLE="amd64 arm ppc mips"
  28. #end Hardened stuff
  29. inherit eutils toolchain
  30. KEYWORDS="amd64 arm ~mips x86"
  31. REQUIRED_USE="
  32. elibc_musl? ( !sanitize )"
  33. RDEPEND=""
  34. DEPEND="${RDEPEND}
  35. elibc_glibc? ( >=sys-libs/glibc-2.8 )
  36. >=${CATEGORY}/binutils-2.20"
  37. if [[ ${CATEGORY} != cross-* ]] ; then
  38. PDEPEND="${PDEPEND} elibc_glibc? ( >=sys-libs/glibc-2.8 )"
  39. fi
  40. #src_configure() {
  41. # EXTRA_ECONF=""
  42. # if use elibc_musl || [[ ${CATEGORY} = cross-*-musl ]]; then
  43. # EXTRA_ECONF="$(EXTRA_ECONF) --disable-libsanitizer"
  44. # fi
  45. #
  46. # toolchain_src_configure
  47. #}
  48. src_prepare() {
  49. if has_version '<sys-libs/glibc-2.12' ; then
  50. ewarn "Your host glibc is too old; disabling automatic fortify."
  51. ewarn "Please rebuild gcc after upgrading to >=glibc-2.12 #362315"
  52. EPATCH_EXCLUDE+=" 10_all_default-fortify-source.patch"
  53. fi
  54. toolchain_src_prepare
  55. if use elibc_musl || [[ ${CATEGORY} = cross-*-musl ]]; then
  56. cd "${S}"
  57. sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
  58. mv libstdc\+\+-v3/config/os/gnu-linux libstdc\+\+-v3/config/os/gnu-linux.org
  59. cp -r libstdc\+\+-v3/config/os/generic libstdc\+\+-v3/config/os/gnu-linux
  60. cp libstdc++-v3/config/os/gnu-linux.org/arm-eabi-extra.ver libstdc++-v3/config/os/gnu-linux/
  61. mv libitm/config/linux/x86 libitm/config/linux/x86_glibc
  62. cp -r libitm/config/generic libitm/config/linux/x86
  63. epatch "${FILESDIR}"/${PN}-4.9.3-musl-linker-path.patch
  64. epatch "${FILESDIR}"/${PN}-4.9.3-secure-plt.patch
  65. epatch "${FILESDIR}"/${PN}-4.9.3-musl-res_state.patch
  66. epatch "${FILESDIR}"/${PN}-4.8.3-musl-fix-libc5-assumption.patch
  67. epatch "${FILESDIR}"/${PN}-4.8.5-posix_memalign.patch
  68. epatch "${FILESDIR}"/${PN}-4.9.3-tree-vect-data-refs-correctness.patch
  69. fi
  70. use vanilla && return 0
  71. #Use -r1 for newer piepatchet that use DRIVER_SELF_SPECS for the hardened specs.
  72. [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env-r1.patch
  73. if use d ; then
  74. # Get GDC sources into the tree.
  75. git-2_src_unpack
  76. cd ../dev || die "Changing into Git checkout directory failed."
  77. epatch "${FILESDIR}"/${PN}-4.9.4-d-frontend-fpic.patch
  78. ./setup-gcc.sh ../gcc-${GCC_PV} || die "Could not setup GDC."
  79. fi
  80. }
  81.