milis/talimatname/genel/c/ct-aarch64-musl/talimat

320 lines
8.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Tanım: aarch64 mimari için musl C kütüphaneli çapraz derleme araçları
# URL: http://gcc.gnu.org
# Paketçi: milisarge
# Gerekler:
# Grup: geliştirme
isim=ct-aarch64-musl
surum=1.0
devir=1
gcc_surum=6.4.0
musl_surum=1.1.18
binutils_surum=2.29.1
linux_surum=4.13.13
gmp_surum=6.1.2
mpfr_surum=3.1.6
mpc_surum=1.0.3
isl_surum=0.18
kaynak=(http://ftp.gnu.org/gnu/gcc/gcc-$gcc_surum/gcc-${gcc_surum}.tar.xz
http://ftp.gnu.org/gnu/binutils/binutils-${binutils_surum}.tar.xz
http://www.kernel.org/pub/linux/kernel/v4.x/linux-${linux_surum}.tar.xz
http://ftp.gnu.org/gnu/gmp/gmp-${gmp_surum}.tar.xz
http://ftp.gnu.org/gnu/mpfr/mpfr-${mpfr_surum}.tar.xz
http://ftp.gnu.org/gnu/mpc/mpc-${mpc_surum}.tar.gz
http://isl.gforge.inria.fr/isl-${isl_surum}.tar.bz2
https://www.musl-libc.org/releases/musl-${musl_surum}.tar.gz
mpfr-patch01
0001-libgcc_s.patch
0005-libatomic-test-fix.patch
0006-libgomp-test-fix.patch
0007-libitm-test-fix.patch
0008-libvtv-test-fix.patch)
derle() {
# http://clfs.org/view/clfs-embedded/arm/cross-tools/cflags.html
# bayrakların sıfırlanması
unset CC CXX CFLAGS CXXFLAGS LDFLAGS
LC_ALL=C
LANGUAGE=C
export LC_ALL LANGUAGE
CTCC="${CTCC:=cc}"
CTCXX="${CTCXX:=c++}"
CTCFLAGS="${CTCFLAGS:=-g0 -Os}"
CTCXXFLAGS="${CTCXXFLAGS:=$CTCFLAGS}"
CTLDFLAGS="${CTLDFLAGS:=-s}"
arch="$(uname -m)"
jobs=1
# vendor-üretici varsa sonek tire konulacak
test -n "$VENDOR" && VENDOR="${VENDOR}-"
#
# x86_64: x86_64 (generic).
#
CLFS_ARCH=arm64
libc_arch=aarch64
libSuffix=""
multilib_options="--disable-multilib --with-multilib-list="
gcc_options="--enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419"
CLFS_TARGET=aarch64-${VENDOR}linux-musl
CLFS_HOST="$(${CTCC} -dumpmachine)"
crossdir=${PKG}/cross-tools/${CLFS_TARGET}
echo "değişken kontrolü"
printf "%s\n" \
"CTCC: $CTCC" \
"CTCXX: $CTCXX" \
"CTCFLAGS: $CTCFLAGS" \
"CTCXXFLAGS: $CTCXXFLAGS" \
"CTLDFLAGS: $CTLDFLAGS" \
"Host: ${CLFS_HOST}" \
"Target: ${CLFS_TARGET}" \
"Cross directory: $crossdir"
# http://clfs.org/view/clfs-embedded/arm/cross-tools/sysroot.html
mkdir -p ${PKG}/cross-tools/${CLFS_TARGET}
# izinleri ayarla
umask 022
PATH="${crossdir}/bin:${PATH}"
export PATH VENDOR
mkdir -p -- "${crossdir}/${CLFS_TARGET}"
if test ! -e "${crossdir}/${CLFS_TARGET}/usr"
then
ln -sf . "${crossdir}/${CLFS_TARGET}/usr"
fi
# multilib için lib ekinin ayarlanması
case $arch in
i586 | *x32 | x86_64 )
if test ! -e "${crossdir}/lib" -a -n "$libSuffix"
then
ln -sf lib${libSuffix} "${crossdir}/lib"
fi
;;
esac
###############################################################
# https://notabug.org/dragora/dragora/src/master/stages/0/01-binutils#L30
# binutils derlenmesi
mkdir $SRC/binutils-build
cd $SRC/binutils-build
$SRC/binutils-${binutils_surum}/configure \
AR="ar" AS="as" CC="$CTCC" CXX="$CTCXX" \
CFLAGS="$CTCFLAGS" CXXFLAGS="$CTCXXFLAGS" LDFLAGS="$CTLDFLAGS" \
--prefix="${crossdir}" \
--host=${CLFS_HOST} \
--target=${CLFS_TARGET} \
--enable-deterministic-archives \
--disable-compressed-debug-sections \
--disable-werror \
--disable-nls \
--disable-ppl-version-check \
--disable-cloog-version-check \
--with-sysroot="${crossdir}/${CLFS_TARGET}" \
$multilib_options
# https://sourceware.org/bugzilla/show_bug.cgi?id=15345
# texinfolara gerek yok MAKEINFO=true . hata olursa tekrarlayınca çözülüyor.
make -j${jobs} MAKEINFO=true || make -j${jobs} MAKEINFO="true"
make -j${jobs} MAKEINFO=true install
cd $SRC
rm -rf $SRC/binutils-build
###############################################################
# linux-header
cd -- "${SRC}/linux-${linux_surum}"
make mrproper
make headers_check ARCH="${CLFS_ARCH}"
make headers_install ARCH="${CLFS_ARCH}" INSTALL_HDR_PATH=dest
# linux header kopyalanması
mkdir -p -- "${crossdir}/${CLFS_TARGET}/include"
cp -r dest/include/* "${crossdir}/${CLFS_TARGET}/include"
# gereksizleri sil
find "${crossdir}/${CLFS_TARGET}/include" -type f \( -name .install -o -name ..install.cmd \) -exec rm -f {} +
###############################################################
# http://clfs.org/view/clfs-embedded/arm/cross-tools/gcc-static.html
# https://notabug.org/dragora/dragora/src/master/stages/0/03-gcc-static#L75
# gcc-static -0
cd $SRC
cp -rf -- "${SRC}/gcc-${gcc_surum}" "${SRC}/0gcc-${gcc_surum}"
cp -rf -- "${SRC}/gmp-${gmp_surum}" "${SRC}/0gcc-${gcc_surum}/gmp"
cp -rf -- "${SRC}/mpfr-${mpfr_surum}" "${SRC}/0gcc-${gcc_surum}/mpfr"
cp -rf -- "${SRC}/mpc-${mpc_surum}" "${SRC}/0gcc-${gcc_surum}/mpc"
cp -rf -- "${SRC}/isl-${isl_surum}" "${SRC}/0gcc-${gcc_surum}/isl"
cd -- "${SRC}/0gcc-${gcc_surum}"
cd mpfr
rm -f PATCHES
patch -p1 < "$SRC/mpfr-patch01"
cd ..
# Apply specific patches for the support in musl.
#
# http://port70.net/~nsz/musl/gcc-trunk/
#
patch -Np1 -i "${SRC}/0001-libgcc_s.patch"
patch -Np1 -i "${SRC}/0005-libatomic-test-fix.patch"
patch -Np1 -i "${SRC}/0006-libgomp-test-fix.patch"
patch -Np1 -i "${SRC}/0007-libitm-test-fix.patch"
patch -Np1 -i "${SRC}/0008-libvtv-test-fix.patch"
# Build dizininde ayrı derlenir
rm -rf ../gcc-build
mkdir ../gcc-build
cd ../gcc-build
../0gcc-${gcc_surum}/configure \
AR="ar" CC="$CTCC" CXX="$CTCXX" \
CFLAGS="$CTCFLAGS" CXXFLAGS="$CTCXXFLAGS" LDFLAGS="$CTLDFLAGS" \
--prefix="$crossdir" \
--libdir="${crossdir}/lib${libSuffix}" \
--build=${CLFS_HOST} \
--host=${CLFS_HOST} \
--target=${CLFS_TARGET} \
--enable-languages=c \
--enable-clocale=generic \
--disable-shared \
--disable-threads \
--disable-decimal-float \
--disable-libgomp \
--disable-libssp \
--disable-libatomic \
--disable-libitm \
--disable-libquadmath \
--disable-libvtv \
--disable-libcilkrts \
--disable-libstdcxx \
--disable-gnu-indirect-function \
--disable-libmudflap \
--disable-libsanitizer \
--disable-libmpx \
--disable-nls \
--with-sysroot="${crossdir}/${CLFS_TARGET}" \
--with-newlib \
--without-headers \
--without-ppl \
--without-cloog \
$multilib_options \
$gcc_options
# tekrar make yapılınca derleme başarılı oluyor.
make -j${jobs} all-gcc || (make -j${jobs} all-mpfr;make -j${jobs} all-gcc || (make -j${jobs} all-isl;make -j${jobs} all-gcc))
make -j${jobs} all-target-libgcc
make install-gcc
make install-target-libgcc
cd $SRC
rm -rf $SRC/gcc-build
rm -rf ${SRC}/0gcc-${gcc_surum}
###############################################################
# http://clfs.org/view/clfs-embedded/arm/cross-tools/libc.html
# https://notabug.org/dragora/dragora/src/master/stages/0/04-musl#L25
# musl
cd -- "${SRC}/musl-${musl_surum}"
./configure CC="${CLFS_TARGET}-gcc" CROSS_COMPILE="${CLFS_TARGET}-" \
--prefix= \
--syslibdir=/lib \
--enable-debug \
--enable-optimize
make -j${jobs}
make DESTDIR="${crossdir}/${CLFS_TARGET}" install
###############################################################
# http://clfs.org/view/clfs-embedded/arm/cross-tools/gcc-final.html
# gcc-son
cd -- "${SRC}/gcc-${gcc_surum}"
# son adımda linkleyerek yapabiliriz
ln -s ../gmp-${gmp_surum} gmp
ln -s ../mpfr-${mpfr_surum} mpfr
ln -s ../mpc-${mpc_surum} mpc
ln -s ../isl-${isl_surum} isl
# Apply patches for MPFR
cd mpfr
rm -f PATCHES
patch -p1 < "$SRC/mpfr-patch01"
cd ..
# Apply specific patches for the support in musl.
#
# http://port70.net/~nsz/musl/gcc-trunk/
#
patch -Np1 -i "${SRC}/0001-libgcc_s.patch"
patch -Np1 -i "${SRC}/0005-libatomic-test-fix.patch"
patch -Np1 -i "${SRC}/0006-libgomp-test-fix.patch"
patch -Np1 -i "${SRC}/0007-libitm-test-fix.patch"
patch -Np1 -i "${SRC}/0008-libvtv-test-fix.patch"
rm -rf $SRC/gcc-build
mkdir $SRC/gcc-build
cd $SRC/gcc-build
option_list="
--prefix="$crossdir" \
--libdir="${crossdir}/lib${libSuffix}" \
--build=${CLFS_HOST} \
--host=${CLFS_HOST} \
--target=${CLFS_TARGET} \
--enable-languages=c,c++ \
--enable-clocale=generic \
--enable-tls \
--enable-libstdcxx-time \
--enable-checking=release \
--enable-fully-dynamic-string \
--disable-symvers \
--disable-gnu-indirect-function \
--disable-libmudflap \
--disable-libsanitizer \
--disable-libmpx \
--disable-nls \
--disable-lto-plugin \
--with-sysroot="${crossdir}/${CLFS_TARGET}" \
$multilib_options \
$gcc_options
"
$SRC/gcc-${gcc_surum}/configure AR="ar" \
CFLAGS="$CTCFLAGS" CXXFLAGS="$CTCXXFLAGS" LDFLAGS="$CTLDFLAGS" \
$option_list
unset option_list
make -j${jobs} all \
AS_FOR_TARGET="${CLFS_TARGET}-as" \
LD_FOR_TARGET="${CLFS_TARGET}-ld"
make install
}