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.

294 lines
10KB

  1. #!/bin/bash
  2. set -e
  3. cd $(dirname ${0})
  4. PAWPAW_ROOT="${PWD}"
  5. # ---------------------------------------------------------------------------------------------------------------------
  6. # check target
  7. target="${1}"
  8. if [ -z "${target}" ]; then
  9. echo "usage: ${0} <target>"
  10. exit 1
  11. fi
  12. # ---------------------------------------------------------------------------------------------------------------------
  13. # source setup code
  14. export PAWPAW_SKIP_LTO=1
  15. source setup/check_target.sh
  16. source setup/env.sh
  17. source setup/functions.sh
  18. source setup/versions.sh
  19. # ---------------------------------------------------------------------------------------------------------------------
  20. # run bootstrap dependencies
  21. ./bootstrap-common.sh "${target}"
  22. ./bootstrap-jack2.sh "${target}"
  23. ./bootstrap-plugins.sh "${target}"
  24. ./bootstrap-python.sh "${target}"
  25. # Use local Qt on Linux builds
  26. if [ "${LINUX}" -eq 1 ]; then
  27. if [ "${LINUX_TARGET}" = "linux-aarch64" ]; then
  28. export PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig
  29. elif [ "${LINUX_TARGET}" = "linux-armhf" ]; then
  30. export PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig
  31. elif [ "${LINUX_TARGET}" = "linux-i686" ]; then
  32. export PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig
  33. elif [ "${LINUX_TARGET}" = "linux-riscv64" ]; then
  34. export PKG_CONFIG_PATH=/usr/lib/riscv64-linux-gnu/pkgconfig
  35. elif [ "${LINUX_TARGET}" = "linux-x86_64" ]; then
  36. export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig
  37. fi
  38. if ! pkg-config --exists Qt5Core Qt5Gui Qt5Svg Qt5Widgets; then
  39. echo "Qt system libs are not available, cannot continue"
  40. exit 2
  41. fi
  42. if [ ! -e "${TARGET_PKG_CONFIG_PATH}/Qt5Core.pc" ]; then
  43. cp $(pkg-config --variable=pcfiledir Qt5Core)/Qt5Core.pc ${TARGET_PKG_CONFIG_PATH}/
  44. sed -i '/Libs.private/d' ${TARGET_PKG_CONFIG_PATH}/Qt5Core.pc
  45. fi
  46. if [ ! -e "${TARGET_PKG_CONFIG_PATH}/Qt5Gui.pc" ]; then
  47. cp $(pkg-config --variable=pcfiledir Qt5Gui)/Qt5Gui.pc ${TARGET_PKG_CONFIG_PATH}/
  48. sed -i '/Libs.private/d' ${TARGET_PKG_CONFIG_PATH}/Qt5Gui.pc
  49. fi
  50. if [ ! -e "${TARGET_PKG_CONFIG_PATH}/Qt5Svg.pc" ]; then
  51. cp $(pkg-config --variable=pcfiledir Qt5Svg)/Qt5Svg.pc ${TARGET_PKG_CONFIG_PATH}/
  52. sed -i '/Libs.private/d' ${TARGET_PKG_CONFIG_PATH}/Qt5Svg.pc
  53. fi
  54. if [ ! -e "${TARGET_PKG_CONFIG_PATH}/Qt5Widgets.pc" ]; then
  55. cp $(pkg-config --variable=pcfiledir Qt5Widgets)/Qt5Widgets.pc ${TARGET_PKG_CONFIG_PATH}/
  56. sed -i '/Libs.private/d' ${TARGET_PKG_CONFIG_PATH}/Qt5Widgets.pc
  57. fi
  58. else
  59. ./bootstrap-qt.sh "${target}"
  60. fi
  61. # ---------------------------------------------------------------------------------------------------------------------
  62. # merged usr mode
  63. mkdir -p "${PAWPAW_PREFIX}/bin"
  64. mkdir -p "${PAWPAW_PREFIX}/docs"
  65. mkdir -p "${PAWPAW_PREFIX}/etc"
  66. mkdir -p "${PAWPAW_PREFIX}/include"
  67. mkdir -p "${PAWPAW_PREFIX}/lib"
  68. mkdir -p "${PAWPAW_PREFIX}/share"
  69. mkdir -p "${PAWPAW_PREFIX}/usr"
  70. if [ ! -e "${PAWPAW_PREFIX}/usr/bin" ]; then
  71. ln -s ../bin "${PAWPAW_PREFIX}/usr/bin"
  72. fi
  73. if [ ! -e "${PAWPAW_PREFIX}/usr/docs" ]; then
  74. ln -s ../docs "${PAWPAW_PREFIX}/usr/docs"
  75. fi
  76. if [ ! -e "${PAWPAW_PREFIX}/usr/etc" ]; then
  77. ln -s ../etc "${PAWPAW_PREFIX}/usr/etc"
  78. fi
  79. if [ ! -e "${PAWPAW_PREFIX}/usr/include" ]; then
  80. ln -s ../include "${PAWPAW_PREFIX}/usr/include"
  81. fi
  82. if [ ! -e "${PAWPAW_PREFIX}/usr/lib" ]; then
  83. ln -s ../lib "${PAWPAW_PREFIX}/usr/lib"
  84. fi
  85. if [ ! -e "${PAWPAW_PREFIX}/usr/share" ]; then
  86. ln -s ../share "${PAWPAW_PREFIX}/usr/share"
  87. fi
  88. # ---------------------------------------------------------------------------------------------------------------------
  89. # merged usr mode (host)
  90. mkdir -p "${PAWPAW_PREFIX}-host/bin"
  91. mkdir -p "${PAWPAW_PREFIX}-host/usr"
  92. if [ ! -e "${PAWPAW_PREFIX}-host/usr/bin" ]; then
  93. ln -s ../bin "${PAWPAW_PREFIX}-host/usr/bin"
  94. fi
  95. # ---------------------------------------------------------------------------------------------------------------------
  96. # lvtk1
  97. # LVTK1_VERSION="c105fd5077b4f7d963ad543b9979b94b9b052551"
  98. # LVTK1_URL="https://github.com/lvtk/lvtk.git"
  99. #
  100. # LVTK1_EXTRAFLAGS=""
  101. # LVTK1_EXTRAFLAGS+=" --disable-examples"
  102. # LVTK1_EXTRAFLAGS+=" --disable-tools"
  103. # LVTK1_EXTRAFLAGS+=" --disable-ui"
  104. #
  105. # download lvtk1 "${LVTK1_VERSION}" "${LVTK1_URL}" "" "git"
  106. # build_waf lvtk1 "${LVTK1_VERSION}" "${LVTK1_EXTRAFLAGS}"
  107. # ---------------------------------------------------------------------------------------------------------------------
  108. # jack2
  109. JACK2_EXTRAFLAGS=""
  110. JACK2_EXTRAFLAGS+=" --autostart=none"
  111. JACK2_EXTRAFLAGS+=" --classic"
  112. JACK2_EXTRAFLAGS+=" --db=yes"
  113. JACK2_EXTRAFLAGS+=" --doxygen=no"
  114. JACK2_EXTRAFLAGS+=" --firewire=no"
  115. JACK2_EXTRAFLAGS+=" --iio=no"
  116. JACK2_EXTRAFLAGS+=" --celt=no"
  117. JACK2_EXTRAFLAGS+=" --example-tools=no"
  118. JACK2_EXTRAFLAGS+=" --opus=no"
  119. JACK2_EXTRAFLAGS+=" --samplerate=no"
  120. JACK2_EXTRAFLAGS+=" --sndfile=no"
  121. JACK2_EXTRAFLAGS+=" --readline=no"
  122. JACK2_EXTRAFLAGS+=" --systemd=no"
  123. JACK2_EXTRAFLAGS+=" --zalsa=no"
  124. if [ "${CROSS_COMPILING}" -eq 1 ]; then
  125. if [ "${LINUX}" -eq 1 ]; then
  126. JACK2_EXTRAFLAGS+=" --platform=linux --portaudio=yes --alsa=yes"
  127. elif [ "${MACOS}" -eq 1 ]; then
  128. JACK2_EXTRAFLAGS+=" --platform=darwin"
  129. elif [ "${WIN32}" -eq 1 ]; then
  130. JACK2_EXTRAFLAGS+=" --platform=win32"
  131. fi
  132. fi
  133. if [ "${WIN32}" -eq 1 ]; then
  134. JACK2_EXTRAFLAGS+=" --static"
  135. fi
  136. JACK2_VERSION="88102ec4a73ecb18b58198193905aefe6b378ce5"
  137. JACK2_URL="https://github.com/jackaudio/jack2.git"
  138. download jack2 "${JACK2_VERSION}" "${JACK2_URL}" "" "git"
  139. build_waf jack2 "${JACK2_VERSION}" "${JACK2_EXTRAFLAGS}"
  140. # patch pkg-config file for static win32 builds
  141. if [ "${WIN32}" -eq 1 ]; then
  142. if [ "${WIN64}" -eq 1 ]; then
  143. s="64"
  144. else
  145. s=""
  146. fi
  147. sed -i -e "s/-L\${libdir} -ljack${s}/-L\${libdir} -Wl,-Bdynamic -ljackserver${s} -Wl,-Bstatic/" "${PAWPAW_PREFIX}/lib/pkgconfig/jack.pc"
  148. fi
  149. # ---------------------------------------------------------------------------------------------------------------------
  150. # hylia
  151. HYLIA_VERSION="6421909123974ffd431ace47589975f5929bc746"
  152. HYLIA_URL="https://github.com/falkTX/hylia.git"
  153. HYLIA_EXTRAFLAGS="NOOPT=true"
  154. download hylia "${HYLIA_VERSION}" "${HYLIA_URL}" "" "git"
  155. build_make hylia "${HYLIA_VERSION}" "${HYLIA_EXTRAFLAGS}"
  156. # ---------------------------------------------------------------------------------------------------------------------
  157. # aggdraw
  158. AGGDRAW_VERSION="1.3.11"
  159. if [ "${WIN32}" -eq 1 ]; then
  160. export AGGDRAW_FREETYPE_ROOT="${PAWPAW_PREFIX}"
  161. export EXTRA_CFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --cflags python3 freetype2 libpng)"
  162. export EXTRA_LDFLAGS="-shared $(${PAWPAW_PREFIX}/bin/pkg-config --libs python3 freetype2 libpng) -lgdi32 -lkernel32 -luser32"
  163. export LDSHARED="${TARGET_CXX}"
  164. fi
  165. download aggdraw "${AGGDRAW_VERSION}" "https://files.pythonhosted.org/packages/ef/29/fddf555c68920bb0aff977425af786226db2a78379e706951ff32b4492ef"
  166. build_python aggdraw "${AGGDRAW_VERSION}"
  167. if [ "${WIN32}" -eq 1 ]; then
  168. unset AGGDRAW_FREETYPE_ROOT
  169. unset LDSHARED
  170. fi
  171. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  172. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  173. if [ ! -e "${PYTHONPATH}/aggdraw.pyd" ]; then
  174. ln -sv "${PYTHONPATH}"/aggdraw-*.egg/*.so "${PYTHONPATH}/aggdraw.pyd"
  175. fi
  176. unset PYTHONPATH
  177. fi
  178. # ---------------------------------------------------------------------------------------------------------------------
  179. # setuptools
  180. SETUPTOOLS_VERSION="68.2.2"
  181. download setuptools "${SETUPTOOLS_VERSION}" "https://files.pythonhosted.org/packages/ef/cc/93f7213b2ab5ed383f98ce8020e632ef256b406b8569606c3f160ed8e1c9"
  182. build_python setuptools "${SETUPTOOLS_VERSION}"
  183. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  184. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  185. if [ ! -e "${PYTHONPATH}/_distutils_hack" ]; then
  186. ln -sv "${PYTHONPATH}"/setuptools-*.egg/_distutils_hack "${PYTHONPATH}/_distutils_hack"
  187. fi
  188. if [ ! -e "${PYTHONPATH}/pkg_resources" ]; then
  189. ln -sv "${PYTHONPATH}"/setuptools-*.egg/pkg_resources "${PYTHONPATH}/pkg_resources"
  190. fi
  191. if [ ! -e "${PYTHONPATH}/setuptools" ]; then
  192. ln -sv "${PYTHONPATH}"/setuptools-*.egg/setuptools "${PYTHONPATH}/setuptools"
  193. fi
  194. unset PYTHONPATH
  195. fi
  196. # ---------------------------------------------------------------------------------------------------------------------
  197. # Pillow
  198. PILLOW_VERSION="8.2.0"
  199. if [ "${WIN32}" -eq 1 ]; then
  200. export EXTRA_CFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --cflags python3 freetype2 libpng)"
  201. export EXTRA_LDFLAGS="-shared $(${PAWPAW_PREFIX}/bin/pkg-config --libs python3 freetype2 libpng) -lgdi32 -lkernel32 -lpsapi -luser32"
  202. export LDSHARED="${TARGET_CXX}"
  203. fi
  204. PILLOW_EXTRAFLAGS=""
  205. PILLOW_EXTRAFLAGS+=" --enable-freetype"
  206. PILLOW_EXTRAFLAGS+=" --enable-zlib"
  207. PILLOW_EXTRAFLAGS+=" --disable-imagequant"
  208. PILLOW_EXTRAFLAGS+=" --disable-jpeg"
  209. PILLOW_EXTRAFLAGS+=" --disable-jpeg2000"
  210. PILLOW_EXTRAFLAGS+=" --disable-tiff"
  211. PILLOW_EXTRAFLAGS+=" --disable-webp"
  212. PILLOW_EXTRAFLAGS+=" --disable-webpmux"
  213. PILLOW_EXTRAFLAGS+=" --disable-xcb"
  214. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  215. PILLOW_EXTRAFLAGS+=" --disable-platform-guessing"
  216. fi
  217. download Pillow "${PILLOW_VERSION}" "https://files.pythonhosted.org/packages/21/23/af6bac2a601be6670064a817273d4190b79df6f74d8012926a39bc7aa77f"
  218. build_python Pillow "${PILLOW_VERSION}" "${PILLOW_EXTRAFLAGS}"
  219. if [ "${WIN32}" -eq 1 ]; then
  220. unset LDSHARED
  221. fi
  222. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  223. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  224. if [ ! -e "${PYTHONPATH}/PIL" ]; then
  225. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL "${PYTHONPATH}/PIL"
  226. fi
  227. unset PYTHONPATH
  228. fi
  229. # ---------------------------------------------------------------------------------------------------------------------
  230. # tornado
  231. TORNADO_VERSION="4.3"
  232. download tornado "${TORNADO_VERSION}" "https://files.pythonhosted.org/packages/21/29/e64c97013e97d42d93b3d5997234a6f17455f3744847a7c16289289f8fa6"
  233. build_python tornado "${TORNADO_VERSION}"
  234. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  235. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  236. if [ ! -e "${PYTHONPATH}/tornado" ]; then
  237. ln -sv "${PYTHONPATH}"/tornado-*.egg/tornado "${PYTHONPATH}/tornado"
  238. fi
  239. unset PYTHONPATH
  240. fi
  241. # ---------------------------------------------------------------------------------------------------------------------