0
0
mirror of https://github.com/termux-pacman/glibc-packages.git synced 2025-02-24 02:45:02 +00:00
2024-11-23 18:43:33 +03:00

163 lines
4.9 KiB
Bash

pkgname=cgt
pkgver=14.2.1
pkgrel=0
pkgdesc='Cross GCCs for Termux (only for Linux)'
arch=(x86_64)
url='https://gcc.gnu.org/'
license=(GPL LGPL FDL)
_commit=694613a7f9adfa9c87e733adc63839c8801f2b5c
source=(git+https://sourceware.org/git/gcc.git#commit=${_commit}
gcc-configure.patch
config.sub.patch
configure.patch
set_dynamic_path.patch
cgct-app-prefix.cc
cgct-app-prefix.h)
sha256sums=('085eba5de615f6f74729f96e8c301808159b72382ad331ebec9c79c2bd08e20d'
'b0d2153d28248189ad1f000194c9b12aa7cea04c09c9f36a2e78b2c25b771392'
'a688899b982608089ee76a97e18c019f596ccb5cad055916a6ad6d387568b3dc'
'8ad880e14a32a3b5f3ab8039df89b22479c4a92bfbe6b3f758409264ddef5479'
'aa87377b2a73e303c45d9a86496b94193799083324a442572768bd1b704a71e8'
'732e15a76056348911f60825c377c0378f6dad57b29eb86fcc7447cf8172f171'
'9fb91df134d096bf493844812617b5aed9ce5d6ccd564f8a3a11c8d9812be744')
depends=('cbt')
optdepends=('glibc-cgct')
groups=('cgct')
targets=(aarch64-linux-gnu arm-linux-gnueabihf x86_64-linux-gnu i686-linux-gnu)
options=(libtool staticlibs !emptydirs)
prepare() {
[ ! -d gcc ] && ln -s gcc-${pkgver} gcc
for i in *.patch; do
patch -Np1 -i ${srcdir}/$i
done
cp ./cgct-app-prefix.{cc,h} ./gcc/gcc/
cd gcc
sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
sed -i '/m64=/s/lib64/lib/' gcc/config/i386/t-linux64
sed -i '/lp64=/s/lib64/lib/' gcc/config/aarch64/t-aarch64-linux
for i in "'\${exec_prefix}'/\${target_noncanonical}" \
'${exec_prefix}/'{'${host_alias}','${target_noncanonical}'} \
'$(exec_prefix)/'{'$(host_noncanonical)','$(target_noncanonical)','$(target_alias)'} \
'${prefix}/${target_alias}'; do
sed -i "s|${i}|${i%%/*}|" $(grep -s -r -l "${i}")
done
echo "${pkgver}" > gcc/BASE-VER
echo "${_commit}" > gcc/DEV-PHASE
}
build() {
unset CFLAGS CXXFLAGS AR LD CC CXX
CFLAGS="-O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -fstack-clash-protection"
CXXFLAGS="${CFLAGS} -Wp,-D_GLIBCXX_ASSERTIONS"
clean_prefix || true
for target in ${targets[@]}; do
arch_build=${target/-*}
CGCT_PREFIX=${CGCT_PATH}/${arch_build}
mkdir gcc-${arch_build} || true
cd gcc-${arch_build}
for pkg in glibc linux-api-headers-glibc libxcrypt-glibc; do
install_gpkg ${arch_build} ${pkg}
done
FLAGS_FOR_TARGET="-I$GLIBC_PREFIX/include -L$GLIBC_PREFIX/lib -Wl,-rpath=$GLIBC_PREFIX/lib"
CONFIGFLAG=""
case "$arch_build" in
"aarch64") CONFIGFLAG="--with-arch=armv8-a --enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419";;
"arm") CONFIGFLAG="--with-arch=armv7-a --with-float=hard --with-fpu=neon";;
"x86_64") CONFIGFLAG="--with-arch=x86-64";;
"i686") CONFIGFLAG="--with-arch=i686";;
esac
"$srcdir"/gcc/configure \
--host=cgct \
--build=${CHOST} \
--target=${target} \
--prefix=${CGCT_PREFIX} \
--with-local-prefix=${CGCT_PREFIX} \
--libdir=${CGCT_PREFIX}/lib \
--libexecdir=${CGCT_PREFIX}/lib \
--includedir=${GLIBC_PREFIX}/include \
--with-bugurl=https://github.com/termux-pacman/glibc-packages/issues \
$CONFIGFLAG \
--enable-languages=c,c++ \
--enable-checking=release \
--enable-threads=posix \
--enable-lto \
--disable-multilib \
--disable-bootstrap \
--disable-nls \
--enable-clocale=gnu \
--enable-default-pie \
--enable-default-ssp \
--with-system-zlib \
--enable-__cxa_atexit \
--enable-linker-build-id \
--enable-plugin \
--with-linker-hash-style=gnu \
--enable-gnu-indirect-function \
--enable-gnu-unique-object \
--enable-libstdcxx-backtrace \
--enable-shared \
--disable-werror \
--disable-libssp \
--disable-libstdcxx-pch \
--disable-libunwind-exceptions \
CFLAGS_FOR_TARGET="$FLAGS_FOR_TARGET $CFLAGS" \
CXXFLAGS_FOR_TARGET="$FLAGS_FOR_TARGET $CXXFLAGS" \
LD_FOR_TARGET=${CGCT_PREFIX}/bin/ld \
AS_FOR_TARGET=${CGCT_PREFIX}/bin/as \
AR_FOR_TARGET=${CGCT_PREFIX}/bin/ar \
RANLIB_FOR_TARGET=${CGCT_PREFIX}/bin/ranlib \
NM_FOR_TARGET=${CGCT_PREFIX}/bin/nm \
OBJCOPY_FOR_TARGET=${CGCT_PREFIX}/bin/objcopy \
OBJDUMP_FOR_TARGET=${CGCT_PREFIX}/bin/objdump \
CC=x86_64-linux-gnu-gcc \
CXX=x86_64-linux-gnu-g++ \
AR=ar \
LD=ld \
OBJCOPY=objcopy \
OBJDUMP=objdump
make
clean_prefix
cd ..
done
}
package() {
clean_prefix || true
for target in ${targets[@]}; do
arch_build=${target/-*}
CGCT_PREFIX=${CGCT_PATH}/${arch_build}
cd gcc-${arch_build}
for pkg in glibc linux-api-headers-glibc libxcrypt-glibc; do
install_gpkg ${arch_build} ${pkg}
done
make DESTDIR="$pkgdir" install-gcc \
install-target-{libgcc,libstdc++-v3,libgomp,libquadmath,libatomic,libitm,libsanitizer,libvtv}
for i in gcc g++; do
ln -s ${target}-${i} $pkgdir/${CGCT_PREFIX}/bin/${i}
done
ln -s gcc $pkgdir/${CGCT_PREFIX}/bin/cc
ln -s g++ $pkgdir/${CGCT_PREFIX}/bin/cpp
rm -fr $pkgdir/${CGCT_PREFIX}/share
clean_prefix
cd ..
done
replace_hard_with_symbolic "$pkgdir"
}