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.

1082 lines
34KB

  1. #!/usr/bin/make -f
  2. # Makefile for Carla #
  3. # ------------------ #
  4. # Created by falkTX
  5. #
  6. CWD=source
  7. include source/Makefile.mk
  8. # ---------------------------------------------------------------------------------------------------------------------
  9. PREFIX := /usr/local
  10. BINDIR := $(PREFIX)/bin
  11. LIBDIR := $(PREFIX)/lib
  12. DATADIR := $(PREFIX)/share
  13. INCLUDEDIR := $(PREFIX)/include
  14. DESTDIR :=
  15. ifeq ($(DEBUG),true)
  16. MODULEDIR := $(CURDIR)/build/modules/Debug
  17. else
  18. MODULEDIR := $(CURDIR)/build/modules/Release
  19. endif
  20. # ---------------------------------------------------------------------------------------------------------------------
  21. all: backend discovery bridges-plugin bridges-ui frontend interposer libjack plugin theme
  22. # ---------------------------------------------------------------------------------------------------------------------
  23. # Binaries (native)
  24. ALL_LIBS += $(MODULEDIR)/carla_engine.a
  25. ALL_LIBS += $(MODULEDIR)/carla_engine_plugin.a
  26. ALL_LIBS += $(MODULEDIR)/carla_plugin.a
  27. ALL_LIBS += $(MODULEDIR)/jackbridge.a
  28. ALL_LIBS += $(MODULEDIR)/native-plugins.a
  29. ALL_LIBS += $(MODULEDIR)/rtmempool.a
  30. 3RD_LIBS += $(MODULEDIR)/audio_decoder.a
  31. 3RD_LIBS += $(MODULEDIR)/lilv.a
  32. 3RD_LIBS += $(MODULEDIR)/sfzero.a
  33. 3RD_LIBS += $(MODULEDIR)/water.a
  34. 3RD_LIBS += $(MODULEDIR)/zita-resampler.a
  35. ifeq ($(HAVE_DGL),true)
  36. 3RD_LIBS += $(MODULEDIR)/dgl.a
  37. endif
  38. ifeq ($(HAVE_HYLIA),true)
  39. 3RD_LIBS += $(MODULEDIR)/hylia.a
  40. endif
  41. ifeq ($(HAVE_QT4),true)
  42. 3RD_LIBS += $(MODULEDIR)/theme.qt4.a
  43. endif
  44. ifeq ($(HAVE_QT5),true)
  45. 3RD_LIBS += $(MODULEDIR)/theme.qt5.a
  46. endif
  47. ifeq ($(USING_JUCE),true)
  48. 3RD_LIBS += $(MODULEDIR)/juce_audio_basics.a
  49. ifeq ($(USING_JUCE_AUDIO_DEVICES),true)
  50. 3RD_LIBS += $(MODULEDIR)/juce_audio_devices.a
  51. endif
  52. 3RD_LIBS += $(MODULEDIR)/juce_audio_processors.a
  53. 3RD_LIBS += $(MODULEDIR)/juce_core.a
  54. 3RD_LIBS += $(MODULEDIR)/juce_data_structures.a
  55. 3RD_LIBS += $(MODULEDIR)/juce_events.a
  56. 3RD_LIBS += $(MODULEDIR)/juce_graphics.a
  57. 3RD_LIBS += $(MODULEDIR)/juce_gui_basics.a
  58. ifeq ($(USING_JUCE_GUI_EXTRA),true)
  59. 3RD_LIBS += $(MODULEDIR)/juce_gui_extra.a
  60. endif
  61. endif
  62. ifneq ($(USING_JUCE_AUDIO_DEVICES),true)
  63. 3RD_LIBS += $(MODULEDIR)/rtaudio.a
  64. 3RD_LIBS += $(MODULEDIR)/rtmidi.a
  65. endif
  66. ALL_LIBS += $(3RD_LIBS)
  67. 3rd: $(3RD_LIBS)
  68. @$(MAKE) -C source/theme
  69. ifeq ($(HAVE_QT4),true)
  70. @$(MAKE) -C source/bridges-ui ui_lv2-qt4
  71. endif
  72. libs: $(ALL_LIBS)
  73. $(MODULEDIR)/carla_engine.a: .FORCE
  74. @$(MAKE) -C source/backend/engine
  75. $(MODULEDIR)/carla_engine_plugin.a: $(MODULEDIR)/carla_engine.a
  76. @$(MAKE) -C source/backend/engine
  77. $(MODULEDIR)/carla_plugin.a: .FORCE
  78. @$(MAKE) -C source/backend/plugin
  79. $(MODULEDIR)/jackbridge.a: .FORCE
  80. @$(MAKE) -C source/jackbridge
  81. $(MODULEDIR)/jackbridge.%.a: .FORCE
  82. @$(MAKE) -C source/jackbridge $*
  83. $(MODULEDIR)/native-plugins.a: .FORCE
  84. @$(MAKE) -C source/native-plugins
  85. $(MODULEDIR)/theme.qt4.a: .FORCE
  86. @$(MAKE) -C source/theme qt4
  87. $(MODULEDIR)/theme.qt5.a: .FORCE
  88. @$(MAKE) -C source/theme qt5
  89. $(MODULEDIR)/%.arm32.a: .FORCE
  90. ifneq ($(WIN32),true)
  91. @$(MAKE) -C source/modules/$* arm32
  92. else
  93. $(error Trying to build ARM binaries with a Windows toolchain, this cannot work)
  94. endif
  95. $(MODULEDIR)/%.posix32.a: .FORCE
  96. ifneq ($(WIN32),true)
  97. @$(MAKE) -C source/modules/$* posix32
  98. else
  99. $(error Trying to build POSIX binaries with a Windows toolchain, this cannot work)
  100. endif
  101. $(MODULEDIR)/%.posix64.a: .FORCE
  102. ifneq ($(WIN32),true)
  103. @$(MAKE) -C source/modules/$* posix64
  104. else
  105. $(error Trying to build POSIX binaries with a Windows toolchain, this cannot work)
  106. endif
  107. $(MODULEDIR)/%.win32.a: .FORCE
  108. ifeq ($(WIN32),true)
  109. @$(MAKE) -C source/modules/$* win32
  110. else
  111. $(error Trying to build Windows binaries with a regular toolchain, this cannot work)
  112. endif
  113. $(MODULEDIR)/%.win64.a: .FORCE
  114. ifeq ($(WIN32),true)
  115. @$(MAKE) -C source/modules/$* win64
  116. else
  117. $(error Trying to build Windows binaries with a regular toolchain, this cannot work)
  118. endif
  119. $(MODULEDIR)/dgl.wine.a: .FORCE
  120. @$(MAKE) -C source/modules/dgl wine
  121. $(MODULEDIR)/water.files.a: .FORCE
  122. @$(MAKE) -C source/modules/water files
  123. $(MODULEDIR)/%.a: .FORCE
  124. @$(MAKE) -C source/modules/$*
  125. # ---------------------------------------------------------------------------------------------------------------------
  126. backend: libs
  127. @$(MAKE) -C source/backend
  128. bridges-plugin: libs
  129. @$(MAKE) -C source/bridges-plugin
  130. bridges-ui: libs
  131. @$(MAKE) -C source/bridges-ui
  132. discovery: libs
  133. @$(MAKE) -C source/discovery
  134. frontend: libs
  135. ifeq ($(HAVE_PYQT),true)
  136. @$(MAKE) -C source/frontend
  137. endif
  138. interposer:
  139. ifeq ($(LINUX),true)
  140. @$(MAKE) -C source/interposer
  141. endif
  142. libjack: libs
  143. @$(MAKE) -C source/libjack
  144. lv2-bundles-dep: $(MODULEDIR)/audio_decoder.a $(MODULEDIR)/water.a $(MODULEDIR)/zita-resampler.a
  145. @$(MAKE) -C source/native-plugins bundles
  146. lv2-bundles: lv2-bundles-dep
  147. @$(MAKE) -C source/plugin bundles
  148. plugin: backend bridges-plugin bridges-ui discovery
  149. @$(MAKE) -C source/plugin
  150. ifeq ($(WIN32),true)
  151. plugin-wine:
  152. @$(MAKE) -C source/plugin wine
  153. else
  154. plugin-wine: $(MODULEDIR)/dgl.wine.a
  155. @$(MAKE) -C source/plugin wine
  156. endif
  157. rest: libs
  158. @$(MAKE) -C source/rest
  159. theme: libs
  160. @$(MAKE) -C source/theme
  161. # ---------------------------------------------------------------------------------------------------------------------
  162. # prepare for (re)distribution
  163. _CARLA_APP_FILES = \
  164. carla-bridge-lv2-cocoa \
  165. carla-bridge-lv2.dylib \
  166. carla-bridge-native \
  167. carla-discovery-native \
  168. libcarla_standalone2.dylib \
  169. libcarla_utils.dylib \
  170. styles/carlastyle.dylib \
  171. styles/carlastyle.json
  172. CARLA_APP_FILES = $(_CARLA_APP_FILES:%=build/Carla.app/Contents/MacOS/%)
  173. ifeq ($(MACOS),true)
  174. dist: $(CARLA_APP_FILES)
  175. else
  176. dist:
  177. endif
  178. bdist_mac_%:
  179. env PYTHONPATH=$(CURDIR)/source/frontend SCRIPT_NAME=$* python3 ./data/macos/bundle.py bdist_mac --bundle-name=$*
  180. build/Carla.app/Contents/MacOS/%: bin/%
  181. -@mkdir -p $(shell dirname $@)
  182. @cp -v $< $@
  183. # ---------------------------------------------------------------------------------------------------------------------
  184. # hacks
  185. msys2fix:
  186. rm -rf source/includes/serd
  187. rm -rf source/includes/sord
  188. rm -rf source/includes/sratom
  189. rm -rf source/includes/lilv
  190. cp -r source/modules/lilv/serd-0.24.0/serd source/includes/serd
  191. cp -r source/modules/lilv/sord-0.16.0/sord source/includes/sord
  192. cp -r source/modules/lilv/sratom-0.6.0/sratom source/includes/sratom
  193. cp -r source/modules/lilv/lilv-0.24.0/lilv source/includes/lilv
  194. # ---------------------------------------------------------------------------------------------------------------------
  195. # nuitka
  196. nuitka: bin/carla bin/carla-rack bin/carla-plugin
  197. bin/carla:
  198. python3 -m nuitka \
  199. -j 4 \
  200. --python-flag -O --warn-unusual-code --warn-implicit-exceptions \
  201. --follow-imports \
  202. -o ./$@ \
  203. ./source/frontend/carla
  204. bin/carla-rack:
  205. python3 -m nuitka \
  206. -j 8 \
  207. --recurse-all \
  208. --python-flag -O --warn-unusual-code --warn-implicit-exceptions \
  209. --recurse-not-to=PyQt5 \
  210. --file-reference-choice=runtime \
  211. -o ./$@ \
  212. ./source/frontend/carla
  213. bin/carla-plugin:
  214. python3 -m nuitka \
  215. -j 8 \
  216. --recurse-all \
  217. --python-flag -O --warn-unusual-code --warn-implicit-exceptions \
  218. --recurse-not-to=PyQt5 \
  219. --file-reference-choice=runtime \
  220. -o ./$@ \
  221. ./source/native-plugins/resources/carla-plugin
  222. # ---------------------------------------------------------------------------------------------------------------------
  223. # Binaries (arm32)
  224. LIBS_ARM32 = $(MODULEDIR)/jackbridge.arm32.a
  225. LIBS_ARM32 += $(MODULEDIR)/lilv.arm32.a
  226. LIBS_ARM32 += $(MODULEDIR)/rtmempool.arm32.a
  227. LIBS_ARM32 += $(MODULEDIR)/water.arm32.a
  228. arm32: $(LIBS_ARM32)
  229. $(MAKE) -C source/bridges-plugin arm32
  230. $(MAKE) -C source/discovery arm32
  231. # ---------------------------------------------------------------------------------------------------------------------
  232. # Binaries (posix32)
  233. LIBS_POSIX32 = $(MODULEDIR)/jackbridge.posix32.a
  234. LIBS_POSIX32 += $(MODULEDIR)/lilv.posix32.a
  235. LIBS_POSIX32 += $(MODULEDIR)/rtmempool.posix32.a
  236. LIBS_POSIX32 += $(MODULEDIR)/water.posix32.a
  237. ifeq ($(USING_JUCE),true)
  238. LIBS_POSIX32 += $(MODULEDIR)/juce_audio_basics.posix32.a
  239. LIBS_POSIX32 += $(MODULEDIR)/juce_audio_processors.posix32.a
  240. LIBS_POSIX32 += $(MODULEDIR)/juce_data_structures.posix32.a
  241. LIBS_POSIX32 += $(MODULEDIR)/juce_core.posix32.a
  242. LIBS_POSIX32 += $(MODULEDIR)/juce_events.posix32.a
  243. LIBS_POSIX32 += $(MODULEDIR)/juce_graphics.posix32.a
  244. LIBS_POSIX32 += $(MODULEDIR)/juce_gui_basics.posix32.a
  245. ifeq ($(USING_JUCE_GUI_EXTRA),true)
  246. LIBS_POSIX32 += $(MODULEDIR)/juce_gui_extra.posix32.a
  247. endif
  248. endif
  249. posix32: $(LIBS_POSIX32)
  250. $(MAKE) -C source/bridges-plugin posix32
  251. $(MAKE) -C source/discovery posix32
  252. # ---------------------------------------------------------------------------------------------------------------------
  253. # Binaries (posix64)
  254. LIBS_POSIX64 = $(MODULEDIR)/jackbridge.posix64.a
  255. LIBS_POSIX64 += $(MODULEDIR)/lilv.posix64.a
  256. LIBS_POSIX64 += $(MODULEDIR)/rtmempool.posix64.a
  257. LIBS_POSIX64 += $(MODULEDIR)/water.posix64.a
  258. ifeq ($(USING_JUCE),true)
  259. LIBS_POSIX64 += $(MODULEDIR)/juce_audio_basics.posix64.a
  260. LIBS_POSIX64 += $(MODULEDIR)/juce_audio_processors.posix64.a
  261. LIBS_POSIX64 += $(MODULEDIR)/juce_data_structures.posix64.a
  262. LIBS_POSIX64 += $(MODULEDIR)/juce_core.posix64.a
  263. LIBS_POSIX64 += $(MODULEDIR)/juce_events.posix64.a
  264. LIBS_POSIX64 += $(MODULEDIR)/juce_graphics.posix64.a
  265. LIBS_POSIX64 += $(MODULEDIR)/juce_gui_basics.posix64.a
  266. ifeq ($(USING_JUCE_GUI_EXTRA),true)
  267. LIBS_POSIX64 += $(MODULEDIR)/juce_gui_extra.posix64.a
  268. endif
  269. endif
  270. posix64: $(LIBS_POSIX64)
  271. $(MAKE) -C source/bridges-plugin posix64
  272. $(MAKE) -C source/discovery posix64
  273. # ---------------------------------------------------------------------------------------------------------------------
  274. # Binaries (win32)
  275. ifeq ($(BUILDING_FOR_WINDOWS),true)
  276. LIBS_WIN32 = $(MODULEDIR)/jackbridge.win32.a
  277. else
  278. LIBS_WIN32 = $(MODULEDIR)/jackbridge.win32e.a
  279. endif
  280. LIBS_WIN32 += $(MODULEDIR)/lilv.win32.a
  281. LIBS_WIN32 += $(MODULEDIR)/rtmempool.win32.a
  282. LIBS_WIN32 += $(MODULEDIR)/water.win32.a
  283. ifeq ($(USING_JUCE),true)
  284. LIBS_WIN32 += $(MODULEDIR)/juce_audio_basics.win32.a
  285. LIBS_WIN32 += $(MODULEDIR)/juce_audio_processors.win32.a
  286. LIBS_WIN32 += $(MODULEDIR)/juce_data_structures.win32.a
  287. LIBS_WIN32 += $(MODULEDIR)/juce_core.win32.a
  288. LIBS_WIN32 += $(MODULEDIR)/juce_events.win32.a
  289. LIBS_WIN32 += $(MODULEDIR)/juce_graphics.win32.a
  290. LIBS_WIN32 += $(MODULEDIR)/juce_gui_basics.win32.a
  291. ifeq ($(USING_JUCE_GUI_EXTRA),true)
  292. LIBS_WIN32 += $(MODULEDIR)/juce_gui_extra.win32.a
  293. endif
  294. endif
  295. win32r: $(LIBS_WIN32)
  296. $(MAKE) -C source/bridges-plugin win32
  297. $(MAKE) -C source/discovery win32
  298. win32: $(LIBS_WIN32)
  299. $(MAKE) BUILDING_FOR_WINE=true -C source/bridges-plugin win32
  300. $(MAKE) BUILDING_FOR_WINE=true -C source/discovery win32
  301. # ---------------------------------------------------------------------------------------------------------------------
  302. # Binaries (win64)
  303. ifeq ($(BUILDING_FOR_WINDOWS),true)
  304. LIBS_WIN64 = $(MODULEDIR)/jackbridge.win64.a
  305. else
  306. LIBS_WIN64 = $(MODULEDIR)/jackbridge.win64e.a
  307. endif
  308. LIBS_WIN64 += $(MODULEDIR)/lilv.win64.a
  309. LIBS_WIN64 += $(MODULEDIR)/rtmempool.win64.a
  310. LIBS_WIN64 += $(MODULEDIR)/water.win64.a
  311. ifeq ($(USING_JUCE),true)
  312. LIBS_WIN64 += $(MODULEDIR)/juce_audio_basics.win64.a
  313. LIBS_WIN64 += $(MODULEDIR)/juce_audio_processors.win64.a
  314. LIBS_WIN64 += $(MODULEDIR)/juce_data_structures.win64.a
  315. LIBS_WIN64 += $(MODULEDIR)/juce_core.win64.a
  316. LIBS_WIN64 += $(MODULEDIR)/juce_events.win64.a
  317. LIBS_WIN64 += $(MODULEDIR)/juce_graphics.win64.a
  318. LIBS_WIN64 += $(MODULEDIR)/juce_gui_basics.win64.a
  319. ifeq ($(USING_JUCE_GUI_EXTRA),true)
  320. LIBS_WIN64 += $(MODULEDIR)/juce_gui_extra.win64.a
  321. endif
  322. endif
  323. win64r: $(LIBS_WIN64)
  324. $(MAKE) -C source/bridges-plugin win64
  325. $(MAKE) -C source/discovery win64
  326. win64: $(LIBS_WIN64)
  327. $(MAKE) BUILDING_FOR_WINE=true -C source/bridges-plugin win64
  328. $(MAKE) BUILDING_FOR_WINE=true -C source/discovery win64
  329. # ---------------------------------------------------------------------------------------------------------------------
  330. # Binaries (wine)
  331. wine32:
  332. $(MAKE) -C source/jackbridge wine32
  333. cp -f $(MODULEDIR)/jackbridge-wine32.dll.so $(CURDIR)/bin/jackbridge-wine32.dll
  334. wine64:
  335. $(MAKE) -C source/jackbridge wine64
  336. cp -f $(MODULEDIR)/jackbridge-wine64.dll.so $(CURDIR)/bin/jackbridge-wine64.dll
  337. # ---------------------------------------------------------------------------------------------------------------------
  338. clean:
  339. $(MAKE) clean -C source/backend
  340. $(MAKE) clean -C source/bridges-plugin
  341. $(MAKE) clean -C source/bridges-ui
  342. $(MAKE) clean -C source/discovery
  343. $(MAKE) clean -C source/frontend
  344. $(MAKE) clean -C source/interposer
  345. $(MAKE) clean -C source/libjack
  346. $(MAKE) clean -C source/modules
  347. $(MAKE) clean -C source/native-plugins
  348. $(MAKE) clean -C source/plugin
  349. $(MAKE) clean -C source/tests
  350. $(MAKE) clean -C source/theme
  351. rm -f *~ source/*~
  352. distclean: clean
  353. rm -f bin/*.exe bin/*.dll bin/*.dylib bin/*.so
  354. rm -rf build build-lv2
  355. cpp:
  356. $(MAKE) CPPMODE=true
  357. debug:
  358. $(MAKE) DEBUG=true
  359. doxygen:
  360. $(MAKE) doxygen -C source/backend
  361. tests:
  362. $(MAKE) -C source/tests
  363. stoat:
  364. stoat --recursive ./build/ --suppression ./data/stoat-supression.txt --whitelist ./data/stoat-whitelist.txt --graph-view ./data/stoat-callgraph.png
  365. # stoat --recursive ./build/ \
  366. # --suppression ./data/stoat-supression.txt \
  367. # --whitelist ./data/stoat-whitelist.txt \
  368. # --graph-view ./data/stoat-callgraph.png
  369. # ---------------------------------------------------------------------------------------------------------------------
  370. install_main:
  371. # Create directories
  372. install -d $(DESTDIR)$(BINDIR)
  373. ifeq ($(LINUX),true)
  374. install -d $(DESTDIR)$(LIBDIR)/carla/jack
  375. else
  376. install -d $(DESTDIR)$(LIBDIR)/carla
  377. endif
  378. install -d $(DESTDIR)$(LIBDIR)/pkgconfig
  379. install -d $(DESTDIR)$(INCLUDEDIR)/carla/includes
  380. ifeq ($(LINUX),true)
  381. ifeq ($(HAVE_JACK),true)
  382. ifeq ($(JACKBRIDGE_DIRECT),true)
  383. install -d $(DESTDIR)$(JACK_LIBDIR)
  384. endif
  385. endif
  386. endif
  387. ifeq ($(HAVE_PYQT),true)
  388. # Create directories (gui)
  389. install -d $(DESTDIR)$(LIBDIR)/carla/styles
  390. install -d $(DESTDIR)$(DATADIR)/applications
  391. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/16x16/apps
  392. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps
  393. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/128x128/apps
  394. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/256x256/apps
  395. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps
  396. install -d $(DESTDIR)$(DATADIR)/mime/packages
  397. install -d $(DESTDIR)$(DATADIR)/carla/resources
  398. install -d $(DESTDIR)$(DATADIR)/carla/resources/translations
  399. install -d $(DESTDIR)$(DATADIR)/carla/modgui
  400. install -d $(DESTDIR)$(DATADIR)/carla/patchcanvas
  401. install -d $(DESTDIR)$(DATADIR)/carla/widgets
  402. endif
  403. # -------------------------------------------------------------------------------------------------------------
  404. # Install script files (non-gui)
  405. install -m 755 \
  406. data/carla-single \
  407. $(DESTDIR)$(BINDIR)
  408. # Adjust PREFIX value in script files (non-gui)
  409. sed $(SED_ARGS) 's?X-PREFIX-X?$(PREFIX)?' \
  410. $(DESTDIR)$(BINDIR)/carla-single
  411. # Install backend libs
  412. install -m 644 \
  413. bin/libcarla_*.* \
  414. $(DESTDIR)$(LIBDIR)/carla
  415. # Install other binaries
  416. install -m 755 \
  417. bin/*bridge-* \
  418. bin/carla-discovery-* \
  419. $(DESTDIR)$(LIBDIR)/carla
  420. ifeq ($(LINUX),true)
  421. ifeq ($(HAVE_JACK),true)
  422. ifeq ($(JACKBRIDGE_DIRECT),true)
  423. # Install internal jack client
  424. ln -sf \
  425. $(LIBDIR)/carla/libcarla_standalone2.so \
  426. $(DESTDIR)$(JACK_LIBDIR)/carla.so
  427. endif
  428. endif
  429. ifneq ($(JACKBRIDGE_DIRECT),true)
  430. # Install custom libjack
  431. install -m 755 \
  432. bin/jack/libjack.so.0 \
  433. $(DESTDIR)$(LIBDIR)/carla/jack
  434. endif
  435. endif
  436. # Install pkg-config files
  437. install -m 644 \
  438. data/*.pc \
  439. $(DESTDIR)$(LIBDIR)/pkgconfig
  440. # Adjust PREFIX, LIBDIR and INCLUDEDIR in pkg-config files
  441. sed $(SED_ARGS) 's?X-PREFIX-X?$(PREFIX)?' \
  442. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-host-plugin.pc \
  443. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-native-plugin.pc \
  444. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-standalone.pc \
  445. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-utils.pc
  446. sed $(SED_ARGS) 's?X-LIBDIR-X?$(LIBDIR)?' \
  447. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-host-plugin.pc \
  448. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-native-plugin.pc \
  449. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-standalone.pc \
  450. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-utils.pc
  451. sed $(SED_ARGS) 's?X-INCLUDEDIR-X?$(INCLUDEDIR)?' \
  452. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-host-plugin.pc \
  453. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-native-plugin.pc \
  454. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-standalone.pc \
  455. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-utils.pc
  456. # Install headers
  457. install -m 644 \
  458. source/backend/CarlaBackend.h \
  459. source/backend/CarlaHost.h \
  460. source/backend/CarlaUtils.h \
  461. source/backend/CarlaEngine.hpp \
  462. source/backend/CarlaPlugin.hpp \
  463. source/includes/CarlaNative.h \
  464. $(DESTDIR)$(INCLUDEDIR)/carla
  465. install -m 644 \
  466. source/includes/CarlaDefines.h \
  467. source/includes/CarlaMIDI.h \
  468. source/includes/CarlaNative.h \
  469. source/includes/CarlaNativePlugin.h \
  470. $(DESTDIR)$(INCLUDEDIR)/carla/includes
  471. # -------------------------------------------------------------------------------------------------------------
  472. ifeq ($(HAVE_PYQT),true)
  473. ifneq ($(CPPMODE),true)
  474. # Install script files (gui)
  475. install -m 755 \
  476. data/carla \
  477. data/carla-database \
  478. data/carla-jack-multi \
  479. data/carla-jack-single \
  480. data/carla-jack-patchbayplugin \
  481. data/carla-osc-gui \
  482. data/carla-patchbay \
  483. data/carla-rack \
  484. data/carla-settings \
  485. $(DESTDIR)$(BINDIR)
  486. # Adjust PREFIX value in script files (gui)
  487. sed $(SED_ARGS) 's?X-PREFIX-X?$(PREFIX)?' \
  488. $(DESTDIR)$(BINDIR)/carla \
  489. $(DESTDIR)$(BINDIR)/carla-database \
  490. $(DESTDIR)$(BINDIR)/carla-jack-multi \
  491. $(DESTDIR)$(BINDIR)/carla-jack-single \
  492. $(DESTDIR)$(BINDIR)/carla-jack-patchbayplugin \
  493. $(DESTDIR)$(BINDIR)/carla-osc-gui \
  494. $(DESTDIR)$(BINDIR)/carla-patchbay \
  495. $(DESTDIR)$(BINDIR)/carla-rack \
  496. $(DESTDIR)$(BINDIR)/carla-settings
  497. ifeq ($(HAVE_LIBLO),true)
  498. install -m 755 \
  499. data/carla-control \
  500. $(DESTDIR)$(BINDIR)
  501. sed $(SED_ARGS) 's?X-PREFIX-X?$(PREFIX)?' \
  502. $(DESTDIR)$(BINDIR)/carla-control
  503. endif
  504. # Install the real modgui bridge
  505. install -m 755 \
  506. data/carla-bridge-lv2-modgui \
  507. $(DESTDIR)$(LIBDIR)/carla
  508. sed $(SED_ARGS) 's?X-PREFIX-X?$(PREFIX)?' \
  509. $(DESTDIR)$(LIBDIR)/carla/carla-bridge-lv2-modgui
  510. # Install frontend
  511. install -m 644 \
  512. source/frontend/carla \
  513. source/frontend/carla-control \
  514. source/frontend/carla-jack-multi \
  515. source/frontend/carla-jack-single \
  516. source/frontend/carla-patchbay \
  517. source/frontend/carla-rack \
  518. source/frontend/*.py \
  519. $(DESTDIR)$(DATADIR)/carla/
  520. install -m 644 \
  521. source/frontend/modgui/*.py \
  522. $(DESTDIR)$(DATADIR)/carla/modgui/
  523. install -m 644 \
  524. source/frontend/patchcanvas/*.py \
  525. $(DESTDIR)$(DATADIR)/carla/patchcanvas/
  526. install -m 644 \
  527. source/frontend/widgets/*.py \
  528. $(DESTDIR)$(DATADIR)/carla/widgets/
  529. # Adjust LIBDIR and DATADIR value in python code
  530. sed $(SED_ARGS) 's?X_LIBDIR_X = None?X_LIBDIR_X = "$(LIBDIR)"?' \
  531. $(DESTDIR)$(DATADIR)/carla/carla_shared.py
  532. sed $(SED_ARGS) 's?X_DATADIR_X = None?X_DATADIR_X = "$(DATADIR)"?' \
  533. $(DESTDIR)$(DATADIR)/carla/carla_shared.py
  534. # Install resources (gui)
  535. install -m 755 \
  536. bin/resources/carla-plugin \
  537. bin/resources/carla-plugin-patchbay \
  538. bin/resources/*-ui \
  539. $(DESTDIR)$(DATADIR)/carla/resources
  540. endif # CPPMODE
  541. ifeq ($(HAVE_THEME),true)
  542. # Install theme
  543. install -m 644 \
  544. bin/styles/* \
  545. $(DESTDIR)$(LIBDIR)/carla/styles
  546. endif
  547. # Install desktop files
  548. install -m 644 data/desktop/carla.desktop $(DESTDIR)$(DATADIR)/applications
  549. install -m 644 data/desktop/carla-rack.desktop $(DESTDIR)$(DATADIR)/applications
  550. install -m 644 data/desktop/carla-patchbay.desktop $(DESTDIR)$(DATADIR)/applications
  551. install -m 644 data/desktop/carla-jack-single.desktop $(DESTDIR)$(DATADIR)/applications
  552. install -m 644 data/desktop/carla-jack-multi.desktop $(DESTDIR)$(DATADIR)/applications
  553. ifeq ($(HAVE_LIBLO),true)
  554. install -m 644 data/desktop/carla-control.desktop $(DESTDIR)$(DATADIR)/applications
  555. endif
  556. # Install mime package
  557. install -m 644 data/carla.xml $(DESTDIR)$(DATADIR)/mime/packages
  558. # Install icons, 16x16
  559. install -m 644 resources/16x16/carla.png $(DESTDIR)$(DATADIR)/icons/hicolor/16x16/apps
  560. install -m 644 resources/16x16/carla-control.png $(DESTDIR)$(DATADIR)/icons/hicolor/16x16/apps
  561. # Install icons, 48x48
  562. install -m 644 resources/48x48/carla.png $(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps
  563. install -m 644 resources/48x48/carla-control.png $(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps
  564. # Install icons, 128x128
  565. install -m 644 resources/128x128/carla.png $(DESTDIR)$(DATADIR)/icons/hicolor/128x128/apps
  566. install -m 644 resources/128x128/carla-control.png $(DESTDIR)$(DATADIR)/icons/hicolor/128x128/apps
  567. # Install icons, 256x256
  568. install -m 644 resources/256x256/carla.png $(DESTDIR)$(DATADIR)/icons/hicolor/256x256/apps
  569. install -m 644 resources/256x256/carla-control.png $(DESTDIR)$(DATADIR)/icons/hicolor/256x256/apps
  570. # Install icons, scalable
  571. install -m 644 resources/scalable/carla.svg $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps
  572. install -m 644 resources/scalable/carla-control.svg $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps
  573. # Install resources (re-use python files)
  574. $(LINK) ../modgui $(DESTDIR)$(DATADIR)/carla/resources
  575. $(LINK) ../patchcanvas $(DESTDIR)$(DATADIR)/carla/resources
  576. $(LINK) ../widgets $(DESTDIR)$(DATADIR)/carla/resources
  577. $(LINK) ../carla_app.py $(DESTDIR)$(DATADIR)/carla/resources
  578. $(LINK) ../carla_backend.py $(DESTDIR)$(DATADIR)/carla/resources
  579. $(LINK) ../carla_backend_qt.py $(DESTDIR)$(DATADIR)/carla/resources
  580. $(LINK) ../carla_control.py $(DESTDIR)$(DATADIR)/carla/resources
  581. $(LINK) ../carla_database.py $(DESTDIR)$(DATADIR)/carla/resources
  582. $(LINK) ../carla_host.py $(DESTDIR)$(DATADIR)/carla/resources
  583. $(LINK) ../carla_settings.py $(DESTDIR)$(DATADIR)/carla/resources
  584. $(LINK) ../carla_skin.py $(DESTDIR)$(DATADIR)/carla/resources
  585. $(LINK) ../carla_shared.py $(DESTDIR)$(DATADIR)/carla/resources
  586. $(LINK) ../carla_utils.py $(DESTDIR)$(DATADIR)/carla/resources
  587. $(LINK) ../carla_widgets.py $(DESTDIR)$(DATADIR)/carla/resources
  588. $(LINK) ../externalui.py $(DESTDIR)$(DATADIR)/carla/resources
  589. $(LINK) ../resources_rc.py $(DESTDIR)$(DATADIR)/carla/resources
  590. $(LINK) ../ui_carla_about.py $(DESTDIR)$(DATADIR)/carla/resources
  591. $(LINK) ../ui_carla_about_juce.py $(DESTDIR)$(DATADIR)/carla/resources
  592. $(LINK) ../ui_carla_add_jack.py $(DESTDIR)$(DATADIR)/carla/resources
  593. $(LINK) ../ui_carla_database.py $(DESTDIR)$(DATADIR)/carla/resources
  594. $(LINK) ../ui_carla_edit.py $(DESTDIR)$(DATADIR)/carla/resources
  595. $(LINK) ../ui_carla_host.py $(DESTDIR)$(DATADIR)/carla/resources
  596. $(LINK) ../ui_carla_parameter.py $(DESTDIR)$(DATADIR)/carla/resources
  597. $(LINK) ../ui_carla_plugin_calf.py $(DESTDIR)$(DATADIR)/carla/resources
  598. $(LINK) ../ui_carla_plugin_classic.py $(DESTDIR)$(DATADIR)/carla/resources
  599. $(LINK) ../ui_carla_plugin_compact.py $(DESTDIR)$(DATADIR)/carla/resources
  600. $(LINK) ../ui_carla_plugin_default.py $(DESTDIR)$(DATADIR)/carla/resources
  601. $(LINK) ../ui_carla_plugin_presets.py $(DESTDIR)$(DATADIR)/carla/resources
  602. $(LINK) ../ui_carla_refresh.py $(DESTDIR)$(DATADIR)/carla/resources
  603. $(LINK) ../ui_carla_settings.py $(DESTDIR)$(DATADIR)/carla/resources
  604. $(LINK) ../ui_carla_settings_driver.py $(DESTDIR)$(DATADIR)/carla/resources
  605. $(LINK) ../ui_inputdialog_value.py $(DESTDIR)$(DATADIR)/carla/resources
  606. $(LINK) ../ui_midipattern.py $(DESTDIR)$(DATADIR)/carla/resources
  607. # Install translations
  608. $(foreach l,$(I18N_LANGUAGES),install -m 644 \
  609. source/frontend/translations/carla_$(l).qm \
  610. $(DESTDIR)$(DATADIR)/carla/resources/translations/;)
  611. endif # HAVE_PYQT
  612. # -------------------------------------------------------------------------------------------------------------
  613. # Install lv2 plugin
  614. install -d $(DESTDIR)$(LIBDIR)/lv2/carla.lv2
  615. install -m 644 \
  616. bin/carla.lv2/carla.* \
  617. bin/carla.lv2/*.ttl \
  618. $(DESTDIR)$(LIBDIR)/lv2/carla.lv2
  619. # Link binaries for lv2 plugin
  620. @for i in `find $(DESTDIR)$(LIBDIR)/carla/ -maxdepth 1 -type f -exec basename {} ';'`; do \
  621. $(LINK) ../../carla/$$i $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/$$i; \
  622. done
  623. rm -f $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/libcarla_standalone2.*
  624. ifeq ($(LINUX),true)
  625. # Link jack app bridge
  626. rm -rf $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/jack
  627. $(LINK) ../../carla/jack $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/jack
  628. endif
  629. ifeq ($(HAVE_PYQT),true)
  630. # Link resources for lv2 plugin
  631. rm -rf $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/resources
  632. $(LINK) ../../../share/carla/resources $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/resources
  633. # Link styles for lv2 plugin
  634. rm -rf $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/styles
  635. $(LINK) ../../carla/styles $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/styles
  636. endif
  637. # -------------------------------------------------------------------------------------------------------------
  638. ifneq ($(HAIKU),true)
  639. ifeq ($(HAVE_PYQT),true)
  640. # Install vst plugin
  641. install -d $(DESTDIR)$(LIBDIR)/vst/carla.vst
  642. install -m 644 \
  643. bin/CarlaRack*.* \
  644. bin/CarlaPatchbay*.* \
  645. $(DESTDIR)$(LIBDIR)/vst/carla.vst
  646. # Link binaries for vst plugin
  647. @for i in `find $(DESTDIR)$(LIBDIR)/carla/ -maxdepth 1 -type f -exec basename {} ';'`; do \
  648. $(LINK) ../../carla/$$i $(DESTDIR)$(LIBDIR)/vst/carla.vst/$$i; \
  649. done
  650. rm -f $(DESTDIR)$(LIBDIR)/vst/carla.vst/libcarla_standalone2.*
  651. # Link jack app bridge
  652. rm -rf $(DESTDIR)$(LIBDIR)/vst/carla.vst/jack
  653. $(LINK) ../../carla/jack $(DESTDIR)$(LIBDIR)/vst/carla.vst/jack
  654. # Link resources for vst plugin
  655. rm -rf $(DESTDIR)$(LIBDIR)/vst/carla.vst/resources
  656. $(LINK) ../../../share/carla/resources $(DESTDIR)$(LIBDIR)/vst/carla.vst/resources
  657. # Link styles for vst plugin
  658. rm -rf $(DESTDIR)$(LIBDIR)/vst/carla.vst/styles
  659. $(LINK) ../../carla/styles $(DESTDIR)$(LIBDIR)/vst/carla.vst/styles
  660. endif
  661. endif
  662. # -------------------------------------------------------------------------------------------------------------
  663. ifneq ($(HAVE_PYQT),true)
  664. # Remove gui files for non-gui build
  665. rm $(DESTDIR)$(LIBDIR)/carla/carla-bridge-lv2-modgui
  666. rm $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/carla-bridge-lv2-modgui
  667. endif
  668. # ---------------------------------------------------------------------------------------------------------------------
  669. ifneq ($(EXTERNAL_PLUGINS),true)
  670. install_external_plugins:
  671. endif
  672. install: install_main install_external_plugins
  673. # ---------------------------------------------------------------------------------------------------------------------
  674. uninstall:
  675. rm -f $(DESTDIR)$(BINDIR)/carla*
  676. rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/carla-host-plugin.pc
  677. rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/carla-native-plugin.pc
  678. rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/carla-standalone.pc
  679. rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/carla-utils.pc
  680. rm -f $(DESTDIR)$(DATADIR)/applications/carla.desktop
  681. rm -f $(DESTDIR)$(DATADIR)/applications/carla-control.desktop
  682. rm -f $(DESTDIR)$(DATADIR)/icons/hicolor/*/apps/carla.png
  683. rm -f $(DESTDIR)$(DATADIR)/icons/hicolor/*/apps/carla-control.png
  684. rm -f $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps/carla.svg
  685. rm -f $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps/carla-control.svg
  686. rm -f $(DESTDIR)$(DATADIR)/mime/packages/carla.xml
  687. rm -rf $(DESTDIR)$(LIBDIR)/carla
  688. rm -rf $(DESTDIR)$(LIBDIR)/lv2/carla.lv2
  689. rm -rf $(DESTDIR)$(LIBDIR)/lv2/carla-native.lv2
  690. rm -rf $(DESTDIR)$(LIBDIR)/vst/carla.vst
  691. rm -rf $(DESTDIR)$(DATADIR)/carla
  692. rm -rf $(DESTDIR)$(INCLUDEDIR)/carla
  693. # ----------------------------------------------------------------------------------------------------------------------------
  694. ifneq ($(MAKE_TERMOUT),)
  695. ANS_NO=\033[31mNO\033[0m
  696. ANS_YES=\033[32mYES\033[0m
  697. mS=\033[33m[
  698. mZ=\033[30;1m[
  699. mE=]\033[0m
  700. tS=\033[36m
  701. tE=\033[0m
  702. else
  703. ANS_NO=NO
  704. ANS_YES=YES
  705. mS=[
  706. mZ=[
  707. mE=]
  708. endif
  709. features_print_main:
  710. @printf -- "$(tS)---> Main features $(tE)\n"
  711. ifeq ($(HAVE_PYQT),true)
  712. @printf -- "Front-End: $(ANS_YES)\n"
  713. @printf -- "LV2 plugin: $(ANS_YES)\n"
  714. ifneq ($(HAIKU),true)
  715. @printf -- "VST2 plugin: $(ANS_YES)\n"
  716. else
  717. @printf -- "VST2 plugin: $(ANS_NO) $(mZ)Not available for Haiku$(mE)\n"
  718. endif
  719. else
  720. @printf -- "Front-End: $(ANS_NO) $(mS)Missing PyQt$(mE)\n"
  721. @printf -- "LV2 plugin: $(ANS_NO) $(mS)No front-end$(mE)\n"
  722. @printf -- "VST2 plugin: $(ANS_NO) $(mS)No front-end$(mE)\n"
  723. endif
  724. ifeq ($(HAVE_HYLIA),true)
  725. @printf -- "Link support: $(ANS_YES)\n"
  726. else
  727. ifeq ($(MACOS_OLD),true)
  728. @printf -- "Link support: $(ANS_NO) $(mZ)MacOS >= 10.8 only$(mE)\n"
  729. else
  730. @printf -- "Link support: $(ANS_NO) $(mZ)Linux, MacOS and Windows only$(mE)\n"
  731. endif
  732. endif
  733. ifeq ($(HAVE_LIBLO),true)
  734. @printf -- "OSC support: $(ANS_YES)\n"
  735. else
  736. @printf -- "OSC support: $(ANS_NO) $(mS)Missing liblo$(mE)\n"
  737. endif
  738. ifeq ($(WIN32),true)
  739. @printf -- "Binary detect: $(ANS_YES)\n"
  740. else
  741. ifeq ($(HAVE_LIBMAGIC),true)
  742. @printf -- "Binary detect: $(ANS_YES)\n"
  743. else
  744. @printf -- "Binary detect: $(ANS_NO) $(mS)Missing libmagic/file$(mE)\n"
  745. endif
  746. endif
  747. @printf -- "\n"
  748. @printf -- "$(tS)---> Engine drivers $(tE)\n"
  749. @printf -- "JACK: $(ANS_YES)\n"
  750. ifeq ($(LINUX),true)
  751. ifeq ($(HAVE_ALSA),true)
  752. @printf -- "ALSA: $(ANS_YES)\n"
  753. else
  754. @printf -- "ALSA: $(ANS_NO) $(mS)Missing ALSA$(mE)\n"
  755. endif
  756. else
  757. @printf -- "ALSA: $(ANS_NO) $(mZ)Linux only$(mE)\n"
  758. endif
  759. ifeq ($(UNIX),true)
  760. ifneq ($(MACOS),true)
  761. ifeq ($(HAVE_PULSEAUDIO),true)
  762. @printf -- "PulseAudio: $(ANS_YES)\n"
  763. else
  764. @printf -- "PulseAudio: $(ANS_NO) $(mS)Missing PulseAudio$(mE)\n"
  765. endif
  766. else
  767. @printf -- "PulseAudio: $(ANS_NO) $(mZ)Not available for MacOS$(mE)\n"
  768. endif
  769. else
  770. @printf -- "PulseAudio: $(ANS_NO) $(mZ)Only available for Unix systems$(mE)\n"
  771. endif
  772. ifeq ($(MACOS),true)
  773. @printf -- "CoreAudio: $(ANS_YES)\n"
  774. else
  775. @printf -- "CoreAudio: $(ANS_NO) $(mZ)MacOS only$(mE)\n"
  776. endif
  777. ifeq ($(WIN32),true)
  778. @printf -- "ASIO: $(ANS_YES)\n"
  779. @printf -- "DirectSound: $(ANS_YES)\n"
  780. @printf -- "WASAPI: $(ANS_YES)\n"
  781. else
  782. @printf -- "ASIO: $(ANS_NO) $(mZ)Windows only$(mE)\n"
  783. @printf -- "DirectSound: $(ANS_NO) $(mZ)Windows only$(mE)\n"
  784. @printf -- "WASAPI: $(ANS_NO) $(mZ)Windows only$(mE)\n"
  785. endif
  786. @printf -- "\n"
  787. @printf -- "$(tS)---> Plugin formats: $(tE)\n"
  788. @printf -- "Internal: $(ANS_YES)\n"
  789. @printf -- "LADSPA: $(ANS_YES)\n"
  790. @printf -- "DSSI: $(ANS_YES)\n"
  791. @printf -- "LV2: $(ANS_YES)\n"
  792. ifeq ($(MACOS_OR_WIN32),true)
  793. ifeq ($(USING_JUCE),true)
  794. @printf -- "VST2: $(ANS_YES) (with UI, using JUCE)\n"
  795. @printf -- "VST3: $(ANS_YES) (with UI, using JUCE)\n"
  796. else # USING_JUCE
  797. @printf -- "VST2: $(ANS_YES) (with UI)\n"
  798. @printf -- "VST3: $(ANS_NO)\n"
  799. endif # USING_JUCE
  800. else # MACOS_OR_WIN32
  801. ifeq ($(HAIKU),true)
  802. @printf -- "VST2: $(ANS_YES) (without UI)\n"
  803. @printf -- "VST3: $(ANS_NO)\n"
  804. else # HAIKU
  805. ifeq ($(HAVE_X11),true)
  806. @printf -- "VST2: $(ANS_YES) (with UI)\n"
  807. ifeq ($(USING_JUCE),true)
  808. @printf -- "VST3: $(ANS_YES) (with UI, using JUCE)\n"
  809. else # USING_JUCE
  810. @printf -- "VST3: $(ANS_NO)\n"
  811. endif # USING_JUCE
  812. else # HAVE_X11
  813. @printf -- "VST2: $(ANS_YES) (without UI) $(mS)Missing X11$(mE)\n"
  814. @printf -- "VST3: $(ANS_NO)\n"
  815. endif # HAVE_X11
  816. endif # HAIKU
  817. endif # MACOS_OR_WIN32
  818. ifeq ($(MACOS),true)
  819. ifeq ($(USING_JUCE),true)
  820. @printf -- "AU: $(ANS_YES) (with UI, using JUCE)\n"
  821. else # USING_JUCE
  822. @printf -- "AU: $(ANS_NO)\n"
  823. endif # USING_JUCE
  824. else # MACOS
  825. @printf -- "AU: $(ANS_NO) $(mZ)MacOS only$(mE)\n"
  826. endif # MACOS
  827. @printf -- "\n"
  828. @printf -- "$(tS)---> LV2 UI toolkit support: $(tE)\n"
  829. @printf -- "External: $(ANS_YES) (direct)\n"
  830. ifneq ($(MACOS_OR_WIN32),true)
  831. ifeq ($(HAVE_GTK2),true)
  832. @printf -- "Gtk2: $(ANS_YES) (bridge)\n"
  833. else
  834. @printf -- "Gtk2: $(ANS_NO) $(mS)Gtk2 missing$(mE)\n"
  835. endif
  836. ifeq ($(HAVE_GTK3),true)
  837. @printf -- "Gtk3: $(ANS_YES) (bridge)\n"
  838. else
  839. @printf -- "Gtk3: $(ANS_NO) $(mS)Gtk3 missing$(mE)\n"
  840. endif
  841. ifeq ($(HAVE_QT4),true)
  842. @printf -- "Qt4: $(ANS_YES) (bridge)\n"
  843. else
  844. @printf -- "Qt4: $(ANS_NO) $(mS)Qt4 missing$(mE)\n"
  845. endif
  846. ifeq ($(HAVE_QT5),true)
  847. @printf -- "Qt5: $(ANS_YES) (bridge)\n"
  848. else
  849. @printf -- "Qt5: $(ANS_NO) $(mS)Qt5 missing$(mE)\n"
  850. endif
  851. ifeq ($(HAVE_X11),true)
  852. @printf -- "X11: $(ANS_YES) (direct+bridge)\n"
  853. else
  854. @printf -- "X11: $(ANS_NO) $(mS)X11 missing$(mE)\n"
  855. endif
  856. else # LINUX
  857. @printf -- "Gtk2: $(ANS_NO) $(mZ)Not available for Windows or MacOS$(mE)\n"
  858. @printf -- "Gtk3: $(ANS_NO) $(mZ)Not available for Windows or MacOS$(mE)\n"
  859. @printf -- "Qt4: $(ANS_NO) $(mZ)Not available for Windows or MacOS$(mE)\n"
  860. @printf -- "Qt5: $(ANS_NO) $(mZ)Not available for Windows or MacOS$(mE)\n"
  861. @printf -- "X11: $(ANS_NO) $(mZ)Not available for Windows or MacOS$(mE)\n"
  862. endif # LINUX
  863. ifeq ($(MACOS),true)
  864. @printf -- "Cocoa: $(ANS_YES) (direct+bridge)\n"
  865. else
  866. @printf -- "Cocoa: $(ANS_NO) $(mZ)MacOS only$(mE)\n"
  867. endif
  868. ifeq ($(WIN32),true)
  869. @printf -- "Windows: $(ANS_YES) (direct+bridge)\n"
  870. else
  871. @printf -- "Windows: $(ANS_NO) $(mZ)Windows only$(mE)\n"
  872. endif
  873. @printf -- "\n"
  874. @printf -- "$(tS)---> File formats: $(tE)\n"
  875. ifeq ($(HAVE_SNDFILE),true)
  876. @printf -- "Basic: $(ANS_YES)\n"
  877. else
  878. @printf -- "Basic: $(ANS_NO) $(mS)libsndfile missing$(mE)\n"
  879. endif
  880. ifeq ($(HAVE_FFMPEG),true)
  881. @printf -- "Extra: $(ANS_YES)\n"
  882. else
  883. @printf -- "Extra: $(ANS_NO) $(mS)FFmpeg missing or too new$(mE)\n"
  884. endif
  885. # ifeq ($(HAVE_FLUIDSYNTH_INSTPATCH),true)
  886. # @printf -- "DLS: $(ANS_YES)\n"
  887. # else
  888. # @printf -- "DLS: $(ANS_NO) $(mS)FluidSynth/instpatch missing or too old$(mE)\n"
  889. # endif
  890. ifeq ($(HAVE_FLUIDSYNTH),true)
  891. @printf -- "SF2/3: $(ANS_YES)\n"
  892. else
  893. @printf -- "SF2/3: $(ANS_NO) $(mS)FluidSynth missing or too old$(mE)\n"
  894. endif
  895. @printf -- "SFZ: $(ANS_YES)\n"
  896. @printf -- "\n"
  897. @printf -- "$(tS)---> Internal plugins: $(tE)\n"
  898. @printf -- "Basic Plugins: $(ANS_YES)\n"
  899. @printf -- "Carla-Patchbay: $(ANS_YES)\n"
  900. @printf -- "Carla-Rack: $(ANS_YES)\n"
  901. ifeq ($(EXTERNAL_PLUGINS),true)
  902. @printf -- "External Plugins: $(ANS_YES)\n"
  903. else
  904. @printf -- "External Plugins: $(ANS_NO)\n"
  905. endif
  906. ifneq ($(EXTERNAL_PLUGINS),true)
  907. features_print_external_plugins:
  908. endif
  909. features: features_print_main features_print_external_plugins
  910. # ---------------------------------------------------------------------------------------------------------------------
  911. .FORCE:
  912. .PHONY: .FORCE
  913. # ---------------------------------------------------------------------------------------------------------------------