aboutsummaryrefslogblamecommitdiffstats
path: root/main/gcc/APKBUILD
blob: c70f651e69c8958dd6e42db468bb7e4c69cf1602 (plain) (tree)
1
2
3
4
5
6
7
                                                   
           

                  

                    
                     







                                                                

                                     
          
                  
                        





                                                                                          
                    
 
                   



                       
                   
 
































                                                                       











                                                                  
 
                                                  



                          





                                              

  












                                                                  
                   
                                                               
                                     
  
                   
                                                              
                                         
                                     
  
                 
                                                         
                                   
  
                      
                                                                                   

                                        
                  
                                                               
                                    
                                           
  
 
                                                                          
                                                                                             
                                                                                           
                                                    
 
                                             



                                           
                                  
                                                  
                                   
 
                          
                          
                                         
                                         
                             
                              
                             
                                    
                              
                        


                                  
                                     
                        



                            
         
 
                    
 
                      
                             

                                               
 

                     




                                     
 
                                 
                                                        
                                               
                                 
                                                                    
            
 
                                   
             



                                         
                                                                        

                          
            
 







                                                     
                                           


                                                                            

                                                                              

                                                                         
                                              


                                                              
 
                                     
 
 
         
                              
                              


                                   
                       
 
                     






                                                                                      
 




                                                                                                         

            

                                                    

            

















                                                                               

          









                                                                                                               

            







                                                                                

          




                                     

                                           

                                                
                                                


                                                          




                                            

                                           


                                     
                                                      
                                   
                                          





                                         
                           
                                       
                              
                              
                                        
                                                
                                  


                                       
                                  
                                                   
                                    
                           
 
                        


           
                       
                                                        

                                                       
                                      


                                           
 

                           
                                        
                            
                                                                     
            








                                                                          
 
                                                
                                                                                                             




                                                                               

                           
                                                                                             
                                            
          

                    
                                                                         

                                                   


                                                                 
 
                                                              







                                                                    





                                                                                     
 
 

                                                  
                

                             
                                     


                                                                                       


       
                                                       
                                                          
                                            



                                          

                                                                     
 




                                                              
           
                                         
                       
                
                                     

                                                               
 


                                 
                                                        
 
                                                   

                                      
                                                                                 
                           

                                                                     

 
          

                                                  

                             
                                     


                                                                                      
 
 



                                                                    

                             
                                     
                                                               
 
 

                                      
                                                       
 
                                                             







                                                                            




                                                     
            
                                             





                                               

                                                    
                

                             

                                     
                                                         











                                                                             
                                                



                                                      

                                       



                                                           


                                            
                

                             





                                                             
                                             
 
                                            



                                                                     
                                                                            





                                                 

                                                 
                

                             



                                                                   


                                              
                

                             



                                                                   

                                      
                                                                        
                      

                                            




                                                                        

                                                  
                                                 



                                                     

 

                                                     


                             





                                                             


                                                                        



                                            
                                                                     
                           

                                                                            

 

                                                                     
                                                               
                                                




                                                                       
                                                            

                                                                            
                                                    

                                                                   
                                                                   
                                                       
                                                        
                                                       
                                                              
                                                        

                                                          
                                                            





                                                               

                                                                                                     

                                                                                               




                                                                                                       
                                                                                            

                                                                                                            
                                                                                    

                                                                                                   
                                                                                                   

                                                                                        
                                                                                       
                                                                                              
                                                                                        

                                                                                          
                                                                                            





                                                                                               

                                                                                                                                                                     

                                                                                                                                                               




                                                                                                                                                                       
                                                                                                                                                            

                                                                                                                                                                            
                                                                                                                                                    

                                                                                                                                                                   
                                                                                                                                                                   

                                                                                                                                                        
                                                                                                                                                       
                                                                                                                                                              
                                                                                                                                                        

                                                                                                                                                          
                                                                                                                                                            





                                                                                                                                                               
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=gcc
pkgver=4.8.1
_piepatchver=0.5.6
_specs_ver=0.2.0
_specs_gcc_ver=4.4.3
_uclibc_abiver=0.9.32
_cross=""
[ "$BOOTSTRAP" = "noheaders" ] && pkgname="gcc-pass1"
[ "$BOOTSTRAP" = "nolibc" ] && pkgname="gcc-pass2"
[ "$CHOST" != "$CTARGET" ] && [ -n "$CHOST" -a -n "$CTARGET" ] \
	&& _cross="-$CTARGET"

pkgname="$pkgname$_cross"
pkgrel=3
pkgdesc="The GNU Compiler Collection"
url="http://gcc.gnu.org"
arch="all"
license="GPL LGPL"
_gccrel=$pkgver-r$pkgrel
depends="binutils$_cross"
makedepends_build="bison flex texinfo gawk zip"
makedepends_host="gmp-dev mpfr-dev mpc1-dev zlib-dev cloog-dev !libiconv-dev !gettext-dev"
makedepends="$makedepends_build $makedepends_host"
subpackages=" "
[ "$CHOST" = "$CTARGET" ] && subpackages="gcc-doc$_cross"
replaces="libstdc++"

: ${LANG_CXX:=true}
: ${LANG_OBJC:=true}
: ${LANG_JAVA:=true}
: ${LANG_GO:=true}
: ${LANG_FORTRAN:=true}
: ${LANG_ADA:=true}

