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.

512 lines
23KB

  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="d0cb3bfa8f0a7ae1145dffe4f0dea0a90fbfbe81"
  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. # lvtk
  158. LVTK_VERSION="6bfe981dfb5b27ea199dd4f6801b5305ca0355f9"
  159. LVTK_URL="https://github.com/lvtk/lvtk.git"
  160. LVTK_EXTRAFLAGS=""
  161. LVTK_EXTRAFLAGS+=" --disable-examples"
  162. LVTK_EXTRAFLAGS+=" --disable-ui"
  163. download lvtk "${LVTK_VERSION}" "${LVTK_URL}" "" "git"
  164. # force waf update for py3 compat
  165. if [ ! -e "${PAWPAW_BUILDDIR}/lvtk-${LVTK_VERSION}/.stamp_configured" ]; then
  166. cp -v "${PAWPAW_BUILDDIR}/jack2-${JACK2_VERSION}/waf" "${PAWPAW_BUILDDIR}/lvtk-${LVTK_VERSION}/"
  167. cp -rv "${PAWPAW_BUILDDIR}/jack2-${JACK2_VERSION}/waflib" "${PAWPAW_BUILDDIR}/lvtk-${LVTK_VERSION}/"
  168. fi
  169. build_waf lvtk "${LVTK_VERSION}" "${LVTK_EXTRAFLAGS}"
  170. # ---------------------------------------------------------------------------------------------------------------------
  171. if [ -n "${PAWPAW_SKIP_PYTHON_MODULES}" ] && [ "${PAWPAW_SKIP_PYTHON_MODULES}" -eq 1 ]; then
  172. exit 0
  173. fi
  174. # ---------------------------------------------------------------------------------------------------------------------
  175. # aggdraw
  176. AGGDRAW_VERSION="1.3.11"
  177. export EXTRA_CFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --cflags python3 freetype2 libpng)"
  178. export EXTRA_LDFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --libs python3 freetype2 libpng) -shared"
  179. if [ "${MACOS}" -eq 1 ]; then
  180. export EXTRA_LDFLAGS+=" -Wl,-undefined,dynamic_lookup"
  181. elif [ "${WIN32}" -eq 1 ]; then
  182. export EXTRA_LDFLAGS+=" -lgdi32 -lkernel32 -luser32"
  183. fi
  184. export AGGDRAW_FREETYPE_ROOT="${PAWPAW_PREFIX}"
  185. export LDSHARED="${TARGET_CXX}"
  186. download aggdraw "${AGGDRAW_VERSION}" "https://files.pythonhosted.org/packages/ef/29/fddf555c68920bb0aff977425af786226db2a78379e706951ff32b4492ef"
  187. build_python aggdraw "${AGGDRAW_VERSION}"
  188. unset AGGDRAW_FREETYPE_ROOT
  189. unset LDSHARED
  190. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  191. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  192. if [ ! -e "${PYTHONPATH}/aggdraw.py" ]; then
  193. ln -sv "${PYTHONPATH}"/aggdraw-*.egg/aggdraw.py "${PYTHONPATH}/aggdraw.py"
  194. fi
  195. if [ ! -e "${PYTHONPATH}/aggdraw.pyd" ]; then
  196. ln -sv "${PYTHONPATH}"/aggdraw-*.egg/*.so "${PYTHONPATH}/aggdraw.pyd"
  197. fi
  198. unset PYTHONPATH
  199. fi
  200. # ---------------------------------------------------------------------------------------------------------------------
  201. # setuptools
  202. SETUPTOOLS_VERSION="68.2.2"
  203. download setuptools "${SETUPTOOLS_VERSION}" "https://files.pythonhosted.org/packages/ef/cc/93f7213b2ab5ed383f98ce8020e632ef256b406b8569606c3f160ed8e1c9"
  204. build_python setuptools "${SETUPTOOLS_VERSION}"
  205. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  206. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  207. if [ ! -e "${PYTHONPATH}/_distutils_hack" ]; then
  208. ln -sv "${PYTHONPATH}"/setuptools-*.egg/_distutils_hack "${PYTHONPATH}/_distutils_hack"
  209. fi
  210. if [ ! -e "${PYTHONPATH}/pkg_resources" ]; then
  211. ln -sv "${PYTHONPATH}"/setuptools-*.egg/pkg_resources "${PYTHONPATH}/pkg_resources"
  212. fi
  213. if [ ! -e "${PYTHONPATH}/setuptools" ]; then
  214. ln -sv "${PYTHONPATH}"/setuptools-*.egg/setuptools "${PYTHONPATH}/setuptools"
  215. fi
  216. unset PYTHONPATH
  217. fi
  218. # ---------------------------------------------------------------------------------------------------------------------
  219. # Pillow
  220. PILLOW_VERSION="8.2.0"
  221. export EXTRA_CFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --cflags python3 freetype2 libpng)"
  222. export EXTRA_LDFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --libs python3 freetype2 libpng) -shared"
  223. if [ "${MACOS}" -eq 1 ]; then
  224. export EXTRA_LDFLAGS+=" -Wl,-undefined,dynamic_lookup"
  225. elif [ "${WIN32}" -eq 1 ]; then
  226. export EXTRA_LDFLAGS+=" -lgdi32 -lkernel32 -lpsapi -luser32"
  227. fi
  228. export LDSHARED="${TARGET_CXX}"
  229. PILLOW_EXTRAFLAGS=""
  230. PILLOW_EXTRAFLAGS+=" --enable-freetype"
  231. PILLOW_EXTRAFLAGS+=" --enable-zlib"
  232. PILLOW_EXTRAFLAGS+=" --disable-imagequant"
  233. PILLOW_EXTRAFLAGS+=" --disable-jpeg"
  234. PILLOW_EXTRAFLAGS+=" --disable-jpeg2000"
  235. PILLOW_EXTRAFLAGS+=" --disable-lcms"
  236. PILLOW_EXTRAFLAGS+=" --disable-raqm"
  237. PILLOW_EXTRAFLAGS+=" --disable-tiff"
  238. PILLOW_EXTRAFLAGS+=" --disable-webp"
  239. PILLOW_EXTRAFLAGS+=" --disable-webpmux"
  240. PILLOW_EXTRAFLAGS+=" --disable-xcb"
  241. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  242. PILLOW_EXTRAFLAGS+=" --disable-platform-guessing"
  243. fi
  244. download Pillow "${PILLOW_VERSION}" "https://files.pythonhosted.org/packages/21/23/af6bac2a601be6670064a817273d4190b79df6f74d8012926a39bc7aa77f"
  245. build_python Pillow "${PILLOW_VERSION}" "${PILLOW_EXTRAFLAGS}"
  246. unset LDSHARED
  247. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  248. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  249. if [ ! -e "${PYTHONPATH}/PIL" ]; then
  250. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL "${PYTHONPATH}/PIL"
  251. fi
  252. if [ ! -e "${PYTHONPATH}/PIL/_imaging.pyd" ]; then
  253. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL/_imaging.*.so "${PYTHONPATH}/PIL/_imaging.pyd"
  254. fi
  255. if [ ! -e "${PYTHONPATH}/PIL/_imagingft.pyd" ]; then
  256. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL/_imagingft.*.so "${PYTHONPATH}/PIL/_imagingft.pyd"
  257. fi
  258. if [ ! -e "${PYTHONPATH}/PIL/_imagingmath.pyd" ]; then
  259. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL/_imagingmath.*.so "${PYTHONPATH}/PIL/_imagingmath.pyd"
  260. fi
  261. if [ ! -e "${PYTHONPATH}/PIL/_imagingmorph.pyd" ]; then
  262. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL/_imagingmorph.*.so "${PYTHONPATH}/PIL/_imagingmorph.pyd"
  263. fi
  264. if [ ! -e "${PYTHONPATH}/PIL/_imagingtk.pyd" ]; then
  265. ln -sv "${PYTHONPATH}"/Pillow-*.egg/PIL/_imagingtk.*.so "${PYTHONPATH}/PIL/_imagingtk.pyd"
  266. fi
  267. unset PYTHONPATH
  268. fi
  269. # ---------------------------------------------------------------------------------------------------------------------
  270. # tornado
  271. TORNADO_VERSION="4.3"
  272. download tornado "${TORNADO_VERSION}" "https://files.pythonhosted.org/packages/21/29/e64c97013e97d42d93b3d5997234a6f17455f3744847a7c16289289f8fa6"
  273. build_python tornado "${TORNADO_VERSION}"
  274. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  275. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  276. if [ ! -e "${PYTHONPATH}/tornado" ]; then
  277. ln -sv "${PYTHONPATH}"/tornado-*.egg/tornado "${PYTHONPATH}/tornado"
  278. fi
  279. unset PYTHONPATH
  280. fi
  281. # ---------------------------------------------------------------------------------------------------------------------
  282. # cryptodome
  283. CRYPTODOME_VERSION="3.19.0"
  284. export EXTRA_CFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --cflags python3 openssl)"
  285. export EXTRA_LDFLAGS="$(${PAWPAW_PREFIX}/bin/pkg-config --libs python3 openssl) -shared"
  286. export LDSHARED="${TARGET_CXX}"
  287. download pycryptodomex "${CRYPTODOME_VERSION}" "https://files.pythonhosted.org/packages/14/c9/09d5df04c9f29ae1b49d0e34c9934646b53bb2131a55e8ed2a0d447c7c53"
  288. build_python pycryptodomex "${CRYPTODOME_VERSION}"
  289. if [ "${WIN32}" -eq 1 ] && [ "${CROSS_COMPILING}" -eq 1 ]; then
  290. PYTHONPATH="${PAWPAW_PREFIX}/lib/python3.8/site-packages"
  291. if [ ! -e "${PYTHONPATH}/Cryptodome" ]; then
  292. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome "${PYTHONPATH}/Cryptodome"
  293. fi
  294. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_ARC4.pyd" ]; then
  295. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_ARC4.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_ARC4.pyd"
  296. fi
  297. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_chacha20.pyd" ]; then
  298. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_chacha20.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_chacha20.pyd"
  299. fi
  300. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_pkcs1_decode.pyd" ]; then
  301. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_pkcs1_decode.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_pkcs1_decode.pyd"
  302. fi
  303. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_aes.pyd" ]; then
  304. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_aes.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_aes.pyd"
  305. fi
  306. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_aesni.pyd" ]; then
  307. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_aesni.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_aesni.pyd"
  308. fi
  309. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_arc2.pyd" ]; then
  310. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_arc2.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_arc2.pyd"
  311. fi
  312. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_blowfish.pyd" ]; then
  313. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_blowfish.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_blowfish.pyd"
  314. fi
  315. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_cast.pyd" ]; then
  316. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_cast.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_cast.pyd"
  317. fi
  318. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_cbc.pyd" ]; then
  319. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_cbc.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_cbc.pyd"
  320. fi
  321. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_cfb.pyd" ]; then
  322. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_cfb.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_cfb.pyd"
  323. fi
  324. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_ctr.pyd" ]; then
  325. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_ctr.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_ctr.pyd"
  326. fi
  327. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_des3.pyd" ]; then
  328. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_des3.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_des3.pyd"
  329. fi
  330. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_des.pyd" ]; then
  331. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_des.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_des.pyd"
  332. fi
  333. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_ecb.pyd" ]; then
  334. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_ecb.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_ecb.pyd"
  335. fi
  336. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_eksblowfish.pyd" ]; then
  337. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_eksblowfish.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_eksblowfish.pyd"
  338. fi
  339. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_ocb.pyd" ]; then
  340. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_ocb.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_ocb.pyd"
  341. fi
  342. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_raw_ofb.pyd" ]; then
  343. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_raw_ofb.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_raw_ofb.pyd"
  344. fi
  345. if [ ! -e "${PYTHONPATH}/Cryptodome/Cipher/_Salsa20.pyd" ]; then
  346. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Cipher/_Salsa20.abi3.so "${PYTHONPATH}/Cryptodome/Cipher/_Salsa20.pyd"
  347. fi
  348. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_BLAKE2b.pyd" ]; then
  349. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_BLAKE2b.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_BLAKE2b.pyd"
  350. fi
  351. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_BLAKE2s.pyd" ]; then
  352. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_BLAKE2s.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_BLAKE2s.pyd"
  353. fi
  354. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_ghash_clmul.pyd" ]; then
  355. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_ghash_clmul.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_ghash_clmul.pyd"
  356. fi
  357. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_ghash_portable.pyd" ]; then
  358. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_ghash_portable.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_ghash_portable.pyd"
  359. fi
  360. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_keccak.pyd" ]; then
  361. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_keccak.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_keccak.pyd"
  362. fi
  363. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_MD2.pyd" ]; then
  364. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_MD2.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_MD2.pyd"
  365. fi
  366. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_MD4.pyd" ]; then
  367. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_MD4.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_MD4.pyd"
  368. fi
  369. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_MD5.pyd" ]; then
  370. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_MD5.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_MD5.pyd"
  371. fi
  372. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_poly1305.pyd" ]; then
  373. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_poly1305.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_poly1305.pyd"
  374. fi
  375. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_RIPEMD160.pyd" ]; then
  376. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_RIPEMD160.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_RIPEMD160.pyd"
  377. fi
  378. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_SHA1.pyd" ]; then
  379. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_SHA1.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_SHA1.pyd"
  380. fi
  381. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_SHA224.pyd" ]; then
  382. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_SHA224.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_SHA224.pyd"
  383. fi
  384. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_SHA256.pyd" ]; then
  385. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_SHA256.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_SHA256.pyd"
  386. fi
  387. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_SHA384.pyd" ]; then
  388. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_SHA384.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_SHA384.pyd"
  389. fi
  390. if [ ! -e "${PYTHONPATH}/Cryptodome/Hash/_SHA512.pyd" ]; then
  391. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Hash/_SHA512.abi3.so "${PYTHONPATH}/Cryptodome/Hash/_SHA512.pyd"
  392. fi
  393. if [ ! -e "${PYTHONPATH}/Cryptodome/Math/_modexp.pyd" ]; then
  394. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Math/_modexp.abi3.so "${PYTHONPATH}/Cryptodome/Math/_modexp.pyd"
  395. fi
  396. if [ ! -e "${PYTHONPATH}/Cryptodome/Protocol/_scrypt.pyd" ]; then
  397. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Protocol/_scrypt.abi3.so "${PYTHONPATH}/Cryptodome/Protocol/_scrypt.pyd"
  398. fi
  399. if [ ! -e "${PYTHONPATH}/Cryptodome/PublicKey/_ec_ws.pyd" ]; then
  400. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/PublicKey/_ec_ws.abi3.so "${PYTHONPATH}/Cryptodome/PublicKey/_ec_ws.pyd"
  401. fi
  402. if [ ! -e "${PYTHONPATH}/Cryptodome/PublicKey/_ed25519.pyd" ]; then
  403. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/PublicKey/_ed25519.abi3.so "${PYTHONPATH}/Cryptodome/PublicKey/_ed25519.pyd"
  404. fi
  405. if [ ! -e "${PYTHONPATH}/Cryptodome/PublicKey/_ed448.pyd" ]; then
  406. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/PublicKey/_ed448.abi3.so "${PYTHONPATH}/Cryptodome/PublicKey/_ed448.pyd"
  407. fi
  408. if [ ! -e "${PYTHONPATH}/Cryptodome/PublicKey/_x25519.pyd" ]; then
  409. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/PublicKey/_x25519.abi3.so "${PYTHONPATH}/Cryptodome/PublicKey/_x25519.pyd"
  410. fi
  411. if [ ! -e "${PYTHONPATH}/Cryptodome/Util/_cpuid_c.pyd" ]; then
  412. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Util/_cpuid_c.abi3.so "${PYTHONPATH}/Cryptodome/Util/_cpuid_c.pyd"
  413. fi
  414. if [ ! -e "${PYTHONPATH}/Cryptodome/Util/_strxor.pyd" ]; then
  415. ln -sv "${PYTHONPATH}"/pycryptodomex-*.egg/Cryptodome/Util/_strxor.abi3.so "${PYTHONPATH}/Cryptodome/Util/_strxor.pyd"
  416. fi
  417. unset PYTHONPATH
  418. fi
  419. # ---------------------------------------------------------------------------------------------------------------------