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 30KB

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