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.

638 lines
18KB

  1. #!/bin/bash
  2. # ---------------------------------------------------------------------------------------------------------------------
  3. function download() {
  4. local name="${1}"
  5. local version="${2}"
  6. local dlbaseurl="${3}"
  7. local dlext="${4}"
  8. local dlmethod="${5}"
  9. local dlname="${6}"
  10. if [ -z "${dlext}" ]; then
  11. dlext="tar.gz"
  12. fi
  13. if [ -z "${dlname}" ]; then
  14. dlname="${name}"
  15. fi
  16. local dlfile="${PAWPAW_DOWNLOADDIR}/${dlname}-${version}.${dlext}"
  17. local dlfolder="${PAWPAW_BUILDDIR}/${name}-${version}"
  18. if [ ! -f "${dlfile}" ]; then
  19. if [ -n "${dlmethod}" ] && [ "${dlmethod}" = "git" ]; then
  20. local tmprepodir="${PAWPAW_TMPDIR}/${dlname}-${version}"
  21. rm -rf "${tmprepodir}"
  22. git clone --recursive "${dlbaseurl}" "${tmprepodir}"
  23. git -C "${tmprepodir}" checkout "${version}"
  24. git -C "${tmprepodir}" submodule update
  25. tar --exclude=".git" -czf "${dlfile}" -C "${PAWPAW_TMPDIR}" "${dlname}-${version}"
  26. rm -rf "${tmprepodir}"
  27. else
  28. local dlurl
  29. if echo ${dlbaseurl} | grep -q github.com; then
  30. if [ x"${dlmethod}" = x"nv" ]; then
  31. dlurl="${dlbaseurl}/${version}.${dlext}"
  32. else
  33. dlurl="${dlbaseurl}/v${version}.${dlext}"
  34. fi
  35. elif [ "${dlext}" = "orig.tar.gz" ]; then
  36. dlurl="${dlbaseurl}/${dlname}_${version}.${dlext}"
  37. else
  38. dlurl="${dlbaseurl}/${dlname}-${version}.${dlext}"
  39. fi
  40. curl -L "${dlurl}" -o "${dlfile}" --fail
  41. fi
  42. fi
  43. if [ ! -d "${dlfolder}" ]; then
  44. mkdir "${dlfolder}"
  45. tar -xf "${dlfile}" -C "${dlfolder}" --strip-components=1
  46. fi
  47. }
  48. function copy_download() {
  49. local name1="${1}"
  50. local name2="${2}"
  51. local version="${3}"
  52. local dlext="${4}"
  53. if [ -z "${dlext}" ]; then
  54. dlext="tar.gz"
  55. fi
  56. local dlfile1="${PAWPAW_DOWNLOADDIR}/${name1}-${version}.${dlext}"
  57. local dlfolder2="${PAWPAW_BUILDDIR}/${name2}-${version}"
  58. if [ ! -d "${dlfolder2}" ]; then
  59. mkdir "${dlfolder2}"
  60. tar -xf "${dlfile1}" -C "${dlfolder2}" --strip-components=1
  61. fi
  62. }
  63. # ---------------------------------------------------------------------------------------------------------------------
  64. function _prebuild() {
  65. local name="${1}"
  66. local pkgdir="${2}"
  67. export AR="${TARGET_AR}"
  68. export CC="${TARGET_CC}"
  69. export CXX="${TARGET_CXX}"
  70. export LD="${TARGET_LD}"
  71. export STRIP="${TARGET_STRIP}"
  72. export CFLAGS="${TARGET_CFLAGS} ${EXTRA_CFLAGS}"
  73. export CXXFLAGS="${TARGET_CXXFLAGS} ${EXTRA_CXXFLAGS}"
  74. export LDFLAGS="${TARGET_LDFLAGS} ${EXTRA_LDFLAGS}"
  75. export PKG_CONFIG_PATH="${TARGET_PKG_CONFIG_PATH}"
  76. unset CPPFLAGS
  77. export OLD_PATH="${PATH}"
  78. export PATH="${TARGET_PATH}"
  79. if [ -d "${PAWPAW_ROOT}/patches/${name}" ]; then
  80. for p in $(ls "${PAWPAW_ROOT}/patches/${name}/" | grep "\.patch" | sort); do
  81. if [ ! -f "${pkgdir}/.stamp_applied_${p}" ]; then
  82. patch -p1 -d "${pkgdir}" -i "${PAWPAW_ROOT}/patches/${name}/${p}"
  83. touch "${pkgdir}/.stamp_applied_${p}"
  84. fi
  85. done
  86. fi
  87. if [ -d "${PAWPAW_ROOT}/patches/${name}/${PAWPAW_TARGET}" ]; then
  88. for p in $(ls "${PAWPAW_ROOT}/patches/${name}/${PAWPAW_TARGET}/" | grep "\.patch" | sort); do
  89. if [ ! -f "${pkgdir}/.stamp_applied_${p}" ]; then
  90. patch -p1 -d "${pkgdir}" -i "${PAWPAW_ROOT}/patches/${name}/${PAWPAW_TARGET}/${p}"
  91. touch "${pkgdir}/.stamp_applied_${p}"
  92. fi
  93. done
  94. fi
  95. if [ ! -f "${pkgdir}/.stamp_configured" ]; then
  96. rm -f "${pkgdir}/.stamp_built"
  97. rm -f "${pkgdir}/.stamp_installed"
  98. rm -f "${pkgdir}/.stamp_verified"
  99. rm -f "${pkgdir}/CMakeCache.txt"
  100. elif [ ! -f "${pkgdir}/.stamp_built" ]; then
  101. rm -f "${pkgdir}/.stamp_installed"
  102. rm -f "${pkgdir}/.stamp_verified"
  103. elif [ ! -f "${pkgdir}/.stamp_installed" ]; then
  104. rm -f "${pkgdir}/.stamp_verified"
  105. fi
  106. }
  107. function _postbuild() {
  108. unset AR
  109. unset CC
  110. unset CXX
  111. unset LD
  112. unset STRIP
  113. unset CFLAGS
  114. unset CPPFLAGS
  115. unset CXXFLAGS
  116. unset LDFLAGS
  117. unset PKG_CONFIG_PATH
  118. unset EXTRA_CFLAGS
  119. unset EXTRA_CXXFLAGS
  120. unset EXTRA_LDFLAGS
  121. unset EXTRA_MAKE_ARGS
  122. export PATH="${OLD_PATH}"
  123. }
  124. # ---------------------------------------------------------------------------------------------------------------------
  125. function build_autoconf() {
  126. local name="${1}"
  127. local version="${2}"
  128. local extraconfrules="${3}"
  129. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  130. if [ "${CROSS_COMPILING}" -eq 1 ]; then
  131. extraconfrules="--host=${TOOLCHAIN_PREFIX} ${extraconfrules}"
  132. fi
  133. _prebuild "${name}" "${pkgdir}"
  134. if [ ! -f "${pkgdir}/.stamp_configured" ]; then
  135. pushd "${pkgdir}"
  136. ./configure --enable-static --disable-shared --disable-debug --disable-doc --disable-docs --disable-maintainer-mode --prefix="${PAWPAW_PREFIX}" ${extraconfrules}
  137. touch .stamp_configured
  138. popd
  139. fi
  140. if [ ! -f "${pkgdir}/.stamp_built" ]; then
  141. pushd "${pkgdir}"
  142. make ${MAKE_ARGS} ${EXTRA_MAKE_ARGS}
  143. touch .stamp_built
  144. popd
  145. fi
  146. if [ ! -f "${pkgdir}/.stamp_installed" ]; then
  147. pushd "${pkgdir}"
  148. make ${MAKE_ARGS} install -j 1
  149. touch .stamp_installed
  150. popd
  151. fi
  152. _postbuild
  153. }
  154. function build_autoconfgen() {
  155. local name="${1}"
  156. local version="${2}"
  157. local extraconfrules="${3}"
  158. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  159. local EXTRA_CFLAGS2="${EXTRA_CFLAGS}"
  160. local EXTRA_CXXFLAGS2="${EXTRA_CXXFLAGS}"
  161. local EXTRA_LDFLAGS2="${EXTRA_LDFLAGS}"
  162. local EXTRA_MAKE_ARGS2="${EXTRA_MAKE_ARGS}"
  163. _prebuild "${name}" "${pkgdir}"
  164. if [ ! -f "${pkgdir}/.stamp_preconfigured" ]; then
  165. pushd "${pkgdir}"
  166. autoconf
  167. touch .stamp_preconfigured
  168. popd
  169. fi
  170. _postbuild
  171. export EXTRA_CFLAGS="${EXTRA_CFLAGS2}"
  172. export EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS2}"
  173. export EXTRA_LDFLAGS="${EXTRA_LDFLAGS2}"
  174. export EXTRA_MAKE_ARGS="${EXTRA_MAKE_ARGS2}"
  175. build_autoconf "${name}" "${version}" "${extraconfrules}"
  176. }
  177. function build_conf() {
  178. local name="${1}"
  179. local version="${2}"
  180. local extraconfrules="${3}"
  181. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  182. _prebuild "${name}" "${pkgdir}"
  183. if [ ! -f "${pkgdir}/.stamp_configured" ]; then
  184. pushd "${pkgdir}"
  185. ./configure ${extraconfrules}
  186. touch .stamp_configured
  187. popd
  188. fi
  189. if [ ! -f "${pkgdir}/.stamp_built" ]; then
  190. pushd "${pkgdir}"
  191. make ${MAKE_ARGS} ${EXTRA_MAKE_ARGS}
  192. touch .stamp_built
  193. popd
  194. fi
  195. if [ ! -f "${pkgdir}/.stamp_installed" ]; then
  196. pushd "${pkgdir}"
  197. make ${MAKE_ARGS} -j 1 install
  198. touch .stamp_installed
  199. popd
  200. fi
  201. _postbuild
  202. }
  203. function build_cmake() {
  204. local name="${1}"
  205. local version="${2}"
  206. local extraconfrules="${3}"
  207. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  208. if [ "${CROSS_COMPILING}" -eq 1 ]; then
  209. extraconfrules+=" -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}"
  210. fi
  211. if [ "${MACOS}" -eq 1 ]; then
  212. if [ "${MACOS_OLD}" -eq 1 ]; then
  213. OSX_TARGET="10.5"
  214. elif [ "${MACOS_UNIVERSAL}" -eq 1 ]; then
  215. OSX_TARGET="10.12"
  216. else
  217. OSX_TARGET="10.8"
  218. fi
  219. extraconfrules+=" -DCMAKE_OSX_DEPLOYMENT_TARGET=${OSX_TARGET}"
  220. fi
  221. _prebuild "${name}" "${pkgdir}"
  222. mkdir -p "${pkgdir}/build"
  223. if [ ! -f "${pkgdir}/.stamp_configured" ]; then
  224. pushd "${pkgdir}/build"
  225. cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_PREFIX="${PAWPAW_PREFIX}" ${extraconfrules} ..
  226. touch ../.stamp_configured
  227. popd
  228. fi
  229. if [ ! -f "${pkgdir}/.stamp_built" ]; then
  230. pushd "${pkgdir}/build"
  231. make ${MAKE_ARGS} ${EXTRA_MAKE_ARGS}
  232. touch ../.stamp_built
  233. popd
  234. fi
  235. if [ ! -f "${pkgdir}/.stamp_installed" ]; then
  236. pushd "${pkgdir}/build"
  237. make ${MAKE_ARGS} -j 1 install
  238. touch ../.stamp_installed
  239. popd
  240. fi
  241. _postbuild
  242. }
  243. function build_make() {
  244. local name="${1}"
  245. local version="${2}"
  246. local extraconfrules="${3}"
  247. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  248. _prebuild "${name}" "${pkgdir}"
  249. touch "${pkgdir}/.stamp_configured"
  250. if [ ! -f "${pkgdir}/.stamp_built" ]; then
  251. pushd "${pkgdir}"
  252. make PREFIX="${PAWPAW_PREFIX}" PKG_CONFIG="${TARGET_PKG_CONFIG}" ${MAKE_ARGS} ${extraconfrules}
  253. touch .stamp_built
  254. popd
  255. fi
  256. if [ ! -f "${pkgdir}/.stamp_installed" ]; then
  257. pushd "${pkgdir}"
  258. make PREFIX="${PAWPAW_PREFIX}" PKG_CONFIG="${TARGET_PKG_CONFIG}" ${MAKE_ARGS} ${extraconfrules} -j 1 install
  259. touch .stamp_installed
  260. popd
  261. fi
  262. _postbuild
  263. }
  264. function build_meson() {
  265. local name="${1}"
  266. local version="${2}"
  267. local extraconfrules="${3}"
  268. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  269. if [ "${CROSS_COMPILING}" -eq 1 ]; then
  270. extraconfrules="--cross-file "${PAWPAW_ROOT}/setup/meson/${PAWPAW_TARGET}.ini" ${extraconfrules}"
  271. fi
  272. _prebuild "${name}" "${pkgdir}"
  273. if [ ! -f "${pkgdir}/.stamp_configured" ]; then
  274. pushd "${pkgdir}"
  275. meson build --buildtype release --prefix "${PAWPAW_PREFIX}" ${extraconfrules}
  276. touch .stamp_configured
  277. popd
  278. fi
  279. if [ ! -f "${pkgdir}/.stamp_built" ]; then
  280. pushd "${pkgdir}"
  281. ninja -v -C build
  282. touch .stamp_built
  283. popd
  284. fi
  285. if [ ! -f "${pkgdir}/.stamp_installed" ]; then
  286. pushd "${pkgdir}"
  287. ninja -C build install
  288. touch .stamp_installed
  289. popd
  290. fi
  291. _postbuild
  292. }
  293. function build_python() {
  294. local name="${1}"
  295. local version="${2}"
  296. local extraconfrules="${3}"
  297. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  298. local python=python3
  299. if [ ! -e "${PAWPAW_PREFIX}/bin/python3" ] && ! which python3 > /dev/null; then
  300. python=python
  301. fi
  302. _prebuild "${name}" "${pkgdir}"
  303. # fix build of python packages
  304. export CFLAGS="$(echo ${CFLAGS} | sed -e 's/-fvisibility=hidden//')"
  305. export CFLAGS="$(echo ${CFLAGS} | sed -e 's/-ffast-math//')"
  306. export CFLAGS="$(echo ${CFLAGS} | sed -e 's/-fdata-sections -ffunction-sections//')"
  307. export CXXFLAGS="$(echo ${CXXFLAGS} | sed -e 's/-fvisibility=hidden//')"
  308. export CXXFLAGS="$(echo ${CXXFLAGS} | sed -e 's/-ffast-math//')"
  309. export CXXFLAGS="$(echo ${CXXFLAGS} | sed -e 's/-fvisibility-inlines-hidden//')"
  310. export CXXFLAGS="$(echo ${CXXFLAGS} | sed -e 's/-fdata-sections -ffunction-sections//')"
  311. export LDFLAGS="$(echo ${LDFLAGS} | sed -e 's/-Wl,-dead_strip -Wl,-dead_strip_dylibs//')"
  312. export LDFLAGS="$(echo ${LDFLAGS} | sed -e 's/-fdata-sections -ffunction-sections//')"
  313. touch "${pkgdir}/.stamp_configured"
  314. if [ ! -f "${pkgdir}/.stamp_built" ]; then
  315. pushd "${pkgdir}"
  316. ${python} setup.py build ${extraconfrules}
  317. touch .stamp_built
  318. popd
  319. fi
  320. if [ ! -f "${pkgdir}/.stamp_installed" ]; then
  321. pushd "${pkgdir}"
  322. ${python} setup.py install --prefix="${PAWPAW_PREFIX}" ${extraconfrules}
  323. touch .stamp_installed
  324. popd
  325. fi
  326. _postbuild
  327. }
  328. function build_qmake() {
  329. local name="${1}"
  330. local version="${2}"
  331. local extraconfrules="${3}"
  332. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  333. _prebuild "${name}" "${pkgdir}"
  334. if [ ! -f "${pkgdir}/.stamp_configured" ]; then
  335. pushd "${pkgdir}"
  336. qmake ${extraconfrules}
  337. touch .stamp_configured
  338. popd
  339. fi
  340. if [ ! -f "${pkgdir}/.stamp_built" ]; then
  341. pushd "${pkgdir}"
  342. make ${MAKE_ARGS} ${EXTRA_MAKE_ARGS}
  343. touch .stamp_built
  344. popd
  345. fi
  346. if [ ! -f "${pkgdir}/.stamp_installed" ]; then
  347. pushd "${pkgdir}"
  348. make ${MAKE_ARGS} -j 1 install
  349. touch .stamp_installed
  350. popd
  351. fi
  352. _postbuild
  353. }
  354. function build_waf() {
  355. local name="${1}"
  356. local version="${2}"
  357. local extraconfrules="${3}"
  358. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  359. local python=python3
  360. if ! which python3 > /dev/null; then
  361. python=python
  362. fi
  363. _prebuild "${name}" "${pkgdir}"
  364. if [ ! -f "${pkgdir}/.stamp_configured" ]; then
  365. pushd "${pkgdir}"
  366. ${python} waf configure --prefix="${PAWPAW_PREFIX}" ${extraconfrules}
  367. touch .stamp_configured
  368. popd
  369. fi
  370. if [ ! -f "${pkgdir}/.stamp_built" ]; then
  371. pushd "${pkgdir}"
  372. ${python} waf build ${WAF_ARGS}
  373. touch .stamp_built
  374. popd
  375. fi
  376. if [ ! -f "${pkgdir}/.stamp_installed" ]; then
  377. pushd "${pkgdir}"
  378. ${python} waf install ${WAF_ARGS} --prefix="${PAWPAW_PREFIX}" ${extraconfrules} -j 1
  379. rm -f ${PAWPAW_PREFIX}/lib/lv2/*/*.a
  380. touch .stamp_installed
  381. popd
  382. fi
  383. _postbuild
  384. }
  385. # ---------------------------------------------------------------------------------------------------------------------
  386. function build_host_autoconf() {
  387. local name="${1}"
  388. local version="${2}"
  389. local extraconfrules="${3}"
  390. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  391. unset AR
  392. unset CC
  393. unset CXX
  394. unset LD
  395. unset STRIP
  396. unset CFLAGS
  397. unset CPPFLAGS
  398. unset CXXFLAGS
  399. unset LDFLAGS
  400. if [ ! -f "${pkgdir}/.stamp_configured" ]; then
  401. pushd "${pkgdir}"
  402. ./configure --enable-static --disable-shared --disable-maintainer-mode --prefix="${PAWPAW_PREFIX}" ${extraconfrules}
  403. touch .stamp_configured
  404. popd
  405. fi
  406. if [ ! -f "${pkgdir}/.stamp_built" ]; then
  407. pushd "${pkgdir}"
  408. make ${MAKE_ARGS}
  409. touch .stamp_built
  410. popd
  411. fi
  412. if [ ! -f "${pkgdir}/.stamp_installed" ]; then
  413. pushd "${pkgdir}"
  414. make ${MAKE_ARGS} install -j 1
  415. touch .stamp_installed
  416. popd
  417. fi
  418. }
  419. # ---------------------------------------------------------------------------------------------------------------------
  420. function patch_file() {
  421. local name="${1}"
  422. local version="${2}"
  423. local file="${3}"
  424. local rule="${4}"
  425. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  426. if [ -e "${pkgdir}/${file}" ]; then
  427. sed -i -e "${rule}" "${pkgdir}/${file}"
  428. fi
  429. }
  430. function copy_file() {
  431. local name="${1}"
  432. local version="${2}"
  433. local source="${3}"
  434. local target="${4}"
  435. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  436. if [ ! -e "${pkgdir}/${target}" ] || [ "${source}" -nt "${target}" ]; then
  437. pushd "${pkgdir}"
  438. cp -v "${source}" "${target}"
  439. popd
  440. fi
  441. }
  442. function install_file() {
  443. local name="${1}"
  444. local version="${2}"
  445. local source="${3}"
  446. local targetdir="${4}"
  447. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  448. if [ ! -e "${PAWPAW_PREFIX}/${targetdir}/$(basename ${source})" ]; then
  449. pushd "${pkgdir}"
  450. cp -v "${source}" "${PAWPAW_PREFIX}/${targetdir}/"
  451. popd
  452. fi
  453. }
  454. function link_file() {
  455. local name="${1}"
  456. local version="${2}"
  457. local source="${3}"
  458. local target="${4}"
  459. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  460. if [ ! -e "${pkgdir}/${target}" ]; then
  461. pushd "${pkgdir}"
  462. ln -sfv "${source}" "${target}"
  463. popd
  464. fi
  465. }
  466. function remove_file() {
  467. local name="${1}"
  468. local version="${2}"
  469. local file="${3}"
  470. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  471. if [ -e "${pkgdir}/${file}" ]; then
  472. rm -fv "${pkgdir}/${file}"
  473. fi
  474. }
  475. # ---------------------------------------------------------------------------------------------------------------------
  476. function patch_osx_binary_libs() {
  477. local file="${1}"
  478. if [ -L "${file}" ]; then
  479. return 0
  480. fi
  481. idname=$(otool -D "${file}")
  482. if otool -L "${file}" | grep -v ":" | grep -v "${idname}" | grep -q "${PAWPAW_PREFIX}"; then
  483. #install_name_tool -change "@rpath/QtCore.framework/Versions/5/QtCore" "@executable_path/QtCore" "${file}"
  484. #install_name_tool -change "@rpath/QtGui.framework/Versions/5/QtGui" "@executable_path/QtGui" "${file}"
  485. #install_name_tool -change "@rpath/QtWidgets.framework/Versions/5/QtWidgets" "@executable_path/QtWidgets" "${file}"
  486. #install_name_tool -change "@rpath/QtXml.framework/Versions/5/QtXml" "@executable_path/QtXml" "${file}"
  487. install_name_tool -change "@executable_path/../Frameworks/libjack.0.dylib" "/usr/local/lib/libjack.0.dylib" "${file}"
  488. install_name_tool -change "${PAWPAW_PREFIX}/jack2/lib/libjack.0.dylib" "/usr/local/lib/libjack.0.dylib" "${file}"
  489. install_name_tool -change "${PAWPAW_PREFIX}/jack2/lib/libjacknet.0.dylib" "/usr/local/lib/libjacknet.0.dylib" "${file}"
  490. install_name_tool -change "${PAWPAW_PREFIX}/jack2/lib/libjackserver.0.dylib" "/usr/local/lib/libjackserver.0.dylib" "${file}"
  491. fi
  492. }
  493. function patch_osx_qtapp() {
  494. local name="${1}"
  495. local version="${2}"
  496. local appfile="${3}"
  497. local pkgdir="${PAWPAW_BUILDDIR}/${name}-${version}"
  498. _prebuild "${name}" "${pkgdir}"
  499. mkdir -p "${appfile}/Contents/PlugIns/platforms"
  500. mkdir -p "${appfile}/Contents/PlugIns/printsupport"
  501. cp -v "${PAWPAW_PREFIX}/lib/qt5/plugins/platforms/libqcocoa.dylib" "${appfile}/Contents/PlugIns/platforms/"
  502. cp -v "${PAWPAW_PREFIX}/lib/qt5/plugins/printsupport/libcocoaprintersupport.dylib" "${appfile}/Contents/PlugIns/printsupport/"
  503. macdeployqt "${appfile}"
  504. rm -f "${appfile}/Contents/Frameworks/libjack.0.dylib"
  505. _postbuild
  506. }
  507. # ---------------------------------------------------------------------------------------------------------------------