Advertisement
Guest User

Untitled

a guest
May 29th, 2015
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. PREFIX=/home/sora/install
  4. TARGET_TRIPLET=x86_64-w64-mingw32
  5. BINUTILS_TARGETS=x86_64-w64-mingw32,i686-w64-mingw32
  6. HOST_TRIPLET=x86_64-pc-linux-gnu
  7.  
  8. main(){
  9. operation="${1:-upgrade}"
  10. case "$operation" in
  11. distclean|clean)
  12. for i in binutils-gdb mingw-w64/mingw-w64-crt mingw-w64/mingw-w64-headers gcc; do
  13. pushd $i/build >/dev/null 2>&1
  14. _log "Cleaning $(pwd)..."
  15. make $operation
  16. popd >/dev/null 2>&1
  17. done
  18. echo "> done"
  19. ;;
  20. upgrade)
  21. main update
  22. main build
  23. ;;
  24. update)
  25. _pushd mingw-w64
  26. _cmd git pull
  27. _popd
  28. ;;
  29. build)
  30. _pushd binutils-gdb/build
  31. _cmd ../configure --target=${TARGET_TRIPLET} \
  32. --enable-targets=${BINUTILS_TARGETS} \
  33. --with-sysroot=${PREFIX} --prefix=${PREFIX}
  34. _make
  35. _make install
  36. _popd
  37.  
  38. check_path ${PREFIX}/bin
  39.  
  40. _pushd mingw-w64/mingw-w64-headers/build
  41. _cmd ../configure --build=${BUILD_TRIPLET} \
  42. --host=${TARGET_TRIPLET} \
  43. --prefix=${PREFIX}/${TARGET_TRIPLET}
  44. _make
  45. _make install
  46. _popd
  47.  
  48. _pushd ${PREFIX}
  49. if test ! -d ${PREFIX}/mingw; then
  50. _log "Linking mingw to ${TARGET_TRIPLET}"
  51. ln -s ${TARGET_TRIPLET} mingw || exit 1
  52. fi
  53. _pushd ${TARGET_TRIPLET}
  54. if test ! -d lib64; then
  55. _log "Creating lib64 directory"
  56. mv lib lib64 || exit 1
  57. ln -s lib64 lib || exit 1
  58. fi
  59. _popd
  60. _popd
  61.  
  62. _pushd gcc/build
  63. _cmd ../configure --target=${TARGET_TRIPLET} \
  64. --enable-targets=all \
  65. --prefix=${PREFIX} --with-sysroot=${PREFIX}
  66. _make all-gcc
  67. _make install-gcc
  68. _popd
  69.  
  70. _pushd mingw-w64/mingw-w64-crt/build
  71. _cmd ../configure --host=${TARGET_TRIPLET} \
  72. --enable-lib32 --with-sysroot=${PREFIX} \
  73. --prefix=${PREFIX}/${TARGET_TRIPLET}
  74. _make
  75. _make install
  76. _popd
  77.  
  78. _pushd gcc/build
  79. _cmd ../configure --target=${TARGET_TRIPLET} \
  80. --enable-targets=all \
  81. --prefix=${PREFIX} --with-sysroot=${PREFIX} \
  82. --with-build-sysroot=${PREFIX}
  83. _make
  84. _make install
  85. _popd
  86.  
  87. _log "Completed jobs"
  88. echo -n ${message}
  89. esac
  90. }
  91.  
  92. _log(){
  93. for i in $(seq 1 ${dirlevel}); do
  94. echo -n ">"
  95. done
  96.  
  97. echo " $@..."
  98. }
  99.  
  100. _cmd(){
  101. _log "Running $@"
  102. "$@" || exit 1
  103. }
  104.  
  105. _make(){
  106. make "$@" ${MAKEOPTS} || exit 1
  107. }
  108.  
  109. _pushd(){
  110. _log "Entering $(pwd)/$@"
  111. dirlevel=$(( $dirlevel + 1 ))
  112.  
  113. test -d "$@" || mkdir "$@" || exit 1
  114. pushd "$@" >/dev/null 2>&1
  115. }
  116.  
  117. _popd(){
  118. dirlevel=$(( $dirlevel - 1 ))
  119. _log "Exiting $(pwd)"
  120. popd "$@" >/dev/null 2>&1
  121. }
  122.  
  123. check_path(){
  124. if [[ $PATH == *:$1:* || $PATH == $1:* || $PATH == *:$1 ]]; then
  125. : #do nothing
  126. else
  127. _log "Adding $1 into temporary \$PATH"
  128. PATH="$1:$PATH"
  129. add_msg "You must add $1 into \$PATH to use mingw."
  130. add_msg "Like this:"
  131. add_msg " PATH=$1:\$PATH"
  132. add_msg ""
  133. fi
  134. }
  135.  
  136. add_msg(){
  137. message="${message}$@${newline}"
  138. }
  139.  
  140. newline='
  141. '
  142. dirlevel=1
  143. message=
  144. main "$@"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement