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.

927 lines
30KB

  1. #!/usr/bin/make -f
  2. # Makefile for Carla #
  3. # ------------------ #
  4. # Created by falkTX
  5. #
  6. include source/Makefile.mk
  7. # ----------------------------------------------------------------------------------------------------------------------------
  8. LINK := ln -sf
  9. ifeq ($(DEFAULT_QT),4)
  10. PYUIC ?= pyuic4 -w
  11. PYRCC ?= pyrcc4 -py3
  12. else
  13. PYUIC ?= pyuic5
  14. PYRCC ?= pyrcc5
  15. endif
  16. # ----------------------------------------------------------------------------------------------------------------------------
  17. PREFIX := /usr/local
  18. LIBDIR := $(PREFIX)/lib
  19. DESTDIR :=
  20. BINDIR := $(CURDIR)/bin
  21. ifeq ($(DEBUG),true)
  22. MODULEDIR := $(CURDIR)/build/modules/Debug
  23. else
  24. MODULEDIR := $(CURDIR)/build/modules/Release
  25. endif
  26. # ----------------------------------------------------------------------------------------------------------------------------
  27. all: BIN RES UI WIDGETS
  28. # ----------------------------------------------------------------------------------------------------------------------------
  29. # Config
  30. config: source/carla_config.py source/includes/config.h
  31. source/carla_config.py:
  32. @echo "#!/usr/bin/env python3" > $@
  33. @echo "# -*- coding: utf-8 -*-" >> $@
  34. ifeq ($(DEFAULT_QT),4)
  35. @echo "config_UseQt5 = False" >> $@
  36. else
  37. @echo "config_UseQt5 = True" >> $@
  38. endif
  39. source/includes/config.h:
  40. @echo "/* Carla config, auto-generated file */" > $@
  41. @echo "" >> $@
  42. @echo "/* additional audio drivers, Linux only */" >> $@
  43. ifeq ($(HAVE_ALSA),true)
  44. @echo "#define HAVE_ALSA" >> $@
  45. else
  46. @echo "// #define HAVE_ALSA" >> $@
  47. endif
  48. ifeq ($(HAVE_PULSEAUDIO),true)
  49. @echo "#define HAVE_PULSEAUDIO" >> $@
  50. else
  51. @echo "// #define HAVE_PULSEAUDIO" >> $@
  52. endif
  53. @echo "" >> $@
  54. @echo "/* optional libs for extra backend features */" >> $@
  55. ifeq ($(HAVE_LIBLO),true)
  56. @echo "#define HAVE_LIBLO" >> $@
  57. else
  58. @echo "// #define HAVE_LIBLO" >> $@
  59. endif
  60. ifeq ($(HAVE_LIBMAGIC),true)
  61. @echo "#define HAVE_LIBMAGIC" >> $@
  62. else
  63. @echo "// #define HAVE_LIBMAGIC" >> $@
  64. endif
  65. ifeq ($(HAVE_FLUIDSYNTH),true)
  66. @echo "#define HAVE_FLUIDSYNTH" >> $@
  67. else
  68. @echo "// #define HAVE_FLUIDSYNTH" >> $@
  69. endif
  70. ifeq ($(HAVE_LINUXSAMPLER),true)
  71. @echo "#define HAVE_LINUXSAMPLER" >> $@
  72. else
  73. @echo "// #define HAVE_LINUXSAMPLER" >> $@
  74. endif
  75. @echo "" >> $@
  76. @echo "/* optional libs for extra plugins and UIs */" >> $@
  77. ifeq ($(HAVE_DGL),true)
  78. @echo "#define HAVE_DGL" >> $@
  79. else
  80. @echo "// #define HAVE_DGL" >> $@
  81. endif
  82. ifeq ($(HAVE_PROJECTM),true)
  83. @echo "#define HAVE_PROJECTM" >> $@
  84. else
  85. @echo "// #define HAVE_PROJECTM" >> $@
  86. endif
  87. ifeq ($(HAVE_ZYN_DEPS),true)
  88. @echo "#define HAVE_ZYN_DEPS" >> $@
  89. else
  90. @echo "// #define HAVE_ZYN_DEPS" >> $@
  91. endif
  92. ifeq ($(HAVE_ZYN_UI_DEPS),true)
  93. @echo "#define HAVE_ZYN_UI_DEPS" >> $@
  94. else
  95. @echo "// #define HAVE_ZYN_UI_DEPS" >> $@
  96. endif
  97. @echo "" >> $@
  98. @echo "/* extra toolkits/frameworks for plugin UIs (native) */" >> $@
  99. ifeq ($(HAVE_X11),true)
  100. @echo "#define HAVE_X11" >> $@
  101. else
  102. @echo "// #define HAVE_X11" >> $@
  103. endif
  104. @echo "" >> $@
  105. @echo "/* extra toolkits/frameworks for plugin UIs (bridges, Linux only) */" >> $@
  106. ifeq ($(HAVE_GTK2),true)
  107. @echo "#define HAVE_GTK2" >> $@
  108. else
  109. @echo "// #define HAVE_GTK2" >> $@
  110. endif
  111. ifeq ($(HAVE_GTK3),true)
  112. @echo "#define HAVE_GTK3" >> $@
  113. else
  114. @echo "// #define HAVE_GTK3" >> $@
  115. endif
  116. ifeq ($(HAVE_QT4),true)
  117. @echo "#define HAVE_QT4" >> $@
  118. else
  119. @echo "// #define HAVE_QT4" >> $@
  120. endif
  121. ifeq ($(HAVE_QT5),true)
  122. @echo "#define HAVE_QT5" >> $@
  123. else
  124. @echo "// #define HAVE_QT5" >> $@
  125. endif
  126. # ----------------------------------------------------------------------------------------------------------------------------
  127. # Binaries (native)
  128. BIN: backend discovery bridges-plugin bridges-ui interposer plugin theme
  129. # ----------------------------------------------------------------------------------------------------------------------------
  130. ALL_LIBS = $(MODULEDIR)/carla_engine.a
  131. ALL_LIBS += $(MODULEDIR)/carla_engine_plugin.a
  132. ALL_LIBS += $(MODULEDIR)/carla_plugin.a
  133. ALL_LIBS += $(MODULEDIR)/jackbridge.a
  134. ALL_LIBS += $(MODULEDIR)/native-plugins.a
  135. ALL_LIBS += $(MODULEDIR)/juce_audio_basics.a
  136. ALL_LIBS += $(MODULEDIR)/juce_audio_formats.a
  137. ALL_LIBS += $(MODULEDIR)/juce_core.a
  138. ALL_LIBS += $(MODULEDIR)/lilv.a
  139. ALL_LIBS += $(MODULEDIR)/rtmempool.a
  140. ifeq ($(HAVE_DGL),true)
  141. ALL_LIBS += $(MODULEDIR)/dgl.a
  142. endif
  143. ifeq ($(MACOS_OR_WIN32),true)
  144. ALL_LIBS += $(MODULEDIR)/juce_audio_devices.a
  145. ALL_LIBS += $(MODULEDIR)/juce_audio_processors.a
  146. ALL_LIBS += $(MODULEDIR)/juce_data_structures.a
  147. ALL_LIBS += $(MODULEDIR)/juce_events.a
  148. ALL_LIBS += $(MODULEDIR)/juce_graphics.a
  149. ALL_LIBS += $(MODULEDIR)/juce_gui_basics.a
  150. ifeq ($(MACOS),true)
  151. ALL_LIBS += $(MODULEDIR)/juce_gui_extra.a
  152. endif
  153. else
  154. ALL_LIBS += $(MODULEDIR)/rtaudio.a
  155. ALL_LIBS += $(MODULEDIR)/rtmidi.a
  156. endif
  157. ifeq ($(HAVE_QT4),true)
  158. ALL_LIBS += $(MODULEDIR)/theme.qt4.a
  159. endif
  160. ifeq ($(HAVE_QT5),true)
  161. ALL_LIBS += $(MODULEDIR)/theme.qt5.a
  162. endif
  163. libs: config $(ALL_LIBS)
  164. $(MODULEDIR)/carla_engine.a: .FORCE
  165. @$(MAKE) -C source/backend/engine
  166. $(MODULEDIR)/carla_engine_plugin.a: $(MODULEDIR)/carla_engine.a
  167. @$(MAKE) -C source/backend/engine
  168. $(MODULEDIR)/carla_plugin.a: .FORCE
  169. @$(MAKE) -C source/backend/plugin
  170. $(MODULEDIR)/jackbridge.a: .FORCE
  171. @$(MAKE) -C source/jackbridge
  172. $(MODULEDIR)/jackbridge.%.a: .FORCE
  173. @$(MAKE) -C source/jackbridge $*
  174. $(MODULEDIR)/native-plugins.a: .FORCE
  175. @$(MAKE) -C source/native-plugins
  176. $(MODULEDIR)/theme.a: .FORCE
  177. @$(MAKE) -C source/theme
  178. $(MODULEDIR)/theme.qt4.a: .FORCE
  179. @$(MAKE) -C source/theme qt4
  180. $(MODULEDIR)/theme.qt5.a: .FORCE
  181. @$(MAKE) -C source/theme qt5
  182. $(MODULEDIR)/%.posix32.a: .FORCE
  183. @$(MAKE) -C source/modules/$* posix32
  184. $(MODULEDIR)/%.posix64.a: .FORCE
  185. @$(MAKE) -C source/modules/$* posix64
  186. $(MODULEDIR)/%.win32.a: .FORCE
  187. @$(MAKE) -C source/modules/$* win32
  188. $(MODULEDIR)/%.win64.a: .FORCE
  189. @$(MAKE) -C source/modules/$* win64
  190. $(MODULEDIR)/%.a: .FORCE
  191. @$(MAKE) -C source/modules/$*
  192. # ----------------------------------------------------------------------------------------------------------------------------
  193. backend: libs
  194. @$(MAKE) -C source/backend
  195. bridges-plugin: libs
  196. @$(MAKE) -C source/bridges-plugin
  197. bridges-ui: libs
  198. @$(MAKE) -C source/bridges-ui
  199. discovery: libs
  200. @$(MAKE) -C source/discovery
  201. ifeq ($(LINUX),true)
  202. interposer: config
  203. @$(MAKE) -C source/interposer
  204. else
  205. interposer:
  206. endif
  207. plugin: backend bridges-plugin bridges-ui discovery
  208. @$(MAKE) -C source/plugin
  209. ifeq ($(HAVE_QT),true)
  210. theme: config
  211. @$(MAKE) -C source/theme
  212. else
  213. theme:
  214. endif
  215. # ----------------------------------------------------------------------------------------------------------------------------
  216. # Binaries (posix32)
  217. LIBS_POSIX32 = $(MODULEDIR)/jackbridge.posix32.a
  218. LIBS_POSIX32 += $(MODULEDIR)/juce_audio_basics.posix32.a
  219. LIBS_POSIX32 += $(MODULEDIR)/juce_core.posix32.a
  220. LIBS_POSIX32 += $(MODULEDIR)/lilv.posix32.a
  221. LIBS_POSIX32 += $(MODULEDIR)/rtmempool.posix32.a
  222. ifeq ($(MACOS),true)
  223. LIBS_POSIX32 += $(MODULEDIR)/juce_audio_processors.posix32.a
  224. LIBS_POSIX32 += $(MODULEDIR)/juce_data_structures.posix32.a
  225. LIBS_POSIX32 += $(MODULEDIR)/juce_events.posix32.a
  226. LIBS_POSIX32 += $(MODULEDIR)/juce_graphics.posix32.a
  227. LIBS_POSIX32 += $(MODULEDIR)/juce_gui_basics.posix32.a
  228. LIBS_POSIX32 += $(MODULEDIR)/juce_gui_extra.posix32.a
  229. endif
  230. posix32: config $(LIBS_POSIX32)
  231. $(MAKE) -C source/bridges-plugin posix32
  232. $(MAKE) -C source/discovery posix32
  233. # ----------------------------------------------------------------------------------------------------------------------------
  234. # Binaries (posix64)
  235. LIBS_POSIX64 = $(MODULEDIR)/jackbridge.posix64.a
  236. LIBS_POSIX64 += $(MODULEDIR)/juce_audio_basics.posix64.a
  237. LIBS_POSIX64 += $(MODULEDIR)/juce_core.posix64.a
  238. LIBS_POSIX64 += $(MODULEDIR)/lilv.posix64.a
  239. LIBS_POSIX64 += $(MODULEDIR)/rtmempool.posix64.a
  240. ifeq ($(MACOS),true)
  241. LIBS_POSIX64 += $(MODULEDIR)/juce_audio_processors.posix64.a
  242. LIBS_POSIX64 += $(MODULEDIR)/juce_data_structures.posix64.a
  243. LIBS_POSIX64 += $(MODULEDIR)/juce_events.posix64.a
  244. LIBS_POSIX64 += $(MODULEDIR)/juce_graphics.posix64.a
  245. LIBS_POSIX64 += $(MODULEDIR)/juce_gui_basics.posix64.a
  246. LIBS_POSIX64 += $(MODULEDIR)/juce_gui_extra.posix64.a
  247. endif
  248. posix64: config $(LIBS_POSIX64)
  249. $(MAKE) -C source/bridges-plugin posix64
  250. $(MAKE) -C source/discovery posix64
  251. # ----------------------------------------------------------------------------------------------------------------------------
  252. # Binaries (win32)
  253. LIBS_WIN32 = $(MODULEDIR)/jackbridge.win32e.a
  254. LIBS_WIN32 += $(MODULEDIR)/juce_audio_basics.win32.a
  255. LIBS_WIN32 += $(MODULEDIR)/juce_audio_processors.win32.a
  256. LIBS_WIN32 += $(MODULEDIR)/juce_core.win32.a
  257. LIBS_WIN32 += $(MODULEDIR)/juce_data_structures.win32.a
  258. LIBS_WIN32 += $(MODULEDIR)/juce_events.win32.a
  259. LIBS_WIN32 += $(MODULEDIR)/juce_graphics.win32.a
  260. LIBS_WIN32 += $(MODULEDIR)/juce_gui_basics.win32.a
  261. LIBS_WIN32 += $(MODULEDIR)/lilv.win32.a
  262. LIBS_WIN32 += $(MODULEDIR)/rtmempool.win32.a
  263. win32: config $(LIBS_WIN32)
  264. $(MAKE) -C source/bridges-plugin win32
  265. $(MAKE) -C source/discovery win32
  266. # ----------------------------------------------------------------------------------------------------------------------------
  267. # Binaries (win64)
  268. LIBS_WIN64 = $(MODULEDIR)/jackbridge.win64e.a
  269. LIBS_WIN64 += $(MODULEDIR)/juce_audio_basics.win64.a
  270. LIBS_WIN64 += $(MODULEDIR)/juce_audio_processors.win64.a
  271. LIBS_WIN64 += $(MODULEDIR)/juce_core.win64.a
  272. LIBS_WIN64 += $(MODULEDIR)/juce_data_structures.win64.a
  273. LIBS_WIN64 += $(MODULEDIR)/juce_events.win64.a
  274. LIBS_WIN64 += $(MODULEDIR)/juce_graphics.win64.a
  275. LIBS_WIN64 += $(MODULEDIR)/juce_gui_basics.win64.a
  276. LIBS_WIN64 += $(MODULEDIR)/lilv.win64.a
  277. LIBS_WIN64 += $(MODULEDIR)/rtmempool.win64.a
  278. win64: config $(LIBS_WIN64)
  279. $(MAKE) -C source/bridges-plugin win64
  280. $(MAKE) -C source/discovery win64
  281. # ----------------------------------------------------------------------------------------------------------------------------
  282. # Binaries (wine)
  283. wine32: config
  284. $(MAKE) -C source/jackbridge wine32
  285. cp -f $(MODULEDIR)/jackbridge-wine32.dll.so $(BINDIR)/jackbridge-wine32.dll
  286. wine64: config
  287. $(MAKE) -C source/jackbridge wine64
  288. cp -f $(MODULEDIR)/jackbridge-wine64.dll.so $(BINDIR)/jackbridge-wine64.dll
  289. # ----------------------------------------------------------------------------------------------------------------------------
  290. # Resources
  291. ifeq ($(HAVE_PYQT),true)
  292. RES = \
  293. bin/resources/carla_app.py \
  294. bin/resources/carla_backend.py \
  295. bin/resources/carla_backend_qt.py \
  296. bin/resources/carla_config.py \
  297. bin/resources/carla_database.py \
  298. bin/resources/carla_host.py \
  299. bin/resources/carla_panels.py \
  300. bin/resources/carla_settings.py \
  301. bin/resources/carla_skin.py \
  302. bin/resources/carla_shared.py \
  303. bin/resources/carla_utils.py \
  304. bin/resources/carla_widgets.py \
  305. bin/resources/canvaspreviewframe.py \
  306. bin/resources/digitalpeakmeter.py \
  307. bin/resources/externalui.py \
  308. bin/resources/ledbutton.py \
  309. bin/resources/paramspinbox.py \
  310. bin/resources/patchcanvas.py \
  311. bin/resources/patchcanvas_theme.py \
  312. bin/resources/pixmapbutton.py \
  313. bin/resources/pixmapdial.py \
  314. bin/resources/pixmapkeyboard.py \
  315. bin/resources/racklistwidget.py \
  316. bin/resources/resources_rc.py \
  317. bin/resources/ui_carla_about.py \
  318. bin/resources/ui_carla_about_juce.py \
  319. bin/resources/ui_carla_database.py \
  320. bin/resources/ui_carla_edit.py \
  321. bin/resources/ui_carla_host.py \
  322. bin/resources/ui_carla_panel_time.py \
  323. bin/resources/ui_carla_parameter.py \
  324. bin/resources/ui_carla_plugin_basic_fx.py \
  325. bin/resources/ui_carla_plugin_calf.py \
  326. bin/resources/ui_carla_plugin_default.py \
  327. bin/resources/ui_carla_plugin_sf2.py \
  328. bin/resources/ui_carla_plugin_zita.py \
  329. bin/resources/ui_carla_plugin_zynfx.py \
  330. bin/resources/ui_carla_refresh.py \
  331. bin/resources/ui_carla_settings.py \
  332. bin/resources/ui_carla_settings_driver.py \
  333. bin/resources/ui_inputdialog_value.py \
  334. source/resources_rc.py
  335. RES: config $(RES)
  336. source/resources_rc.py: resources/resources.qrc resources/*/*.png resources/*/*.svg
  337. $(PYRCC) $< -o $@
  338. bin/resources/%.py: source/%.py
  339. $(LINK) $(CURDIR)/source/$*.py bin/resources/
  340. else
  341. RES:
  342. endif
  343. # ----------------------------------------------------------------------------------------------------------------------------
  344. # UI code
  345. ifeq ($(HAVE_PYQT),true)
  346. UIs = \
  347. source/ui_carla_control.py \
  348. source/ui_carla_about.py \
  349. source/ui_carla_about_juce.py \
  350. source/ui_carla_database.py \
  351. source/ui_carla_edit.py \
  352. source/ui_carla_host.py \
  353. source/ui_carla_panel_time.py \
  354. source/ui_carla_parameter.py \
  355. source/ui_carla_plugin_basic_fx.py \
  356. source/ui_carla_plugin_calf.py \
  357. source/ui_carla_plugin_default.py \
  358. source/ui_carla_plugin_sf2.py \
  359. source/ui_carla_plugin_zita.py \
  360. source/ui_carla_plugin_zynfx.py \
  361. source/ui_carla_refresh.py \
  362. source/ui_carla_settings.py \
  363. source/ui_carla_settings_driver.py \
  364. source/ui_inputdialog_value.py
  365. UI: config $(UIs)
  366. source/ui_%.py: resources/ui/%.ui
  367. $(PYUIC) $< -o $@
  368. else
  369. UI:
  370. endif
  371. # ----------------------------------------------------------------------------------------------------------------------------
  372. # Widgets
  373. WIDGETS = \
  374. source/canvaspreviewframe.py \
  375. source/digitalpeakmeter.py \
  376. source/ledbutton.py \
  377. source/paramspinbox.py \
  378. source/pixmapbutton.py \
  379. source/pixmapdial.py \
  380. source/pixmapkeyboard.py \
  381. source/racklistwidget.py
  382. WIDGETS: config $(WIDGETS)
  383. source/%.py: source/widgets/%.py
  384. $(LINK) widgets/$*.py $@
  385. # ----------------------------------------------------------------------------------------------------------------------------
  386. clean:
  387. $(MAKE) clean -C source/backend
  388. $(MAKE) clean -C source/bridges-plugin
  389. $(MAKE) clean -C source/bridges-ui
  390. $(MAKE) clean -C source/discovery
  391. $(MAKE) clean -C source/modules
  392. $(MAKE) clean -C source/plugin
  393. rm -f $(RES)
  394. rm -f $(UIs)
  395. rm -f $(WIDGETS)
  396. rm -f *~ source/*~ source/*.pyc source/*_rc.py source/ui_*.py
  397. rm -f source/carla_config.py source/includes/config.h
  398. distclean: clean
  399. rm -f bin/*.dll bin/*.so
  400. rm -rf build
  401. debug:
  402. $(MAKE) DEBUG=true
  403. doxygen:
  404. $(MAKE) doxygen -C source/backend
  405. # ----------------------------------------------------------------------------------------------------------------------------
  406. install:
  407. # Create directories
  408. install -d $(DESTDIR)$(PREFIX)/bin/
  409. install -d $(DESTDIR)$(PREFIX)/lib/carla/
  410. install -d $(DESTDIR)$(PREFIX)/lib/carla/styles/
  411. install -d $(DESTDIR)$(PREFIX)/lib/lv2/carla.lv2/
  412. install -d $(DESTDIR)$(PREFIX)/lib/vst/carla.vst/
  413. install -d $(DESTDIR)$(PREFIX)/lib/pkgconfig/
  414. install -d $(DESTDIR)$(PREFIX)/include/carla/
  415. install -d $(DESTDIR)$(PREFIX)/include/carla/includes/
  416. install -d $(DESTDIR)$(PREFIX)/share/applications/
  417. install -d $(DESTDIR)$(PREFIX)/share/carla/
  418. install -d $(DESTDIR)$(PREFIX)/share/carla/resources/
  419. install -d $(DESTDIR)$(PREFIX)/share/carla/resources/nekofilter/
  420. install -d $(DESTDIR)$(PREFIX)/share/carla/resources/zynaddsubfx/
  421. install -d $(DESTDIR)$(PREFIX)/share/icons/hicolor/16x16/apps/
  422. install -d $(DESTDIR)$(PREFIX)/share/icons/hicolor/48x48/apps/
  423. install -d $(DESTDIR)$(PREFIX)/share/icons/hicolor/128x128/apps/
  424. install -d $(DESTDIR)$(PREFIX)/share/icons/hicolor/256x256/apps/
  425. install -d $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/
  426. install -d $(DESTDIR)$(PREFIX)/share/mime/packages/
  427. # Install script files
  428. install -m 755 \
  429. data/carla \
  430. data/carla-database \
  431. data/carla-patchbay \
  432. data/carla-rack \
  433. data/carla-single \
  434. data/carla-settings \
  435. $(DESTDIR)$(PREFIX)/bin/
  436. # data/carla-control \
  437. # Install desktop files
  438. install -m 644 data/*.desktop $(DESTDIR)$(PREFIX)/share/applications/
  439. # Install icons, 16x16
  440. install -m 644 resources/16x16/carla.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/16x16/apps/
  441. install -m 644 resources/16x16/carla-control.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/16x16/apps/
  442. # Install icons, 48x48
  443. install -m 644 resources/48x48/carla.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/48x48/apps/
  444. install -m 644 resources/48x48/carla-control.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/48x48/apps/
  445. # Install icons, 128x128
  446. install -m 644 resources/128x128/carla.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/128x128/apps/
  447. install -m 644 resources/128x128/carla-control.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/128x128/apps/
  448. # Install icons, 256x256
  449. install -m 644 resources/256x256/carla.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/256x256/apps/
  450. install -m 644 resources/256x256/carla-control.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/256x256/apps/
  451. # Install icons, scalable
  452. install -m 644 resources/scalable/carla.svg $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/
  453. install -m 644 resources/scalable/carla-control.svg $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/
  454. # Install mime package
  455. install -m 644 data/carla.xml $(DESTDIR)$(PREFIX)/share/mime/packages/
  456. # Install pkg-config file
  457. install -m 644 data/carla-standalone.pc $(DESTDIR)$(PREFIX)/lib/pkgconfig/
  458. # Install backend
  459. install -m 644 \
  460. bin/libcarla_standalone2.* \
  461. bin/libcarla_utils.* \
  462. $(DESTDIR)$(PREFIX)/lib/carla/
  463. ifeq ($(LINUX),true)
  464. # Install interposer
  465. install -m 644 \
  466. bin/libcarla_interposer.so \
  467. $(DESTDIR)$(PREFIX)/lib/carla/
  468. endif
  469. # Install lv2 plugin
  470. install -m 644 \
  471. bin/carla.lv2/carla.* \
  472. bin/carla.lv2/*.ttl \
  473. $(DESTDIR)$(PREFIX)/lib/lv2/carla.lv2/
  474. # Install vst plugin
  475. install -m 644 \
  476. bin/CarlaRack*.* \
  477. bin/CarlaPatchbay*.* \
  478. $(DESTDIR)$(PREFIX)/lib/vst/carla.vst/
  479. # Install other binaries
  480. install -m 755 \
  481. bin/*bridge-* \
  482. bin/carla-discovery-* \
  483. $(DESTDIR)$(PREFIX)/lib/carla/
  484. # Install theme
  485. install -m 644 \
  486. bin/styles/* \
  487. $(DESTDIR)$(PREFIX)/lib/carla/styles/
  488. # Install python code
  489. install -m 644 \
  490. source/carla \
  491. source/carla-patchbay \
  492. source/carla-rack \
  493. source/*.py \
  494. $(DESTDIR)$(PREFIX)/share/carla/
  495. # Install headers
  496. install -m 644 \
  497. source/backend/CarlaBackend.h \
  498. source/backend/CarlaHost.h \
  499. source/backend/CarlaEngine.hpp \
  500. source/backend/CarlaPlugin.hpp \
  501. source/includes/CarlaNative.h \
  502. $(DESTDIR)$(PREFIX)/include/carla/
  503. install -m 644 \
  504. source/includes/CarlaDefines.h \
  505. $(DESTDIR)$(PREFIX)/include/carla/includes/
  506. # Install resources
  507. install -m 755 \
  508. bin/resources/carla-plugin \
  509. bin/resources/carla-plugin-patchbay \
  510. bin/resources/*-ui \
  511. $(DESTDIR)$(PREFIX)/share/carla/resources/
  512. install -m 644 \
  513. bin/resources/nekofilter/*.png \
  514. $(DESTDIR)$(PREFIX)/share/carla/resources/nekofilter/
  515. install -m 644 \
  516. bin/resources/zynaddsubfx/*.png \
  517. $(DESTDIR)$(PREFIX)/share/carla/resources/zynaddsubfx/
  518. # Install resources (re-use python files)
  519. $(LINK) $(PREFIX)/share/carla/carla_app.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  520. $(LINK) $(PREFIX)/share/carla/carla_backend.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  521. $(LINK) $(PREFIX)/share/carla/carla_backend_qt.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  522. $(LINK) $(PREFIX)/share/carla/carla_config.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  523. $(LINK) $(PREFIX)/share/carla/carla_database.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  524. $(LINK) $(PREFIX)/share/carla/carla_host.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  525. $(LINK) $(PREFIX)/share/carla/carla_panels.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  526. $(LINK) $(PREFIX)/share/carla/carla_settings.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  527. $(LINK) $(PREFIX)/share/carla/carla_skin.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  528. $(LINK) $(PREFIX)/share/carla/carla_shared.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  529. $(LINK) $(PREFIX)/share/carla/carla_utils.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  530. $(LINK) $(PREFIX)/share/carla/carla_widgets.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  531. $(LINK) $(PREFIX)/share/carla/canvaspreviewframe.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  532. $(LINK) $(PREFIX)/share/carla/digitalpeakmeter.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  533. $(LINK) $(PREFIX)/share/carla/externalui.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  534. $(LINK) $(PREFIX)/share/carla/ledbutton.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  535. $(LINK) $(PREFIX)/share/carla/paramspinbox.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  536. $(LINK) $(PREFIX)/share/carla/patchcanvas.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  537. $(LINK) $(PREFIX)/share/carla/patchcanvas_theme.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  538. $(LINK) $(PREFIX)/share/carla/pixmapbutton.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  539. $(LINK) $(PREFIX)/share/carla/pixmapdial.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  540. $(LINK) $(PREFIX)/share/carla/pixmapkeyboard.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  541. $(LINK) $(PREFIX)/share/carla/racklistwidget.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  542. $(LINK) $(PREFIX)/share/carla/resources_rc.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  543. $(LINK) $(PREFIX)/share/carla/ui_carla_about.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  544. $(LINK) $(PREFIX)/share/carla/ui_carla_about_juce.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  545. $(LINK) $(PREFIX)/share/carla/ui_carla_database.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  546. $(LINK) $(PREFIX)/share/carla/ui_carla_edit.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  547. $(LINK) $(PREFIX)/share/carla/ui_carla_host.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  548. $(LINK) $(PREFIX)/share/carla/ui_carla_panel_time.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  549. $(LINK) $(PREFIX)/share/carla/ui_carla_parameter.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  550. $(LINK) $(PREFIX)/share/carla/ui_carla_plugin_basic_fx.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  551. $(LINK) $(PREFIX)/share/carla/ui_carla_plugin_calf.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  552. $(LINK) $(PREFIX)/share/carla/ui_carla_plugin_default.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  553. $(LINK) $(PREFIX)/share/carla/ui_carla_plugin_sf2.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  554. $(LINK) $(PREFIX)/share/carla/ui_carla_plugin_zita.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  555. $(LINK) $(PREFIX)/share/carla/ui_carla_plugin_zynfx.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  556. $(LINK) $(PREFIX)/share/carla/ui_carla_refresh.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  557. $(LINK) $(PREFIX)/share/carla/ui_carla_settings.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  558. $(LINK) $(PREFIX)/share/carla/ui_carla_settings_driver.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  559. $(LINK) $(PREFIX)/share/carla/ui_inputdialog_value.py $(DESTDIR)$(PREFIX)/share/carla/resources/
  560. # Link binaries for lv2 & vst plugin
  561. @for i in $(shell find $(DESTDIR)$(PREFIX)/lib/carla/ -maxdepth 1 -type f -exec basename {} ';'); do \
  562. $(LINK) $(PREFIX)/lib/carla/$$i $(DESTDIR)$(PREFIX)/lib/lv2/carla.lv2/; \
  563. $(LINK) $(PREFIX)/lib/carla/$$i $(DESTDIR)$(PREFIX)/lib/vst/carla.vst/; \
  564. done
  565. rm -f $(DESTDIR)$(PREFIX)/lib/lv2/carla.lv2/libcarla_standalone2.*
  566. rm -f $(DESTDIR)$(PREFIX)/lib/vst/carla.vst/libcarla_standalone2.*
  567. # Link styles for lv2 & vst plugin
  568. $(LINK) $(PREFIX)/lib/carla/styles $(DESTDIR)$(PREFIX)/lib/lv2/carla.lv2/
  569. $(LINK) $(PREFIX)/lib/carla/styles $(DESTDIR)$(PREFIX)/lib/vst/carla.vst/
  570. # Link resources for lv2 & vst plugin
  571. rm -rf $(DESTDIR)$(PREFIX)/lib/lv2/carla.lv2/resources
  572. rm -rf $(DESTDIR)$(PREFIX)/lib/vst/carla.vst/resources
  573. $(LINK) $(PREFIX)/share/carla/resources/ $(DESTDIR)$(PREFIX)/lib/lv2/carla.lv2/
  574. $(LINK) $(PREFIX)/share/carla/resources/ $(DESTDIR)$(PREFIX)/lib/vst/carla.vst/
  575. # Adjust PREFIX value in script files
  576. sed -i "s?X-PREFIX-X?$(PREFIX)?" \
  577. $(DESTDIR)$(PREFIX)/bin/carla \
  578. $(DESTDIR)$(PREFIX)/bin/carla-database \
  579. $(DESTDIR)$(PREFIX)/bin/carla-patchbay \
  580. $(DESTDIR)$(PREFIX)/bin/carla-rack \
  581. $(DESTDIR)$(PREFIX)/bin/carla-single \
  582. $(DESTDIR)$(PREFIX)/bin/carla-settings \
  583. $(DESTDIR)$(PREFIX)/lib/pkgconfig/carla-standalone.pc
  584. # $(DESTDIR)$(PREFIX)/bin/carla-control \
  585. # ----------------------------------------------------------------------------------------------------------------------------
  586. uninstall:
  587. rm -f $(DESTDIR)$(PREFIX)/bin/carla*
  588. rm -f $(DESTDIR)$(PREFIX)/lib/pkgconfig/carla-standalone.pc
  589. rm -f $(DESTDIR)$(PREFIX)/share/applications/carla.desktop
  590. rm -f $(DESTDIR)$(PREFIX)/share/applications/carla-control.desktop
  591. rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/*/apps/carla.png
  592. rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/*/apps/carla-control.png
  593. rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/carla.svg
  594. rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/carla-control.svg
  595. rm -f $(DESTDIR)$(PREFIX)/share/mime/packages/carla.xml
  596. rm -rf $(DESTDIR)$(PREFIX)/include/carla/
  597. rm -rf $(DESTDIR)$(PREFIX)/lib/carla/
  598. rm -rf $(DESTDIR)$(PREFIX)/lib/lv2/carla.lv2/
  599. rm -rf $(DESTDIR)$(PREFIX)/lib/vst/carla.vst/
  600. rm -rf $(DESTDIR)$(PREFIX)/share/carla/
  601. # ----------------------------------------------------------------------------------------------------------------------------
  602. USE_COLORS=true
  603. ifeq ($(HAIKU),true)
  604. USE_COLORS=false
  605. endif
  606. ifeq ($(USE_COLORS),true)
  607. ANS_NO=\033[31m NO \033[0m
  608. ANS_YES=\033[32m YES \033[0m
  609. mS=\033[33m[
  610. mZ=\033[30;1m[
  611. mE=]\033[0m
  612. tS=\033[36m
  613. tE=\033[0m
  614. else
  615. ANS_NO=" NO "
  616. ANS_YES=" YES "
  617. endif
  618. ifeq ($(DEFAULT_QT),4)
  619. FEV="Qt4"
  620. else
  621. FEV="Qt5"
  622. endif
  623. features:
  624. @echo "$(tS)---> Main features $(tE)"
  625. ifeq ($(HAVE_PYQT),true)
  626. @echo "Front-End: $(ANS_YES) (Using $(FEV))"
  627. ifneq ($(WIN32),true)
  628. @echo "LV2 plugin: $(ANS_YES)"
  629. else
  630. @echo "LV2 plugin: $(ANS_NO) $(mZ)Not available for Windows$(mE)"
  631. endif
  632. ifeq ($(LINUX),true)
  633. ifeq ($(DEFAULT_QT),4)
  634. ifeq ($(HAVE_X11),true)
  635. @echo "VST plugin: $(ANS_YES)"
  636. else # HAVE_X11
  637. @echo "VST plugin: $(ANS_NO) $(mS)X11 missing$(mE)"
  638. endif
  639. else # DEFAULT_QT
  640. @echo "VST plugin: $(ANS_NO) $(mZ)Qt4 only$(mE)"
  641. endif
  642. else # LINUX
  643. @echo "VST plugin: $(ANS_NO) $(mZ)Linux only$(mE)"
  644. endif
  645. else
  646. @echo "Front-End: $(ANS_NO) $(mS)Missing PyQt$(mE)"
  647. @echo "LV2 plugin: $(ANS_NO) $(mS)No front-end$(mE)"
  648. @echo "VST plugin: $(ANS_NO) $(mS)No front-end$(mE)"
  649. endif
  650. @echo ""
  651. @echo "$(tS)---> Engine drivers $(tE)"
  652. @echo "JACK: $(ANS_YES)"
  653. ifeq ($(LINUX),true)
  654. ifeq ($(HAVE_ALSA),true)
  655. @echo "ALSA: $(ANS_YES)"
  656. else
  657. @echo "ALSA: $(ANS_NO) $(mS)Missing ALSA$(mE)"
  658. endif
  659. ifeq ($(HAVE_PULSEAUDIO),true)
  660. @echo "PulseAudio: $(ANS_YES)"
  661. else
  662. @echo "PulseAudio: $(ANS_NO) $(mS)Missing PulseAudio$(mE)"
  663. endif
  664. else
  665. @echo "ALSA: $(ANS_NO) $(mZ)Linux only$(mE)"
  666. @echo "PulseAudio: $(ANS_NO) $(mZ)Linux only$(mE)"
  667. endif
  668. ifeq ($(MACOS),true)
  669. @echo "CoreAudio: $(ANS_YES)"
  670. else
  671. @echo "CoreAudio: $(ANS_NO) $(mZ)MacOS only$(mE)"
  672. endif
  673. ifeq ($(WIN32),true)
  674. @echo "ASIO: $(ANS_YES)"
  675. @echo "DirectSound:$(ANS_YES)"
  676. else
  677. @echo "ASIO: $(ANS_NO) $(mZ)Windows only$(mE)"
  678. @echo "DirectSound:$(ANS_NO) $(mZ)Windows only$(mE)"
  679. endif
  680. @echo ""
  681. @echo "$(tS)---> Plugin formats: $(tE)"
  682. @echo "Internal:$(ANS_YES)"
  683. @echo "LADSPA: $(ANS_YES)"
  684. @echo "DSSI: $(ANS_YES)"
  685. @echo "LV2: $(ANS_YES)"
  686. ifeq ($(MACOS_OR_WIN32),true)
  687. @echo "VST: $(ANS_YES) (with UI)"
  688. else
  689. ifeq ($(LINUX),true)
  690. ifeq ($(HAVE_X11),true)
  691. @echo "VST: $(ANS_YES) (with UI)"
  692. else
  693. @echo "VST: $(ANS_YES) (without UI) $(mS)Missing X11$(mE)"
  694. endif
  695. else # LINUX
  696. @echo "VST: $(ANS_YES) (without UI) $(mZ)Linux, Mac and Windows only$(mE)"
  697. endif
  698. endif
  699. ifeq ($(MACOS_OR_WIN32),true)
  700. @echo "VST3: $(ANS_YES)"
  701. else
  702. @echo "VST3: $(ANS_NO) $(mZ)Windows and MacOS only$(mE)"
  703. endif
  704. ifeq ($(MACOS),true)
  705. @echo "AU: $(ANS_YES)"
  706. else
  707. @echo "AU: $(ANS_NO) $(mZ)MacOS only$(mE)"
  708. endif
  709. @echo ""
  710. @echo "$(tS)---> LV2 UI toolkit support: $(tE)"
  711. @echo "External:$(ANS_YES) (direct)"
  712. ifeq ($(HAVE_GTK2),true)
  713. @echo "Gtk2: $(ANS_YES) (bridge)"
  714. else
  715. @echo "Gtk2: $(ANS_NO) $(mS)Gtk2 missing$(mE)"
  716. endif
  717. ifeq ($(HAVE_GTK3),true)
  718. @echo "Gtk3: $(ANS_YES) (bridge)"
  719. else
  720. @echo "Gtk3: $(ANS_NO) $(mS)Gtk3 missing$(mE)"
  721. endif
  722. ifeq ($(HAVE_QT4),true)
  723. @echo "Qt4: $(ANS_YES) (bridge)"
  724. else
  725. @echo "Qt4: $(ANS_NO) $(mS)Qt4 missing$(mE)"
  726. endif
  727. ifeq ($(HAVE_QT5),true)
  728. @echo "Qt5: $(ANS_YES) (bridge)"
  729. else
  730. @echo "Qt5: $(ANS_NO) $(mS)Qt5 missing$(mE)"
  731. endif
  732. ifeq ($(MACOS),true)
  733. @echo "Cocoa: $(ANS_YES) (direct+bridge)"
  734. else
  735. @echo "Cocoa: $(ANS_NO) $(mZ)MacOS only$(mE)"
  736. endif
  737. ifeq ($(WIN32),true)
  738. @echo "Windows: $(ANS_YES) (direct+bridge)"
  739. else
  740. @echo "Windows: $(ANS_NO) $(mZ)Windows only$(mE)"
  741. endif
  742. ifeq ($(HAVE_X11),true)
  743. @echo "X11: $(ANS_YES) (direct+bridge)"
  744. else
  745. @echo "X11: $(ANS_NO) $(mS)X11 missing$(mE)"
  746. endif
  747. @echo ""
  748. @echo "$(tS)---> File formats: $(tE)"
  749. ifeq ($(HAVE_LINUXSAMPLER),true)
  750. @echo "GIG:$(ANS_YES)"
  751. else
  752. @echo "GIG:$(ANS_NO) $(mS)LinuxSampler missing or too old$(mE)"
  753. endif
  754. ifeq ($(HAVE_FLUIDSYNTH),true)
  755. @echo "SF2:$(ANS_YES)"
  756. else
  757. @echo "SF2:$(ANS_NO) $(mS)FluidSynth missing$(mE)"
  758. endif
  759. ifeq ($(HAVE_LINUXSAMPLER),true)
  760. @echo "SFZ:$(ANS_YES)"
  761. else
  762. @echo "SFZ:$(ANS_NO) $(mS)LinuxSampler missing or too old$(mE)"
  763. endif
  764. @echo ""
  765. @echo "$(tS)---> Internal plugins: $(tE)"
  766. ifneq ($(WIN32),true)
  767. @echo "Carla-Patchbay: $(ANS_YES)"
  768. @echo "Carla-Rack: $(ANS_YES)"
  769. else
  770. @echo "Carla-Patchbay: $(ANS_NO) $(mS)Not available for Windows$(mE)"
  771. @echo "Carla-Rack: $(ANS_NO) $(mS)Not available for Windows$(mE)"
  772. endif
  773. ifeq ($(HAVE_DGL),true)
  774. @echo "DISTRHO Plugins:$(ANS_YES) (with UI)"
  775. else
  776. @echo "DISTRHO Plugins:$(ANS_YES) (without UI)"
  777. endif
  778. ifeq ($(HAVE_PROJECTM),true)
  779. @echo "DISTRHO ProM: $(ANS_YES)"
  780. else
  781. @echo "DISTRHO ProM: $(ANS_NO) (missing libprojectM)"
  782. endif
  783. ifeq ($(HAVE_ZYN_DEPS),true)
  784. ifeq ($(HAVE_ZYN_UI_DEPS),true)
  785. @echo "ZynAddSubFX: $(ANS_YES) (with UI)"
  786. else
  787. @echo "ZynAddSubFX: $(ANS_YES) (without UI) $(mS)NTK missing$(mE)"
  788. endif
  789. else
  790. @echo "ZynAddSubFX: $(ANS_NO) $(mS)fftw3, mxml or zlib missing$(mE)"
  791. endif
  792. # ----------------------------------------------------------------------------------------------------------------------------
  793. .FORCE:
  794. .PHONY: .FORCE
  795. # ----------------------------------------------------------------------------------------------------------------------------