This is the first part of an effort to allow bootstrapping openjdk without downloading any binaries. The next part will be an openjdk7 package that will be used to bootstrap openjdk8. After that, we can proceed to add the missing parts to go all the way up to 11. [ci skip]
369 lines
13 KiB
Bash
369 lines
13 KiB
Bash
# Template file for 'gcc6'
|
|
_majorver=6
|
|
_minorver=${_majorver}.5
|
|
# old isl is necessary
|
|
_isl_version=0.16
|
|
pkgname=gcc6
|
|
version=${_minorver}.0
|
|
revision=1
|
|
wrksrc=gcc-${version}
|
|
hostmakedepends="automake libtool perl flex 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
|
|
http://isl.gforge.inria.fr/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
|
|
patch_args="-Np1"
|
|
nocross=yes
|
|
|
|
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
|
|
}
|
|
}
|