talimat 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. # Tanım: x86_64 mimari için musl C kütüphaneli çapraz derleme araçları
  2. # URL: http://gcc.gnu.org
  3. # Paketçi: milisarge
  4. # Gerekler:
  5. # Grup: geliştirme
  6. isim=ct-x86_64-musl
  7. surum=1.0
  8. devir=1
  9. gcc_surum=6.4.0
  10. musl_surum=1.1.18
  11. binutils_surum=2.29.1
  12. linux_surum=4.13.13
  13. gmp_surum=6.1.2
  14. mpfr_surum=3.1.6
  15. mpc_surum=1.0.3
  16. isl_surum=0.18
  17. kaynak=(http://ftp.gnu.org/gnu/gcc/gcc-$gcc_surum/gcc-${gcc_surum}.tar.xz
  18. http://ftp.gnu.org/gnu/binutils/binutils-${binutils_surum}.tar.xz
  19. http://www.kernel.org/pub/linux/kernel/v4.x/linux-${linux_surum}.tar.xz
  20. http://ftp.gnu.org/gnu/gmp/gmp-${gmp_surum}.tar.xz
  21. http://ftp.gnu.org/gnu/mpfr/mpfr-${mpfr_surum}.tar.xz
  22. http://ftp.gnu.org/gnu/mpc/mpc-${mpc_surum}.tar.gz
  23. http://isl.gforge.inria.fr/isl-${isl_surum}.tar.bz2
  24. https://www.musl-libc.org/releases/musl-${musl_surum}.tar.gz
  25. mpfr-patch01
  26. 0001-libgcc_s.patch
  27. 0005-libatomic-test-fix.patch
  28. 0006-libgomp-test-fix.patch
  29. 0007-libitm-test-fix.patch
  30. 0008-libvtv-test-fix.patch)
  31. derle() {
  32. # http://clfs.org/view/clfs-embedded/arm/cross-tools/cflags.html
  33. # bayrakların sıfırlanması
  34. unset CC CXX CFLAGS CXXFLAGS LDFLAGS
  35. LC_ALL=C
  36. LANGUAGE=C
  37. export LC_ALL LANGUAGE
  38. CTCC="${CTCC:=cc}"
  39. CTCXX="${CTCXX:=c++}"
  40. CTCFLAGS="${CTCFLAGS:=-g0 -Os}"
  41. CTCXXFLAGS="${CTCXXFLAGS:=$CTCFLAGS}"
  42. CTLDFLAGS="${CTLDFLAGS:=-s}"
  43. arch="$(uname -m)"
  44. jobs=1
  45. # vendor-üretici varsa sonek tire konulacak
  46. test -n "$VENDOR" && VENDOR="${VENDOR}-"
  47. #
  48. # x86_64: x86_64 (generic).
  49. #
  50. CLFS_ARCH=x86_64
  51. libc_arch=x86_64
  52. libSuffix=64
  53. multilib_options="--with-multilib-list=m64"
  54. gcc_options="--with-arch=x86-64 --with-tune=generic"
  55. CLFS_TARGET=x86_64-${VENDOR}linux-musl
  56. CLFS_HOST="$(${CTCC} -dumpmachine)"
  57. crossdir=${PKG}/cross-tools/${CLFS_TARGET}
  58. echo "değişken kontrolü"
  59. printf "%s\n" \
  60. "CTCC: $CTCC" \
  61. "CTCXX: $CTCXX" \
  62. "CTCFLAGS: $CTCFLAGS" \
  63. "CTCXXFLAGS: $CTCXXFLAGS" \
  64. "CTLDFLAGS: $CTLDFLAGS" \
  65. "Host: ${CLFS_HOST}" \
  66. "Target: ${CLFS_TARGET}" \
  67. "Cross directory: $crossdir"
  68. # http://clfs.org/view/clfs-embedded/arm/cross-tools/sysroot.html
  69. mkdir -p ${PKG}/cross-tools/${CLFS_TARGET}
  70. # izinleri ayarla
  71. umask 022
  72. PATH="${crossdir}/bin:${PATH}"
  73. export PATH VENDOR
  74. mkdir -p -- "${crossdir}/${CLFS_TARGET}"
  75. if test ! -e "${crossdir}/${CLFS_TARGET}/usr"
  76. then
  77. ln -sf . "${crossdir}/${CLFS_TARGET}/usr"
  78. fi
  79. # multilib için lib ekinin ayarlanması
  80. case $arch in
  81. i586 | *x32 | x86_64 )
  82. if test ! -e "${crossdir}/lib" -a -n "$libSuffix"
  83. then
  84. ln -sf lib${libSuffix} "${crossdir}/lib"
  85. fi
  86. ;;
  87. esac
  88. ###############################################################
  89. # https://notabug.org/dragora/dragora/src/master/stages/0/01-binutils#L30
  90. # binutils derlenmesi
  91. mkdir $SRC/binutils-build
  92. cd $SRC/binutils-build
  93. $SRC/binutils-${binutils_surum}/configure \
  94. AR="ar" AS="as" CC="$CTCC" CXX="$CTCXX" \
  95. CFLAGS="$CTCFLAGS" CXXFLAGS="$CTCXXFLAGS" LDFLAGS="$CTLDFLAGS" \
  96. --prefix="${crossdir}" \
  97. --host=${CLFS_HOST} \
  98. --target=${CLFS_TARGET} \
  99. --enable-deterministic-archives \
  100. --disable-compressed-debug-sections \
  101. --disable-werror \
  102. --disable-nls \
  103. --disable-ppl-version-check \
  104. --disable-cloog-version-check \
  105. --with-sysroot="${crossdir}/${CLFS_TARGET}" \
  106. $multilib_options
  107. # https://sourceware.org/bugzilla/show_bug.cgi?id=15345
  108. # texinfolara gerek yok MAKEINFO=true . hata olursa tekrarlayınca çözülüyor.
  109. make -j${jobs} MAKEINFO=true || make -j${jobs} MAKEINFO="true"
  110. make -j${jobs} MAKEINFO=true install
  111. cd $SRC
  112. rm -rf $SRC/binutils-build
  113. ###############################################################
  114. # linux-header
  115. cd -- "${SRC}/linux-${linux_surum}"
  116. make mrproper
  117. make headers_check ARCH="${CLFS_ARCH}"
  118. make headers_install ARCH="${CLFS_ARCH}" INSTALL_HDR_PATH=dest
  119. # linux header kopyalanması
  120. mkdir -p -- "${crossdir}/${CLFS_TARGET}/include"
  121. cp -r dest/include/* "${crossdir}/${CLFS_TARGET}/include"
  122. # gereksizleri sil
  123. find "${crossdir}/${CLFS_TARGET}/include" -type f \( -name .install -o -name ..install.cmd \) -exec rm -f {} +
  124. ###############################################################
  125. # http://clfs.org/view/clfs-embedded/arm/cross-tools/gcc-static.html
  126. # https://notabug.org/dragora/dragora/src/master/stages/0/03-gcc-static#L75
  127. # gcc-static -0
  128. cd $SRC
  129. cp -rf -- "${SRC}/gcc-${gcc_surum}" "${SRC}/0gcc-${gcc_surum}"
  130. cp -rf -- "${SRC}/gmp-${gmp_surum}" "${SRC}/0gcc-${gcc_surum}/gmp"
  131. cp -rf -- "${SRC}/mpfr-${mpfr_surum}" "${SRC}/0gcc-${gcc_surum}/mpfr"
  132. cp -rf -- "${SRC}/mpc-${mpc_surum}" "${SRC}/0gcc-${gcc_surum}/mpc"
  133. cp -rf -- "${SRC}/isl-${isl_surum}" "${SRC}/0gcc-${gcc_surum}/isl"
  134. cd -- "${SRC}/0gcc-${gcc_surum}"
  135. cd mpfr
  136. rm -f PATCHES
  137. patch -p1 < "$SRC/mpfr-patch01"
  138. cd ..
  139. # Apply specific patches for the support in musl.
  140. #
  141. # http://port70.net/~nsz/musl/gcc-trunk/
  142. #
  143. patch -Np1 -i "${SRC}/0001-libgcc_s.patch"
  144. patch -Np1 -i "${SRC}/0005-libatomic-test-fix.patch"
  145. patch -Np1 -i "${SRC}/0006-libgomp-test-fix.patch"
  146. patch -Np1 -i "${SRC}/0007-libitm-test-fix.patch"
  147. patch -Np1 -i "${SRC}/0008-libvtv-test-fix.patch"
  148. # Build dizininde ayrı derlenir
  149. rm -rf ../gcc-build
  150. mkdir ../gcc-build
  151. cd ../gcc-build
  152. ../0gcc-${gcc_surum}/configure \
  153. AR="ar" CC="$CTCC" CXX="$CTCXX" \
  154. CFLAGS="$CTCFLAGS" CXXFLAGS="$CTCXXFLAGS" LDFLAGS="$CTLDFLAGS" \
  155. --prefix="$crossdir" \
  156. --libdir="${crossdir}/lib${libSuffix}" \
  157. --build=${CLFS_HOST} \
  158. --host=${CLFS_HOST} \
  159. --target=${CLFS_TARGET} \
  160. --enable-languages=c \
  161. --enable-clocale=generic \
  162. --disable-shared \
  163. --disable-threads \
  164. --disable-decimal-float \
  165. --disable-libgomp \
  166. --disable-libssp \
  167. --disable-libatomic \
  168. --disable-libitm \
  169. --disable-libquadmath \
  170. --disable-libvtv \
  171. --disable-libcilkrts \
  172. --disable-libstdcxx \
  173. --disable-gnu-indirect-function \
  174. --disable-libmudflap \
  175. --disable-libsanitizer \
  176. --disable-libmpx \
  177. --disable-nls \
  178. --with-sysroot="${crossdir}/${CLFS_TARGET}" \
  179. --with-newlib \
  180. --without-headers \
  181. --without-ppl \
  182. --without-cloog \
  183. $multilib_options \
  184. $gcc_options
  185. # tekrar make yapılınca derleme başarılı oluyor.
  186. 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))
  187. make -j${jobs} all-target-libgcc
  188. make install-gcc
  189. make install-target-libgcc
  190. cd $SRC
  191. rm -rf $SRC/gcc-build
  192. rm -rf ${SRC}/0gcc-${gcc_surum}
  193. ###############################################################
  194. # http://clfs.org/view/clfs-embedded/arm/cross-tools/libc.html
  195. # https://notabug.org/dragora/dragora/src/master/stages/0/04-musl#L25
  196. # musl
  197. cd -- "${SRC}/musl-${musl_surum}"
  198. ./configure CC="${CLFS_TARGET}-gcc" CROSS_COMPILE="${CLFS_TARGET}-" \
  199. --prefix= \
  200. --syslibdir=/lib \
  201. --enable-debug \
  202. --enable-optimize
  203. make -j${jobs}
  204. make DESTDIR="${crossdir}/${CLFS_TARGET}" install
  205. ###############################################################
  206. # http://clfs.org/view/clfs-embedded/arm/cross-tools/gcc-final.html
  207. # gcc-son
  208. cd -- "${SRC}/gcc-${gcc_surum}"
  209. # son adımda linkleyerek yapabiliriz
  210. ln -s ../gmp-${gmp_surum} gmp
  211. ln -s ../mpfr-${mpfr_surum} mpfr
  212. ln -s ../mpc-${mpc_surum} mpc
  213. ln -s ../isl-${isl_surum} isl
  214. # Apply patches for MPFR
  215. cd mpfr
  216. rm -f PATCHES
  217. patch -p1 < "$SRC/mpfr-patch01"
  218. cd ..
  219. # Apply specific patches for the support in musl.
  220. #
  221. # http://port70.net/~nsz/musl/gcc-trunk/
  222. #
  223. patch -Np1 -i "${SRC}/0001-libgcc_s.patch"
  224. patch -Np1 -i "${SRC}/0005-libatomic-test-fix.patch"
  225. patch -Np1 -i "${SRC}/0006-libgomp-test-fix.patch"
  226. patch -Np1 -i "${SRC}/0007-libitm-test-fix.patch"
  227. patch -Np1 -i "${SRC}/0008-libvtv-test-fix.patch"
  228. rm -rf $SRC/gcc-build
  229. mkdir $SRC/gcc-build
  230. cd $SRC/gcc-build
  231. option_list="
  232. --prefix="$crossdir" \
  233. --libdir="${crossdir}/lib${libSuffix}" \
  234. --build=${CLFS_HOST} \
  235. --host=${CLFS_HOST} \
  236. --target=${CLFS_TARGET} \
  237. --enable-languages=c,c++ \
  238. --enable-clocale=generic \
  239. --enable-tls \
  240. --enable-libstdcxx-time \
  241. --enable-checking=release \
  242. --enable-fully-dynamic-string \
  243. --disable-symvers \
  244. --disable-gnu-indirect-function \
  245. --disable-libmudflap \
  246. --disable-libsanitizer \
  247. --disable-libmpx \
  248. --disable-nls \
  249. --disable-lto-plugin \
  250. --with-sysroot="${crossdir}/${CLFS_TARGET}" \
  251. $multilib_options \
  252. $gcc_options
  253. "
  254. $SRC/gcc-${gcc_surum}/configure AR="ar" \
  255. CFLAGS="$CTCFLAGS" CXXFLAGS="$CTCXXFLAGS" LDFLAGS="$CTLDFLAGS" \
  256. $option_list
  257. unset option_list
  258. make -j${jobs} all \
  259. AS_FOR_TARGET="${CLFS_TARGET}-as" \
  260. LD_FOR_TARGET="${CLFS_TARGET}-ld"
  261. make install
  262. }