370 lines
13 KiB
Bash
370 lines
13 KiB
Bash
# Template file for 'gcc6'
|
|
# old isl is necessary
|
|
_isl_version=0.16
|
|
pkgname=gcc6
|
|
version=6.5.0
|
|
revision=1
|
|
_majorver="${version%%.*}"
|
|
_minorver="${version%.*}"
|
|
wrksrc=gcc-${version}
|
|
hostmakedepends="automake libtool perl flex texinfo zip unzip"
|
|
makedepends="gmp-devel mpfr-devel libmpc-devel zlib-devel"
|
|
depends="binutils"
|
|
short_desc="GNU C Compiler (6.x)"
|
|
maintainer="q66 <daniel@octaforge.org>"
|
|
license="GFDL-1.2-or-later, GPL-3.0-or-later, LGPL-2.1-or-later, EPL"
|
|
homepage="http://gcc.gnu.org"
|
|
distfiles="
|
|
${GNU_SITE}/gcc/gcc-${version}/gcc-${version}.tar.xz
|
|
${SOURCEFORGE_SITE}/libisl/isl-${_isl_version}.tar.bz2
|
|
https://sourceware.org/pub/java/ecj-4.9.jar"
|
|
checksum="
|
|
7ef1796ce497e89479183702635b14bb7a46b53249209a5e0f999bebf4740945
|
|
3899e68047d0a18db5a7d73bdabcbe9246865e73e86efbd95387817d342fd554
|
|
9506e75b862f782213df61af67338eb7a23c35ff425d328affc65585477d34cd"
|
|
skip_extraction="ecj-4.9.jar"
|
|
nopie=yes
|
|
lib32disabled=yes
|
|
nocross=yes
|
|
python_version=2 #unverified
|
|
|
|
subpackages="gcc6-gcj gcc6-gcj-ecj libgcj-devel libgcj gcc6-gcj-jdk-compat"
|
|
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
i686) _triplet="i686-pc-linux-gnu";;
|
|
i686-musl) _triplet="i686-linux-musl";;
|
|
x86_64) _triplet="x86_64-unknown-linux-gnu";;
|
|
x86_64-musl) _triplet="x86_64-linux-musl";;
|
|
armv5tel) _triplet="arm-linux-gnueabi";;
|
|
armv5tel-musl) _triplet="arm-linux-musleabi";;
|
|
armv6l) _triplet="arm-linux-gnueabihf";;
|
|
armv7l) _triplet="armv7l-linux-gnueabihf";;
|
|
armv6l-musl) _triplet="arm-linux-musleabihf";;
|
|
armv7l-musl) _triplet="armv7l-linux-musleabihf";;
|
|
aarch64) _triplet="aarch64-linux-gnu";;
|
|
aarch64-musl) _triplet="aarch64-linux-musl";;
|
|
ppc) _triplet="powerpc-linux-gnu";;
|
|
ppc-musl) _triplet="powerpc-linux-musl";;
|
|
ppc64le) _triplet="powerpc64le-linux-gnu";;
|
|
ppc64le-musl) _triplet="powerpc64le-linux-musl";;
|
|
ppc64) _triplet="powerpc64-linux-gnu";;
|
|
ppc64-musl) _triplet="powerpc64-linux-musl";;
|
|
mips-musl) _triplet="mips-linux-musl";;
|
|
mipshf-musl) _triplet="mips-linux-muslhf";;
|
|
mipsel-musl) _triplet="mipsel-linux-musl";;
|
|
mipselhf-musl) _triplet="mipsel-linux-muslhf";;
|
|
esac
|
|
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
*-musl) depends+=" musl-devel";;
|
|
*) depends+=" glibc-devel";;
|
|
esac
|
|
|
|
post_extract() {
|
|
mkdir -p ${wrksrc}/isl
|
|
cp -ar ${XBPS_BUILDDIR}/isl-${_isl_version}/* ${wrksrc}/isl/
|
|
# https://gcc.gnu.org/ml/java/2008-04/msg00027.html
|
|
cp ${XBPS_SRCDISTDIR}/${pkgname}-${version}/ecj-*.jar ${wrksrc}/ecj.jar
|
|
}
|
|
|
|
pre_configure() {
|
|
# _FORTIFY_SOURCE needs an optimization level.
|
|
sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" {gcc,libiberty}/configure
|
|
|
|
# old isl normally tries to call aclocal-1.14 to reconfigure itself
|
|
pushd ${wrksrc}/isl
|
|
autoreconf -if
|
|
popd
|
|
}
|
|
|
|
do_configure() {
|
|
local _args _hash
|
|
|
|
_hash=gnu
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
mipselhf-musl) _args+=" --with-arch=mips32r2 --with-float=hard"; _hash=sysv;;
|
|
mipsel-musl) _args+=" --with-arch=mips32r2 --with-float=soft"; _hash=sysv;;
|
|
mipshf-musl) _args+=" --with-arch=mips32r2 --with-float=hard";;
|
|
mips-musl) _args+=" --with-arch=mips32r2 --with-float=soft";;
|
|
armv5*) _args+=" --with-arch=armv5te --with-float=soft";;
|
|
armv6l*) _args+=" --with-arch=armv6 --with-fpu=vfp --with-float=hard";;
|
|
armv7l*) _args+=" --with-arch=armv7-a --with-fpu=vfpv3 --with-float=hard";;
|
|
aarch64*) _args+=" --with-arch=armv8-a";;
|
|
ppc) _args+=" --enable-secureplt";;
|
|
ppc-musl) _args+=" --enable-secureplt --disable-decimal-float";;
|
|
ppc64*)
|
|
_args+=" --with-abi=elfv2 --enable-secureplt"
|
|
sed -i 's/lib64/lib/' gcc/config/rs6000/linux64.h
|
|
;;
|
|
ppc64*-musl)
|
|
_args+=" --with-abi=elfv2 --enable-secureplt --disable-decimal-float"
|
|
sed -i 's/lib64/lib/' gcc/config/rs6000/linux64.h
|
|
;;
|
|
x86_64*)
|
|
sed -i 's/lib64/lib/' gcc/config/i386/linux64.h
|
|
;;
|
|
esac
|
|
|
|
export CFLAGS="${CFLAGS/-D_FORTIFY_SOURCE=2/}"
|
|
export CXXFLAGS="${CXXFLAGS/-D_FORTIFY_SOURCE=2/}"
|
|
|
|
# Disable explicit -fno-PIE, gcc will figure this out itself.
|
|
export CFLAGS="${CFLAGS//-fno-PIE/}"
|
|
export CXXFLAGS="${CXXFLAGS//-fno-PIE/}"
|
|
export LDFLAGS="${LDFLAGS//-no-pie/}"
|
|
|
|
_args+=" --build=${_triplet}"
|
|
_args+=" --program-suffix=-${_majorver}"
|
|
_args+=" --enable-version-specific-runtime-libs"
|
|
_args+=" --prefix=/usr"
|
|
_args+=" --mandir=/usr/share/man"
|
|
_args+=" --infodir=/usr/share/info"
|
|
_args+=" --libexecdir=/usr/lib"
|
|
_args+=" --libdir=/usr/lib"
|
|
_args+=" --with-gxx-include-dir=/usr/include/c++/${version}"
|
|
_args+=" --enable-languages=c,c++,java,lto"
|
|
_args+=" --enable-java-gc=boehm"
|
|
_args+=" --with-jvm-root=/usr/lib/jvm/java-1.5-gcj"
|
|
_args+=" --enable-fast-character"
|
|
_args+=" --disable-fixed-point"
|
|
_args+=" --enable-threads=posix"
|
|
_args+=" --enable-__cxa_atexit"
|
|
_args+=" --disable-multilib"
|
|
_args+=" --enable-lto"
|
|
_args+=" --disable-bootstrap"
|
|
_args+=" --with-system-zlib"
|
|
_args+=" --enable-shared"
|
|
_args+=" --enable-linker-build-id"
|
|
_args+=" --disable-werror"
|
|
_args+=" --disable-nls"
|
|
_args+=" --enable-default-pie"
|
|
_args+=" --enable-default-ssp"
|
|
_args+=" --enable-checking=release"
|
|
_args+=" --disable-libstdcxx-pch"
|
|
_args+=" --with-isl"
|
|
_args+=" --with-linker-hash-style=$_hash"
|
|
_args+=" --disable-libunwind-exceptions"
|
|
_args+=" --disable-target-libiberty"
|
|
_args+=" --disable-libquadmath"
|
|
_args+=" --disable-libsanitizer"
|
|
_args+=" --disable-vtable-verify"
|
|
_args+=" --disable-libitm"
|
|
_args+=" --disable-libgomp"
|
|
_args+=" --disable-libatomic"
|
|
_args+=" --disable-libmpx"
|
|
_args+=" --disable-libmudflap"
|
|
_args+=" --disable-libssp"
|
|
|
|
if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
|
|
_args+=" --disable-symvers"
|
|
_args+=" libat_cv_have_ifunc=no"
|
|
fi
|
|
|
|
mkdir -p build
|
|
cd build
|
|
|
|
CONFIG_SHELL=/bin/bash ${wrksrc}/configure ${_args}
|
|
}
|
|
|
|
do_build() {
|
|
cd build
|
|
make ${makejobs}
|
|
}
|
|
|
|
do_install() {
|
|
cd build
|
|
if [ "$XBPS_TARGET_WORDSIZE" = "64" ]; then
|
|
vmkdir usr/lib
|
|
ln -sfr ${DESTDIR}/usr/lib ${DESTDIR}/usr/lib64
|
|
fi
|
|
mkdir -p ${DESTDIR}/usr/include/c++/${version}
|
|
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}/${_minorver}
|
|
ln -sfr ${DESTDIR}/usr/lib/gcc/${_triplet}/${_minorver} \
|
|
${DESTDIR}/usr/lib/gcc/${_triplet}/${version}
|
|
|
|
# Ditto for c++ headers.
|
|
mv ${DESTDIR}/usr/include/c++/${version} \
|
|
${DESTDIR}/usr/include/c++/${_minorver}
|
|
ln -sfr ${DESTDIR}/usr/include/c++/${_minorver} \
|
|
${DESTDIR}/usr/include/c++/${version}
|
|
|
|
if [ -e ${DESTDIR}/usr/lib64 ]; then
|
|
rm -f ${DESTDIR}/usr/lib64
|
|
fi
|
|
|
|
# Remove python stuff
|
|
rm -rf ${DESTDIR}/usr/share/gcc-${version}/python
|
|
|
|
# Avoid conflict with gcc
|
|
mv ${DESTDIR}/usr/lib/libcc1* ${DESTDIR}/usr/lib/gcc/${_triplet}/${_minorver}
|
|
|
|
# Version info files to avoid conflicts with gcc
|
|
for f in cp-tools cpp cppinternals gcc gccinstall gccint gcj; do
|
|
if [ -f ${DESTDIR}/usr/share/info/${f}.info ]; then
|
|
mv ${DESTDIR}/usr/share/info/${f}.info \
|
|
${DESTDIR}/usr/share/info/${f}-${_majorver}.info
|
|
fi
|
|
done
|
|
|
|
# Conflicting manpages, provided by gcc
|
|
rm -rf ${DESTDIR}/usr/share/man/man7
|
|
|
|
# Provided by main libgcc
|
|
rm -f ${DESTDIR}/usr/lib/gcc/${_triplet}/${_minorver}/libgcc_s.so*
|
|
|
|
# Gcj libs need to be available in primary libdir
|
|
mv ${DESTDIR}/usr/lib/gcc/${_triplet}/${_minorver}/libgcj*.so* \
|
|
${DESTDIR}/usr/lib
|
|
mv ${DESTDIR}/usr/lib/gcc/${_triplet}/${_minorver}/libgij.so* \
|
|
${DESTDIR}/usr/lib
|
|
|
|
# Move pkg-config file into a path pkg-config knows about
|
|
mkdir -p ${DESTDIR}/usr/lib/pkgconfig
|
|
mv ${DESTDIR}/usr/lib/gcc/${_triplet}/${_minorver}/pkgconfig/*.pc \
|
|
${DESTDIR}/usr/lib/pkgconfig
|
|
rmdir ${DESTDIR}/usr/lib/gcc/${_triplet}/${_minorver}/pkgconfig
|
|
|
|
# Build ecj - needed for compat package
|
|
${DESTDIR}/usr/bin/gcj-6 -Wl,-Bsymbolic -findirect-dispatch \
|
|
-o ${DESTDIR}/usr/bin/ecj-gcj -lgcj \
|
|
--main=org.eclipse.jdt.internal.compiler.batch.Main \
|
|
${DESTDIR}/usr/share/java/ecj.jar
|
|
}
|
|
|
|
gcc6-gcj_package() {
|
|
lib32disabled=yes
|
|
depends="gcc6>=${_minorver} libgcj-devel>=${_minorver}"
|
|
short_desc+=" - Java compiler frontend"
|
|
pkg_install() {
|
|
for f in gcj jv-convert gjarsigner gjar grmic jcf-dump \
|
|
gtnameserv gcjh gnative2ascii gserialver gkeytool \
|
|
gij grmiregistry grmid gorbd gcj-dbtool gjavah \
|
|
gc-analyze gappletviewer rebuild-gcj-db aot-compile; do
|
|
vmove usr/bin/${f}-${_majorver}
|
|
done
|
|
for f in gcj jv-convert gjarsigner gjar grmic jcf-dump gjdoc \
|
|
gtnameserv gcjh gnative2ascii gserialver gkeytool \
|
|
gij grmiregistry grmid gorbd gcj-dbtool gjavah \
|
|
gc-analyze gappletviewer rebuild-gcj-db aot-compile; do
|
|
if [ -f ${DESTDIR}/usr/share/man/man1/${f}-${_majorver}.1 ]; then
|
|
vmove usr/share/man/man1/${f}-${_majorver}.1
|
|
fi
|
|
done
|
|
vmove usr/bin/${_triplet}-gcj-${_majorver}
|
|
vmove usr/lib/gcc/${_triplet}/${_minorver}/jc1
|
|
vmove usr/lib/gcc/${_triplet}/${_minorver}/jvgenmain
|
|
vmove usr/lib/gcc/${_triplet}/${_minorver}/ecj1
|
|
vmove usr/share/info/gcj-${_majorver}.info
|
|
touch ${PKGDESTDIR}/usr/share/info/dir
|
|
}
|
|
}
|
|
|
|
gcc6-gcj-ecj_package() {
|
|
short_desc+=" - Eclipse Java Compiler frontend"
|
|
pkg_install() {
|
|
vmove usr/bin/ecj-gcj
|
|
}
|
|
}
|
|
|
|
gcc6-gcj-jdk-compat_package() {
|
|
lib32disabled=yes
|
|
depends="gcc6-gcj gcc6-gcj-ecj fastjar"
|
|
short_desc+=" - JDK compatiblity layer"
|
|
pkg_install() {
|
|
local jvm_dir=$PKGDESTDIR/usr/lib/jvm
|
|
local jdk_dir=$jvm_dir/java-1.5-gcj
|
|
local jdk_bin_dir=$jdk_dir/bin
|
|
local jdk_lib_dir=$jdk_dir/lib
|
|
local jdk_inc_dir=$jdk_dir/include
|
|
local jre_dir=$jdk_dir/jre
|
|
local jre_bin_dir=$jre_dir/bin
|
|
local jre_lib_dir=$jre_dir/lib
|
|
|
|
local arch=
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
i686*) arch=i386 ;;
|
|
x86_64*) arch=amd64 ;;
|
|
arm*) arch=arm ;;
|
|
aarch64*) arch=aarch64 ;;
|
|
ppc64le*) arch=ppc64le ;;
|
|
ppc64*) arch=ppc64 ;;
|
|
ppc*) arch=ppc ;;
|
|
mipsel*) arch=mipsel ;;
|
|
mips*) arch=mips ;;
|
|
esac
|
|
|
|
mkdir -p $jdk_bin_dir $jdk_lib_dir
|
|
ln -sfr ${PKGDESTDIR}/usr/bin/gij-${_majorver} $jdk_bin_dir/java
|
|
ln -sfr ${PKGDESTDIR}/usr/bin/fastjar $jdk_bin_dir/fastjar
|
|
ln -sfr ${PKGDESTDIR}/usr/bin/grmic-${_majorver} $jdk_bin_dir/rmic
|
|
ln -sfr ${PKGDESTDIR}/usr/bin/gjavah-${_majorver} $jdk_bin_dir/javah
|
|
ln -sfr ${PKGDESTDIR}/usr/bin/gappletviewer-${_majorver} $jdk_bin_dir/appletviewer
|
|
ln -sfr ${PKGDESTDIR}/usr/bin/gjarsigner-${_majorver} $jdk_bin_dir/jarsigner
|
|
ln -sfr ${PKGDESTDIR}/usr/bin/grmiregistry-${_majorver} $jdk_bin_dir/rmiregistry
|
|
ln -sfr ${PKGDESTDIR}/usr/bin/gkeytool-${_majorver} $jdk_bin_dir/keytool
|
|
ln -sfr ${PKGDESTDIR}/usr/bin/gjar-${_majorver} $jdk_bin_dir/gjar
|
|
ln -sfr ${PKGDESTDIR}/usr/bin/gnative2ascii-${_majorver} $jdk_bin_dir/gnative2ascii
|
|
ln -sfr ${PKGDESTDIR}/usr/bin/ecj-gcj $jdk_bin_dir/javac
|
|
ln -sfr ${PKGDESTDIR}/usr/share/java/libgcj-tools-${version}.jar $jdk_lib_dir/tools.jar
|
|
|
|
# symlink headers for jni.h and so on, don't do the whole directory
|
|
# otherwise undesirable gcc include files might leak into the builds
|
|
mkdir -p $jdk_inc_dir
|
|
ln -sfr ${PKGDESTDIR}/usr/lib/gcc/${_triplet}/${_minorver}/include/gcj $jdk_inc_dir/gcj
|
|
ln -sfr ${PKGDESTDIR}/usr/lib/gcc/${_triplet}/${_minorver}/include/jawt.h $jdk_inc_dir/jawt.h
|
|
ln -sfr ${PKGDESTDIR}/usr/lib/gcc/${_triplet}/${_minorver}/include/jawt_md.h $jdk_inc_dir/jawt_md.h
|
|
ln -sfr ${PKGDESTDIR}/usr/lib/gcc/${_triplet}/${_minorver}/include/jni.h $jdk_inc_dir/jni.h
|
|
ln -sfr ${PKGDESTDIR}/usr/lib/gcc/${_triplet}/${_minorver}/include/jni_md.h $jdk_inc_dir/jni_md.h
|
|
ln -sfr ${PKGDESTDIR}/usr/lib/gcc/${_triplet}/${_minorver}/include/jvmpi.h $jdk_inc_dir/jvmpi.h
|
|
|
|
mkdir -p $jre_bin_dir $jre_lib_dir/$arch
|
|
ln -sfr ${PKGDESTDIR}/usr/bin/gij-${_majorver} $jre_bin_dir/java
|
|
ln -sfr ${PKGDESTDIR}/usr/bin/grmiregistry-${_majorver} $jre_bin_dir/rmiregistry
|
|
ln -sfr ${PKGDESTDIR}/usr/bin/gkeytool-${_majorver} $jre_bin_dir/keytool
|
|
ln -sfr ${PKGDESTDIR}/usr/share/java/libgcj-${version}.jar $jre_lib_dir/rt.jar
|
|
ln -sfr ${PKGDESTDIR}/usr/share/java/libgcj-tools-${version}.jar $jre_lib_dir/tools.jar
|
|
ln -sfr ${PKGDESTDIR}/usr/lib/gcc/${_triplet}/${_minorver}/gcj-$version-*/libjvm.so $jre_lib_dir/$arch
|
|
ln -sfr ${PKGDESTDIR}/usr/lib/gcc/${_triplet}/${_minorver}/gcj-$version-*/libjavamath.so $jre_lib_dir/$arch
|
|
ln -sfr ${PKGDESTDIR}/usr/lib/gcc/${_triplet}/${_minorver}/gcj-$version-*/classmap.db $jre_lib_dir/$arch
|
|
}
|
|
}
|
|
|
|
libgcj-devel_package() {
|
|
lib32disabled=yes
|
|
depends="libgcj-${version}_${revision}"
|
|
short_desc+=" - Java library - development files"
|
|
pkg_install() {
|
|
vmove usr/include/c++/${_minorver}/gnu
|
|
vmove usr/include/c++/${_minorver}/java
|
|
vmove usr/include/c++/${_minorver}/javax
|
|
vmove usr/include/c++/${_minorver}/sun
|
|
vmove usr/include/c++/${_minorver}/gcj
|
|
vmove usr/include/c++/${_minorver}/org
|
|
vmove "usr/lib/gcc/${_triplet}/${_minorver}/plugin/include/java"
|
|
vmove "usr/lib/gcc/${_triplet}/${_minorver}/include/jni*"
|
|
vmove "usr/lib/gcc/${_triplet}/${_minorver}/include/gcj*"
|
|
vmove "usr/lib/gcc/${_triplet}/${_minorver}/include/jvm*"
|
|
vmove "usr/lib/gcc/${_triplet}/${_minorver}/include/jawt*"
|
|
vmove usr/lib/pkgconfig/libgcj-${_majorver}.pc
|
|
}
|
|
}
|
|
|
|
libgcj_package() {
|
|
lib32disabled=yes
|
|
short_desc+=" - Java libraries"
|
|
pkg_install() {
|
|
vmove "usr/lib/libgcj*.so*"
|
|
vmove "usr/lib/libgij.so*"
|
|
vmove usr/lib/gcc/${_triplet}/${_minorver}/gcj-${version}-*
|
|
vmove usr/lib/gcc/${_triplet}/${_minorver}/logging.properties
|
|
vmove usr/lib/gcc/${_triplet}/${_minorver}/libgcj.spec
|
|
vmove usr/lib/gcc/${_triplet}/${_minorver}/security/classpath.security
|
|
vmove usr/share/java
|
|
}
|
|
}
|