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.

174 lines
5.0KB

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