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.

Makefile 27KB

11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
11 years ago
9 years ago
9 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846
  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. VERSION := 2.4.1
  21. -include Makefile.user.mk
  22. # ---------------------------------------------------------------------------------------------------------------------
  23. all: backend discovery bridges-plugin bridges-ui frontend interposer libjack plugin theme
  24. # ---------------------------------------------------------------------------------------------------------------------
  25. # Binaries (native)
  26. ifneq ($(STATIC_PLUGIN_TARGET),true)
  27. ALL_LIBS += $(MODULEDIR)/carla_engine.a
  28. endif
  29. ALL_LIBS += $(MODULEDIR)/carla_engine_plugin.a
  30. ALL_LIBS += $(MODULEDIR)/carla_plugin.a
  31. ALL_LIBS += $(MODULEDIR)/jackbridge.a
  32. ifeq ($(STATIC_PLUGIN_TARGET),true)
  33. ALL_LIBS += $(MODULEDIR)/jackbridge.min.a
  34. endif
  35. ALL_LIBS += $(MODULEDIR)/native-plugins.a
  36. ALL_LIBS += $(MODULEDIR)/rtmempool.a
  37. 3RD_LIBS += $(MODULEDIR)/audio_decoder.a
  38. 3RD_LIBS += $(MODULEDIR)/lilv.a
  39. 3RD_LIBS += $(MODULEDIR)/sfzero.a
  40. 3RD_LIBS += $(MODULEDIR)/water.a
  41. 3RD_LIBS += $(MODULEDIR)/zita-resampler.a
  42. ifeq ($(HAVE_DGL),true)
  43. 3RD_LIBS += $(MODULEDIR)/dgl.a
  44. endif
  45. ifeq ($(HAVE_HYLIA),true)
  46. 3RD_LIBS += $(MODULEDIR)/hylia.a
  47. endif
  48. ifeq ($(HAVE_QT4),true)
  49. 3RD_LIBS += $(MODULEDIR)/theme.qt4.a
  50. endif
  51. ifeq ($(HAVE_QT5),true)
  52. 3RD_LIBS += $(MODULEDIR)/theme.qt5.a
  53. endif
  54. ifeq ($(USING_JUCE),true)
  55. 3RD_LIBS += $(MODULEDIR)/juce_audio_basics.a
  56. ifeq ($(USING_JUCE_AUDIO_DEVICES),true)
  57. 3RD_LIBS += $(MODULEDIR)/juce_audio_devices.a
  58. endif
  59. 3RD_LIBS += $(MODULEDIR)/juce_audio_processors.a
  60. 3RD_LIBS += $(MODULEDIR)/juce_core.a
  61. 3RD_LIBS += $(MODULEDIR)/juce_data_structures.a
  62. 3RD_LIBS += $(MODULEDIR)/juce_events.a
  63. 3RD_LIBS += $(MODULEDIR)/juce_graphics.a
  64. 3RD_LIBS += $(MODULEDIR)/juce_gui_basics.a
  65. ifeq ($(USING_JUCE_GUI_EXTRA),true)
  66. 3RD_LIBS += $(MODULEDIR)/juce_gui_extra.a
  67. endif
  68. endif
  69. ifeq ($(USING_RTAUDIO),true)
  70. 3RD_LIBS += $(MODULEDIR)/rtaudio.a
  71. 3RD_LIBS += $(MODULEDIR)/rtmidi.a
  72. endif
  73. ALL_LIBS += $(3RD_LIBS)
  74. 3rd: $(3RD_LIBS)
  75. @$(MAKE) -C source/theme
  76. ifeq ($(HAVE_QT4),true)
  77. @$(MAKE) -C source/bridges-ui ui_lv2-qt4
  78. endif
  79. libs: $(ALL_LIBS)
  80. $(MODULEDIR)/carla_engine.a: .FORCE
  81. @$(MAKE) -C source/backend/engine
  82. $(MODULEDIR)/carla_engine_plugin.a: $(MODULEDIR)/carla_engine.a
  83. @$(MAKE) -C source/backend/engine
  84. $(MODULEDIR)/carla_plugin.a: .FORCE
  85. @$(MAKE) -C source/backend/plugin
  86. $(MODULEDIR)/jackbridge.a: .FORCE
  87. @$(MAKE) -C source/jackbridge
  88. $(MODULEDIR)/jackbridge.%.a: .FORCE
  89. @$(MAKE) -C source/jackbridge $*
  90. $(MODULEDIR)/native-plugins.a: .FORCE
  91. @$(MAKE) -C source/native-plugins
  92. $(MODULEDIR)/theme.qt4.a: .FORCE
  93. @$(MAKE) -C source/theme qt4
  94. $(MODULEDIR)/theme.qt5.a: .FORCE
  95. @$(MAKE) -C source/theme qt5
  96. $(MODULEDIR)/%.arm32.a: .FORCE
  97. ifneq ($(WIN32),true)
  98. @$(MAKE) -C source/modules/$* arm32
  99. else
  100. $(error Trying to build ARM binaries with a Windows toolchain, this cannot work)
  101. endif
  102. $(MODULEDIR)/%.posix32.a: .FORCE
  103. ifneq ($(WIN32),true)
  104. @$(MAKE) -C source/modules/$* posix32
  105. else
  106. $(error Trying to build POSIX binaries with a Windows toolchain, this cannot work)
  107. endif
  108. $(MODULEDIR)/%.posix64.a: .FORCE
  109. ifneq ($(WIN32),true)
  110. @$(MAKE) -C source/modules/$* posix64
  111. else
  112. $(error Trying to build POSIX binaries with a Windows toolchain, this cannot work)
  113. endif
  114. $(MODULEDIR)/%.win32.a: .FORCE
  115. ifeq ($(WIN32),true)
  116. @$(MAKE) -C source/modules/$* win32
  117. else
  118. $(error Trying to build Windows binaries with a regular toolchain, this cannot work)
  119. endif
  120. $(MODULEDIR)/%.win64.a: .FORCE
  121. ifeq ($(WIN32),true)
  122. @$(MAKE) -C source/modules/$* win64
  123. else
  124. $(error Trying to build Windows binaries with a regular toolchain, this cannot work)
  125. endif
  126. $(MODULEDIR)/dgl.wine.a: .FORCE
  127. @$(MAKE) -C source/modules/dgl wine
  128. $(MODULEDIR)/water.files.a: .FORCE
  129. @$(MAKE) -C source/modules/water files
  130. $(MODULEDIR)/%.a: .FORCE
  131. @$(MAKE) -C source/modules/$*
  132. # ---------------------------------------------------------------------------------------------------------------------
  133. backend: libs
  134. @$(MAKE) -C source/backend
  135. bridges-plugin: libs
  136. @$(MAKE) -C source/bridges-plugin
  137. bridges-ui: libs
  138. @$(MAKE) -C source/bridges-ui
  139. discovery: libs
  140. @$(MAKE) -C source/discovery
  141. frontend: libs
  142. ifeq ($(HAVE_PYQT),true)
  143. @$(MAKE) -C source/frontend
  144. endif
  145. interposer:
  146. ifeq ($(LINUX),true)
  147. @$(MAKE) -C source/interposer
  148. endif
  149. libjack: libs
  150. @$(MAKE) -C source/libjack
  151. lv2-bundles-dep: $(MODULEDIR)/audio_decoder.a $(MODULEDIR)/water.a $(MODULEDIR)/zita-resampler.a
  152. @$(MAKE) -C source/native-plugins bundles
  153. lv2-bundles: lv2-bundles-dep
  154. @$(MAKE) -C source/plugin bundles
  155. plugin: backend bridges-plugin bridges-ui discovery
  156. @$(MAKE) -C source/plugin
  157. ifeq ($(WIN32),true)
  158. plugin-wine:
  159. @$(MAKE) -C source/plugin wine
  160. else
  161. plugin-wine: $(MODULEDIR)/dgl.wine.a
  162. @$(MAKE) -C source/plugin wine
  163. endif
  164. rest: libs
  165. @$(MAKE) -C source/rest
  166. theme: libs
  167. @$(MAKE) -C source/theme
  168. # ---------------------------------------------------------------------------------------------------------------------
  169. # hacks
  170. msys2fix:
  171. rm -rf source/includes/serd
  172. rm -rf source/includes/sord
  173. rm -rf source/includes/sratom
  174. rm -rf source/includes/lilv
  175. cp -r source/modules/lilv/serd-0.24.0/serd source/includes/serd
  176. cp -r source/modules/lilv/sord-0.16.0/sord source/includes/sord
  177. cp -r source/modules/lilv/sratom-0.6.0/sratom source/includes/sratom
  178. cp -r source/modules/lilv/lilv-0.24.0/lilv source/includes/lilv
  179. # ---------------------------------------------------------------------------------------------------------------------
  180. # Binaries (arm32)
  181. LIBS_ARM32 = $(MODULEDIR)/jackbridge.arm32.a
  182. LIBS_ARM32 += $(MODULEDIR)/lilv.arm32.a
  183. LIBS_ARM32 += $(MODULEDIR)/rtmempool.arm32.a
  184. LIBS_ARM32 += $(MODULEDIR)/water.arm32.a
  185. arm32: $(LIBS_ARM32)
  186. $(MAKE) -C source/bridges-plugin arm32
  187. $(MAKE) -C source/discovery arm32
  188. # ---------------------------------------------------------------------------------------------------------------------
  189. # Binaries (posix32)
  190. LIBS_POSIX32 = $(MODULEDIR)/jackbridge.posix32.a
  191. LIBS_POSIX32 += $(MODULEDIR)/lilv.posix32.a
  192. LIBS_POSIX32 += $(MODULEDIR)/rtmempool.posix32.a
  193. LIBS_POSIX32 += $(MODULEDIR)/water.posix32.a
  194. ifeq ($(USING_JUCE),true)
  195. LIBS_POSIX32 += $(MODULEDIR)/juce_audio_basics.posix32.a
  196. LIBS_POSIX32 += $(MODULEDIR)/juce_audio_processors.posix32.a
  197. LIBS_POSIX32 += $(MODULEDIR)/juce_data_structures.posix32.a
  198. LIBS_POSIX32 += $(MODULEDIR)/juce_core.posix32.a
  199. LIBS_POSIX32 += $(MODULEDIR)/juce_events.posix32.a
  200. LIBS_POSIX32 += $(MODULEDIR)/juce_graphics.posix32.a
  201. LIBS_POSIX32 += $(MODULEDIR)/juce_gui_basics.posix32.a
  202. ifeq ($(USING_JUCE_GUI_EXTRA),true)
  203. LIBS_POSIX32 += $(MODULEDIR)/juce_gui_extra.posix32.a
  204. endif
  205. endif
  206. posix32: $(LIBS_POSIX32)
  207. $(MAKE) -C source/bridges-plugin posix32
  208. $(MAKE) -C source/discovery posix32
  209. # ---------------------------------------------------------------------------------------------------------------------
  210. # Binaries (posix64)
  211. LIBS_POSIX64 = $(MODULEDIR)/jackbridge.posix64.a
  212. LIBS_POSIX64 += $(MODULEDIR)/lilv.posix64.a
  213. LIBS_POSIX64 += $(MODULEDIR)/rtmempool.posix64.a
  214. LIBS_POSIX64 += $(MODULEDIR)/water.posix64.a
  215. ifeq ($(USING_JUCE),true)
  216. LIBS_POSIX64 += $(MODULEDIR)/juce_audio_basics.posix64.a
  217. LIBS_POSIX64 += $(MODULEDIR)/juce_audio_processors.posix64.a
  218. LIBS_POSIX64 += $(MODULEDIR)/juce_data_structures.posix64.a
  219. LIBS_POSIX64 += $(MODULEDIR)/juce_core.posix64.a
  220. LIBS_POSIX64 += $(MODULEDIR)/juce_events.posix64.a
  221. LIBS_POSIX64 += $(MODULEDIR)/juce_graphics.posix64.a
  222. LIBS_POSIX64 += $(MODULEDIR)/juce_gui_basics.posix64.a
  223. ifeq ($(USING_JUCE_GUI_EXTRA),true)
  224. LIBS_POSIX64 += $(MODULEDIR)/juce_gui_extra.posix64.a
  225. endif
  226. endif
  227. posix64: $(LIBS_POSIX64)
  228. $(MAKE) -C source/bridges-plugin posix64
  229. $(MAKE) -C source/discovery posix64
  230. # ---------------------------------------------------------------------------------------------------------------------
  231. # Binaries (win32)
  232. LIBS_WIN32 += $(MODULEDIR)/lilv.win32.a
  233. LIBS_WIN32 += $(MODULEDIR)/rtmempool.win32.a
  234. LIBS_WIN32 += $(MODULEDIR)/water.win32.a
  235. ifeq ($(USING_JUCE),true)
  236. LIBS_WIN32 += $(MODULEDIR)/juce_audio_basics.win32.a
  237. LIBS_WIN32 += $(MODULEDIR)/juce_audio_processors.win32.a
  238. LIBS_WIN32 += $(MODULEDIR)/juce_data_structures.win32.a
  239. LIBS_WIN32 += $(MODULEDIR)/juce_core.win32.a
  240. LIBS_WIN32 += $(MODULEDIR)/juce_events.win32.a
  241. LIBS_WIN32 += $(MODULEDIR)/juce_graphics.win32.a
  242. LIBS_WIN32 += $(MODULEDIR)/juce_gui_basics.win32.a
  243. ifeq ($(USING_JUCE_GUI_EXTRA),true)
  244. LIBS_WIN32 += $(MODULEDIR)/juce_gui_extra.win32.a
  245. endif
  246. endif
  247. LIBS_WINE32 = $(LIBS_WIN32) $(MODULEDIR)/jackbridge.win32e.a
  248. LIBS_RWIN32 = $(LIBS_WIN32) $(MODULEDIR)/jackbridge.win32.a
  249. win32: $(LIBS_WINE32)
  250. $(MAKE) BUILDING_FOR_WINE=true -C source/bridges-plugin win32
  251. $(MAKE) BUILDING_FOR_WINE=true -C source/discovery win32
  252. win32r: $(LIBS_RWIN32)
  253. ifeq ($(CC),x86_64-w64-mingw32-gcc)
  254. $(MAKE) CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ -C source/bridges-plugin win32
  255. $(MAKE) CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ -C source/discovery win32
  256. else
  257. $(MAKE) -C source/bridges-plugin win32
  258. $(MAKE) -C source/discovery win32
  259. endif
  260. # ---------------------------------------------------------------------------------------------------------------------
  261. # Binaries (win64)
  262. LIBS_WIN64 += $(MODULEDIR)/lilv.win64.a
  263. LIBS_WIN64 += $(MODULEDIR)/rtmempool.win64.a
  264. LIBS_WIN64 += $(MODULEDIR)/water.win64.a
  265. ifeq ($(USING_JUCE),true)
  266. LIBS_WIN64 += $(MODULEDIR)/juce_audio_basics.win64.a
  267. LIBS_WIN64 += $(MODULEDIR)/juce_audio_processors.win64.a
  268. LIBS_WIN64 += $(MODULEDIR)/juce_data_structures.win64.a
  269. LIBS_WIN64 += $(MODULEDIR)/juce_core.win64.a
  270. LIBS_WIN64 += $(MODULEDIR)/juce_events.win64.a
  271. LIBS_WIN64 += $(MODULEDIR)/juce_graphics.win64.a
  272. LIBS_WIN64 += $(MODULEDIR)/juce_gui_basics.win64.a
  273. ifeq ($(USING_JUCE_GUI_EXTRA),true)
  274. LIBS_WIN64 += $(MODULEDIR)/juce_gui_extra.win64.a
  275. endif
  276. endif
  277. LIBS_WINE64 = $(LIBS_WIN64) $(MODULEDIR)/jackbridge.win64e.a
  278. LIBS_RWIN64 = $(LIBS_WIN64) $(MODULEDIR)/jackbridge.win64.a
  279. win64: $(LIBS_WINE64)
  280. $(MAKE) BUILDING_FOR_WINE=true -C source/bridges-plugin win64
  281. $(MAKE) BUILDING_FOR_WINE=true -C source/discovery win64
  282. win64r: $(LIBS_RWIN64)
  283. ifeq ($(CC),i686-w64-mingw32-gcc)
  284. $(MAKE) CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ -C source/bridges-plugin win64
  285. $(MAKE) CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ -C source/discovery win64
  286. else
  287. $(MAKE) -C source/bridges-plugin win64
  288. $(MAKE) -C source/discovery win64
  289. endif
  290. # ---------------------------------------------------------------------------------------------------------------------
  291. # Binaries (wine)
  292. wine32:
  293. $(MAKE) -C source/jackbridge wine32
  294. cp -f $(MODULEDIR)/jackbridge-wine32.dll.so $(CURDIR)/bin/jackbridge-wine32.dll
  295. wine64:
  296. $(MAKE) -C source/jackbridge wine64
  297. cp -f $(MODULEDIR)/jackbridge-wine64.dll.so $(CURDIR)/bin/jackbridge-wine64.dll
  298. # ---------------------------------------------------------------------------------------------------------------------
  299. clean:
  300. $(MAKE) clean -C source/backend
  301. $(MAKE) clean -C source/bridges-plugin
  302. $(MAKE) clean -C source/bridges-ui
  303. $(MAKE) clean -C source/discovery
  304. $(MAKE) clean -C source/frontend
  305. $(MAKE) clean -C source/interposer
  306. $(MAKE) clean -C source/libjack
  307. $(MAKE) clean -C source/modules
  308. $(MAKE) clean -C source/native-plugins
  309. $(MAKE) clean -C source/plugin
  310. $(MAKE) clean -C source/tests
  311. $(MAKE) clean -C source/theme
  312. rm -f *~ source/*~
  313. distclean: clean
  314. rm -f bin/*.exe bin/*.dll bin/*.dylib bin/*.so
  315. rm -rf build build-lv2
  316. cpp:
  317. $(MAKE) CPPMODE=true
  318. debug:
  319. $(MAKE) DEBUG=true
  320. doxygen:
  321. $(MAKE) doxygen -C source/backend
  322. tests:
  323. $(MAKE) -C source/tests
  324. stoat:
  325. stoat --recursive ./build/ --suppression ./data/stoat-supression.txt --whitelist ./data/stoat-whitelist.txt --graph-view ./data/stoat-callgraph.png
  326. # stoat --recursive ./build/ \
  327. # --suppression ./data/stoat-supression.txt \
  328. # --whitelist ./data/stoat-whitelist.txt \
  329. # --graph-view ./data/stoat-callgraph.png
  330. # ---------------------------------------------------------------------------------------------------------------------
  331. install_main:
  332. # Create directories
  333. install -d $(DESTDIR)$(BINDIR)
  334. install -d $(DESTDIR)$(DATADIR)/carla/resources
  335. ifeq ($(LINUX),true)
  336. install -d $(DESTDIR)$(LIBDIR)/carla/jack
  337. else
  338. install -d $(DESTDIR)$(LIBDIR)/carla
  339. endif
  340. install -d $(DESTDIR)$(LIBDIR)/pkgconfig
  341. install -d $(DESTDIR)$(INCLUDEDIR)/carla/includes
  342. ifeq ($(LINUX),true)
  343. ifeq ($(HAVE_JACK),true)
  344. ifeq ($(JACKBRIDGE_DIRECT),true)
  345. install -d $(DESTDIR)$(JACK_LIBDIR)
  346. endif
  347. endif
  348. endif
  349. ifeq ($(HAVE_PYQT),true)
  350. # Create directories (gui)
  351. install -d $(DESTDIR)$(LIBDIR)/carla/styles
  352. install -d $(DESTDIR)$(DATADIR)/applications
  353. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/16x16/apps
  354. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/32x32/apps
  355. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps
  356. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/128x128/apps
  357. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/256x256/apps
  358. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps
  359. install -d $(DESTDIR)$(DATADIR)/mime/packages
  360. install -d $(DESTDIR)$(DATADIR)/carla/resources/translations
  361. install -d $(DESTDIR)$(DATADIR)/carla/modgui
  362. install -d $(DESTDIR)$(DATADIR)/carla/patchcanvas
  363. install -d $(DESTDIR)$(DATADIR)/carla/widgets
  364. endif
  365. # -------------------------------------------------------------------------------------------------------------
  366. # Install script files (non-gui)
  367. install -m 755 \
  368. data/carla-single \
  369. $(DESTDIR)$(BINDIR)
  370. # Adjust PREFIX value in script files (non-gui)
  371. sed $(SED_ARGS) 's?X-PREFIX-X?$(PREFIX)?' \
  372. $(DESTDIR)$(BINDIR)/carla-single
  373. # Install backend libs
  374. install -m 644 \
  375. bin/libcarla_*.* \
  376. $(DESTDIR)$(LIBDIR)/carla
  377. # Install other binaries
  378. install -m 755 \
  379. bin/*bridge-* \
  380. bin/carla-discovery-* \
  381. $(DESTDIR)$(LIBDIR)/carla
  382. ifeq ($(LINUX),true)
  383. ifeq ($(HAVE_JACK),true)
  384. ifeq ($(JACKBRIDGE_DIRECT),true)
  385. # Install internal jack client
  386. ln -sf \
  387. $(LIBDIR)/carla/libcarla_standalone2.so \
  388. $(DESTDIR)$(JACK_LIBDIR)/carla.so
  389. endif
  390. endif
  391. ifneq ($(JACKBRIDGE_DIRECT),true)
  392. # Install custom libjack
  393. install -m 755 \
  394. bin/jack/libjack.so.0 \
  395. $(DESTDIR)$(LIBDIR)/carla/jack
  396. endif
  397. endif
  398. # Install pkg-config files
  399. install -m 644 \
  400. data/*.pc \
  401. $(DESTDIR)$(LIBDIR)/pkgconfig
  402. # Adjust PREFIX, LIBDIR, INCLUDEDIR and VERSION in pkg-config files
  403. sed $(SED_ARGS) 's?X-PREFIX-X?$(PREFIX)?' \
  404. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-host-plugin.pc \
  405. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-native-plugin.pc \
  406. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-standalone.pc \
  407. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-utils.pc
  408. sed $(SED_ARGS) 's?X-LIBDIR-X?$(LIBDIR)?' \
  409. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-host-plugin.pc \
  410. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-native-plugin.pc \
  411. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-standalone.pc \
  412. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-utils.pc
  413. sed $(SED_ARGS) 's?X-INCLUDEDIR-X?$(INCLUDEDIR)?' \
  414. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-host-plugin.pc \
  415. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-native-plugin.pc \
  416. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-standalone.pc \
  417. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-utils.pc
  418. sed $(SED_ARGS) 's?X-VERSION-X?$(VERSION)?' \
  419. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-host-plugin.pc \
  420. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-native-plugin.pc \
  421. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-standalone.pc \
  422. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-utils.pc
  423. # Install headers
  424. install -m 644 \
  425. source/backend/CarlaBackend.h \
  426. source/backend/CarlaHost.h \
  427. source/backend/CarlaUtils.h \
  428. source/backend/CarlaEngine.hpp \
  429. source/backend/CarlaPlugin.hpp \
  430. source/backend/CarlaPluginPtr.hpp \
  431. source/includes/CarlaNative.h \
  432. source/includes/CarlaNativePlugin.h \
  433. $(DESTDIR)$(INCLUDEDIR)/carla
  434. install -m 644 \
  435. source/includes/CarlaDefines.h \
  436. source/includes/CarlaMIDI.h \
  437. source/includes/CarlaNative.h \
  438. source/includes/CarlaNativePlugin.h \
  439. $(DESTDIR)$(INCLUDEDIR)/carla/includes
  440. # -------------------------------------------------------------------------------------------------------------
  441. ifeq ($(HAVE_PYQT),true)
  442. ifneq ($(CPPMODE),true)
  443. # Install script files (gui)
  444. install -m 755 \
  445. data/carla \
  446. data/carla-database \
  447. data/carla-jack-multi \
  448. data/carla-jack-single \
  449. data/carla-jack-patchbayplugin \
  450. data/carla-osc-gui \
  451. data/carla-patchbay \
  452. data/carla-rack \
  453. data/carla-settings \
  454. $(DESTDIR)$(BINDIR)
  455. # Adjust PREFIX value in script files (gui)
  456. sed $(SED_ARGS) 's?X-PREFIX-X?$(PREFIX)?' \
  457. $(DESTDIR)$(BINDIR)/carla \
  458. $(DESTDIR)$(BINDIR)/carla-database \
  459. $(DESTDIR)$(BINDIR)/carla-jack-multi \
  460. $(DESTDIR)$(BINDIR)/carla-jack-single \
  461. $(DESTDIR)$(BINDIR)/carla-jack-patchbayplugin \
  462. $(DESTDIR)$(BINDIR)/carla-osc-gui \
  463. $(DESTDIR)$(BINDIR)/carla-patchbay \
  464. $(DESTDIR)$(BINDIR)/carla-rack \
  465. $(DESTDIR)$(BINDIR)/carla-settings
  466. ifeq ($(HAVE_LIBLO),true)
  467. install -m 755 \
  468. data/carla-control \
  469. $(DESTDIR)$(BINDIR)
  470. sed $(SED_ARGS) 's?X-PREFIX-X?$(PREFIX)?' \
  471. $(DESTDIR)$(BINDIR)/carla-control
  472. endif
  473. # Install the real modgui bridge
  474. install -m 755 \
  475. data/carla-bridge-lv2-modgui \
  476. $(DESTDIR)$(LIBDIR)/carla
  477. sed $(SED_ARGS) 's?X-PREFIX-X?$(PREFIX)?' \
  478. $(DESTDIR)$(LIBDIR)/carla/carla-bridge-lv2-modgui
  479. # Install frontend
  480. install -m 644 \
  481. source/frontend/carla \
  482. source/frontend/carla-control \
  483. source/frontend/carla-jack-multi \
  484. source/frontend/carla-jack-single \
  485. source/frontend/carla-patchbay \
  486. source/frontend/carla-rack \
  487. source/frontend/*.py \
  488. $(DESTDIR)$(DATADIR)/carla/
  489. install -m 644 \
  490. source/frontend/modgui/*.py \
  491. $(DESTDIR)$(DATADIR)/carla/modgui/
  492. install -m 644 \
  493. source/frontend/patchcanvas/*.py \
  494. $(DESTDIR)$(DATADIR)/carla/patchcanvas/
  495. install -m 644 \
  496. source/frontend/widgets/*.py \
  497. $(DESTDIR)$(DATADIR)/carla/widgets/
  498. # Adjust LIBDIR and DATADIR value in python code
  499. sed $(SED_ARGS) 's?X_LIBDIR_X = None?X_LIBDIR_X = "$(LIBDIR)"?' \
  500. $(DESTDIR)$(DATADIR)/carla/carla_shared.py
  501. sed $(SED_ARGS) 's?X_DATADIR_X = None?X_DATADIR_X = "$(DATADIR)"?' \
  502. $(DESTDIR)$(DATADIR)/carla/carla_shared.py
  503. # Install resources (gui)
  504. install -m 755 \
  505. bin/resources/carla-plugin \
  506. bin/resources/carla-plugin-patchbay \
  507. bin/resources/*-ui \
  508. $(DESTDIR)$(DATADIR)/carla/resources
  509. endif # CPPMODE
  510. ifeq ($(HAVE_THEME),true)
  511. # Install theme
  512. install -m 644 \
  513. bin/styles/* \
  514. $(DESTDIR)$(LIBDIR)/carla/styles
  515. endif
  516. # Install desktop files
  517. install -m 644 data/desktop/carla.desktop $(DESTDIR)$(DATADIR)/applications
  518. install -m 644 data/desktop/carla-rack.desktop $(DESTDIR)$(DATADIR)/applications
  519. install -m 644 data/desktop/carla-patchbay.desktop $(DESTDIR)$(DATADIR)/applications
  520. install -m 644 data/desktop/carla-jack-single.desktop $(DESTDIR)$(DATADIR)/applications
  521. install -m 644 data/desktop/carla-jack-multi.desktop $(DESTDIR)$(DATADIR)/applications
  522. ifeq ($(HAVE_LIBLO),true)
  523. install -m 644 data/desktop/carla-control.desktop $(DESTDIR)$(DATADIR)/applications
  524. endif
  525. # Install mime package
  526. install -m 644 data/carla.xml $(DESTDIR)$(DATADIR)/mime/packages
  527. # Install icons, 16x16
  528. install -m 644 resources/16x16/carla.png $(DESTDIR)$(DATADIR)/icons/hicolor/16x16/apps
  529. install -m 644 resources/16x16/carla-control.png $(DESTDIR)$(DATADIR)/icons/hicolor/16x16/apps
  530. # Install icons, 32x32
  531. install -m 644 resources/32x32/carla.png $(DESTDIR)$(DATADIR)/icons/hicolor/32x32/apps
  532. install -m 644 resources/32x32/carla-control.png $(DESTDIR)$(DATADIR)/icons/hicolor/32x32/apps
  533. # Install icons, 48x48
  534. install -m 644 resources/48x48/carla.png $(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps
  535. install -m 644 resources/48x48/carla-control.png $(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps
  536. # Install icons, 128x128
  537. install -m 644 resources/128x128/carla.png $(DESTDIR)$(DATADIR)/icons/hicolor/128x128/apps
  538. install -m 644 resources/128x128/carla-control.png $(DESTDIR)$(DATADIR)/icons/hicolor/128x128/apps
  539. # Install icons, 256x256
  540. install -m 644 resources/256x256/carla.png $(DESTDIR)$(DATADIR)/icons/hicolor/256x256/apps
  541. install -m 644 resources/256x256/carla-control.png $(DESTDIR)$(DATADIR)/icons/hicolor/256x256/apps
  542. # Install icons, scalable
  543. install -m 644 resources/scalable/carla.svg $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps
  544. install -m 644 resources/scalable/carla-control.svg $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps
  545. # Install resources (re-use python files)
  546. $(LINK) ../modgui $(DESTDIR)$(DATADIR)/carla/resources
  547. $(LINK) ../patchcanvas $(DESTDIR)$(DATADIR)/carla/resources
  548. $(LINK) ../widgets $(DESTDIR)$(DATADIR)/carla/resources
  549. $(LINK) ../carla_app.py $(DESTDIR)$(DATADIR)/carla/resources
  550. $(LINK) ../carla_backend.py $(DESTDIR)$(DATADIR)/carla/resources
  551. $(LINK) ../carla_backend_qt.py $(DESTDIR)$(DATADIR)/carla/resources
  552. $(LINK) ../carla_database.py $(DESTDIR)$(DATADIR)/carla/resources
  553. $(LINK) ../carla_host.py $(DESTDIR)$(DATADIR)/carla/resources
  554. $(LINK) ../carla_host_control.py $(DESTDIR)$(DATADIR)/carla/resources
  555. $(LINK) ../carla_settings.py $(DESTDIR)$(DATADIR)/carla/resources
  556. $(LINK) ../carla_skin.py $(DESTDIR)$(DATADIR)/carla/resources
  557. $(LINK) ../carla_shared.py $(DESTDIR)$(DATADIR)/carla/resources
  558. $(LINK) ../carla_utils.py $(DESTDIR)$(DATADIR)/carla/resources
  559. $(LINK) ../carla_widgets.py $(DESTDIR)$(DATADIR)/carla/resources
  560. $(LINK) ../externalui.py $(DESTDIR)$(DATADIR)/carla/resources
  561. $(LINK) ../resources_rc.py $(DESTDIR)$(DATADIR)/carla/resources
  562. $(LINK) ../ui_carla_about.py $(DESTDIR)$(DATADIR)/carla/resources
  563. $(LINK) ../ui_carla_about_juce.py $(DESTDIR)$(DATADIR)/carla/resources
  564. $(LINK) ../ui_carla_add_jack.py $(DESTDIR)$(DATADIR)/carla/resources
  565. $(LINK) ../ui_carla_database.py $(DESTDIR)$(DATADIR)/carla/resources
  566. $(LINK) ../ui_carla_edit.py $(DESTDIR)$(DATADIR)/carla/resources
  567. $(LINK) ../ui_carla_host.py $(DESTDIR)$(DATADIR)/carla/resources
  568. $(LINK) ../ui_carla_parameter.py $(DESTDIR)$(DATADIR)/carla/resources
  569. $(LINK) ../ui_carla_plugin_calf.py $(DESTDIR)$(DATADIR)/carla/resources
  570. $(LINK) ../ui_carla_plugin_classic.py $(DESTDIR)$(DATADIR)/carla/resources
  571. $(LINK) ../ui_carla_plugin_compact.py $(DESTDIR)$(DATADIR)/carla/resources
  572. $(LINK) ../ui_carla_plugin_default.py $(DESTDIR)$(DATADIR)/carla/resources
  573. $(LINK) ../ui_carla_plugin_presets.py $(DESTDIR)$(DATADIR)/carla/resources
  574. $(LINK) ../ui_carla_refresh.py $(DESTDIR)$(DATADIR)/carla/resources
  575. $(LINK) ../ui_carla_settings.py $(DESTDIR)$(DATADIR)/carla/resources
  576. $(LINK) ../ui_carla_settings_driver.py $(DESTDIR)$(DATADIR)/carla/resources
  577. $(LINK) ../ui_inputdialog_value.py $(DESTDIR)$(DATADIR)/carla/resources
  578. $(LINK) ../ui_midipattern.py $(DESTDIR)$(DATADIR)/carla/resources
  579. $(LINK) ../ui_xycontroller.py $(DESTDIR)$(DATADIR)/carla/resources
  580. # Install translations
  581. $(foreach l,$(I18N_LANGUAGES),install -m 644 \
  582. source/frontend/translations/carla_$(l).qm \
  583. $(DESTDIR)$(DATADIR)/carla/resources/translations/;)
  584. endif # HAVE_PYQT
  585. # -------------------------------------------------------------------------------------------------------------
  586. ifeq ($(CAN_GENERATE_LV2_TTL),true)
  587. # Install lv2 plugin
  588. install -d $(DESTDIR)$(LIBDIR)/lv2/carla.lv2
  589. install -m 644 \
  590. bin/carla.lv2/carla.* \
  591. bin/carla.lv2/*.ttl \
  592. $(DESTDIR)$(LIBDIR)/lv2/carla.lv2
  593. # Link binaries for lv2 plugin
  594. @for i in `find $(DESTDIR)$(LIBDIR)/carla/ -maxdepth 1 -type f -exec basename {} ';'`; do \
  595. $(LINK) ../../carla/$$i $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/$$i; \
  596. done
  597. rm -f $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/libcarla_standalone2.*
  598. ifeq ($(LINUX),true)
  599. # Link jack app bridge
  600. rm -rf $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/jack
  601. $(LINK) ../../carla/jack $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/jack
  602. endif
  603. endif # CAN_GENERATE_LV2_TTL
  604. ifeq ($(HAVE_PYQT),true)
  605. # Link resources for lv2 plugin
  606. rm -rf $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/resources
  607. $(LINK) ../../../share/carla/resources $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/resources
  608. # Link styles for lv2 plugin
  609. rm -rf $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/styles
  610. $(LINK) ../../carla/styles $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/styles
  611. endif
  612. # -------------------------------------------------------------------------------------------------------------
  613. ifneq ($(HAIKU),true)
  614. ifeq ($(HAVE_PYQT),true)
  615. # Install vst plugin
  616. install -d $(DESTDIR)$(LIBDIR)/vst/carla.vst
  617. install -m 644 \
  618. bin/CarlaRack*.* \
  619. bin/CarlaPatchbay*.* \
  620. $(DESTDIR)$(LIBDIR)/vst/carla.vst
  621. # Link binaries for vst plugin
  622. @for i in `find $(DESTDIR)$(LIBDIR)/carla/ -maxdepth 1 -type f -exec basename {} ';'`; do \
  623. $(LINK) ../../carla/$$i $(DESTDIR)$(LIBDIR)/vst/carla.vst/$$i; \
  624. done
  625. rm -f $(DESTDIR)$(LIBDIR)/vst/carla.vst/libcarla_standalone2.*
  626. # Link jack app bridge
  627. rm -rf $(DESTDIR)$(LIBDIR)/vst/carla.vst/jack
  628. $(LINK) ../../carla/jack $(DESTDIR)$(LIBDIR)/vst/carla.vst/jack
  629. # Link resources for vst plugin
  630. rm -rf $(DESTDIR)$(LIBDIR)/vst/carla.vst/resources
  631. $(LINK) ../../../share/carla/resources $(DESTDIR)$(LIBDIR)/vst/carla.vst/resources
  632. # Link styles for vst plugin
  633. rm -rf $(DESTDIR)$(LIBDIR)/vst/carla.vst/styles
  634. $(LINK) ../../carla/styles $(DESTDIR)$(LIBDIR)/vst/carla.vst/styles
  635. endif
  636. endif
  637. # -------------------------------------------------------------------------------------------------------------
  638. ifneq ($(HAVE_PYQT),true)
  639. # Remove gui files for non-gui build
  640. rm $(DESTDIR)$(LIBDIR)/carla/carla-bridge-lv2-modgui
  641. ifeq ($(CAN_GENERATE_LV2_TTL),true)
  642. rm $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/carla-bridge-lv2-modgui
  643. endif
  644. endif
  645. # ---------------------------------------------------------------------------------------------------------------------
  646. ifneq ($(EXTERNAL_PLUGINS),true)
  647. install_external_plugins:
  648. endif
  649. install: install_main install_external_plugins
  650. # ---------------------------------------------------------------------------------------------------------------------
  651. uninstall:
  652. rm -f $(DESTDIR)$(BINDIR)/carla*
  653. rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/carla-host-plugin.pc
  654. rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/carla-native-plugin.pc
  655. rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/carla-standalone.pc
  656. rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/carla-utils.pc
  657. rm -f $(DESTDIR)$(DATADIR)/applications/carla.desktop
  658. rm -f $(DESTDIR)$(DATADIR)/applications/carla-control.desktop
  659. rm -f $(DESTDIR)$(DATADIR)/icons/hicolor/*/apps/carla.png
  660. rm -f $(DESTDIR)$(DATADIR)/icons/hicolor/*/apps/carla-control.png
  661. rm -f $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps/carla.svg
  662. rm -f $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps/carla-control.svg
  663. rm -f $(DESTDIR)$(DATADIR)/mime/packages/carla.xml
  664. rm -rf $(DESTDIR)$(LIBDIR)/carla
  665. rm -rf $(DESTDIR)$(LIBDIR)/lv2/carla.lv2
  666. rm -rf $(DESTDIR)$(LIBDIR)/lv2/carla-native.lv2
  667. rm -rf $(DESTDIR)$(LIBDIR)/vst/carla.vst
  668. rm -rf $(DESTDIR)$(DATADIR)/carla
  669. rm -rf $(DESTDIR)$(INCLUDEDIR)/carla
  670. # ----------------------------------------------------------------------------------------------------------------------------
  671. ifeq ($(MACOS),true)
  672. ifneq ($(MACOS_OLD),true)
  673. HAVE_DIST = true
  674. endif
  675. endif
  676. ifeq ($(WIN32),true)
  677. HAVE_DIST = true
  678. endif
  679. ifeq ($(HAVE_DIST),true)
  680. include Makefile.dist.mk
  681. else
  682. dist:
  683. endif
  684. include Makefile.print.mk
  685. # ---------------------------------------------------------------------------------------------------------------------
  686. .FORCE:
  687. .PHONY: .FORCE
  688. # ---------------------------------------------------------------------------------------------------------------------