Audio plugin host https://kx.studio/carla
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.

339 lines
15KB

  1. #!/bin/bash
  2. # ------------------------------------------------------------------------------------
  3. # stop on error
  4. set -e
  5. VERSION="2.3.0-alpha3"
  6. # ------------------------------------------------------------------------------------
  7. # cd to correct path
  8. if [ ! -f Makefile ]; then
  9. cd ../..
  10. fi
  11. # ---------------------------------------------------------------------------------------------------------------------
  12. # set variables
  13. source data/macos/common.env
  14. if [ $(uname -r | cut -d '.' -f 1) -lt 16 ]; then
  15. export MACOS_VERSION_MIN="10.8"
  16. PKG_SUFFIX="intel-10.8"
  17. else
  18. export MACOS_VERSION_MIN="10.12"
  19. if [ "${MACOS_UNIVERSAL}" -eq 1 ]; then
  20. PKG_SUFFIX="universal"
  21. else
  22. PKG_SUFFIX="intel-10.12"
  23. fi
  24. fi
  25. PKG_FOLDER="Carla_${VERSION}-macOS-${PKG_SUFFIX}"
  26. export MACOS="true"
  27. export USING_JUCE="true"
  28. export CC=clang
  29. export CXX=clang++
  30. unset CPPFLAGS
  31. ##############################################################################################
  32. # Complete 64bit build
  33. export CFLAGS="-I${TARGETDIR}/carla64/include -mmacosx-version-min=${MACOS_VERSION_MIN}"
  34. export CFLAGS="${CFLAGS} -mtune=generic -msse -msse2"
  35. export LDFLAGS="-L${TARGETDIR}/carla64/lib -mmacosx-version-min=${MACOS_VERSION_MIN} -stdlib=libc++"
  36. if [ "${MACOS_UNIVERSAL}" -eq 1 ]; then
  37. export CFLAGS="${CFLAGS} -arch x86_64 -arch arm64"
  38. export LDFLAGS="${LDFLAGS} -arch x86_64 -arch arm64"
  39. else
  40. export CFLAGS="${CFLAGS} -m${ARCH}"
  41. export LDFLAGS="${LDFLAGS} -m${ARCH}"
  42. fi
  43. export CXXFLAGS="${CFLAGS} -stdlib=libc++ -Wno-unknown-pragmas -Wno-unused-private-field -Werror=auto-var-id"
  44. export PATH=${TARGETDIR}/carla/bin:${TARGETDIR}/carla64/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
  45. export PKG_CONFIG_PATH=${TARGETDIR}/carla/lib/pkgconfig:${TARGETDIR}/carla64/lib/pkgconfig
  46. export MOC_QT5=moc
  47. export RCC_QT5=rcc
  48. export UIC_QT5=uic
  49. make USING_JUCE=${USING_JUCE} USING_JUCE_AUDIO_DEVICES=${USING_JUCE} ${MAKE_ARGS}
  50. ##############################################################################################
  51. # Build 32bit bridges
  52. if [ $(clang -v 2>&1 | grep version | cut -d' ' -f4 | cut -d'.' -f1) -lt 11 ]; then
  53. export CFLAGS="-I${TARGETDIR}/carla32/include -m32 -mmacosx-version-min=${MACOS_VERSION_MIN}"
  54. export CXXFLAGS="${CFLAGS} -stdlib=libc++ -Wno-unknown-pragmas -Wno-unused-private-field -Werror=auto-var-id"
  55. export LDFLAGS="-L${TARGETDIR}/carla32/lib -m32 -mmacosx-version-min=${MACOS_VERSION_MIN} -stdlib=libc++"
  56. export PATH=${TARGETDIR}/carla32/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
  57. export PKG_CONFIG_PATH=${TARGETDIR}/carla32/lib/pkgconfig
  58. make USING_JUCE=${USING_JUCE} posix32 ${MAKE_ARGS}
  59. fi
  60. ##############################################################################################
  61. # Build Mac App
  62. export PATH=${TARGETDIR}/carla/bin:${TARGETDIR}/carla64/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
  63. export PYTHONPATH=$(pwd)/source/frontend
  64. unset CFLAGS
  65. unset CXXFLAGS
  66. unset LDLAGS
  67. unset PKG_CONFIG_PATH
  68. rm -rf ./build/Carla
  69. rm -rf ./build/CarlaControl
  70. rm -rf ./build/Carla.app
  71. rm -rf ./build/CarlaControl.app
  72. rm -rf ./build/exe.*
  73. rm -rf ./build/*.lv2
  74. rm -rf ./build/*.vst
  75. cp ./source/frontend/carla ./source/frontend/Carla.pyw
  76. cp ./source/frontend/carla-control ./source/frontend/Carla-Control.pyw
  77. cp ./source/frontend/carla-plugin ./source/frontend/carla-plugin.pyw
  78. cp ./source/frontend/bigmeter-ui ./source/frontend/bigmeter-ui.pyw
  79. cp ./source/frontend/midipattern-ui ./source/frontend/midipattern-ui.pyw
  80. cp ./source/frontend/notes-ui ./source/frontend/notes-ui.pyw
  81. cp ./source/frontend/xycontroller-ui ./source/frontend/xycontroller-ui.pyw
  82. env SCRIPT_NAME=Carla python3 ./data/macos/bundle.py bdist_mac --bundle-name=Carla
  83. env SCRIPT_NAME=Carla-Control python3 ./data/macos/bundle.py bdist_mac --bundle-name=Carla-Control
  84. env SCRIPT_NAME=carla-plugin python3 ./data/macos/bundle.py bdist_mac --bundle-name=carla-plugin
  85. env SCRIPT_NAME=bigmeter-ui python3 ./data/macos/bundle.py bdist_mac --bundle-name=bigmeter-ui
  86. env SCRIPT_NAME=midipattern-ui python3 ./data/macos/bundle.py bdist_mac --bundle-name=midipattern-ui
  87. env SCRIPT_NAME=notes-ui python3 ./data/macos/bundle.py bdist_mac --bundle-name=notes-ui
  88. env SCRIPT_NAME=xycontroller-ui python3 ./data/macos/bundle.py bdist_mac --bundle-name=xycontroller-ui
  89. rm ./source/frontend/*.pyw
  90. mkdir -p build/Carla.app/Contents/MacOS/resources
  91. mkdir -p build/Carla.app/Contents/MacOS/styles
  92. mkdir -p build/Carla-Control.app/Contents/MacOS/styles
  93. cp bin/*carla*.dylib build/Carla.app/Contents/MacOS/
  94. cp bin/carla-bridge-* build/Carla.app/Contents/MacOS/
  95. cp bin/carla-discovery-* build/Carla.app/Contents/MacOS/
  96. cp bin/styles/* build/Carla.app/Contents/MacOS/styles/
  97. cp bin/*utils.dylib build/Carla-Control.app/Contents/MacOS/
  98. cp bin/styles/* build/Carla-Control.app/Contents/MacOS/styles/
  99. rm -f build/Carla.app/Contents/MacOS/carla-bridge-lv2-modgui
  100. rm -f build/Carla.app/Contents/MacOS/carla-bridge-lv2-qt5
  101. find build/ -type f -name "*.py" -delete
  102. find build/ -type f -name "*.pyi" -delete
  103. find build/ -type f -name "pylupdate.so" -delete
  104. find build/ -type f -name "pyrcc.so" -delete
  105. find build/ -type f -name "QtMacExtras*" -delete
  106. find build/ -type f -name "QtNetwork*" -delete
  107. find build/ -type f -name "QtSql*" -delete
  108. find build/ -type f -name "QtTest*" -delete
  109. find build/ -type f -name "QtXml*" -delete
  110. if [ "${MACOS_VERSION_MIN}" != "10.12" ]; then
  111. find build/ -type f -name "*.pyc" -delete
  112. fi
  113. rm -rf build/Carla.app/Contents/MacOS/lib/PyQt5/uic
  114. rm -rf build/Carla.app/Contents/MacOS/resources/__pycache__
  115. rm -rf build/Carla.app/Contents/MacOS/resources/patchcanvas
  116. rm -rf build/Carla.app/Contents/MacOS/resources/widgets
  117. rm -rf build/Carla.app/Contents/MacOS/resources/zynaddsubfx
  118. rm -rf build/Carla-Control.app/Contents/MacOS/resources/__pycache__
  119. # missed by cx-freeze
  120. mkdir build/Carla.app/Contents/MacOS/iconengines
  121. mkdir build/Carla-Control.app/Contents/MacOS/iconengines
  122. cp ${TARGETDIR}/carla/lib/qt5/plugins/iconengines/libqsvgicon.dylib build/Carla.app/Contents/MacOS/iconengines/
  123. cp ${TARGETDIR}/carla/lib/qt5/plugins/iconengines/libqsvgicon.dylib build/Carla-Control.app/Contents/MacOS/iconengines/
  124. if [ "${MACOS_VERSION_MIN}" = "10.12" ]; then
  125. mkdir build/Carla.app/Contents/MacOS/imageformats
  126. mkdir build/Carla-Control.app/Contents/MacOS/imageformats
  127. mkdir build/Carla.app/Contents/MacOS/platforms
  128. mkdir build/Carla-Control.app/Contents/MacOS/platforms
  129. cp ${TARGETDIR}/carla/lib/qt5/plugins/imageformats/libq{jpeg,svg}.dylib build/Carla.app/Contents/MacOS/imageformats/
  130. cp ${TARGETDIR}/carla/lib/qt5/plugins/imageformats/libq{jpeg,svg}.dylib build/Carla-Control.app/Contents/MacOS/imageformats/
  131. cp ${TARGETDIR}/carla/lib/qt5/plugins/platforms/libq{cocoa,minimal,offscreen}.dylib build/Carla.app/Contents/MacOS/platforms/
  132. cp ${TARGETDIR}/carla/lib/qt5/plugins/platforms/libq{cocoa,minimal,offscreen}.dylib build/Carla-Control.app/Contents/MacOS/platforms/
  133. fi
  134. # continuing...
  135. cd build/Carla.app/Contents/MacOS
  136. for f in `find . -type f | grep -e Q -e libq -e carlastyle.dylib`; do
  137. if [ "${MACOS_VERSION_MIN}" = "10.12" ] && (echo "$f" | grep -q pyc); then continue; fi
  138. install_name_tool -change "@rpath/QtCore.framework/Versions/5/QtCore" @executable_path/QtCore $f
  139. install_name_tool -change "@rpath/QtGui.framework/Versions/5/QtGui" @executable_path/QtGui $f
  140. install_name_tool -change "@rpath/QtOpenGL.framework/Versions/5/QtOpenGL" @executable_path/QtOpenGL $f
  141. install_name_tool -change "@rpath/QtPrintSupport.framework/Versions/5/QtPrintSupport" @executable_path/QtPrintSupport $f
  142. install_name_tool -change "@rpath/QtSvg.framework/Versions/5/QtSvg" @executable_path/QtSvg $f
  143. install_name_tool -change "@rpath/QtWidgets.framework/Versions/5/QtWidgets" @executable_path/QtWidgets $f
  144. install_name_tool -change "@rpath/QtMacExtras.framework/Versions/5/QtMacExtras" @executable_path/QtMacExtras $f
  145. done
  146. if [ "${MACOS_VERSION_MIN}" = "10.12" ]; then
  147. cp ${TARGETDIR}/carla/lib/QtCore.framework/Versions/5/QtCore .
  148. cp ${TARGETDIR}/carla/lib/QtGui.framework/Versions/5/QtGui .
  149. cp ${TARGETDIR}/carla/lib/QtOpenGL.framework/Versions/5/QtOpenGL .
  150. cp ${TARGETDIR}/carla/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport .
  151. cp ${TARGETDIR}/carla/lib/QtSvg.framework/Versions/5/QtSvg .
  152. cp ${TARGETDIR}/carla/lib/QtWidgets.framework/Versions/5/QtWidgets .
  153. cp ${TARGETDIR}/carla/lib/QtMacExtras.framework/Versions/5/QtMacExtras .
  154. fi
  155. cd ../../../..
  156. cd build/Carla-Control.app/Contents/MacOS
  157. for f in `find . -type f | grep -e Q -e libq -e carlastyle.dylib`; do
  158. if [ "${MACOS_VERSION_MIN}" = "10.12" ] && (echo "$f" | grep -q pyc); then continue; fi
  159. install_name_tool -change "@rpath/QtCore.framework/Versions/5/QtCore" @executable_path/QtCore $f
  160. install_name_tool -change "@rpath/QtGui.framework/Versions/5/QtGui" @executable_path/QtGui $f
  161. install_name_tool -change "@rpath/QtOpenGL.framework/Versions/5/QtOpenGL" @executable_path/QtOpenGL $f
  162. install_name_tool -change "@rpath/QtPrintSupport.framework/Versions/5/QtPrintSupport" @executable_path/QtPrintSupport $f
  163. install_name_tool -change "@rpath/QtSvg.framework/Versions/5/QtSvg" @executable_path/QtSvg $f
  164. install_name_tool -change "@rpath/QtWidgets.framework/Versions/5/QtWidgets" @executable_path/QtWidgets $f
  165. install_name_tool -change "@rpath/QtMacExtras.framework/Versions/5/QtMacExtras" @executable_path/QtMacExtras $f
  166. done
  167. if [ "${MACOS_VERSION_MIN}" = "10.12" ]; then
  168. cp ${TARGETDIR}/carla/lib/QtCore.framework/Versions/5/QtCore .
  169. cp ${TARGETDIR}/carla/lib/QtGui.framework/Versions/5/QtGui .
  170. cp ${TARGETDIR}/carla/lib/QtOpenGL.framework/Versions/5/QtOpenGL .
  171. cp ${TARGETDIR}/carla/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport .
  172. cp ${TARGETDIR}/carla/lib/QtSvg.framework/Versions/5/QtSvg .
  173. cp ${TARGETDIR}/carla/lib/QtWidgets.framework/Versions/5/QtWidgets .
  174. cp ${TARGETDIR}/carla/lib/QtMacExtras.framework/Versions/5/QtMacExtras .
  175. fi
  176. cd ../../../..
  177. mv build/carla-plugin.app/Contents/MacOS/carla-plugin build/Carla.app/Contents/MacOS/resources/
  178. mv build/bigmeter-ui.app/Contents/MacOS/bigmeter-ui build/Carla.app/Contents/MacOS/resources/
  179. mv build/midipattern-ui.app/Contents/MacOS/midipattern-ui build/Carla.app/Contents/MacOS/resources/
  180. mv build/notes-ui.app/Contents/MacOS/notes-ui build/Carla.app/Contents/MacOS/resources/
  181. mv build/xycontroller-ui.app/Contents/MacOS/xycontroller-ui build/Carla.app/Contents/MacOS/resources/
  182. mv build/Carla.app/Contents/MacOS/lib/library.zip build/Carla.app/Contents/MacOS/lib/library-carla1.zip
  183. mv build/carla-plugin.app/Contents/MacOS/lib/library.zip build/Carla.app/Contents/MacOS/lib/library-carla2.zip
  184. mv build/bigmeter-ui.app/Contents/MacOS/lib/library.zip build/Carla.app/Contents/MacOS/lib/library-bigmeter.zip
  185. mv build/midipattern-ui.app/Contents/MacOS/lib/library.zip build/Carla.app/Contents/MacOS/lib/library-midipattern.zip
  186. mv build/notes-ui.app/Contents/MacOS/lib/library.zip build/Carla.app/Contents/MacOS/lib/library-notes.zip
  187. mv build/xycontroller-ui.app/Contents/MacOS/lib/library.zip build/Carla.app/Contents/MacOS/lib/library-xycontroller.zip
  188. mkdir build/Carla.app/Contents/MacOS/lib/_lib
  189. pushd build/Carla.app/Contents/MacOS/lib/_lib
  190. unzip -o ../library-bigmeter.zip
  191. unzip -o ../library-midipattern.zip
  192. unzip -o ../library-notes.zip
  193. unzip -o ../library-xycontroller.zip
  194. unzip -o ../library-carla2.zip
  195. unzip -o ../library-carla1.zip
  196. zip -r -9 ../library.zip *
  197. popd
  198. rm -r build/Carla.app/Contents/MacOS/lib/_lib build/Carla.app/Contents/MacOS/lib/library-*.zip
  199. rm -rf build/carla-plugin.app
  200. rm -rf build/bigmeter-ui.app
  201. rm -rf build/midipattern-ui.app
  202. rm -rf build/notes-ui.app
  203. rm -rf build/xycontroller-ui.app
  204. cd build/Carla.app/Contents/MacOS/resources/
  205. ln -sf ../Qt* ../lib ../iconengines ../imageformats ../platforms ../styles .
  206. ln -sf carla-plugin carla-plugin-patchbay
  207. cd ../../../../..
  208. mkdir build/carla.lv2
  209. mkdir build/carla.lv2/resources
  210. mkdir build/carla.lv2/styles
  211. cp bin/carla.lv2/*.* build/carla.lv2/
  212. cp bin/carla-bridge-* build/carla.lv2/
  213. cp bin/carla-discovery-* build/carla.lv2/
  214. cp bin/libcarla_utils.dylib build/carla.lv2/
  215. rm -f build/carla.lv2/carla-bridge-lv2-modgui
  216. rm -f build/carla.lv2/carla-bridge-lv2-qt5
  217. cp -LR build/Carla.app/Contents/MacOS/resources/* build/carla.lv2/resources/
  218. cp build/Carla.app/Contents/MacOS/styles/* build/carla.lv2/styles/
  219. ./data/macos/generate-vst-bundles.sh
  220. mv bin/CarlaVstShell.vst build/carla.vst
  221. mv bin/CarlaVstFxShell.vst build/carlafx.vst
  222. rm -rf bin/*.vst
  223. mkdir build/carla.vst/Contents/MacOS/resources
  224. mkdir build/carla.vst/Contents/MacOS/styles
  225. mkdir build/carlafx.vst/Contents/MacOS/resources
  226. mkdir build/carlafx.vst/Contents/MacOS/styles
  227. cp bin/carla-bridge-* build/carla.vst/Contents/MacOS/
  228. cp bin/carla-discovery-* build/carla.vst/Contents/MacOS/
  229. cp bin/libcarla_utils.dylib build/carla.vst/Contents/MacOS/
  230. rm -f build/carla.vst/carla-bridge-lv2-modgui
  231. rm -f build/carla.vst/carla-bridge-lv2-qt5
  232. cp -LR build/Carla.app/Contents/MacOS/resources/* build/carla.vst/Contents/MacOS/resources/
  233. cp build/Carla.app/Contents/MacOS/styles/* build/carla.vst/Contents/MacOS/styles/
  234. cp bin/carla-bridge-* build/carlafx.vst/Contents/MacOS/
  235. cp bin/carla-discovery-* build/carlafx.vst/Contents/MacOS/
  236. cp bin/libcarla_utils.dylib build/carlafx.vst/Contents/MacOS/
  237. rm -f build/carlafx.vst/carla-bridge-lv2-modgui
  238. rm -f build/carlafx.vst/carla-bridge-lv2-qt5
  239. cp -LR build/Carla.app/Contents/MacOS/resources/* build/carlafx.vst/Contents/MacOS/resources/
  240. cp build/Carla.app/Contents/MacOS/styles/* build/carlafx.vst/Contents/MacOS/styles/
  241. ##############################################################################################
  242. rm -rf ${PKG_FOLDER}
  243. mkdir ${PKG_FOLDER}
  244. cp data/macos/README ${PKG_FOLDER}/
  245. mv build/carla.lv2 ${PKG_FOLDER}/
  246. mv build/carla.vst ${PKG_FOLDER}/
  247. mv build/carlafx.vst ${PKG_FOLDER}/
  248. mv build/Carla.app ${PKG_FOLDER}/
  249. mv build/Carla-Control.app ${PKG_FOLDER}/
  250. ##############################################################################################
  251. # Build Mac plugin installer
  252. pkgbuild \
  253. --identifier "studio.kx.carla.lv2" \
  254. --install-location "/Library/Audio/Plug-Ins/LV2/carla.lv2/" \
  255. --root "${PKG_FOLDER}/carla.lv2/" \
  256. "${PKG_FOLDER}/carla-lv2.pkg"
  257. pkgbuild \
  258. --identifier "studio.kx.carla.vst2fx" \
  259. --install-location "/Library/Audio/Plug-Ins/VST/carlafx.vst/" \
  260. --root "${PKG_FOLDER}/carlafx.vst/" \
  261. "${PKG_FOLDER}/carla-vst2fx.pkg"
  262. pkgbuild \
  263. --identifier "studio.kx.carla.vst2syn" \
  264. --install-location "/Library/Audio/Plug-Ins/VST/carla.vst/" \
  265. --root "${PKG_FOLDER}/carla.vst/" \
  266. "${PKG_FOLDER}/carla-vst2syn.pkg"
  267. productbuild \
  268. --distribution data/macos/package.xml \
  269. --identifier studio.kx.carla \
  270. --package-path "${PKG_FOLDER}" \
  271. --version ${VERSION} \
  272. "${PKG_FOLDER}/Carla-Plugins.pkg"
  273. rm -r ${PKG_FOLDER}/carla.lv2
  274. rm -r ${PKG_FOLDER}/carla.vst
  275. rm -r ${PKG_FOLDER}/carlafx.vst
  276. rm ${PKG_FOLDER}/carla-lv2.pkg
  277. rm ${PKG_FOLDER}/carla-vst2fx.pkg
  278. rm ${PKG_FOLDER}/carla-vst2syn.pkg
  279. ##############################################################################################