Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- PREFIX=/home/sora/install
- TARGET_TRIPLET=x86_64-w64-mingw32
- BINUTILS_TARGETS=x86_64-w64-mingw32,i686-w64-mingw32
- HOST_TRIPLET=x86_64-pc-linux-gnu
- main(){
- operation="${1:-upgrade}"
- case "$operation" in
- distclean|clean)
- for i in binutils-gdb mingw-w64/mingw-w64-crt mingw-w64/mingw-w64-headers gcc; do
- pushd $i/build >/dev/null 2>&1
- _log "Cleaning $(pwd)..."
- make $operation
- popd >/dev/null 2>&1
- done
- echo "> done"
- ;;
- upgrade)
- main update
- main build
- ;;
- update)
- _pushd mingw-w64
- _cmd git pull
- _popd
- ;;
- build)
- _pushd binutils-gdb/build
- _cmd ../configure --target=${TARGET_TRIPLET} \
- --enable-targets=${BINUTILS_TARGETS} \
- --with-sysroot=${PREFIX} --prefix=${PREFIX}
- _make
- _make install
- _popd
- check_path ${PREFIX}/bin
- _pushd mingw-w64/mingw-w64-headers/build
- _cmd ../configure --build=${BUILD_TRIPLET} \
- --host=${TARGET_TRIPLET} \
- --prefix=${PREFIX}/${TARGET_TRIPLET}
- _make
- _make install
- _popd
- _pushd ${PREFIX}
- if test ! -d ${PREFIX}/mingw; then
- _log "Linking mingw to ${TARGET_TRIPLET}"
- ln -s ${TARGET_TRIPLET} mingw || exit 1
- fi
- _pushd ${TARGET_TRIPLET}
- if test ! -d lib64; then
- _log "Creating lib64 directory"
- mv lib lib64 || exit 1
- ln -s lib64 lib || exit 1
- fi
- _popd
- _popd
- _pushd gcc/build
- _cmd ../configure --target=${TARGET_TRIPLET} \
- --enable-targets=all \
- --prefix=${PREFIX} --with-sysroot=${PREFIX}
- _make all-gcc
- _make install-gcc
- _popd
- _pushd mingw-w64/mingw-w64-crt/build
- _cmd ../configure --host=${TARGET_TRIPLET} \
- --enable-lib32 --with-sysroot=${PREFIX} \
- --prefix=${PREFIX}/${TARGET_TRIPLET}
- _make
- _make install
- _popd
- _pushd gcc/build
- _cmd ../configure --target=${TARGET_TRIPLET} \
- --enable-targets=all \
- --prefix=${PREFIX} --with-sysroot=${PREFIX} \
- --with-build-sysroot=${PREFIX}
- _make
- _make install
- _popd
- _log "Completed jobs"
- echo -n ${message}
- esac
- }
- _log(){
- for i in $(seq 1 ${dirlevel}); do
- echo -n ">"
- done
- echo " $@..."
- }
- _cmd(){
- _log "Running $@"
- "$@" || exit 1
- }
- _make(){
- make "$@" ${MAKEOPTS} || exit 1
- }
- _pushd(){
- _log "Entering $(pwd)/$@"
- dirlevel=$(( $dirlevel + 1 ))
- test -d "$@" || mkdir "$@" || exit 1
- pushd "$@" >/dev/null 2>&1
- }
- _popd(){
- dirlevel=$(( $dirlevel - 1 ))
- _log "Exiting $(pwd)"
- popd "$@" >/dev/null 2>&1
- }
- check_path(){
- if [[ $PATH == *:$1:* || $PATH == $1:* || $PATH == *:$1 ]]; then
- : #do nothing
- else
- _log "Adding $1 into temporary \$PATH"
- PATH="$1:$PATH"
- add_msg "You must add $1 into \$PATH to use mingw."
- add_msg "Like this:"
- add_msg " PATH=$1:\$PATH"
- add_msg ""
- fi
- }
- add_msg(){
- message="${message}$@${newline}"
- }
- newline='
- '
- dirlevel=1
- message=
- main "$@"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement