Cross-Platform build scripts for audio plugins
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

162 lines
4.5KB

  1. #!/bin/bash
  2. CLANG=0
  3. GCC=0
  4. CROSS_COMPILING=0
  5. INVALID_TARGET=0
  6. LINUX=0
  7. MACOS=0
  8. MACOS_UNIVERSAL=0
  9. WASM=0
  10. WIN32=0
  11. WIN64=0
  12. unset EXE_WRAPPER
  13. unset TOOLCHAIN_PREFIX
  14. unset TOOLCHAIN_PREFIX_
  15. function check_target() {
  16. case "${target}" in
  17. "macos"|"Darwin")
  18. CLANG=1
  19. MACOS=1
  20. PAWPAW_SKIP_FORTIFY=1
  21. ;;
  22. "macos-universal")
  23. CLANG=1
  24. MACOS=1
  25. MACOS_UNIVERSAL=1
  26. PAWPAW_SKIP_FORTIFY=1
  27. ;;
  28. "wasm")
  29. CLANG=1
  30. CROSS_COMPILING=1
  31. WASM=1
  32. PAWPAW_SKIP_FORTIFY=1
  33. PAWPAW_SKIP_LTO=1
  34. export EXE_WRAPPER="emrun --no_server"
  35. ;;
  36. "win32"|"MINGW32"*)
  37. GCC=1
  38. WIN32=1
  39. if [ "$(uname -o)" != "Msys" ] && [ "$(uname -o)" != "Cygwin" ]; then
  40. CROSS_COMPILING=1
  41. TOOLCHAIN_PREFIX="i686-w64-mingw32"
  42. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  43. export EXE_WRAPPER="wine"
  44. fi
  45. ;;
  46. "win64"|"MINGW64"*)
  47. GCC=1
  48. WIN32=1
  49. WIN64=1
  50. if [ "$(uname -o)" != "Msys" ] && [ "$(uname -o)" != "Cygwin" ]; then
  51. CROSS_COMPILING=1
  52. TOOLCHAIN_PREFIX="x86_64-w64-mingw32"
  53. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  54. export EXE_WRAPPER="wine"
  55. fi
  56. ;;
  57. "CYGWIN"*|"MSYS"*)
  58. GCC=1
  59. WIN32=1
  60. if [ "$(uname -m)" = "x86_64" ]; then
  61. WIN64=1
  62. fi
  63. ;;
  64. "linux"|"Linux")
  65. GCC=1
  66. LINUX=1
  67. if [ "$(uname -m)" = "aarch64" ]; then
  68. LINUX_TARGET="linux-aarch64"
  69. elif [ "$(uname -m)" = "arm" ]; then
  70. LINUX_TARGET="linux-armhf"
  71. elif [ "$(uname -m)" = "i386" ] || [ "$(uname -m)" = "i686" ]; then
  72. LINUX_TARGET="linux-i686"
  73. elif [ "$(uname -m)" = "riscv64" ]; then
  74. LINUX_TARGET="linux-riscv64"
  75. elif [ "$(uname -m)" = "x86_64" ]; then
  76. LINUX_TARGET="linux-x86_64"
  77. fi
  78. ;;
  79. "linux-aarch64"|"linux-arm64")
  80. GCC=1
  81. LINUX=1
  82. LINUX_TARGET="linux-aarch64"
  83. TOOLCHAIN_PREFIX="aarch64-linux-gnu"
  84. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  85. if [ "$(uname -m)" != "aarch64" ]; then
  86. CROSS_COMPILING=1
  87. fi
  88. ;;
  89. "linux-armhf")
  90. GCC=1
  91. LINUX=1
  92. LINUX_TARGET="linux-armhf"
  93. TOOLCHAIN_PREFIX="arm-linux-gnueabihf"
  94. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  95. if [ "$(uname -m)" != "arm" ]; then
  96. CROSS_COMPILING=1
  97. fi
  98. ;;
  99. "linux-i686"|"linux-i386")
  100. GCC=1
  101. LINUX=1
  102. LINUX_TARGET="linux-i686"
  103. EXTRA_FLAGS="-m32"
  104. TOOLCHAIN_PREFIX="i686-linux-gnu"
  105. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  106. if [ "$(uname -m)" != "i386" ] && [ "$(uname -m)" != "i686" ] && [ "$(uname -m)" != "x86_64" ]; then
  107. CROSS_COMPILING=1
  108. fi
  109. ;;
  110. "linux-riscv64")
  111. GCC=1
  112. LINUX=1
  113. LINUX_TARGET="linux-riscv64"
  114. TOOLCHAIN_PREFIX="riscv64-linux-gnu"
  115. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  116. if [ "$(uname -m)" != "riscv64" ]; then
  117. CROSS_COMPILING=1
  118. fi
  119. ;;
  120. "linux-x86_64")
  121. GCC=1
  122. LINUX=1
  123. LINUX_TARGET="linux-x86_64"
  124. EXTRA_FLAGS="-m64"
  125. TOOLCHAIN_PREFIX="x86_64-linux-gnu"
  126. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  127. if [ "$(uname -m)" != "x86_64" ]; then
  128. CROSS_COMPILING=1
  129. fi
  130. ;;
  131. "native")
  132. target=$(uname -s)
  133. check_target
  134. if [ "${target}" = "Darwin" ] && [ "$(uname -m)" = "arm64" ]; then
  135. MACOS_UNIVERSAL=1
  136. fi
  137. ;;
  138. default|*)
  139. echo "Invalid target '${target}', possible values are:"
  140. echo "\tmacos"
  141. echo "\tmacos-old"
  142. echo "\tmacos-universal"
  143. echo "\twasm"
  144. echo "\twin32"
  145. echo "\twin64"
  146. echo "\tnative"
  147. if [ -z "${SOURCING_FILES}" ]; then
  148. exit 2
  149. else
  150. INVALID_TARGET=1
  151. fi
  152. ;;
  153. esac
  154. }
  155. check_target