123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- # 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
- }
|