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.

213 lines
6.2KB

  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_10_15=0
  9. MACOS_UNIVERSAL=0
  10. WASM=0
  11. WIN32=0
  12. WIN64=0
  13. unset EXE_WRAPPER
  14. unset TOOLCHAIN_PREFIX
  15. unset TOOLCHAIN_PREFIX_
  16. function check_target() {
  17. case "${target}" in
  18. "Darwin")
  19. CLANG=1
  20. MACOS=1
  21. if [ "$(uname -m)" = "arm64" ]; then
  22. MACOS_UNIVERSAL=1
  23. fi
  24. ;;
  25. "macos"|"macos-intel")
  26. CLANG=1
  27. MACOS=1
  28. if [ "$(uname -m)" = "arm64" ]; then
  29. CROSS_COMPILING=1
  30. fi
  31. ;;
  32. "macos-10.15")
  33. CLANG=1
  34. MACOS=1
  35. MACOS_10_15=1
  36. if [ "$(uname -m)" = "arm64" ]; then
  37. CROSS_COMPILING=1
  38. fi
  39. ;;
  40. "macos-universal")
  41. CLANG=1
  42. MACOS=1
  43. MACOS_UNIVERSAL=1
  44. ;;
  45. "macos-universal-10.15")
  46. CLANG=1
  47. MACOS=1
  48. MACOS_10_15=1
  49. MACOS_UNIVERSAL=1
  50. ;;
  51. "wasm")
  52. CLANG=1
  53. CROSS_COMPILING=1
  54. WASM=1
  55. PAWPAW_SKIP_LTO=1
  56. export EXE_WRAPPER="emrun --no_server"
  57. ;;
  58. "win32"|"MINGW32"*)
  59. GCC=1
  60. WIN32=1
  61. if [ "$(uname -o)" != "Msys" ] && [ "$(uname -o)" != "Cygwin" ]; then
  62. CROSS_COMPILING=1
  63. CMAKE_SYSTEM_PROCESSOR="i686"
  64. PAWPAW_SKIP_LTO=1
  65. TOOLCHAIN_PREFIX="i686-w64-mingw32"
  66. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  67. export EXE_WRAPPER="wine"
  68. fi
  69. ;;
  70. "win64"|"MINGW64"*)
  71. GCC=1
  72. WIN32=1
  73. WIN64=1
  74. if [ "$(uname -o)" != "Msys" ] && [ "$(uname -o)" != "Cygwin" ]; then
  75. CROSS_COMPILING=1
  76. CMAKE_SYSTEM_PROCESSOR="x86_64"
  77. PAWPAW_SKIP_LTO=1
  78. TOOLCHAIN_PREFIX="x86_64-w64-mingw32"
  79. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  80. export EXE_WRAPPER="wine"
  81. fi
  82. ;;
  83. "CYGWIN"*|"MSYS"*)
  84. GCC=1
  85. WIN32=1
  86. if [ "$(uname -m)" = "x86_64" ]; then
  87. WIN64=1
  88. fi
  89. ;;
  90. "linux"|"Linux")
  91. GCC=1
  92. LINUX=1
  93. if [ "$(uname -m)" = "aarch64" ]; then
  94. LINUX_TARGET="linux-aarch64"
  95. elif [ "$(uname -m)" = "arm" ]; then
  96. LINUX_TARGET="linux-armhf"
  97. elif [ "$(uname -m)" = "i386" ] || [ "$(uname -m)" = "i686" ]; then
  98. LINUX_TARGET="linux-i686"
  99. elif [ "$(uname -m)" = "riscv64" ]; then
  100. LINUX_TARGET="linux-riscv64"
  101. elif [ "$(uname -m)" = "x86_64" ]; then
  102. LINUX_TARGET="linux-x86_64"
  103. fi
  104. ;;
  105. "linux-aarch64"|"linux-arm64")
  106. GCC=1
  107. LINUX=1
  108. LINUX_TARGET="linux-aarch64"
  109. TOOLCHAIN_PREFIX="aarch64-linux-gnu"
  110. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  111. if [ "$(uname -m)" != "aarch64" ]; then
  112. CROSS_COMPILING=1
  113. CMAKE_SYSTEM_PROCESSOR="aarch64"
  114. export EXE_WRAPPER="qemu-aarch64-static"
  115. fi
  116. ;;
  117. "linux-armhf")
  118. GCC=1
  119. LINUX=1
  120. LINUX_TARGET="linux-armhf"
  121. TOOLCHAIN_PREFIX="arm-linux-gnueabihf"
  122. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  123. if [ "$(uname -m)" != "arm" ]; then
  124. CROSS_COMPILING=1
  125. CMAKE_SYSTEM_PROCESSOR="armv7"
  126. export EXE_WRAPPER="qemu-arm-static"
  127. fi
  128. ;;
  129. "linux-i686"|"linux-i386")
  130. GCC=1
  131. LINUX=1
  132. LINUX_TARGET="linux-i686"
  133. EXTRA_FLAGS="-m32"
  134. TOOLCHAIN_PREFIX="i686-linux-gnu"
  135. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  136. if [ "$(uname -m)" != "i386" ] && [ "$(uname -m)" != "i686" ] && [ "$(uname -m)" != "x86_64" ]; then
  137. CROSS_COMPILING=1
  138. CMAKE_SYSTEM_PROCESSOR="i386"
  139. export EXE_WRAPPER="qemu-i386-static"
  140. fi
  141. ;;
  142. "linux-riscv64")
  143. GCC=1
  144. LINUX=1
  145. LINUX_TARGET="linux-riscv64"
  146. TOOLCHAIN_PREFIX="riscv64-linux-gnu"
  147. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  148. if [ "$(uname -m)" != "riscv64" ]; then
  149. CROSS_COMPILING=1
  150. CMAKE_SYSTEM_PROCESSOR="riscv64"
  151. export EXE_WRAPPER="qemu-riscv64-static"
  152. fi
  153. ;;
  154. "linux-x86_64")
  155. GCC=1
  156. LINUX=1
  157. LINUX_TARGET="linux-x86_64"
  158. EXTRA_FLAGS="-m64"
  159. TOOLCHAIN_PREFIX="x86_64-linux-gnu"
  160. TOOLCHAIN_PREFIX_="${TOOLCHAIN_PREFIX}-"
  161. if [ "$(uname -m)" != "x86_64" ]; then
  162. CROSS_COMPILING=1
  163. CMAKE_SYSTEM_PROCESSOR="x86_64"
  164. export EXE_WRAPPER="qemu-x86_64-static"
  165. fi
  166. ;;
  167. "native")
  168. target=$(uname -s)
  169. check_target
  170. ;;
  171. default|*)
  172. echo "Invalid target '${target}', possible values are:"
  173. echo "\tlinux"
  174. echo "\tlinux-aarch64|linux-arm64"
  175. echo "\tlinux-armhf"
  176. echo "\tlinux-i686|linux-i386"
  177. echo "\tlinux-riscv64"
  178. echo "\tlinux-x86_64"
  179. echo "\tmacos|macos-intel"
  180. echo "\tmacos-10.15"
  181. echo "\tmacos-universal"
  182. echo "\tmacos-universal-10.15"
  183. echo "\twasm"
  184. echo "\twin32"
  185. echo "\twin64"
  186. echo "\tnative"
  187. if [ -z "${SOURCING_FILES}" ]; then
  188. exit 2
  189. else
  190. INVALID_TARGET=1
  191. fi
  192. ;;
  193. esac
  194. }
  195. check_target
  196. # always skip tests when cross-compiling
  197. if [ "${CROSS_COMPILING}" -eq 1 ]; then
  198. PAWPAW_SKIP_TESTS=${PAWPAW_SKIP_TESTS:=1}
  199. fi
  200. # always skip lto and stripping if building in debug mode
  201. if [ -n "${PAWPAW_DEBUG}" ] && [ "${PAWPAW_DEBUG}" -eq 1 ]; then
  202. PAWPAW_SKIP_LTO=1
  203. PAWPAW_SKIP_STRIPPING=1
  204. fi