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.

244 lines
8.1KB

  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. ./bootstrap-qt.sh "${target}"
  26. # ---------------------------------------------------------------------------------------------------------------------
  27. # merged usr mode
  28. mkdir -p "${PAWPAW_PREFIX}/bin"
  29. mkdir -p "${PAWPAW_PREFIX}/docs"
  30. mkdir -p "${PAWPAW_PREFIX}/etc"
  31. mkdir -p "${PAWPAW_PREFIX}/include"
  32. mkdir -p "${PAWPAW_PREFIX}/lib"
  33. mkdir -p "${PAWPAW_PREFIX}/share"
  34. mkdir -p "${PAWPAW_PREFIX}/usr"
  35. if [ ! -e "${PAWPAW_PREFIX}/usr/bin" ]; then
  36. ln -s ../bin "${PAWPAW_PREFIX}/usr/bin"
  37. fi
  38. if [ ! -e "${PAWPAW_PREFIX}/usr/docs" ]; then
  39. ln -s ../docs "${PAWPAW_PREFIX}/usr/docs"
  40. fi
  41. if [ ! -e "${PAWPAW_PREFIX}/usr/etc" ]; then
  42. ln -s ../etc "${PAWPAW_PREFIX}/usr/etc"
  43. fi
  44. if [ ! -e "${PAWPAW_PREFIX}/usr/include" ]; then
  45. ln -s ../include "${PAWPAW_PREFIX}/usr/include"
  46. fi
  47. if [ ! -e "${PAWPAW_PREFIX}/usr/lib" ]; then
  48. ln -s ../lib "${PAWPAW_PREFIX}/usr/lib"
  49. fi
  50. if [ ! -e "${PAWPAW_PREFIX}/usr/share" ]; then
  51. ln -s ../share "${PAWPAW_PREFIX}/usr/share"
  52. fi
  53. # ---------------------------------------------------------------------------------------------------------------------
  54. # merged usr mode (host)
  55. mkdir -p "${PAWPAW_PREFIX}-host/bin"
  56. mkdir -p "${PAWPAW_PREFIX}-host/usr"
  57. if [ ! -e "${PAWPAW_PREFIX}-host/usr/bin" ]; then
  58. ln -s ../bin "${PAWPAW_PREFIX}-host/usr/bin"
  59. fi
  60. # ---------------------------------------------------------------------------------------------------------------------
  61. # lvtk1
  62. # LVTK1_VERSION="c105fd5077b4f7d963ad543b9979b94b9b052551"
  63. # LVTK1_URL="https://github.com/lvtk/lvtk.git"
  64. #
  65. # LVTK1_EXTRAFLAGS=""
  66. # LVTK1_EXTRAFLAGS+=" --disable-examples"
  67. # LVTK1_EXTRAFLAGS+=" --disable-tools"
  68. # LVTK1_EXTRAFLAGS+=" --disable-ui"
  69. #
  70. # download lvtk1 "${LVTK1_VERSION}" "${LVTK1_URL}" "" "git"
  71. # build_waf lvtk1 "${LVTK1_VERSION}" "${LVTK1_EXTRAFLAGS}"
  72. # ---------------------------------------------------------------------------------------------------------------------
  73. # jack2
  74. JACK2_EXTRAFLAGS=""
  75. if [ "${CROSS_COMPILING}" -eq 1 ]; then
  76. if [ "${LINUX}" -eq 1 ]; then
  77. JACK2_EXTRAFLAGS+=" --platform=linux"
  78. elif [ "${MACOS}" -eq 1 ]; then
  79. JACK2_EXTRAFLAGS+=" --platform=darwin"
  80. elif [ "${WIN32}" -eq 1 ]; then
  81. JACK2_EXTRAFLAGS+=" --platform=win32"
  82. fi
  83. fi
  84. if [ "${WIN32}" -eq 1 ]; then
  85. JACK2_EXTRAFLAGS+=" --static"
  86. fi
  87. JACK2_VERSION="88102ec4a73ecb18b58198193905aefe6b378ce5"
  88. JACK2_URL="https://github.com/jackaudio/jack2.git"
  89. download jack2 "${JACK2_VERSION}" "${JACK2_URL}" "" "git"
  90. build_waf jack2 "${JACK2_VERSION}" "${JACK2_EXTRAFLAGS}"
  91. # patch pkg-config file for static win32 builds
  92. if [ "${WIN32}" -eq 1 ]; then
  93. if [ "${WIN64}" -eq 1 ]; then
  94. s="64"
  95. else
  96. s=""
  97. fi
  98. sed -i -e "s/-L\${libdir} -ljack${s}/-L\${libdir} -Wl,-Bdynamic -ljackserver${s} -Wl,-Bstatic/" "${PAWPAW_PREFIX}/lib/pkgconfig/jack.pc"
  99. fi
  100. # ---------------------------------------------------------------------------------------------------------------------
  101. # hylia
  102. HYLIA_VERSION="6421909123974ffd431ace47589975f5929bc746"
  103. HYLIA_URL="https://github.com/falkTX/hylia.git"
  104. HYLIA_EXTRAFLAGS="NOOPT=true"
  105. download hylia "${HYLIA_VERSION}" "${HYLIA_URL}" "" "git"
  106. build_make hylia "${HYLIA_VERSION}" "${HYLIA_EXTRAFLAGS}"
  107. # ---------------------------------------------------------------------------------------------------------------------
  108. # aggdraw
  109. AGGDRAW_VERSION="1.3.11"
  110. if [ "${WIN32}" -eq 1 ]; then
  111. export AGGDRAW_FREETYPE_ROOT="${PAWPAW_PREFIX}"
  112. export EXTRA_CFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --cflags python3 freetype2 libpng)"
  113. export EXTRA_LDFLAGS="-shared $(${PAWPAW_PREFIX}/bin/pkg-config --libs python3 freetype2 libpng) -lgdi32 -lkernel32 -luser32"
  114. export LDSHARED="${TARGET_CXX}"
  115. fi
  116. download aggdraw "${AGGDRAW_VERSION}" "https://files.pythonhosted.org/packages/ef/29/fddf555c68920bb0aff977425af786226db2a78379e706951ff32b4492ef"
  117. build_python aggdraw "${AGGDRAW_VERSION}"
  118. if [ "${WIN32}" -eq 1 ]; then
  119. unset AGGDRAW_FREETYPE_ROOT
  120. unset LDSHARED
  121. fi
  122. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  123. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  124. if [ ! -e "${PYTHONPATH}/aggdraw.pyd" ]; then
  125. ln -sv "${PYTHONPATH}"/aggdraw-*.egg/*.so "${PYTHONPATH}/aggdraw.pyd"
  126. fi
  127. unset PYTHONPATH
  128. fi
  129. # ---------------------------------------------------------------------------------------------------------------------
  130. # setuptools
  131. SETUPTOOLS_VERSION="68.2.2"
  132. download setuptools "${SETUPTOOLS_VERSION}" "https://files.pythonhosted.org/packages/ef/cc/93f7213b2ab5ed383f98ce8020e632ef256b406b8569606c3f160ed8e1c9"
  133. build_python setuptools "${SETUPTOOLS_VERSION}"
  134. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  135. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  136. if [ ! -e "${PYTHONPATH}/_distutils_hack" ]; then
  137. ln -sv "${PYTHONPATH}"/setuptools-*.egg/_distutils_hack "${PYTHONPATH}/_distutils_hack"
  138. fi
  139. if [ ! -e "${PYTHONPATH}/pkg_resources" ]; then
  140. ln -sv "${PYTHONPATH}"/setuptools-*.egg/pkg_resources "${PYTHONPATH}/pkg_resources"
  141. fi
  142. if [ ! -e "${PYTHONPATH}/setuptools" ]; then
  143. ln -sv "${PYTHONPATH}"/setuptools-*.egg/setuptools "${PYTHONPATH}/setuptools"
  144. fi
  145. unset PYTHONPATH
  146. fi
  147. # ---------------------------------------------------------------------------------------------------------------------
  148. # Pillow
  149. PILLOW_VERSION="8.2.0"
  150. if [ "${WIN32}" -eq 1 ]; then
  151. export EXTRA_CFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --cflags python3 freetype2 libpng)"
  152. export EXTRA_LDFLAGS="-shared $(${PAWPAW_PREFIX}/bin/pkg-config --libs python3 freetype2 libpng) -lgdi32 -lkernel32 -lpsapi -luser32"
  153. export LDSHARED="${TARGET_CXX}"
  154. fi
  155. PILLOW_EXTRAFLAGS=""
  156. PILLOW_EXTRAFLAGS+=" --enable-freetype"
  157. PILLOW_EXTRAFLAGS+=" --enable-zlib"
  158. PILLOW_EXTRAFLAGS+=" --disable-imagequant"
  159. PILLOW_EXTRAFLAGS+=" --disable-jpeg"
  160. PILLOW_EXTRAFLAGS+=" --disable-jpeg2000"
  161. PILLOW_EXTRAFLAGS+=" --disable-tiff"
  162. PILLOW_EXTRAFLAGS+=" --disable-webp"
  163. PILLOW_EXTRAFLAGS+=" --disable-webpmux"
  164. PILLOW_EXTRAFLAGS+=" --disable-xcb"
  165. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  166. PILLOW_EXTRAFLAGS+=" --disable-platform-guessing"
  167. fi
  168. download Pillow "${PILLOW_VERSION}" "https://files.pythonhosted.org/packages/21/23/af6bac2a601be6670064a817273d4190b79df6f74d8012926a39bc7aa77f"
  169. build_python Pillow "${PILLOW_VERSION}" "${PILLOW_EXTRAFLAGS}"
  170. if [ "${WIN32}" -eq 1 ]; then
  171. unset LDSHARED
  172. fi
  173. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  174. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  175. if [ ! -e "${PYTHONPATH}/PIL" ]; then
  176. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL "${PYTHONPATH}/PIL"
  177. fi
  178. unset PYTHONPATH
  179. fi
  180. # ---------------------------------------------------------------------------------------------------------------------
  181. # tornado
  182. TORNADO_VERSION="4.3"
  183. download tornado "${TORNADO_VERSION}" "https://files.pythonhosted.org/packages/21/29/e64c97013e97d42d93b3d5997234a6f17455f3744847a7c16289289f8fa6"
  184. build_python tornado "${TORNADO_VERSION}"
  185. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  186. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  187. if [ ! -e "${PYTHONPATH}/tornado" ]; then
  188. ln -sv "${PYTHONPATH}"/tornado-*.egg/tornado "${PYTHONPATH}/tornado"
  189. fi
  190. unset PYTHONPATH
  191. fi
  192. # ---------------------------------------------------------------------------------------------------------------------