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.

492 lines
22KB

  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. # LTO is unwanted for MOD builds, make sure it is off
  14. export PAWPAW_SKIP_LTO=1
  15. # ---------------------------------------------------------------------------------------------------------------------
  16. # run bootstrap dependencies
  17. export PAWPAW_FAST_MATH=1
  18. export PAWPAW_MODAUDIO=1
  19. ./bootstrap-common.sh "${target}"
  20. ./bootstrap-jack2.sh "${target}"
  21. ./bootstrap-plugins.sh "${target}"
  22. ./bootstrap-python.sh "${target}"
  23. if [ -z "${PAWPAW_SKIP_QT}" ]; then
  24. ./bootstrap-qt.sh "${target}"
  25. fi
  26. # ---------------------------------------------------------------------------------------------------------------------
  27. # source setup code
  28. source setup/check_target.sh
  29. source setup/env.sh
  30. source setup/functions.sh
  31. source setup/versions.sh
  32. # ---------------------------------------------------------------------------------------------------------------------
  33. # armadillo
  34. ARMADILLO_VERSION="12.6.5"
  35. ARMADILLO_URL="http://download.sourceforge.net/arma"
  36. download armadillo "${ARMADILLO_VERSION}" "${ARMADILLO_URL}" "tar.xz"
  37. build_cmake armadillo "${ARMADILLO_VERSION}" "${ARMADILLO_EXTRAFLAGS}"
  38. # ---------------------------------------------------------------------------------------------------------------------
  39. # hylia
  40. HYLIA_VERSION="6421909123974ffd431ace47589975f5929bc746"
  41. HYLIA_URL="https://github.com/falkTX/hylia.git"
  42. HYLIA_EXTRAFLAGS="NOOPT=true"
  43. download hylia "${HYLIA_VERSION}" "${HYLIA_URL}" "" "git"
  44. build_make hylia "${HYLIA_VERSION}" "${HYLIA_EXTRAFLAGS}"
  45. # ---------------------------------------------------------------------------------------------------------------------
  46. # jack2
  47. JACK2_VERSION="c60f7f1f66eab090876ee189fd5910cb70b2638e"
  48. JACK2_URL="https://github.com/moddevices/jack2.git"
  49. JACK2_EXTRAFLAGS=""
  50. JACK2_EXTRAFLAGS+=" --autostart=none"
  51. JACK2_EXTRAFLAGS+=" --classic"
  52. JACK2_EXTRAFLAGS+=" --db=no"
  53. JACK2_EXTRAFLAGS+=" --doxygen=no"
  54. JACK2_EXTRAFLAGS+=" --firewire=no"
  55. JACK2_EXTRAFLAGS+=" --iio=no"
  56. JACK2_EXTRAFLAGS+=" --celt=no"
  57. JACK2_EXTRAFLAGS+=" --opus=no"
  58. JACK2_EXTRAFLAGS+=" --samplerate=no"
  59. JACK2_EXTRAFLAGS+=" --systemd=no"
  60. if [ "${LINUX}" -eq 1 ]; then
  61. JACK2_EXTRAFLAGS+=" --platform=linux --portaudio=yes --alsa=yes --libdbus=yes"
  62. elif [ "${MACOS}" -eq 1 ]; then
  63. JACK2_EXTRAFLAGS+=" --platform=darwin"
  64. elif [ "${WIN32}" -eq 1 ]; then
  65. JACK2_EXTRAFLAGS+=" --platform=win32"
  66. fi
  67. if [ "${WIN32}" -eq 1 ]; then
  68. JACK2_EXTRAFLAGS+=" --static"
  69. fi
  70. if [ "${LINUX}" -eq 1 ]; then
  71. export EXTRA_LDFLAGS='-Wl,-rpath,$ORIGIN -Wl,-rpath,$ORIGIN/.. -Wl,-rpath,$ORIGIN/../lib'
  72. fi
  73. download jack2 "${JACK2_VERSION}" "${JACK2_URL}" "" "git"
  74. build_waf jack2 "${JACK2_VERSION}" "${JACK2_EXTRAFLAGS}"
  75. # patch pkg-config file for static win32 builds
  76. if [ "${WIN32}" -eq 1 ]; then
  77. if [ "${WIN64}" -eq 1 ]; then
  78. s="64"
  79. else
  80. s=""
  81. fi
  82. sed -i -e "s/-L\${libdir} -ljack${s}/-L\${libdir} -Wl,-Bdynamic -ljackserver${s} -Wl,-Bstatic/" "${PAWPAW_PREFIX}/lib/pkgconfig/jack.pc"
  83. fi
  84. # ---------------------------------------------------------------------------------------------------------------------
  85. # jack-example-tools
  86. JACK_EXAMPLE_TOOLS_VERSION="7cf014d3b3b75ad88a0785957b0f2cffad243b6b"
  87. JACK_EXAMPLE_TOOLS_URL="https://github.com/jackaudio/jack-example-tools.git"
  88. JACK_EXAMPLE_TOOLS_EXTRAFLAGS=""
  89. JACK_EXAMPLE_TOOLS_EXTRAFLAGS+=" -Dalsa_in_out=disabled"
  90. JACK_EXAMPLE_TOOLS_EXTRAFLAGS+=" -Djack_net=disabled"
  91. JACK_EXAMPLE_TOOLS_EXTRAFLAGS+=" -Djack_netsource=disabled"
  92. JACK_EXAMPLE_TOOLS_EXTRAFLAGS+=" -Djack_rec=disabled"
  93. JACK_EXAMPLE_TOOLS_EXTRAFLAGS+=" -Dopus_support=disabled"
  94. JACK_EXAMPLE_TOOLS_EXTRAFLAGS+=" -Dreadline_support=disabled"
  95. JACK_EXAMPLE_TOOLS_EXTRAFLAGS+=" -Dzalsa=disabled"
  96. if [ "${LINUX}" -eq 1 ]; then
  97. JACK_EXAMPLE_TOOLS_EXTRAFLAGS+=" -Dalsa_midi=enabled"
  98. else
  99. JACK_EXAMPLE_TOOLS_EXTRAFLAGS+=" -Dalsa_midi=disabled"
  100. fi
  101. download jack-example-tools "${JACK_EXAMPLE_TOOLS_VERSION}" "${JACK_EXAMPLE_TOOLS_URL}" "" "git"
  102. build_meson jack-example-tools "${JACK_EXAMPLE_TOOLS_VERSION}" "${JACK_EXAMPLE_TOOLS_EXTRAFLAGS}"
  103. # ---------------------------------------------------------------------------------------------------------------------
  104. # juce-6.0
  105. JUCE_6_0_VERSION="24b7e3b2b2c4713d53163b58aed8f79a605218e9"
  106. JUCE_6_0_URL="https://github.com/DISTRHO/JUCE.git"
  107. JUCE_6_0_EXTRAFLAGS=""
  108. JUCE_6_0_EXTRAFLAGS+=" -DCMAKE_INSTALL_PREFIX=${PAWPAW_PREFIX}"
  109. JUCE_6_0_EXTRAFLAGS+=" -DJUCE_BUILD_HELPER_TOOLS=ON"
  110. JUCE_6_0_EXTRAFLAGS+=" -DJUCE_INSTALL_DESTINATION=lib/cmake/JUCE-6.0.8"
  111. download juce-6.0 "${JUCE_6_0_VERSION}" "${JUCE_6_0_URL}" "" "git"
  112. build_host_cmake juce-6.0 "${JUCE_6_0_VERSION}" "${JUCE_6_0_EXTRAFLAGS}"
  113. link_target_file juce-6.0 "${JUCE_6_0_VERSION}" "JUCEConfig.cmake" "lib/cmake/JUCE-6.0.8/JUCE-6.0.8Config.cmake"
  114. install_file juce-6.0 "${JUCE_6_0_VERSION}" "build/extras/Build/juceaide/juceaide_artefacts/Release/juceaide" "bin" "juceaide60"
  115. install_file juce-6.0 "${JUCE_6_0_VERSION}" "extras/Build/CMake/lv2_ttl_generator.c" "lib/cmake/JUCE-6.0.8"
  116. # ---------------------------------------------------------------------------------------------------------------------
  117. # juce-6.1
  118. JUCE_6_1_VERSION="2cf0224df33e52ebbaebacc9a846d2be26cdcbcb"
  119. JUCE_6_1_URL="https://github.com/DISTRHO/JUCE.git"
  120. JUCE_6_1_EXTRAFLAGS=""
  121. JUCE_6_1_EXTRAFLAGS+=" -DCMAKE_INSTALL_PREFIX=${PAWPAW_PREFIX}"
  122. JUCE_6_1_EXTRAFLAGS+=" -DJUCE_BUILD_HELPER_TOOLS=ON"
  123. JUCE_6_1_EXTRAFLAGS+=" -DJUCE_INSTALL_DESTINATION=lib/cmake/JUCE-6.1.6"
  124. download juce-6.1 "${JUCE_6_1_VERSION}" "${JUCE_6_1_URL}" "" "git"
  125. build_host_cmake juce-6.1 "${JUCE_6_1_VERSION}" "${JUCE_6_1_EXTRAFLAGS}"
  126. link_target_file juce-6.1 "${JUCE_6_1_VERSION}" "JUCEConfig.cmake" "lib/cmake/JUCE-6.1.6/JUCE-6.1.6Config.cmake"
  127. install_file juce-6.1 "${JUCE_6_1_VERSION}" "build/extras/Build/juceaide/juceaide_artefacts/Release/juceaide" "bin" "juceaide61"
  128. install_file juce-6.1 "${JUCE_6_1_VERSION}" "extras/Build/CMake/lv2_ttl_generator.c" "lib/cmake/JUCE-6.1.6"
  129. # ---------------------------------------------------------------------------------------------------------------------
  130. # juce-7.0
  131. JUCE_7_0_VERSION="c3099e733e90b8a2e7071698980abd70efb9a4e7"
  132. JUCE_7_0_URL="https://github.com/DISTRHO/JUCE.git"
  133. JUCE_7_0_EXTRAFLAGS=""
  134. JUCE_7_0_EXTRAFLAGS+=" -DCMAKE_INSTALL_PREFIX=${PAWPAW_PREFIX}"
  135. JUCE_7_0_EXTRAFLAGS+=" -DJUCE_BUILD_HELPER_TOOLS=ON"
  136. JUCE_7_0_EXTRAFLAGS+=" -DJUCE_INSTALL_DESTINATION=lib/cmake/JUCE-7.0.9"
  137. download juce-7.0 "${JUCE_7_0_VERSION}" "${JUCE_7_0_URL}" "" "git"
  138. build_host_cmake juce-7.0 "${JUCE_7_0_VERSION}" "${JUCE_7_0_EXTRAFLAGS}"
  139. link_target_file juce-7.0 "${JUCE_7_0_VERSION}" "JUCEConfig.cmake" "lib/cmake/JUCE-7.0.9/JUCE-7.0.9Config.cmake"
  140. install_file juce-7.0 "${JUCE_7_0_VERSION}" "build/extras/Build/juceaide/juceaide_artefacts/Release/juceaide" "bin" "juceaide70"
  141. # ---------------------------------------------------------------------------------------------------------------------
  142. # lvtk1
  143. LVTK1_VERSION="c105fd5077b4f7d963ad543b9979b94b9b052551"
  144. LVTK1_URL="https://github.com/lvtk/lvtk.git"
  145. LVTK1_EXTRAFLAGS=""
  146. LVTK1_EXTRAFLAGS+=" --disable-examples"
  147. LVTK1_EXTRAFLAGS+=" --disable-tools"
  148. LVTK1_EXTRAFLAGS+=" --disable-ui"
  149. download lvtk1 "${LVTK1_VERSION}" "${LVTK1_URL}" "" "git"
  150. # force waf update for py3 compat
  151. if [ ! -e "${PAWPAW_BUILDDIR}/lvtk1-${LVTK1_VERSION}/.stamp_configured" ]; then
  152. cp -v "${PAWPAW_BUILDDIR}/jack2-${JACK2_VERSION}/waf" "${PAWPAW_BUILDDIR}/lvtk1-${LVTK1_VERSION}/"
  153. cp -rv "${PAWPAW_BUILDDIR}/jack2-${JACK2_VERSION}/waflib" "${PAWPAW_BUILDDIR}/lvtk1-${LVTK1_VERSION}/"
  154. fi
  155. build_waf lvtk1 "${LVTK1_VERSION}" "${LVTK1_EXTRAFLAGS}"
  156. # ---------------------------------------------------------------------------------------------------------------------
  157. if [ -n "${PAWPAW_SKIP_PYTHON_MODULES}" ] && [ "${PAWPAW_SKIP_PYTHON_MODULES}" -eq 1 ]; then
  158. exit 0
  159. fi
  160. # ---------------------------------------------------------------------------------------------------------------------
  161. # aggdraw
  162. AGGDRAW_VERSION="1.3.11"
  163. export EXTRA_CFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --cflags python3 freetype2 libpng)"
  164. export EXTRA_LDFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --libs python3 freetype2 libpng) -shared"
  165. if [ "${MACOS}" -eq 1 ]; then
  166. export EXTRA_LDFLAGS+=" -Wl,-undefined,dynamic_lookup"
  167. elif [ "${WIN32}" -eq 1 ]; then
  168. export EXTRA_LDFLAGS+=" -lgdi32 -lkernel32 -luser32"
  169. fi
  170. export AGGDRAW_FREETYPE_ROOT="${PAWPAW_PREFIX}"
  171. export LDSHARED="${TARGET_CXX}"
  172. download aggdraw "${AGGDRAW_VERSION}" "https://files.pythonhosted.org/packages/ef/29/fddf555c68920bb0aff977425af786226db2a78379e706951ff32b4492ef"
  173. build_python aggdraw "${AGGDRAW_VERSION}"
  174. unset AGGDRAW_FREETYPE_ROOT
  175. unset LDSHARED
  176. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  177. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  178. if [ ! -e "${PYTHONPATH}/aggdraw.py" ]; then
  179. ln -sv "${PYTHONPATH}"/aggdraw-*.egg/aggdraw.py "${PYTHONPATH}/aggdraw.py"
  180. fi
  181. if [ ! -e "${PYTHONPATH}/aggdraw.pyd" ]; then
  182. ln -sv "${PYTHONPATH}"/aggdraw-*.egg/*.so "${PYTHONPATH}/aggdraw.pyd"
  183. fi
  184. unset PYTHONPATH
  185. fi
  186. # ---------------------------------------------------------------------------------------------------------------------
  187. # setuptools
  188. SETUPTOOLS_VERSION="68.2.2"
  189. download setuptools "${SETUPTOOLS_VERSION}" "https://files.pythonhosted.org/packages/ef/cc/93f7213b2ab5ed383f98ce8020e632ef256b406b8569606c3f160ed8e1c9"
  190. build_python setuptools "${SETUPTOOLS_VERSION}"
  191. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  192. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  193. if [ ! -e "${PYTHONPATH}/_distutils_hack" ]; then
  194. ln -sv "${PYTHONPATH}"/setuptools-*.egg/_distutils_hack "${PYTHONPATH}/_distutils_hack"
  195. fi
  196. if [ ! -e "${PYTHONPATH}/pkg_resources" ]; then
  197. ln -sv "${PYTHONPATH}"/setuptools-*.egg/pkg_resources "${PYTHONPATH}/pkg_resources"
  198. fi
  199. if [ ! -e "${PYTHONPATH}/setuptools" ]; then
  200. ln -sv "${PYTHONPATH}"/setuptools-*.egg/setuptools "${PYTHONPATH}/setuptools"
  201. fi
  202. unset PYTHONPATH
  203. fi
  204. # ---------------------------------------------------------------------------------------------------------------------
  205. # Pillow
  206. PILLOW_VERSION="8.2.0"
  207. export EXTRA_CFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --cflags python3 freetype2 libpng)"
  208. export EXTRA_LDFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --libs python3 freetype2 libpng) -shared"
  209. if [ "${MACOS}" -eq 1 ]; then
  210. export EXTRA_LDFLAGS+=" -Wl,-undefined,dynamic_lookup"
  211. elif [ "${WIN32}" -eq 1 ]; then
  212. export EXTRA_LDFLAGS+=" -lgdi32 -lkernel32 -lpsapi -luser32"
  213. fi
  214. export LDSHARED="${TARGET_CXX}"
  215. PILLOW_EXTRAFLAGS=""
  216. PILLOW_EXTRAFLAGS+=" --enable-freetype"
  217. PILLOW_EXTRAFLAGS+=" --enable-zlib"
  218. PILLOW_EXTRAFLAGS+=" --disable-imagequant"
  219. PILLOW_EXTRAFLAGS+=" --disable-jpeg"
  220. PILLOW_EXTRAFLAGS+=" --disable-jpeg2000"
  221. PILLOW_EXTRAFLAGS+=" --disable-lcms"
  222. PILLOW_EXTRAFLAGS+=" --disable-raqm"
  223. PILLOW_EXTRAFLAGS+=" --disable-tiff"
  224. PILLOW_EXTRAFLAGS+=" --disable-webp"
  225. PILLOW_EXTRAFLAGS+=" --disable-webpmux"
  226. PILLOW_EXTRAFLAGS+=" --disable-xcb"
  227. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  228. PILLOW_EXTRAFLAGS+=" --disable-platform-guessing"
  229. fi
  230. download Pillow "${PILLOW_VERSION}" "https://files.pythonhosted.org/packages/21/23/af6bac2a601be6670064a817273d4190b79df6f74d8012926a39bc7aa77f"
  231. build_python Pillow "${PILLOW_VERSION}" "${PILLOW_EXTRAFLAGS}"
  232. unset LDSHARED
  233. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  234. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  235. if [ ! -e "${PYTHONPATH}/PIL" ]; then
  236. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL "${PYTHONPATH}/PIL"
  237. fi
  238. if [ ! -e "${PYTHONPATH}/PIL/_imaging.pyd" ]; then
  239. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL/_imaging.*.so "${PYTHONPATH}/PIL/_imaging.pyd"
  240. fi
  241. if [ ! -e "${PYTHONPATH}/PIL/_imagingft.pyd" ]; then
  242. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL/_imagingft.*.so "${PYTHONPATH}/PIL/_imagingft.pyd"
  243. fi
  244. if [ ! -e "${PYTHONPATH}/PIL/_imagingmath.pyd" ]; then
  245. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL/_imagingmath.*.so "${PYTHONPATH}/PIL/_imagingmath.pyd"
  246. fi
  247. if [ ! -e "${PYTHONPATH}/PIL/_imagingmorph.pyd" ]; then
  248. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL/_imagingmorph.*.so "${PYTHONPATH}/PIL/_imagingmorph.pyd"
  249. fi
  250. if [ ! -e "${PYTHONPATH}/PIL/_imagingtk.pyd" ]; then
  251. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL/_imagingtk.*.so "${PYTHONPATH}/PIL/_imagingtk.pyd"
  252. fi
  253. unset PYTHONPATH
  254. fi
  255. # ---------------------------------------------------------------------------------------------------------------------
  256. # tornado
  257. TORNADO_VERSION="4.3"
  258. download tornado "${TORNADO_VERSION}" "https://files.pythonhosted.org/packages/21/29/e64c97013e97d42d93b3d5997234a6f17455f3744847a7c16289289f8fa6"
  259. build_python tornado "${TORNADO_VERSION}"
  260. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  261. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  262. if [ ! -e "${PYTHONPATH}/tornado" ]; then
  263. ln -sv "${PYTHONPATH}"/tornado-*.egg/tornado "${PYTHONPATH}/tornado"
  264. fi
  265. unset PYTHONPATH
  266. fi
  267. # ---------------------------------------------------------------------------------------------------------------------
  268. # cryptodome
  269. CRYPTODOME_VERSION="3.19.0"
  270. export EXTRA_CFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --cflags python3 openssl)"
  271. export EXTRA_LDFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --libs python3 openssl) -shared"
  272. export LDSHARED="${TARGET_CXX}"
  273. download pycryptodomex "${CRYPTODOME_VERSION}" "https://files.pythonhosted.org/packages/14/c9/09d5df04c9f29ae1b49d0e34c9934646b53bb2131a55e8ed2a0d447c7c53"
  274. build_python pycryptodomex "${CRYPTODOME_VERSION}"
  275. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  276. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  277. if [ ! -e "${PYTHONPATH}/Cryptodome" ]; then
  278. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome "${PYTHONPATH}/Cryptodome"
  279. fi
  280. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_ARC4.pyd" ]; then
  281. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_ARC4.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_ARC4.pyd"
  282. fi
  283. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_chacha20.pyd" ]; then
  284. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_chacha20.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_chacha20.pyd"
  285. fi
  286. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_pkcs1_decode.pyd" ]; then
  287. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_pkcs1_decode.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_pkcs1_decode.pyd"
  288. fi
  289. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_aes.pyd" ]; then
  290. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_aes.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_aes.pyd"
  291. fi
  292. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_aesni.pyd" ]; then
  293. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_aesni.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_aesni.pyd"
  294. fi
  295. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_arc2.pyd" ]; then
  296. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_arc2.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_arc2.pyd"
  297. fi
  298. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_blowfish.pyd" ]; then
  299. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_blowfish.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_blowfish.pyd"
  300. fi
  301. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_cast.pyd" ]; then
  302. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_cast.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_cast.pyd"
  303. fi
  304. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_cbc.pyd" ]; then
  305. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_cbc.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_cbc.pyd"
  306. fi
  307. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_cfb.pyd" ]; then
  308. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_cfb.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_cfb.pyd"
  309. fi
  310. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_ctr.pyd" ]; then
  311. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_ctr.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_ctr.pyd"
  312. fi
  313. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_des3.pyd" ]; then
  314. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_des3.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_des3.pyd"
  315. fi
  316. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_des.pyd" ]; then
  317. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_des.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_des.pyd"
  318. fi
  319. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_ecb.pyd" ]; then
  320. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_ecb.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_ecb.pyd"
  321. fi
  322. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_eksblowfish.pyd" ]; then
  323. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_eksblowfish.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_eksblowfish.pyd"
  324. fi
  325. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_ocb.pyd" ]; then
  326. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_ocb.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_ocb.pyd"
  327. fi
  328. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_ofb.pyd" ]; then
  329. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_ofb.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_ofb.pyd"
  330. fi
  331. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_Salsa20.pyd" ]; then
  332. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_Salsa20.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_Salsa20.pyd"
  333. fi
  334. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_BLAKE2b.pyd" ]; then
  335. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_BLAKE2b.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_BLAKE2b.pyd"
  336. fi
  337. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_BLAKE2s.pyd" ]; then
  338. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_BLAKE2s.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_BLAKE2s.pyd"
  339. fi
  340. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_ghash_clmul.pyd" ]; then
  341. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_ghash_clmul.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_ghash_clmul.pyd"
  342. fi
  343. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_ghash_portable.pyd" ]; then
  344. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_ghash_portable.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_ghash_portable.pyd"
  345. fi
  346. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_keccak.pyd" ]; then
  347. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_keccak.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_keccak.pyd"
  348. fi
  349. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_MD2.pyd" ]; then
  350. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_MD2.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_MD2.pyd"
  351. fi
  352. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_MD4.pyd" ]; then
  353. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_MD4.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_MD4.pyd"
  354. fi
  355. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_MD5.pyd" ]; then
  356. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_MD5.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_MD5.pyd"
  357. fi
  358. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_poly1305.pyd" ]; then
  359. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_poly1305.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_poly1305.pyd"
  360. fi
  361. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_RIPEMD160.pyd" ]; then
  362. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_RIPEMD160.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_RIPEMD160.pyd"
  363. fi
  364. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_SHA1.pyd" ]; then
  365. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_SHA1.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_SHA1.pyd"
  366. fi
  367. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_SHA224.pyd" ]; then
  368. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_SHA224.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_SHA224.pyd"
  369. fi
  370. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_SHA256.pyd" ]; then
  371. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_SHA256.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_SHA256.pyd"
  372. fi
  373. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_SHA384.pyd" ]; then
  374. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_SHA384.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_SHA384.pyd"
  375. fi
  376. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_SHA512.pyd" ]; then
  377. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_SHA512.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_SHA512.pyd"
  378. fi
  379. if [ ! -e "${PYTHONPATH}/Cryptodome/Math/_modexp.pyd" ]; then
  380. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Math/_modexp.abi3.so "${PYTHONPATH}/Cryptodome/Math/_modexp.pyd"
  381. fi
  382. if [ ! -e "${PYTHONPATH}/Cryptodome/Protocol/_scrypt.pyd" ]; then
  383. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Protocol/_scrypt.abi3.so "${PYTHONPATH}/Cryptodome/Protocol/_scrypt.pyd"
  384. fi
  385. if [ ! -e "${PYTHONPATH}/Cryptodome/PublicKey/_ec_ws.pyd" ]; then
  386. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/PublicKey/_ec_ws.abi3.so "${PYTHONPATH}/Cryptodome/PublicKey/_ec_ws.pyd"
  387. fi
  388. if [ ! -e "${PYTHONPATH}/Cryptodome/PublicKey/_ed25519.pyd" ]; then
  389. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/PublicKey/_ed25519.abi3.so "${PYTHONPATH}/Cryptodome/PublicKey/_ed25519.pyd"
  390. fi
  391. if [ ! -e "${PYTHONPATH}/Cryptodome/PublicKey/_ed448.pyd" ]; then
  392. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/PublicKey/_ed448.abi3.so "${PYTHONPATH}/Cryptodome/PublicKey/_ed448.pyd"
  393. fi
  394. if [ ! -e "${PYTHONPATH}/Cryptodome/PublicKey/_x25519.pyd" ]; then
  395. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/PublicKey/_x25519.abi3.so "${PYTHONPATH}/Cryptodome/PublicKey/_x25519.pyd"
  396. fi
  397. if [ ! -e "${PYTHONPATH}/Cryptodome/Util/_cpuid_c.pyd" ]; then
  398. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Util/_cpuid_c.abi3.so "${PYTHONPATH}/Cryptodome/Util/_cpuid_c.pyd"
  399. fi
  400. if [ ! -e "${PYTHONPATH}/Cryptodome/Util/_strxor.pyd" ]; then
  401. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Util/_strxor.abi3.so "${PYTHONPATH}/Cryptodome/Util/_strxor.pyd"
  402. fi
  403. unset PYTHONPATH
  404. fi
  405. # ---------------------------------------------------------------------------------------------------------------------