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.

121 lines
4.5KB

  1. #!/bin/bash
  2. set -e
  3. cd $(dirname ${0})
  4. PAWPAW_ROOT="${PWD}"
  5. JACK2_VERSION=${JACK2_VERSION:=git}
  6. JACK_ROUTER_VERSION=${JACK_ROUTER_VERSION:=6c2e532bb05d2ba59ef210bef2fe270d588c2fdf}
  7. QJACKCTL_VERSION=${QJACKCTL_VERSION:=0.9.5}
  8. # ---------------------------------------------------------------------------------------------------------------------
  9. target="${1}"
  10. if [ -z "${target}" ]; then
  11. echo "usage: ${0} <target> [package-build?]"
  12. exit 1
  13. fi
  14. # TODO check that bootstrap-jack.sh has been run
  15. # ---------------------------------------------------------------------------------------------------------------------
  16. source setup/check_target.sh
  17. source setup/env.sh
  18. source setup/functions.sh
  19. source setup/versions.sh
  20. # ---------------------------------------------------------------------------------------------------------------------
  21. jack2_repo="https://github.com/jackaudio/jack2.git"
  22. jack2_prefix="${PAWPAW_PREFIX}-jack2"
  23. if [ "${MACOS}" -eq 1 ]; then
  24. jack2_extra_prefix="/usr/local"
  25. fi
  26. # ---------------------------------------------------------------------------------------------------------------------
  27. if [ ! -e jack2 ]; then
  28. ln -s "${PAWPAW_BUILDDIR}/jack2-${JACK2_VERSION}" jack2
  29. fi
  30. # ---------------------------------------------------------------------------------------------------------------------
  31. if [ "${WIN32}" -eq 1 ]; then
  32. # setup innosetup
  33. dlfile="${PAWPAW_DOWNLOADDIR}/innosetup-6.0.5.exe"
  34. innodir="${PAWPAW_BUILDDIR}/innosetup-6.0.5"
  35. iscc="${innodir}/drive_c/InnoSetup/ISCC.exe"
  36. # download it
  37. if [ ! -f "${dlfile}" ]; then
  38. # FIXME proper dl version
  39. curl -L https://jrsoftware.org/download.php/is.exe?site=2 -o "${dlfile}"
  40. fi
  41. # initialize wine
  42. if [ ! -d "${innodir}"/drive_c ]; then
  43. env WINEPREFIX="${innodir}" wineboot -u
  44. fi
  45. # install innosetup in custom wineprefix
  46. if [ ! -f "${innodir}"/drive_c/InnoSetup/ISCC.exe ]; then
  47. env WINEPREFIX="${innodir}" wine "${dlfile}" /allusers /dir=C:\\InnoSetup /nocancel /norestart /verysilent
  48. fi
  49. # copy jackrouter binaries
  50. mkdir -p "${jack2_prefix}/jack-router/win32"
  51. mkdir -p "${jack2_prefix}/jack-router/win64"
  52. copy_file jack-router "${JACK_ROUTER_VERSION}" "README-win" "${jack2_prefix}/jack-router/README.txt"
  53. copy_file jack-router "${JACK_ROUTER_VERSION}" "binaries/win32/JackRouter.dll" "${jack2_prefix}/jack-router/win32/JackRouter.dll"
  54. copy_file jack-router "${JACK_ROUTER_VERSION}" "binaries/win32/JackRouter.ini" "${jack2_prefix}/jack-router/win32/JackRouter.ini"
  55. if [ "${WIN64}" -eq 1 ]; then
  56. copy_file jack-router "${JACK_ROUTER_VERSION}" "binaries/win64/JackRouter.dll" "${jack2_prefix}/jack-router/win64/JackRouter.dll"
  57. copy_file jack-router "${JACK_ROUTER_VERSION}" "binaries/win64/JackRouter.ini" "${jack2_prefix}/jack-router/win64/JackRouter.ini"
  58. fi
  59. # finally create the installer file
  60. pushd "${PAWPAW_BUILDDIR}/jack2-${JACK2_VERSION}/windows/inno"
  61. echo "#define VERSION \"${JACK2_VERSION}\"" > "version.iss"
  62. ln -sf "${PAWPAW_PREFIX}/bin/Qt5"{Core,Gui,Network,Widgets,Xml}".dll" .
  63. ln -sf "${PAWPAW_PREFIX}/lib/qt5/plugins/platforms/qwindows.dll" .
  64. ln -sf "${jack2_prefix}" "${PAWPAW_TARGET}"
  65. env WINEPREFIX="${innodir}" wine "${iscc}" "${PAWPAW_TARGET}.iss"
  66. popd
  67. # and move installer file where CI expects it to be
  68. mv "${PAWPAW_BUILDDIR}/jack2-${JACK2_VERSION}/windows/inno/"*.exe .
  69. elif [ "${MACOS}" -eq 1 ]; then
  70. for f in $(ls "${jack2_prefix}${jack2_extra_prefix}/bin"/* \
  71. "${jack2_prefix}${jack2_extra_prefix}/lib"/*.dylib \
  72. "${jack2_prefix}${jack2_extra_prefix}/lib/jack"/*); do
  73. patch_osx_binary_libs "${f}"
  74. done
  75. jack2_lastversion=$(cat jack2/wscript | awk 'sub("VERSION=","")' | tr -d "'")
  76. ./jack2/macosx/generate-pkg.sh "${jack2_prefix}${jack2_extra_prefix}/"
  77. qjackctl_app="${PAWPAW_PREFIX}/bin/QjackCtl.app"
  78. qjackctl_dir="${qjackctl_app}/Contents/MacOS"
  79. patch_osx_qtapp qjackctl "${QJACKCTL_VERSION}" "${qjackctl_app}"
  80. patch_osx_binary_libs "${qjackctl_dir}/QjackCtl"
  81. rm -rf jack2/macosx/QjackCtl.app
  82. cp -rv "${qjackctl_app}" jack2/macosx/QjackCtl.app
  83. if [ "${MACOS_UNIVERSAL}" -eq 1 ]; then
  84. variant="universal"
  85. else
  86. variant="intel"
  87. fi
  88. rm -f jack2-macOS-${variant}-${JACK2_VERSION}.tar.gz
  89. tar czf jack2-macOS-${variant}-${JACK2_VERSION}.tar.gz -C jack2/macosx jack2-osx-${jack2_lastversion}.pkg QjackCtl.app
  90. fi
  91. # ---------------------------------------------------------------------------------------------------------------------