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.

172 lines
4.9KB

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