Advertisement
Guest User

Untitled

a guest
Dec 10th, 2015
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.72 KB | None | 0 0
  1. # Maintainer: Yurii Kolesnykov (yurikooles) <yurikoles@gmail.com>
  2. # Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
  3. # Contributor: Allan McRae <allan@archlinux.org>
  4.  
  5. # toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc
  6. # NOTE: libtool requires rebuilt with each new gcc version
  7.  
  8. pkgname=('gcc49-multilib' 'gcc49-libs-multilib' 'lib32-gcc49-libs')
  9. pkgver=4.9.3
  10. _pkgver=4.9
  11. _islver=0.12.2
  12. _cloogver=0.18.1
  13. pkgrel=2
  14. #_snapshot=4.9-20150304
  15. pkgdesc="The GNU Compiler Collection for multilib"
  16. arch=('x86_64')
  17. license=('GPL' 'LGPL' 'FDL' 'custom')
  18. url="http://gcc.gnu.org"
  19. makedepends=('binutils>=2.25' 'libmpc' 'doxygen'
  20. 'lib32-glibc>=2.20')
  21. checkdepends=('dejagnu' 'inetutils')
  22. options=('!emptydirs')
  23. source=(ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.bz2
  24. #ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-${_snapshot}.tar.bz2
  25. http://isl.gforge.inria.fr/isl-${_islver}.tar.bz2
  26. http://www.bastoul.net/cloog/pages/download/cloog-${_cloogver}.tar.gz)
  27. md5sums=('6f831b4d251872736e8e9cc09746f327'
  28. 'e039bfcfb6c2ab039b8ee69bf883e824'
  29. 'e34fca0540d840e5d0f6427e98c92252')
  30.  
  31. if [ -n "${_snapshot}" ]; then
  32. _basedir=gcc-${_snapshot}
  33. else
  34. _basedir=gcc-${pkgver}
  35. fi
  36.  
  37. _libdir="usr/gcc49/lib/gcc/$CHOST/$pkgver"
  38.  
  39.  
  40. prepare() {
  41. cd ${srcdir}/${_basedir}
  42.  
  43. # link isl/cloog for in-tree builds
  44. ln -sf ../isl-${_islver} isl
  45. ln -sf ../cloog-${_cloogver} cloog
  46.  
  47. # Do not run fixincludes
  48. sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
  49.  
  50. # Arch Linux installs x86_64 libraries /lib
  51. [[ $CARCH == "x86_64" ]] && sed -i '/m64=/s/lib64/lib/' gcc/config/i386/t-linux64
  52.  
  53. echo ${pkgver} > gcc/BASE-VER
  54.  
  55. # hack! - some configure tests for header files using "$CPP $CPPFLAGS"
  56. sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" {libiberty,gcc}/configure
  57.  
  58. mkdir -p ${srcdir}/gcc-build
  59. }
  60.  
  61. build() {
  62. cd ${srcdir}/gcc-build
  63.  
  64. # using -pipe causes spurious test-suite failures
  65. # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48565
  66. CFLAGS=${CFLAGS/-pipe/}
  67. CXXFLAGS=${CXXFLAGS/-pipe/}
  68.  
  69.  
  70.  
  71. ${srcdir}/${_basedir}/configure --prefix=/usr --exec-prefix=/usr/gcc49 \
  72. --libdir=/usr/gcc49/lib --libexecdir=/usr/gcc49/lib \
  73. --mandir=/usr/share/man --infodir=/usr/share/info \
  74. --with-bugurl=https://bugs.archlinux.org/ \
  75. --enable-languages=c,c++,lto \
  76. --enable-shared --enable-threads=posix \
  77. --with-system-zlib --enable-__cxa_atexit \
  78. --disable-libunwind-exceptions --enable-clocale=gnu \
  79. --disable-libstdcxx-pch --disable-libssp \
  80. --enable-gnu-unique-object --enable-linker-build-id \
  81. --enable-cloog-backend=isl \
  82. --enable-lto --enable-plugin --enable-install-libiberty \
  83. --with-linker-hash-style=gnu \
  84. --enable-multilib --disable-werror \
  85. --enable-checking=release
  86.  
  87. make
  88.  
  89. # make documentation
  90. make -C $CHOST/libstdc++-v3/doc doc-man-doxygen
  91. }
  92.  
  93. check() {
  94. cd ${srcdir}/gcc-build
  95.  
  96. # increase stack size to prevent test failures
  97. # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31827
  98. ulimit -s 32768
  99.  
  100. # do not abort on error as some are "expected"
  101. make -k check || true
  102. ${srcdir}/${_basedir}/contrib/test_summary
  103. }
  104.  
  105. package_lib32-gcc49-libs()
  106. {
  107. pkgdesc="Runtime libraries shipped by GCC (32-bit)"
  108. depends=('lib32-glibc>=2.20')
  109. options=('!emptydirs' '!strip')
  110.  
  111. cd ${srcdir}/gcc-build
  112.  
  113. make -C $CHOST/32/libgcc DESTDIR=${pkgdir} install-shared
  114. rm ${pkgdir}/${_libdir}/32/libgcc_eh.a
  115.  
  116. for lib in libatomic \
  117. libcilkrts \
  118. libgomp \
  119. libitm \
  120. libquadmath \
  121. libsanitizer/{a,l,ub}san \
  122. libstdc++-v3/src \
  123. libvtv; do
  124. make -C $CHOST/32/$lib DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES
  125. done
  126.  
  127. # make -C $CHOST/32/libobjc DESTDIR=${pkgdir} install-libs
  128.  
  129. # remove stuff in gcc-libs-multilib
  130. rm -r ${pkgdir}/usr/gcc49/lib
  131. }
  132.  
  133. package_gcc49-libs-multilib()
  134. {
  135. pkgdesc="Runtime libraries shipped by GCC for multilib"
  136. # depends=('glibc>=2.20' "lib32-gcc-libs=$pkgver-$pkgrel")
  137. depends=('glibc>=2.20' "lib32-gcc49-libs=$pkgver-$pkgrel")
  138. provides=("gcc49-libs=$pkgver-$pkgrel")
  139. # conflicts=('gcc-libs')
  140. options=('!emptydirs' '!strip')
  141. install=gcc49-libs.install
  142.  
  143. cd ${srcdir}/gcc-build
  144.  
  145. make -C $CHOST/libgcc DESTDIR=${pkgdir} install-shared
  146. rm ${pkgdir}/${_libdir}/libgcc_eh.a
  147.  
  148. for lib in libatomic \
  149. libcilkrts \
  150. libgomp \
  151. libitm \
  152. libquadmath \
  153. libsanitizer/{a,l,ub}san \
  154. libstdc++-v3/src \
  155. libvtv; do
  156. make -C $CHOST/$lib DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES
  157. done
  158.  
  159. [[ $CARCH == "x86_64" ]] && \
  160. make -C $CHOST/libsanitizer/tsan DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES
  161.  
  162. # make -C $CHOST/libobjc DESTDIR=${pkgdir} install-libs
  163. make -C $CHOST/libstdc++-v3/po DESTDIR=${pkgdir} install
  164.  
  165.  
  166.  
  167.  
  168. # for lib in libgomp \
  169. # libitm \
  170. # libquadmath; do
  171. # make -C $CHOST/$lib DESTDIR=${pkgdir} install-info
  172. # done
  173.  
  174. rm ${pkgdir}/usr/share/locale/de/LC_MESSAGES/libstdc++.mo
  175. rm ${pkgdir}/usr/share/locale/fr/LC_MESSAGES/libstdc++.mo
  176.  
  177.  
  178.  
  179.  
  180.  
  181. # remove stuff in lib32-gcc-libs
  182. #rm -r ${pkgdir}/usr/lib32
  183.  
  184.  
  185.  
  186. # Install Runtime Library Exception
  187. # install -Dm644 ${srcdir}/${_basedir}/COPYING.RUNTIME ${pkgdir}/usr/share/licenses/gcc-libs-multilib/RUNTIME.LIBRARY.EXCEPTION
  188. }
  189.  
  190. package_gcc49-multilib()
  191. {
  192. pkgdesc="The GNU Compiler Collection - C and C++ frontends for multilib"
  193. depends=("gcc49-libs-multilib=$pkgver-$pkgrel" 'binutils>=2.25' 'libmpc')
  194. groups=('multilib-devel')
  195. options=('staticlibs')
  196. provides=("gcc49=$pkgver-$pkgrel")
  197. # conflicts=('gcc')
  198. install=gcc49.install
  199.  
  200. cd ${srcdir}/gcc-build
  201.  
  202. make -C gcc DESTDIR=${pkgdir} install-driver install-cpp install-gcc-ar \
  203. c++.install-common install-headers install-plugin install-lto-wrapper
  204.  
  205. install -m755 gcc/gcov $pkgdir/usr/gcc49/bin/
  206. install -m755 -t $pkgdir/${_libdir}/ gcc/{cc1,cc1plus,collect2,lto1}
  207.  
  208. make -C $CHOST/libgcc DESTDIR=${pkgdir} install
  209. make -C $CHOST/32/libgcc DESTDIR=${pkgdir} install
  210. rm ${pkgdir}/usr/gcc49/lib{,32}/libgcc_s.so*
  211.  
  212. make -C $CHOST/libstdc++-v3/src DESTDIR=${pkgdir} install
  213. make -C $CHOST/libstdc++-v3/include DESTDIR=${pkgdir} install
  214. make -C $CHOST/libstdc++-v3/libsupc++ DESTDIR=${pkgdir} install
  215. make -C $CHOST/libstdc++-v3/python DESTDIR=${pkgdir} install
  216. make -C $CHOST/32/libstdc++-v3/src DESTDIR=${pkgdir} install
  217. make -C $CHOST/32/libstdc++-v3/include DESTDIR=${pkgdir} install
  218. make -C $CHOST/32/libstdc++-v3/libsupc++ DESTDIR=${pkgdir} install
  219.  
  220. install -d $pkgdir/usr/share/gdb/auto-load/usr/lib
  221. mv $pkgdir/usr/gcc49/lib/libstdc++.so.6.*-gdb.py $pkgdir/usr/share/gdb/auto-load/usr/lib/
  222.  
  223. rm ${pkgdir}/usr/gcc49/lib{,32}/libstdc++.so*
  224.  
  225. make DESTDIR=${pkgdir} install-fixincludes
  226. make -C gcc DESTDIR=${pkgdir} install-mkheaders
  227. make -C lto-plugin DESTDIR=${pkgdir} install
  228.  
  229. make -C $CHOST/libcilkrts DESTDIR=${pkgdir} install-nodist_toolexeclibHEADERS \
  230. install-nodist_cilkincludeHEADERS
  231. make -C $CHOST/libgomp DESTDIR=${pkgdir} install-nodist_toolexeclibHEADERS \
  232. install-nodist_libsubincludeHEADERS
  233. make -C $CHOST/libitm DESTDIR=${pkgdir} install-nodist_toolexeclibHEADERS
  234. make -C $CHOST/libquadmath DESTDIR=${pkgdir} install-nodist_libsubincludeHEADERS
  235. make -C $CHOST/libsanitizer DESTDIR=${pkgdir} install-nodist_toolexeclibHEADERS
  236. make -C $CHOST/libsanitizer/asan DESTDIR=${pkgdir} install-nodist_toolexeclibHEADERS
  237. make -C $CHOST/32/libcilkrts DESTDIR=${pkgdir} install-nodist_toolexeclibHEADERS
  238. make -C $CHOST/32/libgomp DESTDIR=${pkgdir} install-nodist_toolexeclibHEADERS
  239. make -C $CHOST/32/libitm DESTDIR=${pkgdir} install-nodist_toolexeclibHEADERS
  240. make -C $CHOST/32/libsanitizer DESTDIR=${pkgdir} install-nodist_toolexeclibHEADERS
  241. make -C $CHOST/32/libsanitizer/asan DESTDIR=${pkgdir} install-nodist_toolexeclibHEADERS
  242.  
  243. make -C libiberty DESTDIR=${pkgdir} install
  244. # install PIC version of libiberty
  245. # install -m644 ${srcdir}/gcc-build/libiberty/pic/libiberty.a ${pkgdir}/usr/lib
  246. install -m644 ${srcdir}/gcc-build/libiberty/pic/libiberty.a ${pkgdir}/usr/gcc49/lib
  247.  
  248.  
  249. make -C gcc DESTDIR=${pkgdir} install-man install-info
  250. # rm ${pkgdir}/usr/share/man/man1/{gccgo,gfortran}.1
  251. # rm ${pkgdir}/usr/share/info/{gccgo,gfortran,gnat-style,gnat_rm,gnat_ugn}.info
  252.  
  253. make -C libcpp DESTDIR=${pkgdir} install
  254. make -C gcc DESTDIR=${pkgdir} install-po
  255.  
  256. # many packages expect this symlink
  257. ln -s gcc ${pkgdir}/usr/gcc49/bin/cc
  258.  
  259. # POSIX conformance launcher scripts for c89 and c99
  260. cat > $pkgdir/usr/gcc49/bin/c89 <<"EOF"
  261. #!/bin/sh
  262. fl="-std=c89"
  263. for opt; do
  264. case "$opt" in
  265. -ansi|-std=c89|-std=iso9899:1990) fl="";;
  266. -std=*) echo "`basename $0` called with non ANSI/ISO C option $opt" >&2
  267. exit 1;;
  268. esac
  269. done
  270. exec gcc $fl ${1+"$@"}
  271. EOF
  272.  
  273. cat > $pkgdir/usr/gcc49/bin/c99 <<"EOF"
  274. #!/bin/sh
  275. fl="-std=c99"
  276. for opt; do
  277. case "$opt" in
  278. -std=c99|-std=iso9899:1999) fl="";;
  279. -std=*) echo "`basename $0` called with non ISO C99 option $opt" >&2
  280. exit 1;;
  281. esac
  282. done
  283. exec gcc $fl ${1+"$@"}
  284. EOF
  285.  
  286. chmod 755 $pkgdir/usr/gcc49/bin/c{8,9}9
  287.  
  288. # install the libstdc++ man pages
  289. make -C $CHOST/libstdc++-v3/doc DESTDIR=$pkgdir doc-install-man
  290.  
  291.  
  292.  
  293. mv ${pkgdir}/usr/share/man/man1/gcc.1 ${pkgdir}/usr/share/man/man1/gcc-4.9.1
  294. mv ${pkgdir}/usr/share/man/man1/g++.1 ${pkgdir}/usr/share/man/man1/g++-4.9.1
  295. mv ${pkgdir}/usr/share/man/man1/cpp.1 ${pkgdir}/usr/share/man/man1/cpp-4.9.1
  296. mv ${pkgdir}/usr/share/man/man1/gcov.1 ${pkgdir}/usr/share/man/man1/gcov-4.9.1
  297. mv ${pkgdir}/usr/share/info/cpp.info ${pkgdir}/usr/share/man/man1/cpp-4.9.info
  298. mv ${pkgdir}/usr/share/info/gcc.info ${pkgdir}/usr/share/man/man1/gcc-4.9.info
  299. mv ${pkgdir}/usr/share/info/cppinternals.info ${pkgdir}/usr/share/man/man1/cppinternals-4.9.info
  300. mv ${pkgdir}/usr/share/info/gccinstall.info ${pkgdir}/usr/share/man/man1/gccinstall-4.9.info
  301. mv ${pkgdir}/usr/share/info/gccint.info ${pkgdir}/usr/share/man/man1/gccint-4.9.info
  302.  
  303. rm -r ${pkgdir}/usr/share/locale/
  304.  
  305. install -d ${pkgdir}/usr/bin
  306.  
  307. cd ${pkgdir}/usr/bin/
  308. ln -s ../gcc49/bin/c++ c++-4.9
  309. ln -s ../gcc49/bin/c89 c89-4.9
  310. ln -s ../gcc49/bin/c99 c99-4.9
  311. ln -s ../gcc49/bin/cc cc-4.9
  312. ln -s ../gcc49/bin/cpp cpp-4.9
  313. ln -s ../gcc49/bin/g++ g++-4.9
  314. ln -s ../gcc49/bin/gcc gcc-4.9
  315. ln -s ../gcc49/bin/gcc-ar gcc-ar-4.9
  316. ln -s ../gcc49/bin/gcc-nm gcc-nm-4.9
  317. ln -s ../gcc49/bin/gcc-ranlib gcc-ranlib-4.9
  318. ln -s ../gcc49/bin/gcov gcov-4.9
  319. cd $owd
  320.  
  321.  
  322.  
  323. rm -r ${pkgdir}/usr/include/libiberty
  324. rm ${pkgdir}/usr/share/man/man3/Numeric_arrays.3
  325. rm ${pkgdir}/usr/share/man/man3/Pointer_abstractions.3
  326. rm ${pkgdir}/usr/share/man/man3/SGIextensions.3
  327. rm ${pkgdir}/usr/share/man/man3/__gnu_cxx.3
  328. rm ${pkgdir}/usr/share/man/man3/__gnu_debug.3
  329. rm ${pkgdir}/usr/share/man/man3/__gnu_internal.3
  330. rm ${pkgdir}/usr/share/man/man3/__gnu_parallel.3
  331. rm ${pkgdir}/usr/share/man/man3/__gnu_pbds.3
  332. rm ${pkgdir}/usr/share/man/man3/random.3
  333. rm ${pkgdir}/usr/share/man/man3/regex.3
  334. rm ${pkgdir}/usr/share/man/man7/fsf-funding.7
  335. rm ${pkgdir}/usr/share/man/man7/gfdl.7
  336. rm ${pkgdir}/usr/share/man/man7/gpl.7
  337.  
  338. # Install Runtime Library Exception
  339. install -d ${pkgdir}/usr/share/licenses/gcc-multilib/
  340. # ln -s ../gcc-libs-multilib/RUNTIME.LIBRARY.EXCEPTION ${pkgdir}/usr/share/licenses/gcc-multilib/
  341. }
  342.  
  343. package_gcc49-fortran-multilib()
  344. {
  345. pkgdesc="Fortran front-end for GCC for multilib"
  346. depends=("gcc-multilib=$pkgver-$pkgrel")
  347. provides=("gcc-fortran=$pkgver-$pkgrel")
  348. conflicts=('gcc-fortran')
  349. options=('!emptydirs')
  350. install=gcc49-fortran.install
  351.  
  352. cd ${srcdir}/gcc-build
  353. make -C $CHOST/libgfortran DESTDIR=$pkgdir install-{{caf,my}execlibLTLIBRARIES,toolexeclibDATA}
  354. make -C $CHOST/32/libgfortran DESTDIR=$pkgdir install-{{caf,my}execlibLTLIBRARIES,toolexeclibDATA}
  355. make -C $CHOST/libgomp DESTDIR=$pkgdir install-nodist_fincludeHEADERS
  356. make -C gcc DESTDIR=$pkgdir fortran.install-{common,man,info}
  357. install -Dm755 gcc/f951 $pkgdir/${_libdir}/f951
  358.  
  359. ln -s gfortran ${pkgdir}/usr/bin/f95
  360.  
  361. # Install Runtime Library Exception
  362. install -d ${pkgdir}/usr/share/licenses/gcc-fortran-multilib/
  363. ln -s ../gcc-libs-multilib/RUNTIME.LIBRARY.EXCEPTION ${pkgdir}/usr/share/licenses/gcc-fortran-multilib/
  364. }
  365.  
  366. package_gcc49-objc-multilib()
  367. {
  368. pkgdesc="Objective-C front-end for GCC for multilib"
  369. depends=("gcc-multilib=$pkgver-$pkgrel")
  370. provides=("gcc-objc=$pkgver-$pkgrel")
  371. conflicts=('gcc-objc')
  372.  
  373. cd ${srcdir}/gcc-build
  374. make DESTDIR=$pkgdir -C $CHOST/libobjc install-headers
  375. install -dm755 $pkgdir/${_libdir}
  376. install -m755 gcc/cc1obj{,plus} $pkgdir/${_libdir}/
  377.  
  378. # Install Runtime Library Exception
  379. install -d ${pkgdir}/usr/share/licenses/gcc-objc-multilib/
  380. ln -s ../gcc-libs-multilib/RUNTIME.LIBRARY.EXCEPTION ${pkgdir}/usr/share/licenses/gcc-objc-multilib/
  381. }
  382.  
  383.  
  384. package_gcc49-go-multilib()
  385. {
  386. pkgdesc="Go front-end for GCC for multilib"
  387. depends=("gcc-multilib=$pkgver-$pkgrel")
  388. provides=("gcc-go=$pkgver-$pkgrel")
  389. conflicts=('gcc-go')
  390. options=('!emptydirs')
  391. install=gcc49-go.install
  392.  
  393. cd ${srcdir}/gcc-build
  394. make -C $CHOST/libgo DESTDIR=$pkgdir install-exec-am
  395. make -C $CHOST/32/libgo DESTDIR=$pkgdir install-exec-am
  396. make -C gcc DESTDIR=$pkgdir go.install-{common,man,info}
  397. install -Dm755 gcc/go1 $pkgdir/${_libdir}/go1
  398.  
  399. # Install Runtime Library Exception
  400. install -d ${pkgdir}/usr/share/licenses/gcc-go-multilib/
  401. ln -s ../gcc-libs-multilib/RUNTIME.LIBRARY.EXCEPTION ${pkgdir}/usr/share/licenses/gcc-go-multilib/
  402. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement