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

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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899
  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 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. ifeq ($(LINUX),true)
  363. ifeq ($(HAVE_JACK),true)
  364. ifeq ($(JACKBRIDGE_DIRECT),true)
  365. install -d $(DESTDIR)$(JACK_LIBDIR)
  366. endif
  367. endif
  368. endif
  369. ifeq ($(HAVE_FRONTEND),true)
  370. # Create directories (frontend)
  371. install -d $(DESTDIR)$(LIBDIR)/carla/styles
  372. install -d $(DESTDIR)$(PREFIX)/share/appdata
  373. install -d $(DESTDIR)$(DATADIR)/applications
  374. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/16x16/apps
  375. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/32x32/apps
  376. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps
  377. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/128x128/apps
  378. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/256x256/apps
  379. install -d $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps
  380. install -d $(DESTDIR)$(DATADIR)/mime/packages
  381. install -d $(DESTDIR)$(DATADIR)/carla/resources/translations
  382. install -d $(DESTDIR)$(DATADIR)/carla/common
  383. install -d $(DESTDIR)$(DATADIR)/carla/dialogs
  384. install -d $(DESTDIR)$(DATADIR)/carla/modgui
  385. install -d $(DESTDIR)$(DATADIR)/carla/patchcanvas
  386. install -d $(DESTDIR)$(DATADIR)/carla/pluginlist
  387. install -d $(DESTDIR)$(DATADIR)/carla/utils
  388. install -d $(DESTDIR)$(DATADIR)/carla/widgets
  389. endif
  390. # -------------------------------------------------------------------------------------------------------------
  391. # Install script files (non-gui)
  392. install -m 755 \
  393. data/carla-single \
  394. $(DESTDIR)$(BINDIR)
  395. # Adjust PREFIX value in script files (non-gui)
  396. sed $(SED_ARGS) 's?X-PREFIX-X?$(PREFIX)?' \
  397. $(DESTDIR)$(BINDIR)/carla-single
  398. # Install backend libs
  399. install -m 644 \
  400. bin/libcarla_*.* \
  401. $(DESTDIR)$(LIBDIR)/carla
  402. # Install other binaries
  403. install -m 755 \
  404. bin/*bridge-* \
  405. bin/carla-discovery-* \
  406. $(DESTDIR)$(LIBDIR)/carla
  407. ifeq ($(LINUX),true)
  408. ifeq ($(HAVE_JACK),true)
  409. ifeq ($(JACKBRIDGE_DIRECT),true)
  410. # Install internal jack client
  411. ln -sf \
  412. $(LIBDIR)/carla/libcarla_standalone2.so \
  413. $(DESTDIR)$(JACK_LIBDIR)/carla.so
  414. endif
  415. endif
  416. ifneq ($(JACKBRIDGE_DIRECT),true)
  417. # Install custom libjack
  418. install -m 755 \
  419. bin/jack/libjack.so.0 \
  420. $(DESTDIR)$(LIBDIR)/carla/jack
  421. endif
  422. endif
  423. # Install pkg-config files
  424. install -m 644 \
  425. data/pkgconfig/*.pc \
  426. $(DESTDIR)$(LIBDIR)/pkgconfig
  427. # Adjust PREFIX, LIBDIR, INCLUDEDIR and VERSION in pkg-config files
  428. sed $(SED_ARGS) 's?X-PREFIX-X?$(PREFIX)?' \
  429. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-host-plugin.pc \
  430. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-native-plugin.pc \
  431. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-standalone.pc \
  432. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-utils.pc
  433. sed $(SED_ARGS) 's?X-LIBDIR-X?$(LIBDIR)?' \
  434. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-host-plugin.pc \
  435. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-native-plugin.pc \
  436. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-standalone.pc \
  437. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-utils.pc
  438. sed $(SED_ARGS) 's?X-INCLUDEDIR-X?$(INCLUDEDIR)?' \
  439. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-host-plugin.pc \
  440. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-native-plugin.pc \
  441. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-standalone.pc \
  442. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-utils.pc
  443. sed $(SED_ARGS) 's?X-VERSION-X?$(VERSION)?' \
  444. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-host-plugin.pc \
  445. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-native-plugin.pc \
  446. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-standalone.pc \
  447. $(DESTDIR)$(LIBDIR)/pkgconfig/carla-utils.pc
  448. # Install headers
  449. install -m 644 \
  450. source/backend/CarlaBackend.h \
  451. source/backend/CarlaHost.h \
  452. source/backend/CarlaUtils.h \
  453. source/backend/CarlaEngine.hpp \
  454. source/backend/CarlaPlugin.hpp \
  455. source/backend/CarlaPluginPtr.hpp \
  456. source/includes/CarlaNative.h \
  457. source/includes/CarlaNativePlugin.h \
  458. $(DESTDIR)$(INCLUDEDIR)/carla
  459. install -m 644 \
  460. source/includes/CarlaDefines.h \
  461. source/includes/CarlaMIDI.h \
  462. source/includes/CarlaNative.h \
  463. source/includes/CarlaNativePlugin.h \
  464. $(DESTDIR)$(INCLUDEDIR)/carla/includes
  465. # -------------------------------------------------------------------------------------------------------------
  466. ifeq ($(HAVE_FRONTEND),true)
  467. ifneq ($(CPPMODE),true)
  468. # Install script files (gui)
  469. install -m 755 \
  470. data/carla \
  471. data/carla-database \
  472. data/carla-jack-multi \
  473. data/carla-jack-single \
  474. data/carla-jack-patchbayplugin \
  475. data/carla-osc-gui \
  476. data/carla-patchbay \
  477. data/carla-rack \
  478. data/carla-settings \
  479. $(DESTDIR)$(BINDIR)
  480. # Adjust PREFIX value in script files (gui)
  481. sed $(SED_ARGS) 's?X-PREFIX-X?$(PREFIX)?' \
  482. $(DESTDIR)$(BINDIR)/carla \
  483. $(DESTDIR)$(BINDIR)/carla-database \
  484. $(DESTDIR)$(BINDIR)/carla-jack-multi \
  485. $(DESTDIR)$(BINDIR)/carla-jack-single \
  486. $(DESTDIR)$(BINDIR)/carla-jack-patchbayplugin \
  487. $(DESTDIR)$(BINDIR)/carla-osc-gui \
  488. $(DESTDIR)$(BINDIR)/carla-patchbay \
  489. $(DESTDIR)$(BINDIR)/carla-rack \
  490. $(DESTDIR)$(BINDIR)/carla-settings
  491. ifeq ($(HAVE_LIBLO),true)
  492. install -m 755 \
  493. data/carla-control \
  494. $(DESTDIR)$(BINDIR)
  495. sed $(SED_ARGS) 's?X-PREFIX-X?$(PREFIX)?' \
  496. $(DESTDIR)$(BINDIR)/carla-control
  497. endif
  498. # Install the real modgui bridge
  499. install -m 755 \
  500. data/carla-bridge-lv2-modgui \
  501. $(DESTDIR)$(LIBDIR)/carla
  502. sed $(SED_ARGS) 's?X-PREFIX-X?$(PREFIX)?' \
  503. $(DESTDIR)$(LIBDIR)/carla/carla-bridge-lv2-modgui
  504. # Install frontend
  505. install -m 644 \
  506. source/frontend/carla \
  507. source/frontend/carla-control \
  508. source/frontend/carla-jack-multi \
  509. source/frontend/carla-jack-single \
  510. source/frontend/carla-patchbay \
  511. source/frontend/carla-rack \
  512. source/frontend/*.py \
  513. $(DESTDIR)$(DATADIR)/carla/
  514. install -m 644 \
  515. source/frontend/common/*.py \
  516. $(DESTDIR)$(DATADIR)/carla/common/
  517. install -m 644 \
  518. source/frontend/dialogs/*.py \
  519. $(DESTDIR)$(DATADIR)/carla/dialogs/
  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/pluginlist/*.py \
  528. $(DESTDIR)$(DATADIR)/carla/pluginlist/
  529. install -m 644 \
  530. source/frontend/utils/*.py \
  531. $(DESTDIR)$(DATADIR)/carla/utils/
  532. install -m 644 \
  533. source/frontend/widgets/*.py \
  534. $(DESTDIR)$(DATADIR)/carla/widgets/
  535. # Adjust LIBDIR and DATADIR value in python code
  536. sed $(SED_ARGS) 's?X_LIBDIR_X = None?X_LIBDIR_X = "$(LIBDIR)"?' \
  537. $(DESTDIR)$(DATADIR)/carla/carla_shared.py
  538. sed $(SED_ARGS) 's?X_DATADIR_X = None?X_DATADIR_X = "$(DATADIR)"?' \
  539. $(DESTDIR)$(DATADIR)/carla/carla_shared.py
  540. # Install resources (gui)
  541. install -m 755 \
  542. bin/resources/carla-plugin \
  543. bin/resources/carla-plugin-patchbay \
  544. bin/resources/*-ui \
  545. $(DESTDIR)$(DATADIR)/carla/resources
  546. endif # CPPMODE
  547. ifeq ($(HAVE_THEME),true)
  548. # Install theme
  549. install -m 644 \
  550. bin/styles/* \
  551. $(DESTDIR)$(LIBDIR)/carla/styles
  552. endif
  553. # Install desktop files
  554. install -m 644 data/desktop/carla.desktop $(DESTDIR)$(DATADIR)/applications
  555. install -m 644 data/desktop/carla-rack.desktop $(DESTDIR)$(DATADIR)/applications
  556. install -m 644 data/desktop/carla-patchbay.desktop $(DESTDIR)$(DATADIR)/applications
  557. install -m 644 data/desktop/carla-jack-single.desktop $(DESTDIR)$(DATADIR)/applications
  558. install -m 644 data/desktop/carla-jack-multi.desktop $(DESTDIR)$(DATADIR)/applications
  559. ifeq ($(HAVE_LIBLO),true)
  560. install -m 644 data/desktop/carla-control.desktop $(DESTDIR)$(DATADIR)/applications
  561. endif
  562. # Install app data
  563. sed -e 's?X-VERSION-X?$(VERSION)?' \
  564. data/appdata.xml.in > $(DESTDIR)$(PREFIX)/share/appdata/studio.kx.carla.appdata.xml
  565. # Install mime package
  566. install -m 644 data/carla.xml $(DESTDIR)$(DATADIR)/mime/packages
  567. # Install icons, 16x16
  568. install -m 644 resources/16x16/carla.png $(DESTDIR)$(DATADIR)/icons/hicolor/16x16/apps
  569. install -m 644 resources/16x16/carla-control.png $(DESTDIR)$(DATADIR)/icons/hicolor/16x16/apps
  570. # Install icons, 32x32
  571. install -m 644 resources/32x32/carla.png $(DESTDIR)$(DATADIR)/icons/hicolor/32x32/apps
  572. install -m 644 resources/32x32/carla-control.png $(DESTDIR)$(DATADIR)/icons/hicolor/32x32/apps
  573. # Install icons, 48x48
  574. install -m 644 resources/48x48/carla.png $(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps
  575. install -m 644 resources/48x48/carla-control.png $(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps
  576. # Install icons, 128x128
  577. install -m 644 resources/128x128/carla.png $(DESTDIR)$(DATADIR)/icons/hicolor/128x128/apps
  578. install -m 644 resources/128x128/carla-control.png $(DESTDIR)$(DATADIR)/icons/hicolor/128x128/apps
  579. # Install icons, 256x256
  580. install -m 644 resources/256x256/carla.png $(DESTDIR)$(DATADIR)/icons/hicolor/256x256/apps
  581. install -m 644 resources/256x256/carla-control.png $(DESTDIR)$(DATADIR)/icons/hicolor/256x256/apps
  582. # Install icons, scalable
  583. install -m 644 resources/scalable/carla.svg $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps
  584. install -m 644 resources/scalable/carla-control.svg $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps
  585. # Install resources (re-use python files)
  586. $(LINK) ../common $(DESTDIR)$(DATADIR)/carla/resources
  587. $(LINK) ../dialogs $(DESTDIR)$(DATADIR)/carla/resources
  588. $(LINK) ../modgui $(DESTDIR)$(DATADIR)/carla/resources
  589. $(LINK) ../patchcanvas $(DESTDIR)$(DATADIR)/carla/resources
  590. $(LINK) ../pluginlist $(DESTDIR)$(DATADIR)/carla/resources
  591. $(LINK) ../utils $(DESTDIR)$(DATADIR)/carla/resources
  592. $(LINK) ../widgets $(DESTDIR)$(DATADIR)/carla/resources
  593. $(LINK) ../carla_app.py $(DESTDIR)$(DATADIR)/carla/resources
  594. $(LINK) ../carla_backend.py $(DESTDIR)$(DATADIR)/carla/resources
  595. $(LINK) ../carla_backend_qt.py $(DESTDIR)$(DATADIR)/carla/resources
  596. $(LINK) ../carla_frontend.py $(DESTDIR)$(DATADIR)/carla/resources
  597. $(LINK) ../carla_host.py $(DESTDIR)$(DATADIR)/carla/resources
  598. $(LINK) ../carla_host_control.py $(DESTDIR)$(DATADIR)/carla/resources
  599. $(LINK) ../carla_settings.py $(DESTDIR)$(DATADIR)/carla/resources
  600. $(LINK) ../carla_skin.py $(DESTDIR)$(DATADIR)/carla/resources
  601. $(LINK) ../carla_shared.py $(DESTDIR)$(DATADIR)/carla/resources
  602. $(LINK) ../carla_utils.py $(DESTDIR)$(DATADIR)/carla/resources
  603. $(LINK) ../carla_widgets.py $(DESTDIR)$(DATADIR)/carla/resources
  604. $(LINK) ../externalui.py $(DESTDIR)$(DATADIR)/carla/resources
  605. $(LINK) ../resources_rc.py $(DESTDIR)$(DATADIR)/carla/resources
  606. $(LINK) ../ui_carla_about.py $(DESTDIR)$(DATADIR)/carla/resources
  607. $(LINK) ../ui_carla_edit.py $(DESTDIR)$(DATADIR)/carla/resources
  608. $(LINK) ../ui_carla_host.py $(DESTDIR)$(DATADIR)/carla/resources
  609. $(LINK) ../ui_carla_parameter.py $(DESTDIR)$(DATADIR)/carla/resources
  610. $(LINK) ../ui_carla_plugin_calf.py $(DESTDIR)$(DATADIR)/carla/resources
  611. $(LINK) ../ui_carla_plugin_classic.py $(DESTDIR)$(DATADIR)/carla/resources
  612. $(LINK) ../ui_carla_plugin_compact.py $(DESTDIR)$(DATADIR)/carla/resources
  613. $(LINK) ../ui_carla_plugin_default.py $(DESTDIR)$(DATADIR)/carla/resources
  614. $(LINK) ../ui_carla_plugin_presets.py $(DESTDIR)$(DATADIR)/carla/resources
  615. $(LINK) ../ui_carla_settings.py $(DESTDIR)$(DATADIR)/carla/resources
  616. $(LINK) ../ui_carla_settings_driver.py $(DESTDIR)$(DATADIR)/carla/resources
  617. $(LINK) ../ui_inputdialog_value.py $(DESTDIR)$(DATADIR)/carla/resources
  618. $(LINK) ../ui_midipattern.py $(DESTDIR)$(DATADIR)/carla/resources
  619. $(LINK) ../ui_xycontroller.py $(DESTDIR)$(DATADIR)/carla/resources
  620. # Install translations
  621. $(foreach l,$(I18N_LANGUAGES),install -m 644 \
  622. source/frontend/translations/carla_$(l).qm \
  623. $(DESTDIR)$(DATADIR)/carla/resources/translations/;)
  624. endif # HAVE_FRONTEND
  625. # -------------------------------------------------------------------------------------------------------------
  626. ifeq ($(CAN_GENERATE_LV2_TTL),true)
  627. # Install lv2 plugin
  628. install -d $(DESTDIR)$(LIBDIR)/lv2/carla.lv2
  629. install -m 644 \
  630. bin/carla.lv2/carla.* \
  631. bin/carla.lv2/*.ttl \
  632. $(DESTDIR)$(LIBDIR)/lv2/carla.lv2
  633. # Link binaries for lv2 plugin
  634. @for i in `find $(DESTDIR)$(LIBDIR)/carla/ -maxdepth 1 -type f -exec basename {} ';'`; do \
  635. $(LINK) ../../carla/$$i $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/$$i; \
  636. done
  637. rm -f $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/libcarla_standalone2.*
  638. ifeq ($(LINUX),true)
  639. # Link jack app bridge
  640. rm -rf $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/jack
  641. $(LINK) ../../carla/jack $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/jack
  642. endif
  643. endif # CAN_GENERATE_LV2_TTL
  644. ifeq ($(HAVE_FRONTEND),true)
  645. # Link resources for lv2 plugin
  646. rm -rf $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/resources
  647. $(LINK) ../../../share/carla/resources $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/resources
  648. # Link styles for lv2 plugin
  649. rm -rf $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/styles
  650. $(LINK) ../../carla/styles $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/styles
  651. endif
  652. # -------------------------------------------------------------------------------------------------------------
  653. ifneq ($(HAIKU),true)
  654. ifeq ($(HAVE_FRONTEND),true)
  655. # Install vst plugin
  656. install -d $(DESTDIR)$(LIBDIR)/vst/carla.vst
  657. install -m 644 \
  658. bin/CarlaRack*.* \
  659. bin/CarlaPatchbay*.* \
  660. $(DESTDIR)$(LIBDIR)/vst/carla.vst
  661. # Link binaries for vst plugin
  662. @for i in `find $(DESTDIR)$(LIBDIR)/carla/ -maxdepth 1 -type f -exec basename {} ';'`; do \
  663. $(LINK) ../../carla/$$i $(DESTDIR)$(LIBDIR)/vst/carla.vst/$$i; \
  664. done
  665. rm -f $(DESTDIR)$(LIBDIR)/vst/carla.vst/libcarla_standalone2.*
  666. # Link jack app bridge
  667. rm -rf $(DESTDIR)$(LIBDIR)/vst/carla.vst/jack
  668. $(LINK) ../../carla/jack $(DESTDIR)$(LIBDIR)/vst/carla.vst/jack
  669. # Link resources for vst plugin
  670. rm -rf $(DESTDIR)$(LIBDIR)/vst/carla.vst/resources
  671. $(LINK) ../../../share/carla/resources $(DESTDIR)$(LIBDIR)/vst/carla.vst/resources
  672. # Link styles for vst plugin
  673. rm -rf $(DESTDIR)$(LIBDIR)/vst/carla.vst/styles
  674. $(LINK) ../../carla/styles $(DESTDIR)$(LIBDIR)/vst/carla.vst/styles
  675. endif
  676. endif
  677. # -------------------------------------------------------------------------------------------------------------
  678. ifneq ($(HAVE_FRONTEND),true)
  679. # Remove gui files for non-gui build
  680. rm $(DESTDIR)$(LIBDIR)/carla/carla-bridge-lv2-modgui
  681. ifeq ($(CAN_GENERATE_LV2_TTL),true)
  682. rm $(DESTDIR)$(LIBDIR)/lv2/carla.lv2/carla-bridge-lv2-modgui
  683. endif
  684. endif
  685. # ---------------------------------------------------------------------------------------------------------------------
  686. ifneq ($(EXTERNAL_PLUGINS),true)
  687. install_external_plugins:
  688. endif
  689. install: install_main install_external_plugins
  690. # ---------------------------------------------------------------------------------------------------------------------
  691. uninstall:
  692. rm -f $(DESTDIR)$(BINDIR)/carla*
  693. rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/carla-host-plugin.pc
  694. rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/carla-native-plugin.pc
  695. rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/carla-standalone.pc
  696. rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/carla-utils.pc
  697. rm -f $(DESTDIR)$(DATADIR)/applications/carla.desktop
  698. rm -f $(DESTDIR)$(DATADIR)/applications/carla-control.desktop
  699. rm -f $(DESTDIR)$(DATADIR)/icons/hicolor/*/apps/carla.png
  700. rm -f $(DESTDIR)$(DATADIR)/icons/hicolor/*/apps/carla-control.png
  701. rm -f $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps/carla.svg
  702. rm -f $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps/carla-control.svg
  703. rm -f $(DESTDIR)$(DATADIR)/mime/packages/carla.xml
  704. rm -rf $(DESTDIR)$(LIBDIR)/carla
  705. rm -rf $(DESTDIR)$(LIBDIR)/lv2/carla.lv2
  706. rm -rf $(DESTDIR)$(LIBDIR)/lv2/carla-native.lv2
  707. rm -rf $(DESTDIR)$(LIBDIR)/vst/carla.vst
  708. rm -rf $(DESTDIR)$(DATADIR)/carla
  709. rm -rf $(DESTDIR)$(INCLUDEDIR)/carla
  710. # ----------------------------------------------------------------------------------------------------------------------------
  711. ifeq ($(MACOS),true)
  712. ifneq ($(MACOS_OLD),true)
  713. HAVE_DIST = true
  714. endif
  715. endif
  716. ifeq ($(WINDOWS),true)
  717. HAVE_DIST = true
  718. endif
  719. ifeq ($(HAVE_DIST),true)
  720. include Makefile.dist.mk
  721. else
  722. dist:
  723. endif
  724. include Makefile.print.mk
  725. # ---------------------------------------------------------------------------------------------------------------------
  726. .FORCE:
  727. .PHONY: .FORCE
  728. # ---------------------------------------------------------------------------------------------------------------------