mac_gcc 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/usr/bin/env zsh
  2. #
  3. # Prepare a 'gcc' compatible with the native Simulator build.
  4. # Support for MacPorts and Homebrew.
  5. # To reset and use the system (Clang) compiler, run with 'apple'.
  6. #
  7. # Usage: mac_gcc apple|macports|homebrew
  8. #
  9. which port >/dev/null && HAS_MACPORTS=1
  10. which brew >/dev/null && HAS_HOMEBREW=1
  11. if [[ $1 == "apple" || $1 == "darwin" || $1 == "system" ]]; then
  12. if ((HAS_MACPORTS)); then
  13. cd /opt/local/bin
  14. sudo rm -f gcc g++ cc ld
  15. cd -
  16. fi
  17. if ((HAS_HOMEBREW)); then
  18. cd /opt/homebrew/bin
  19. sudo rm -f gcc g++ cc
  20. cd -
  21. fi
  22. elif [[ $1 =~ ".*ports" ]]; then
  23. ((HAS_MACPORTS)) || { echo "MacPorts is not installed"; exit 1; }
  24. GCCV=$( find /opt/local/bin -name "gcc-mp-*" | sort -r | head -1 | sed 's/.*gcc-mp-//' )
  25. [[ $GCCV -ge 11 ]] || GCCV=14
  26. getport() { port installed $1 | grep $1 || sudo port install $1; }
  27. getports() { for p in $@; do getport $p; done; }
  28. getports "gcc$GCCV" glm mesa libsdl2 libsdl2_net
  29. cd /opt/local/bin
  30. sudo rm -f gcc g++ cc ld
  31. sudo ln -s "gcc-mp-$GCCV" gcc
  32. sudo ln -s "g++-mp-$GCCV" g++
  33. sudo ln -s g++ cc
  34. sudo ln -s ld-classic ld
  35. cd -
  36. elif [[ $1 =~ ".*brew" ]]; then
  37. ((HAS_HOMEBREW)) || { echo "Homebrew is not installed"; exit 1; }
  38. GCCV=$( find /opt/homebrew/bin -name "gcc-*" | sort -r | head -1 | sed 's/.*gcc-//' )
  39. [[ $GCCV -ge 11 ]] || { brew install gcc@14 ; GCCV=14 }
  40. brew install glm mesa sdl2 sdl2_net
  41. cd /opt/homebrew/bin
  42. sudo rm -f gcc g++ cc
  43. sudo ln -s "gcc-$GCCV" gcc
  44. sudo ln -s "g++-$GCCV" g++
  45. sudo ln -s g++ cc
  46. cd -
  47. else
  48. echo "Usage: $(basename $0) apple|macports|homebrew"
  49. fi
  50. rehash