LIBGOMP=true
LIBGCC=true
LIBATOMIC=true
LIBITM=true
if [ "$CHOST" != "$CTARGET" ] && [ -n "$CHOST" -a -n "$CTARGET" ]; then
	if [ "$BOOTSTRAP" ]; then
		LANG_CXX=false
		LANG_ADA=false
		LIBGCC=false
		_builddir="$srcdir/build-cross-pass2"
	else
		_builddir="$srcdir/build-cross-final"
	fi
	LANG_OBJC=false
	LANG_JAVA=false
	LANG_GO=false
	LANG_FORTRAN=false
	LIBGOMP=false
	LIBATOMIC=false
	LIBITM=false

	# reset target flags (should be set in crosscreate abuild)
	# fixup flags. seems gcc treats CPPFLAGS as global without
	# _FOR_xxx variants. wrap it in CFLAGS and CXXFLAGS.
	export CFLAGS="$CPPFLAGS $CFLAGS"
	export CXXFLAGS="$CPPFLAGS $CXXFLAGS"
	unset CPPFLAGS
	[ -z "$CFLAGS_FOR_TARGET" ]   && export CFLAGS_FOR_TARGET=" "
	[ -z "$CXXFLAGS_FOR_TARGET" ] && export CXXFLAGS_FOR_TARGET=" "
	[ -z "$LDFLAGS_FOR_TARGET" ]  && export LDFLAGS_FOR_TARGET=" "

	STRIP_FOR_TARGET="$CTARGET-strip"
elif [ "$CBUILD" != "$CHOST" ] && [ -n "$CBUILD" -a -n "$CHOST" ]; then
	# fixup flags. seems gcc treats CPPFLAGS as global without
	# _FOR_xxx variants. wrap it in CFLAGS and CXXFLAGS.
	export CFLAGS="$CPPFLAGS $CFLAGS"
	export CXXFLAGS="$CPPFLAGS $CXXFLAGS"
	unset CPPFLAGS

	# reset flags and cc for build
	export CC_FOR_BUILD="gcc"
	export CXX_FOR_BUILD="g++"
	export CFLAGS_FOR_BUILD=" "
	export CXXFLAGS_FOR_BUILD=" "
	export LDFLAGS_FOR_BUILD=" "

	# Languages that do not need bootstrapping
	LANG_OBJC=false
	LANG_JAVA=false
	LANG_GO=false
	LANG_FORTRAN=false

	STRIP_FOR_TARGET=${CROSS_COMPILE}strip
	_builddir="$srcdir/build-cross-native"
else
	STRIP_FOR_TARGET=${CROSS_COMPILE}strip
	_builddir="$srcdir/build"
fi

if $LIBGCC; then
	subpackages="$subpackages libgcc"
fi
if $LIBGOMP; then
	depends="$depends libgomp=$_gccrel"
	subpackages="$subpackages libgomp"
fi

_languages=c
if $LANG_CXX; then
	subpackages="$subpackages libstdc++:libcxx g++$_cross:gpp"
	_languages="$_languages,c++"
fi
if $LANG_OBJC; then
	subpackages="$subpackages libobjc gcc-objc$_cross:objc"
	_languages="$_languages,objc"
fi
if $LANG_JAVA; then
	subpackages="$subpackages libgcj gcc-java$_cross:java"
	makedepends="$makedepends paxctl"
	_languages="$_languages,java"
fi
if $LANG_GO; then
	subpackages="$subpackages libgo gcc-go$_cross:go"
	_languages="$_languages,go"
fi
if $LANG_FORTRAN; then
	subpackages="$subpackages libgfortran libquadmath gfortran$_cross:gfortran"
	_languages="$_languages,fortran"
fi
if $LANG_ADA; then
	subpackages="$subpackages libgnat gcc-gnat$_cross:gnat"
	_languages="$_languages,ada"
	makedepends="$makedepends gcc-gnat"
fi

source="ftp://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-$pkgver.tar.bz2
	http://distfiles.gentoo.org/distfiles/gcc-$pkgver-piepatches-v${_piepatchver}.tar.bz2
	http://distfiles.gentoo.org/distfiles/gcc-$_specs_gcc_ver-specs-$_specs_ver.tar.bz2
	ftp://sourceware.org/pub/java/ecj-latest.jar

	12_all_default-warn-trampolines.patch
	15_all_libgfortran-Werror.patch
	16_all_libgomp-Werror.patch
	48_all_x86_pr53113_libitm-avx.patch
	50_all_libiberty-asprintf.patch
	51_all_libiberty-pic.patch
	67_all_gcc-poison-system-directories.patch
	74_all_gcc48_cloog-dl.patch

	gcc-spec-env.patch
	gcc-4.8-musl.patch
	gcc-4.8-musl-fix-arm-interp.patch
	libgcc-always-build-gcceh.a.patch
	pt_gnu_eh_frame.patch
	uclibc-getipinfo.patch
	gcc-4.6-pr32219.patch
	gcc-4.8-dynamic-linker.patch
	boehem-gc-uclibc.patch
	gcc-pure64.patch

	gcc-4.8-build-args.patch
	fix-cxxflags-passing.patch
	fix-cxxflags-for-target.patch
	ada-no-pie.patch
	ada-fixes.patch
	ada-crossbuild.patch
	ada-shared.patch
	ada-musl.patch
	"

#	gcc-go.patch

# we build out-of-tree
_gccdir="$srcdir"/gcc-$pkgver
_gcclibdir=/usr/lib/gcc/${CTARGET}/$pkgver
_gcclibexec=/usr/libexec/gcc/${CTARGET}/$pkgver

prepare() {
	cd "$_gccdir"
	# verify we have set CHOST
	if [ -z "$CHOST" ]; then
		error "CHOST not set"
		return 1
	fi

	# PIE patches from gentoo
	# thanks to Zorry for hard work on those patches
	for i in "$srcdir"/piepatch/*.patch; do
		msg "Applying $i"
		patch -t -p0 -i $i || patch -t -p1 -i $i || return 1
	done

	# Gentoo and uclibc patches
	_err=
	for i in $source; do
		case "$i" in
		*.patch)
			msg "Applying $i"
			patch -p1 -F3 -i "$srcdir"/$i || _err="$_err $i"
			;;
		esac
	done

	if [ -n "$_err" ]; then
		error "The following patches failed:"
		for i in $_err; do
			echo "  $i"
		done
		return 1
	fi

	# enable hardened cflags by default
	# building gcc wih PIE seem to hit some strange bug. we probably run
	# out of some resource. so we disable PIE for gcc while enabling it
	# by default for everything else.
	local _hard_cflags="-DEFAULT_PIE_SSP -DEFAULT_RELRO -DEFAULT_BIND_NOW"
	sed -e "/^ALL_CFLAGS/iHARD_CFLAGS = ${_hard_cflags}" \
		-e 's|^ALL_CFLAGS = |ALL_CFLAGS = $(HARD_CFLAGS) |' \
		-e 's|^ALL_CXXFLAGS = |ALL_CXXFLAGS = $(HARD_CFLAGS) |' \
		-i gcc/Makefile.in || return 1

	# see http://gcc.gnu.org/ml/java/2008-04/msg00027.html
	mv "$srcdir"/ecj-latest.jar ecj.jar

	echo ${pkgver} > gcc/BASE-VER
}

build() {
	local _dynamic_linker=
	local _arch_configure=
	local _libc_configure=
	local _cross_configure=
	local _bootstrap_configure=
	local _symvers=

	cd "$_gccdir"
	if [ -z "$CFLAGS_FOR_TARGET" ]; then
		export CFLAGS="-fno-stack-protector $CFLAGS"
		export CXXFLAGS="-fno-stack-protector $CXXFLAGS"
	else
		export CFLAGS_FOR_TARGET="-fno-stack-protector $CFLAGS_FOR_TARGET"
		export CXXFLAGS_FOR_TARGET="-fno-stack-protector $CXXFLAGS_FOR_TARGET"
	fi

	case "$CTARGET" in
	x86_64-*-uclibc)	_dynamic_linker="--with-dynamic-linker=ld64-uClibc.so.$_uclibc_abiver" ;;
	*-uclibc)		_dynamic_linker="--with-dynamic-linker=ld-uClibc.so.$_uclibc_abiver" ;;
	x86_64-*-gnu)		_dynamic_linker="--with-dynamic-linker=ld-linux-x86-64.so.2" ;;
	*-gnu)			_dynamic_linker="--with-dynamic-linker=ld-linux.so.2" ;;
	esac

	case "$CTARGET_ARCH" in
	armhf) _arch_configure="--with-float=hard";;
	esac

	case "$CTARGET_LIBC" in
	musl)
		# musl does not support mudflap
		_libc_configure="--disable-libssp --disable-libmudflap"
		_symvers="--disable-symvers"
		export gcc_cv_libc_provides_ssp=yes
		export libat_cv_have_ifunc=no
		;;
	uclibc)
		_libc_configure="--disable-libssp --without-system-libunwind"
		export gcc_cv_libc_provides_ssp=yes
		export libat_cv_have_ifunc=no
		;;
	esac

	if [ "$CHOST" != "$CTARGET" ]; then
		_cross_configure="--disable-bootstrap --enable-clocale=gnu"
		_cross_configure="$_cross_configure --with-sysroot=$CBUILDROOT"
	fi

	case "$BOOTSTRAP" in
	noheaders)
		_bootstrap_configure="--with-newlib --without-headers --disable-shared --enable-threads=no"
		;;
	nolibc)
		_bootstrap_configure="--with-newlib --disable-shared --enable-threads=no --disable-libquadmath"
		;;
	*)
		_bootstrap_configure="--enable-shared --enable-threads --enable-tls"
		;;
	esac

	if ! $LIBGOMP; then
		_bootstrap_configure="$_bootstrap_configure --disable-libgomp"
	fi
	if ! $LIBATOMIC; then
		_bootstrap_configure="$_bootstrap_configure --disable-libatomic"
	fi
	if ! $LIBITM; then
		_bootstrap_configure="$_bootstrap_configure --disable-libitm"
	fi

	msg "Building the following:"
	echo ""
	echo "  CBUILD=$CBUILD"
	echo "  CHOST=$CHOST"
	echo "  CTARGET=$CTARGET"
	echo "  CTARGET_ARCH=$CTARGET_ARCH"
	echo "  CTARGET_LIBC=$CTARGET_LIBC"
	echo "  languages=$_languages"
	echo "  dynamic_linker=$_dynamic_linker"
	echo "  arch_configure=$_arch_configure"
	echo "  libc_configure=$_libc_configure"
	echo "  cross_configure=$_cross_configure"
	echo "  bootstrap_configure=$_bootstrap_configure"
	echo ""

	mkdir -p "$_builddir"
	cd "$_builddir"
	"$_gccdir"/configure --prefix=/usr \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--build=${CBUILD} \
		--host=${CHOST} \
		--target=${CTARGET} \
		--with-pkgversion="Alpine ${pkgver}" \
		--disable-altivec \
		--disable-build-with-cxx \
		--disable-checking \
		--disable-fixed-point \
		--disable-libstdcxx-pch \
		--disable-multilib \
		--disable-nls \
		--disable-werror \
		$_symvers \
		--enable-__cxa_atexit \
		--enable-cld \
		--enable-esp \
		--enable-cloog-backend \
		--enable-languages=$_languages \
		$_arch_configure \
		$_libc_configure \
		$_cross_configure \
		$_bootstrap_configure \
		$_dynamic_linker \
		--with-dynamic-linker-prefix=/lib \
		--with-system-zlib \
		|| return 1

	make || return 1
}

package() {
	cd "$_builddir"
	make -j1 DESTDIR="${pkgdir}" install || return 1
	find "$pkgdir" -name '*.la' -delete || return 1

	ln -s gcc "$pkgdir"/usr/bin/cc

	# binutils provides libiberty.a
	rm -f "$pkgdir"/usr/lib/libiberty.a

	# install the specs
	cd "$srcdir"/specs
	install -d "$pkgdir"/$_gcclibdir
	for i in *.specs; do
		install -m644 $i "$pkgdir"/$_gcclibdir/$i || return 1
	done

	# we dont support gcj -static
	# and saving 35MB is not bad.
	find "$pkgdir" -name libgcj.a -o -name libgtkpeer.a \
		-o -name libgjsmalsa.a -o -name libgcj-tools.a \
		-o -name libjvm.a -o -name libgij.a -o -name libgcj_bc.a \
		-o -name libjavamath.a \
		| xargs rm -f \
		|| return 1

	# strip debug info from some statib libs
	${STRIP_FOR_TARGET} -g `find "$pkgdir" \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \
		-o -name libmudflap.a -o -name libmudflapth.a \
		-o -name libgcc.a -o -name libgcov.a -o -name libquadmath.a \
		-o -name libitm.a -o -name libgo.a -o -name libcaf\*.a \
		-o -name libatomic.a -o -name libasan.a -o -name libtsan.a \) \
		-a -type f` || return 1

	if $LANG_JAVA; then
		sed -i -e 's/lib: /&%{static:%eJava programs cannot be linked statically}/' \
		"$pkdir"/usr/lib/libgcj.spec
	fi

	# remove ffi
	rm -f "$pkgdir"/usr/lib/libffi* "$pkgdir"/usr/share/man/man3/ffi*
	find "$pkgdir" -name 'ffi*.h' | xargs rm -f

	mkdir -p "$pkgdir"/usr/share/gdb/python/auto-load/usr/lib
	mv "$pkgdir"/usr/lib/*-gdb.py \
		"$pkgdir"/usr/share/gdb/python/auto-load/usr/lib/

	paxctl -c -pmrs "$pkgdir"/$_gcclibexec/cc1 || return 1

	# move ada runtime libs
	if $LANG_ADA; then
		for i in "$pkgdir"/$_gcclibdir/adalib/libgna*.so; do
			mv "$i" "$pkgdir"/usr/lib/ || return 1
			ln -s ../../../../${i##*/} $i || return 1
		done
	fi

	if [ "$CHOST" != "$CTARGET" ]; then
		# cross-gcc: remove any files that would conflict with the
		# native gcc package
		rm -rf "$pkgdir"/usr/bin/cc "$pkgdir"/usr/include "$pkgdir"/usr/share
	fi
}

libcxx() {
	pkgdesc="GNU C++ standard runtime library"
	depends=
	CARCH="$CTARGET_ARCH"

	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libstdc++.so.* "$subpkgdir"/usr/lib/ || \
		cp "$pkgdir"/usr/$CTARGET/lib/libstdc++.so.* "$subpkgdir"/usr/lib/ || \
		return 1
}

gpp() {
	pkgdesc="GNU C++ standard library and compiler"
	depends="libstdc++=$_gccrel gcc=$_gccrel libc-dev"
	mkdir -p "$subpkgdir/$_gcclibexec" \
		"$subpkgdir"/usr/bin \
		"$subpkgdir"/usr/include \
		"$subpkgdir"/usr/lib \

	mv "$pkgdir/$_gcclibexec/cc1plus" "$subpkgdir/$_gcclibexec/"
	paxctl -c -pmrs "$subpkgdir/$_gcclibexec/cc1plus" || return 1

	mv "$pkgdir"/usr/lib/*++* "$subpkgdir"/usr/lib/
	mv "$pkgdir"/usr/include/c++ "$subpkgdir"/usr/include/
	mv "$pkgdir"/usr/bin/*++ "$subpkgdir"/usr/bin/
}

libobjc() {
	pkgdesc="GNU Objective-C runtime"
	replaces="objc"
	depends=
	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libobjc.so.* "$subpkgdir"/usr/lib/
}

objc() {
	pkgdesc="GNU Objective-C"
	replaces="gcc"
	depends="libc-dev gcc=$_gccrel libobjc=$_gccrel"

	mkdir -p "$subpkgdir"/$_gcclibdir/include \
		"$subpkgdir"/usr/lib \
		|| return 1
	mv "$pkgdir"/$_gcclibdir/include/objc "$subpkgdir"/$_gcclibdir/include/ \
		|| return 1
	mv "$pkgdir"/usr/lib/libobjc.so "$pkgdir"/usr/lib/libobjc.a \
		"$subpkgdir"/usr/lib/ || return 1
}

libgcc() {
	pkgdesc="GNU C compiler runtime libraries"
	depends=
	CARCH="$CTARGET_ARCH"

	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libgcc_s.so.* "$subpkgdir"/usr/lib/ || \
		cp "$pkgdir"/usr/$CTARGET/lib/libgcc_s.so.* "$subpkgdir"/usr/lib/ || \
		return 1
}

libgomp() {
	pkgdesc="GCC shared-memory parallel programming API library"
	depends=
	replaces="gcc"
	CARCH="$CTARGET_ARCH"

	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libgomp.so.* "$subpkgdir"/usr/lib/
}

java() {
	pkgdesc="Java support for GCC"
	depends="zlib-dev gcc=$_gccrel libgcj=$_gccrel"

	paxctl -c -pm "$pkgdir"/$_gcclibexec/ecj1 || return 1
	mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/lib
	cd "$pkgdir"/usr/bin
	mv gcj gcj-dbtool gjavah gcjh jcf-dump "$subpkgdir"/usr/bin/
	cd "$pkgdir"
	for i in $(find usr/ -name ecj1 -o -name jc1 -o -name jvgenmain); do
		mkdir -p "$subpkgdir"/${i%/*}
		mv "$pkgdir"/$i "$subpkgdir"/$i || return 1
	done
	for i in "$pkgdir"/usr/lib/libgcj*.so; do
		if [ -L "$i" ]; then
			mv "$i" "$subpkgdir"/usr/lib/
		fi
	done
	mv \
		"$pkgdir"/usr/lib/libgij.so \
		"$pkgdir"/usr/lib/libgcj.spec \
		"$subpkgdir"/usr/lib/
}

libgcj() {
	pkgdesc="Java runtime library for gcc"
	# libgcj_bc.so moved from gcc-java to libgcj
	replaces="gcc-java"
	depends=
	CARCH="$CTARGET_ARCH"

	mkdir -p "$subpkgdir"/usr/bin
	cd "$pkgdir"/usr/bin
	paxctl -c -pmse "$pkgdir"/usr/bin/gij || return 1
	mv aot-compile gappletviewer gc-analyze gij gjar gjarsigner gkeytool\
		gnative2ascii gorbd grmic grmid grmiregistry gserialver \
		gtnameserv i486-alpine-linux-uclibc-gcj jv-convert \
		rebuild-gcj-db \
		"$subpkgdir"/usr/bin/
	cd "$pkgdir"
	for i in $(find usr/lib -name jc1 -o -name jvgenmain); do
		mkdir -p "$subpkgdir"/${i%/*}
		mv "$pkgdir"/$i "$subpkgdir"/$i || return 1
	done
	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/gcj-* \
		"$pkgdir"/usr/lib/libgcj_bc.so \
		"$pkgdir"/usr/lib/libgcj*.so.* \
		"$pkgdir"/usr/lib/libgij.so.* \
		"$pkgdir"/usr/lib/logging.properties \
		"$pkgdir"/usr/lib/security \
		"$subpkgdir"/usr/lib/ \
		|| return 1

	mkdir -p "$subpkgdir"/usr/share/
	mv "$pkgdir"/usr/share/java "$subpkgdir"/usr/share/
}

libgo() {
	pkgdesc="Go runtime library for GCC"
	depends=
	CARCH="$CTARGET_ARCH"

	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libgo.so.* "$subpkgdir"/usr/lib/
}

go() {
	pkgdesc="Go support for GCC"
	depends="gcc=$_gccrel libgo=$_gccrel"

	mkdir -p "$subpkgdir"/$_gcclibexec \
		"$subpkgdir"/usr/lib \
		"$subpkgdir"/usr/bin || return 1
	mv "$pkgdir"/usr/lib/go "$subpkgdir"/usr/lib/ || return 1
	mv "$pkgdir"/usr/bin/*gccgo "$subpkgdir"/usr/bin/ || return 1
	mv "$pkgdir"/$_gcclibexec/go1 "$subpkgdir"/$_gcclibexec/ || return 1
	mv "$pkgdir"/usr/lib/libgo.a \
		"$pkgdir"/usr/lib/libgo.so \
		"$pkgdir"/usr/lib/libgobegin.a \
		"$subpkgdir"/usr/lib/ || return 1
}

libgfortran() {
	pkgdesc="Fortran runtime library for GCC"
	depends=
	CARCH="$CTARGET_ARCH"

	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libgfortran.so.* "$subpkgdir"/usr/lib/
}

libquadmath() {
	replaces="gcc"
	pkgdesc="128-bit math library for GCC"
	depends=
	CARCH="$CTARGET_ARCH"

	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libquadmath.so.* "$subpkgdir"/usr/lib/
}

gfortran() {
	pkgdesc="GNU Fortran Compiler"
	depends="gcc=$_gccrel libgfortran=$_gccrel libquadmath=$_gccrel"
	replaces="gcc"
	mkdir -p "$subpkgdir"/$_gcclibexec \
		"$subpkgdir"/$_gcclibdir \
		"$subpkgdir"/usr/lib \
		"$subpkgdir"/usr/bin || return 1
	mv "$pkgdir"/usr/bin/*gfortran "$subpkgdir"/usr/bin/ || return 1
	mv "$pkgdir"/usr/lib/libgfortran.a \
		"$pkgdir"/usr/lib/libgfortran.so \
		"$pkgdir"/usr/lib/libquadmath.a \
		"$pkgdir"/usr/lib/libquadmath.so \
		"$subpkgdir"/usr/lib/ || return 1
	mv "$pkgdir"/$_gcclibexec/f951 \
		"$subpkgdir"/$_gcclibexec
	mv "$pkgdir"/$_gcclibdir/libgfortranbegin.a \
		"$subpkgdir"/$_gcclibdir
}

libgnat() {
	pkgdesc="GNU Ada 95 runtime shared libraries"
	depends=
	CARCH="$CTARGET_ARCH"

	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libgna*.so "$subpkgdir"/usr/lib/
}

gnat() {
	pkgdesc="Ada 95 support for GCC"
	depends="gcc=$_gccrel"
	[ "$CHOST" = "$CTARGET" ] && depends="$depends libgnat=$_gccrel"

	mkdir -p "$subpkgdir"/$_gcclibexec \
		"$subpkgdir"/$_gcclibdir \
		"$subpkgdir"/usr/bin \
		|| return 1
	mv "$pkgdir"/$_gcclibexec/*gnat* "$subpkgdir"/$_gcclibexec/ \
		|| return 1
	mv "$pkgdir"/$_gcclibdir/*ada* "$subpkgdir"/$_gcclibdir/ || return 1
	mv "$pkgdir"/usr/bin/*gnat* "$subpkgdir"/usr/bin/ || return 1
}

md5sums="3b2386c114cd74185aa3754b58a79304  gcc-4.8.1.tar.bz2
f8ab875eee18868b319ad04dc19adcf6  gcc-4.8.1-piepatches-v0.5.6.tar.bz2
441c76504e1d97170117c294e65c7a72  gcc-4.4.3-specs-0.2.0.tar.bz2
d7cd6a27c8801e66cbaa964a039ecfdb  ecj-latest.jar
f28e9334c58ce14f69a9e988026bc772  12_all_default-warn-trampolines.patch
7eb9ad894dfdf1b3d4a8a407a339a6f1  15_all_libgfortran-Werror.patch
452e457a0ac45e6f8f75eb6d6ba4d04b  16_all_libgomp-Werror.patch
8975abab9ee8ae5028a55e84b930cf02  48_all_x86_pr53113_libitm-avx.patch
326fa30475ba206cc2ef1666ec4314c8  50_all_libiberty-asprintf.patch
d8692c56f04b92667096f59d843e95c5  51_all_libiberty-pic.patch
ca4f395856bbb80d23398246572c30fa  67_all_gcc-poison-system-directories.patch
9c443d9d0fba2ce97b12f674b7d14c7e  74_all_gcc48_cloog-dl.patch
a695d7648509b4f8e18b389a19e6037c  gcc-spec-env.patch
eb425b34df5a1646f27a7285e1a78916  gcc-4.8-musl.patch
f925101cc9d21435c97a0bbd3542bd81  gcc-4.8-musl-fix-arm-interp.patch
504c7dd8651c5d98229892c4cd9ea591  libgcc-always-build-gcceh.a.patch
ab83248e10b2bf4b3d9240de0fefb52b  pt_gnu_eh_frame.patch
6cc2385c5bbd6d0da6eaedd53c8bf547  uclibc-getipinfo.patch
32e8e4c0e23ed8f5de95a591cb30f1da  gcc-4.6-pr32219.patch
79d00ee1284fac5192456f7f7d3908aa  gcc-4.8-dynamic-linker.patch
2c6cb49bb9bfd8b6e690222e66ccc901  boehem-gc-uclibc.patch
2e2b787bb988d9007c9f7ce42178dfe6  gcc-pure64.patch
0a2041bbf83648e6c4f6d3484f7249ca  gcc-4.8-build-args.patch
4aea37d334ab00bb6bba37cd8c481367  fix-cxxflags-passing.patch
87684048ecaaf0e046983bc2782292dd  fix-cxxflags-for-target.patch
750e903d5a53ba32618c2142cdd914e1  ada-no-pie.patch
2e946abc09924d91988a9b7fd5824ef3  ada-fixes.patch
d77c99bf7c03d082a540aaba1193be40  ada-crossbuild.patch
20e2731c02ce50739ebdead2795f9c41  ada-shared.patch
4e47bdae120129462244da0d89a573b3  ada-musl.patch"
sha256sums="545b44be3ad9f2c4e90e6880f5c9d4f0a8f0e5f67e1ffb0d45da9fa01bb05813  gcc-4.8.1.tar.bz2
4aa0ab0f114b0ff8af5d0c19c18930e3fcd5e5b0956f56ca24e58e5a243964b1  gcc-4.8.1-piepatches-v0.5.6.tar.bz2
f6c7cb99beead66dd4d06f7004c5731a9360330cbe878ce79792c618e008eed2  gcc-4.4.3-specs-0.2.0.tar.bz2
98fd128f1d374d9e42fd9d4836bdd249c6d511ebc6c0df17fbc1b9df96c3d781  ecj-latest.jar
ce7774aa13be5da274220258772ccbdd6f54abdad97a3798ba282865c809f042  12_all_default-warn-trampolines.patch
8b1450d5a7756af2b890588005690785a663601e2b1533671b609aa8cce0f718  15_all_libgfortran-Werror.patch
1f106fe03cede7c697bde7d81732e0d3bb2c7197e4967789182a5fd8db532900  16_all_libgomp-Werror.patch
cead5b092ab4881e8b830d51c0037a8fb149bab632e7661aa505ba574295e0e4  48_all_x86_pr53113_libitm-avx.patch
38f7c0841d99c6dd3610cd5618b68dd6579713c018eaed856217fc4263bcf6a6  50_all_libiberty-asprintf.patch
da6bbb5dc654d5e1df8ecae5c9ebb56265426c405931f14f5878248b8c79f78d  51_all_libiberty-pic.patch
8ba9dec0ecc2620c8ab1dfbeb0708dd4c29021e57d2e0ea23720108b1db3462e  67_all_gcc-poison-system-directories.patch
7d129093a6682418da9313611a90e3052855d8af4505d401f7b8b6a64e8f7b17  74_all_gcc48_cloog-dl.patch
64b01f29fb853fee5ecda998b66eeaa7ec86ff1fc3b21432bfd69eb543c93e6a  gcc-spec-env.patch
855ba44a4060a70213c39c6739751e8bfa8a8069f6a9712130df9a9b0f1070bc  gcc-4.8-musl.patch
6693a67eeff123e0261720463c51e8083bba6e93fed1e65f245731d23e8ff166  gcc-4.8-musl-fix-arm-interp.patch
1975189156d70f5428cb7f1516533965d1c8734f3009fc89a9b8e289b72326f1  libgcc-always-build-gcceh.a.patch
78e75cb378bdfe870c98ab3cffef37f54be729d3912979191f27ca00651ad6c4  pt_gnu_eh_frame.patch
53184f842477569973c232dac7c85e71b0018cbe5c4962f95dd9e0273f42083e  uclibc-getipinfo.patch
89207a8b62137a857ee2c43499d6b5247d37b530d1338844dbb330a6846b2ad2  gcc-4.6-pr32219.patch
f3863b997acf8fdf5ad1d3626b41a8a0670b896505e9b7afb517916c7599fb1c  gcc-4.8-dynamic-linker.patch
02751ccf223dcfc898c0ce2214cd0859d275e90b742f1a66e38db5c50f94b38c  boehem-gc-uclibc.patch
f5473c6aea96d5137defd68898ba31042944a3f3ed26c05b964a40bd876c6f47  gcc-pure64.patch
bd7a6f514fcc457f29e5fda157203f3bcd013aeba5d53b3459196eef3ce752ab  gcc-4.8-build-args.patch
a395ba4cf047c48cac56985726fddf0948f4425c9f1a0c9ddba1812b2b3d8300  fix-cxxflags-passing.patch
a5678380e887dbf600c59273d382e81c10f89d28e422238a617d0a43ad5c5a69  fix-cxxflags-for-target.patch
de3c8606015ebda0dc574f904aa4d23c44c5e261b34dce2ef4d08eed21cb99b9  ada-no-pie.patch
556fcc3937d067e177acee7bbeeff80b0c5d445280c82e5af590db0f68143ebb  ada-fixes.patch
324524490c60d84ef040f79589e0f93fbaeb253dbe031484afaf963b881047e9  ada-crossbuild.patch
d6c7fc1820a4fa285297c299c255fe2f19ce1695486f20edd098252a97545e6a  ada-shared.patch
f20c34f3e0a1bf717f5e22fd66b57c8b69f0411d063203c017ed8209f349e1d4  ada-musl.patch"
sha512sums="1becc874aad77a469069b6d9da4158aae9e013e24afa9364fe4feff9a5094d0673ee7694b3840e892c860f73a56b3ece6174338a8214438c42b9f86dd6c35ea7  gcc-4.8.1.tar.bz2
274e16ef5136348415898d4e5a3bc71763078de8ae7c18645e8b07f54d705609b08c0efadbdb55117fdfb5f6490529b446d09def448174c2747372829d029a9d  gcc-4.8.1-piepatches-v0.5.6.tar.bz2
779ecb0a064d2138b54569c8ae501975b8a6b72e5a3acbf8597619a8db77ee42ef9b0e62608d5192a15e4393e7dfc009bb50b994782236faa744b2c46b5fe517  gcc-4.4.3-specs-0.2.0.tar.bz2
d4e1bf7538ace56e3d69fa91da5bbd16c272923b4de0a9d8dee23ea2b75f9f38c603de72fc4061df49285c450b63f3df211cee5270e9fffc5447445d1a9c9e4e  ecj-latest.jar
5069e4b741488913a646a9b5d871af8e7f7a606158ea09305d0ddd46257c5b659770627bc2ca3abeaae039da1717b3ba6c9cd90554a441da74eb4ecf24c13074  12_all_default-warn-trampolines.patch
c18a99b7303a734fe4dca9d4e90e21d18e5bd71c7d91e1a26c86b1354c73f567590a875941bfe64ce59f0393023b91c606c96b30885c55b98a790c3ab0c84ca7  15_all_libgfortran-Werror.patch
433404fd9bfa172d69fff4a5505e8648cbbbf5f052d2b4235608ff7af0c4063d557d25d80c85c5bd0d1e1ed64b568e7bbc0cdbce11cc74db4c0189af3a01634a  16_all_libgomp-Werror.patch
ff16f259fff8d78230593eee8641eab5a72c5c517c6ac5f09597edbc624d964b33f185a0dd5772d6029f757a5edb66431b3eab77dac71e76a0ef155bb7443d2c  48_all_x86_pr53113_libitm-avx.patch
c6c314a2d24531b4286436dec7189f83e443c4cfa9b88339a4c324c2d40812d766ed44dcfd4a0c3b67695bb76969a4d8a9784ff95876ceba23def305ef8a48f8  50_all_libiberty-asprintf.patch
0a0bc72b9366158f5d23fff1928e756fdd212433bac6ab1f00d632f241382820db8db5d475ddf11ea020eaf7e2e71b12fb9b1c3c870cf84adf6c2b16f15aabca  51_all_libiberty-pic.patch
47331f034e44aea16f1cbb67d9176f8ce8832d6cb7c13a8d3b438efaa3269cee177bd1dd8a9f353ac19cc6b3db436a995de9ae66d493d2772188630b09fbff51  67_all_gcc-poison-system-directories.patch
6e19b2dc43cff03a6b3ca4e18f76dcfd5b0682c15aac493e94f5c679f5b0a585fbaa09345d200182c0f47541ced2d714b78d65da130bc7d2e9f810362e07037d  74_all_gcc48_cloog-dl.patch
ce9c1f923e2c6d17347ec2d3d8482351a9644194b2753627389294d43bb4f11b9c2ef41eda1b46ad83d09901a0bedebd5b6b8a57a198646030ab61e8d2d8cb48  gcc-spec-env.patch
7ef97a8c79e3236ecd275e94ab87e65286744e8779d48f65c96fd456970abae483f414fbf1e201df12ae2e400fbab5376163dc090e6d9c2740873ed49f6ace40  gcc-4.8-musl.patch
8c24d976b89b64f6c57a82b6c32f120f8bb4b8afef06ef86772df14309e04f5b3a62dbc7a953813666031efbedaae862bb3aa4d5242c7511231ecf61f87a7d77  gcc-4.8-musl-fix-arm-interp.patch
d08d7ead2de0429e5c9055d5b029ec2be9a8c821d22cecaf9b51f633652c493333f98963d9267fa2fa63850c50ae5eefd5f59e5910ec10d20044dac082182a8b  libgcc-always-build-gcceh.a.patch
8464197f01d107872dfa6b47e86e95ae8d75c053527bafbdb7a86bcc7aff4bc5b20a8ec40d6e48d1ad455b0187a3cba9db337cff6c0a6245507c4533e4832d99  pt_gnu_eh_frame.patch
e3edf75df1f27af8771bd263e1bd607f6207c4eb5b2a5e11032577deba43ea201825e3b5008a720105f24e49d2821dd77a61c7ceba7ed91b3621c0dbd9292fc6  uclibc-getipinfo.patch
9fc5e32f2573ae67b6cf22119d636d10a47c42718635bceff7d457a93a3f664ae1ed10e154f70964ba2d26b0de04f879a8c05de6411112760d40433373dd0a80  gcc-4.6-pr32219.patch
db84b6582950378116723116be4f277881f7bdd05add216c58c2b86c0fb3a70abeb7798507a74a64b9b949d5b311167bd4df84a048d2d2d32f5836ea1d34c42e  gcc-4.8-dynamic-linker.patch
e1d6a450dfb40b134ad7f759c4c10174d2490b0093fe47cb33479245f26a3a8c54ebcf6255943c0ccfcb5095600d1c05e530baeed35609c8ffe75caac8e57c49  boehem-gc-uclibc.patch
4a5aeff0399782c752e6e3f2f48d984b2056dfb5d229b23a24eee1562d241339989b2203f139821cfc03c9b25c9bd7da6ccbbdc7a09d242e4de7f0d606c6f63c  gcc-pure64.patch
abe9aaf9aa956058d0386a4396a511d176a46bb3906b90e952383646cdc158cbeb0a5dc616a1ccb1ca7d49fd0b5e351532aa15a3b13362abbf1ca4266f54a687  gcc-4.8-build-args.patch
35d6d59f0b7b968f282f56767c9e0823a7bdc5aa0d450aca50fbd802649a7ca608b47671244a3faa208a9b0d6832cabb5a22724157dc817b2c0ad63d09f93282  fix-cxxflags-passing.patch
c731f4aaaa65c8950e1b2bd9331410f92d378fd8c7e718532dccaa27ee11984d51d74216c3611e89a802325b81d7f184116839dce2dab50cae9b643c20a82fe7  fix-cxxflags-for-target.patch
4938a38d6ffebebcd8b07a60e7d300935ef57056e5820145c6668dd5141e272d73a67a1bfe84dafda77212058eee768a03aba4356e52867b40a9ba9216a96714  ada-no-pie.patch
0541b4e31164d3fed653e811c1ededcf0dc578220f11f4ca3d8a293b2cf1ebc62b4259afd103a5d24092cc738a5760efdd5310a6383d0d8152309562d04b0525  ada-fixes.patch
4d411563f6a3ea06bc3a1f4fa77d10250cc275e2496df6039d93f9b2229bc1f5334e484494dbd08881cf046f98aaca8bdddaa6b4a8f947b936d0bdc9e91f2f2b  ada-crossbuild.patch
3f5bc334d9f73d06f5f7c876738d02356acdd08958bea0e4d2095ebf15c2c2ec4e411abdae0297505ae9a1699ca01b17338e853184e84663203b192b0d35fc19  ada-shared.patch
7f6dc922a2c80b1c8c5ed0b6d6e4c1e672984f54bb217f28517929af129892e42c45f7aea4b9c50d8bbc008384b7ae19e1475c79f08b78775709720fe317c8f3  ada-musl.patch"