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.

490 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_MODAUDIO=1
  18. ./bootstrap-common.sh "${target}"
  19. ./bootstrap-jack2.sh "${target}"
  20. ./bootstrap-plugins.sh "${target}"
  21. ./bootstrap-python.sh "${target}"
  22. if [ -z "${PAWPAW_SKIP_QT}" ]; then
  23. ./bootstrap-qt.sh "${target}"
  24. fi
  25. # ---------------------------------------------------------------------------------------------------------------------
  26. # source setup code
  27. source setup/check_target.sh
  28. source setup/env.sh
  29. source setup/functions.sh
  30. source setup/versions.sh
  31. # ---------------------------------------------------------------------------------------------------------------------
  32. # armadillo
  33. ARMADILLO_VERSION="12.6.5"
  34. ARMADILLO_URL="http://download.sourceforge.net/arma"
  35. download armadillo "${ARMADILLO_VERSION}" "${ARMADILLO_URL}" "tar.xz"
  36. build_cmake armadillo "${ARMADILLO_VERSION}" "${ARMADILLO_EXTRAFLAGS}"
  37. # ---------------------------------------------------------------------------------------------------------------------
  38. # hylia
  39. HYLIA_VERSION="6421909123974ffd431ace47589975f5929bc746"
  40. HYLIA_URL="https://github.com/falkTX/hylia.git"
  41. HYLIA_EXTRAFLAGS="NOOPT=true"
  42. download hylia "${HYLIA_VERSION}" "${HYLIA_URL}" "" "git"
  43. build_make hylia "${HYLIA_VERSION}" "${HYLIA_EXTRAFLAGS}"
  44. # ---------------------------------------------------------------------------------------------------------------------
  45. # jack2
  46. JACK2_VERSION="806da09a120f254ae231c2ef87cf9fe2f4fb4f5b"
  47. JACK2_URL="https://github.com/jackaudio/jack2.git"
  48. JACK2_EXTRAFLAGS=""
  49. JACK2_EXTRAFLAGS+=" --autostart=none"
  50. JACK2_EXTRAFLAGS+=" --classic"
  51. JACK2_EXTRAFLAGS+=" --db=no"
  52. JACK2_EXTRAFLAGS+=" --doxygen=no"
  53. JACK2_EXTRAFLAGS+=" --firewire=no"
  54. JACK2_EXTRAFLAGS+=" --iio=no"
  55. JACK2_EXTRAFLAGS+=" --celt=no"
  56. JACK2_EXTRAFLAGS+=" --opus=no"
  57. JACK2_EXTRAFLAGS+=" --samplerate=no"
  58. JACK2_EXTRAFLAGS+=" --systemd=no"
  59. if [ "${LINUX}" -eq 1 ]; then
  60. JACK2_EXTRAFLAGS+=" --platform=linux --portaudio=yes --alsa=yes --libdbus=yes"
  61. elif [ "${MACOS}" -eq 1 ]; then
  62. JACK2_EXTRAFLAGS+=" --platform=darwin"
  63. elif [ "${WIN32}" -eq 1 ]; then
  64. JACK2_EXTRAFLAGS+=" --platform=win32"
  65. fi
  66. if [ "${WIN32}" -eq 1 ]; then
  67. JACK2_EXTRAFLAGS+=" --static"
  68. fi
  69. if [ "${LINUX}" -eq 1 ]; then
  70. export EXTRA_LDFLAGS='-Wl,-rpath,$ORIGIN -Wl,-rpath,$ORIGIN/.. -Wl,-rpath,$ORIGIN/../lib'
  71. fi
  72. download jack2 "${JACK2_VERSION}" "${JACK2_URL}" "" "git"
  73. patch_file jack2 "${JACK2_VERSION}" "dbus/audio_reserve.c" "s/Jack audio server/MOD Desktop App/"
  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-tiff"
  222. PILLOW_EXTRAFLAGS+=" --disable-webp"
  223. PILLOW_EXTRAFLAGS+=" --disable-webpmux"
  224. PILLOW_EXTRAFLAGS+=" --disable-xcb"
  225. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  226. PILLOW_EXTRAFLAGS+=" --disable-platform-guessing"
  227. fi
  228. download Pillow "${PILLOW_VERSION}" "https://files.pythonhosted.org/packages/21/23/af6bac2a601be6670064a817273d4190b79df6f74d8012926a39bc7aa77f"
  229. build_python Pillow "${PILLOW_VERSION}" "${PILLOW_EXTRAFLAGS}"
  230. unset LDSHARED
  231. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  232. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  233. if [ ! -e "${PYTHONPATH}/PIL" ]; then
  234. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL "${PYTHONPATH}/PIL"
  235. fi
  236. if [ ! -e "${PYTHONPATH}/PIL/_imaging.pyd" ]; then
  237. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL/_imaging.*.so "${PYTHONPATH}/PIL/_imaging.pyd"
  238. fi
  239. if [ ! -e "${PYTHONPATH}/PIL/_imagingft.pyd" ]; then
  240. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL/_imagingft.*.so "${PYTHONPATH}/PIL/_imagingft.pyd"
  241. fi
  242. if [ ! -e "${PYTHONPATH}/PIL/_imagingmath.pyd" ]; then
  243. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL/_imagingmath.*.so "${PYTHONPATH}/PIL/_imagingmath.pyd"
  244. fi
  245. if [ ! -e "${PYTHONPATH}/PIL/_imagingmorph.pyd" ]; then
  246. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL/_imagingmorph.*.so "${PYTHONPATH}/PIL/_imagingmorph.pyd"
  247. fi
  248. if [ ! -e "${PYTHONPATH}/PIL/_imagingtk.pyd" ]; then
  249. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL/_imagingtk.*.so "${PYTHONPATH}/PIL/_imagingtk.pyd"
  250. fi
  251. unset PYTHONPATH
  252. fi
  253. # ---------------------------------------------------------------------------------------------------------------------
  254. # tornado
  255. TORNADO_VERSION="4.3"
  256. download tornado "${TORNADO_VERSION}" "https://files.pythonhosted.org/packages/21/29/e64c97013e97d42d93b3d5997234a6f17455f3744847a7c16289289f8fa6"
  257. build_python tornado "${TORNADO_VERSION}"
  258. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  259. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  260. if [ ! -e "${PYTHONPATH}/tornado" ]; then
  261. ln -sv "${PYTHONPATH}"/tornado-*.egg/tornado "${PYTHONPATH}/tornado"
  262. fi
  263. unset PYTHONPATH
  264. fi
  265. # ---------------------------------------------------------------------------------------------------------------------
  266. # cryptodome
  267. CRYPTODOME_VERSION="3.19.0"
  268. export EXTRA_CFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --cflags python3 openssl)"
  269. export EXTRA_LDFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --libs python3 openssl) -shared"
  270. export LDSHARED="${TARGET_CXX}"
  271. download pycryptodomex "${CRYPTODOME_VERSION}" "https://files.pythonhosted.org/packages/14/c9/09d5df04c9f29ae1b49d0e34c9934646b53bb2131a55e8ed2a0d447c7c53"
  272. build_python pycryptodomex "${CRYPTODOME_VERSION}"
  273. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  274. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  275. if [ ! -e "${PYTHONPATH}/Cryptodome" ]; then
  276. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome "${PYTHONPATH}/Cryptodome"
  277. fi
  278. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_ARC4.pyd" ]; then
  279. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_ARC4.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_ARC4.pyd"
  280. fi
  281. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_chacha20.pyd" ]; then
  282. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_chacha20.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_chacha20.pyd"
  283. fi
  284. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_pkcs1_decode.pyd" ]; then
  285. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_pkcs1_decode.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_pkcs1_decode.pyd"
  286. fi
  287. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_aes.pyd" ]; then
  288. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_aes.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_aes.pyd"
  289. fi
  290. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_aesni.pyd" ]; then
  291. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_aesni.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_aesni.pyd"
  292. fi
  293. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_arc2.pyd" ]; then
  294. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_arc2.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_arc2.pyd"
  295. fi
  296. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_blowfish.pyd" ]; then
  297. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_blowfish.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_blowfish.pyd"
  298. fi
  299. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_cast.pyd" ]; then
  300. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_cast.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_cast.pyd"
  301. fi
  302. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_cbc.pyd" ]; then
  303. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_cbc.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_cbc.pyd"
  304. fi
  305. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_cfb.pyd" ]; then
  306. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_cfb.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_cfb.pyd"
  307. fi
  308. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_ctr.pyd" ]; then
  309. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_ctr.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_ctr.pyd"
  310. fi
  311. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_des3.pyd" ]; then
  312. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_des3.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_des3.pyd"
  313. fi
  314. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_des.pyd" ]; then
  315. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_des.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_des.pyd"
  316. fi
  317. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_ecb.pyd" ]; then
  318. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_ecb.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_ecb.pyd"
  319. fi
  320. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_eksblowfish.pyd" ]; then
  321. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_eksblowfish.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_eksblowfish.pyd"
  322. fi
  323. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_ocb.pyd" ]; then
  324. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_ocb.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_ocb.pyd"
  325. fi
  326. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_ofb.pyd" ]; then
  327. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_ofb.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_ofb.pyd"
  328. fi
  329. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_Salsa20.pyd" ]; then
  330. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_Salsa20.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_Salsa20.pyd"
  331. fi
  332. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_BLAKE2b.pyd" ]; then
  333. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_BLAKE2b.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_BLAKE2b.pyd"
  334. fi
  335. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_BLAKE2s.pyd" ]; then
  336. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_BLAKE2s.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_BLAKE2s.pyd"
  337. fi
  338. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_ghash_clmul.pyd" ]; then
  339. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_ghash_clmul.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_ghash_clmul.pyd"
  340. fi
  341. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_ghash_portable.pyd" ]; then
  342. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_ghash_portable.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_ghash_portable.pyd"
  343. fi
  344. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_keccak.pyd" ]; then
  345. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_keccak.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_keccak.pyd"
  346. fi
  347. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_MD2.pyd" ]; then
  348. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_MD2.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_MD2.pyd"
  349. fi
  350. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_MD4.pyd" ]; then
  351. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_MD4.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_MD4.pyd"
  352. fi
  353. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_MD5.pyd" ]; then
  354. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_MD5.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_MD5.pyd"
  355. fi
  356. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_poly1305.pyd" ]; then
  357. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_poly1305.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_poly1305.pyd"
  358. fi
  359. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_RIPEMD160.pyd" ]; then
  360. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_RIPEMD160.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_RIPEMD160.pyd"
  361. fi
  362. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_SHA1.pyd" ]; then
  363. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_SHA1.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_SHA1.pyd"
  364. fi
  365. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_SHA224.pyd" ]; then
  366. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_SHA224.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_SHA224.pyd"
  367. fi
  368. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_SHA256.pyd" ]; then
  369. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_SHA256.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_SHA256.pyd"
  370. fi
  371. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_SHA384.pyd" ]; then
  372. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_SHA384.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_SHA384.pyd"
  373. fi
  374. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_SHA512.pyd" ]; then
  375. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_SHA512.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_SHA512.pyd"
  376. fi
  377. if [ ! -e "${PYTHONPATH}/Cryptodome/Math/_modexp.pyd" ]; then
  378. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Math/_modexp.abi3.so "${PYTHONPATH}/Cryptodome/Math/_modexp.pyd"
  379. fi
  380. if [ ! -e "${PYTHONPATH}/Cryptodome/Protocol/_scrypt.pyd" ]; then
  381. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Protocol/_scrypt.abi3.so "${PYTHONPATH}/Cryptodome/Protocol/_scrypt.pyd"
  382. fi
  383. if [ ! -e "${PYTHONPATH}/Cryptodome/PublicKey/_ec_ws.pyd" ]; then
  384. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/PublicKey/_ec_ws.abi3.so "${PYTHONPATH}/Cryptodome/PublicKey/_ec_ws.pyd"
  385. fi
  386. if [ ! -e "${PYTHONPATH}/Cryptodome/PublicKey/_ed25519.pyd" ]; then
  387. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/PublicKey/_ed25519.abi3.so "${PYTHONPATH}/Cryptodome/PublicKey/_ed25519.pyd"
  388. fi
  389. if [ ! -e "${PYTHONPATH}/Cryptodome/PublicKey/_ed448.pyd" ]; then
  390. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/PublicKey/_ed448.abi3.so "${PYTHONPATH}/Cryptodome/PublicKey/_ed448.pyd"
  391. fi
  392. if [ ! -e "${PYTHONPATH}/Cryptodome/PublicKey/_x25519.pyd" ]; then
  393. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/PublicKey/_x25519.abi3.so "${PYTHONPATH}/Cryptodome/PublicKey/_x25519.pyd"
  394. fi
  395. if [ ! -e "${PYTHONPATH}/Cryptodome/Util/_cpuid_c.pyd" ]; then
  396. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Util/_cpuid_c.abi3.so "${PYTHONPATH}/Cryptodome/Util/_cpuid_c.pyd"
  397. fi
  398. if [ ! -e "${PYTHONPATH}/Cryptodome/Util/_strxor.pyd" ]; then
  399. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Util/_strxor.abi3.so "${PYTHONPATH}/Cryptodome/Util/_strxor.pyd"
  400. fi
  401. unset PYTHONPATH
  402. fi
  403. # ---------------------------------------------------------------------------------------------------------------------