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.

234 lines
7.6KB

  1. #!/usr/bin/make -f
  2. # Makefile for carla-frontend #
  3. # --------------------------- #
  4. # Created by falkTX
  5. #
  6. CWD=..
  7. include $(CWD)/Makefile.mk
  8. # ---------------------------------------------------------------------------------------------------------------------
  9. BINDIR := $(CWD)/../bin
  10. RESDIR := $(CWD)/../resources
  11. ifeq ($(DEBUG),true)
  12. OBJDIR := $(CWD)/../build/frontend/Debug
  13. else
  14. OBJDIR := $(CWD)/../build/frontend/Release
  15. endif
  16. # ---------------------------------------------------------------------------------------------------------------------
  17. BUILD_CXX_FLAGS += -Iutils
  18. BUILD_CXX_FLAGS += -I../backend
  19. BUILD_CXX_FLAGS += -I../includes
  20. BUILD_CXX_FLAGS += -I../utils
  21. # ---------------------------------------------------------------------------------------------------------------------
  22. ifeq ($(WINDOWS),true)
  23. QT5_LINK_FLAGS = $(shell echo $(LINK_FLAGS) | awk 'sub(" -static","")')
  24. else
  25. QT5_LINK_FLAGS = $(LINK_FLAGS)
  26. endif
  27. ifeq ($(HAVE_QT5),true)
  28. QT5_PREFIX = $(shell $(PKG_CONFIG) --variable=prefix Qt5Core)
  29. BUILD_CXX_FLAGS += $(shell $(PKG_CONFIG) --cflags Qt5Core Qt5Gui Qt5Widgets)
  30. QT5_LINK_FLAGS += -Wl,-rpath,$(QT5_PREFIX)/lib $(shell $(PKG_CONFIG) --libs Qt5Core Qt5Gui Qt5Widgets)
  31. else ifeq ($(HAVE_QT5PKG),true)
  32. QT5_PREFIX = $(shell $(PKG_CONFIG) --variable=prefix Qt5OpenGLExtensions)
  33. BUILD_CXX_FLAGS += -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -I $(QT5_PREFIX)/include/qt5
  34. QT5_LINK_FLAGS += -Wl,-rpath,$(QT5_PREFIX)/lib -F $(QT5_PREFIX)/lib -framework QtCore -framework QtGui -framework QtWidgets
  35. else
  36. $(error Trying to build frontend without Qt5, cannot continue)
  37. endif
  38. # ---------------------------------------------------------------------------------------------------------------------
  39. # Translations
  40. TSs = $(patsubst %,translations/carla_%.ts,$(I18N_LANGUAGES))
  41. QMs = $(patsubst %,translations/carla_%.qm,$(I18N_LANGUAGES))
  42. # ---------------------------------------------------------------------------------------------------------------------
  43. # C++ files
  44. CPP_FILES = \
  45. carla_frontend.cpp \
  46. pluginlist/jackappdialog.cpp
  47. OBJS = $(CPP_FILES:%=$(OBJDIR)/%.o)
  48. # ---------------------------------------------------------------------------------------------------------------------
  49. # Resources
  50. RES = \
  51. resources_rc.py \
  52. $(BINDIR)/resources/modgui \
  53. $(BINDIR)/resources/patchcanvas \
  54. $(BINDIR)/resources/widgets \
  55. $(BINDIR)/resources/bigmeter-ui \
  56. $(BINDIR)/resources/carla-plugin \
  57. $(BINDIR)/resources/carla-plugin-patchbay \
  58. $(BINDIR)/resources/carla_app.py \
  59. $(BINDIR)/resources/carla_backend.py \
  60. $(BINDIR)/resources/carla_backend_qt.py \
  61. $(BINDIR)/resources/carla_host.py \
  62. $(BINDIR)/resources/carla_host_control.py \
  63. $(BINDIR)/resources/carla_modgui.py \
  64. $(BINDIR)/resources/carla_settings.py \
  65. $(BINDIR)/resources/carla_skin.py \
  66. $(BINDIR)/resources/carla_shared.py \
  67. $(BINDIR)/resources/carla_utils.py \
  68. $(BINDIR)/resources/carla_widgets.py \
  69. $(BINDIR)/resources/externalui.py \
  70. $(BINDIR)/resources/midipattern-ui \
  71. $(BINDIR)/resources/notes-ui \
  72. $(BINDIR)/resources/xycontroller-ui \
  73. $(BINDIR)/resources/resources_rc.py \
  74. $(BINDIR)/resources/ui_carla_about.py \
  75. $(BINDIR)/resources/ui_carla_about_juce.py \
  76. $(BINDIR)/resources/ui_carla_edit.py \
  77. $(BINDIR)/resources/ui_carla_host.py \
  78. $(BINDIR)/resources/ui_carla_osc_connect.py \
  79. $(BINDIR)/resources/ui_carla_parameter.py \
  80. $(BINDIR)/resources/ui_carla_plugin_calf.py \
  81. $(BINDIR)/resources/ui_carla_plugin_classic.py \
  82. $(BINDIR)/resources/ui_carla_plugin_compact.py \
  83. $(BINDIR)/resources/ui_carla_plugin_default.py \
  84. $(BINDIR)/resources/ui_carla_plugin_presets.py \
  85. $(BINDIR)/resources/ui_carla_settings.py \
  86. $(BINDIR)/resources/ui_carla_settings_driver.py \
  87. $(BINDIR)/resources/ui_inputdialog_value.py \
  88. $(BINDIR)/resources/ui_midipattern.py \
  89. $(BINDIR)/resources/ui_xycontroller.py
  90. ifneq ($(SKIP_ZYN_SYNTH),true)
  91. ifeq ($(HAVE_ZYN_UI_DEPS),true)
  92. RES += \
  93. $(BINDIR)/resources/zynaddsubfx \
  94. $(BINDIR)/resources/zynaddsubfx-ui
  95. endif
  96. endif
  97. # ---------------------------------------------------------------------------------------------------------------------
  98. # UI code
  99. UI_FILES = $(wildcard pluginlist/*.ui)
  100. UIs = $(UI_FILES:%.ui=%_ui.hpp)
  101. UIs += $(UI_FILES:%.ui=%_ui.py)
  102. # old stuff, not yet converted
  103. UIs += \
  104. ui_carla_about.py \
  105. ui_carla_about_juce.py \
  106. ui_carla_edit.py \
  107. ui_carla_host.py \
  108. ui_carla_osc_connect.py \
  109. ui_carla_parameter.py \
  110. ui_carla_plugin_calf.py \
  111. ui_carla_plugin_classic.py \
  112. ui_carla_plugin_compact.py \
  113. ui_carla_plugin_default.py \
  114. ui_carla_plugin_presets.py \
  115. ui_carla_settings.py \
  116. ui_carla_settings_driver.py \
  117. ui_inputdialog_value.py \
  118. ui_midipattern.py \
  119. ui_xycontroller.py
  120. # ---------------------------------------------------------------------------------------------------------------------
  121. all: $(BINDIR)/libcarla_frontend$(LIB_EXT) $(QMs) $(RES) $(UIs)
  122. # ---------------------------------------------------------------------------------------------------------------------
  123. %_ui.hpp: %.ui
  124. $(UIC_QT5) $< -o $@
  125. %_ui.py: %.ui
  126. $(PYUIC) $< -o $@
  127. ui_%.py: $(RESDIR)/ui/%.ui
  128. $(PYUIC) $< -o $@
  129. resources_rc.py: $(RESDIR)/resources.qrc $(RESDIR)/*/*.png $(RESDIR)/*/*.svg $(RESDIR)/*/*.svgz
  130. $(PYRCC) $< -o $@
  131. $(BINDIR)/resources/%: %
  132. -@mkdir -p $(BINDIR)/resources
  133. $(LINK) $(CURDIR)/$* $(BINDIR)/resources/
  134. $(BINDIR)/resources/zynaddsubfx: ../native-plugins/resources/zynaddsubfx
  135. -@mkdir -p $(BINDIR)/resources
  136. $(LINK) $(CURDIR)/$< $(BINDIR)/resources/
  137. $(BINDIR)/resources/zynaddsubfx-ui: ../native-plugins/resources/zynaddsubfx-ui
  138. -@mkdir -p $(BINDIR)/resources
  139. $(LINK) $(CURDIR)/$< $(BINDIR)/resources/
  140. # ---------------------------------------------------------------------------------------------------------------------
  141. $(BINDIR)/libcarla_frontend$(LIB_EXT): $(OBJS) $(LIBS)
  142. -@mkdir -p $(BINDIR)
  143. @echo "Linking libcarla_frontend$(LIB_EXT)"
  144. $(SILENT)$(CXX) $(OBJS) $(BUILD_CXX_FLAGS) $(QT5_LINK_FLAGS) $(SHARED) -o $@
  145. $(OBJDIR)/%.cpp.o: %.cpp $(UIs)
  146. -@mkdir -p $(shell dirname $@)
  147. @echo "Compiling $<"
  148. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  149. -include $(OBJS:%.o=%.d)
  150. # ---------------------------------------------------------------------------------------------------------------------
  151. clean:
  152. rm -rf $(BINDIR)/libcarla_frontend$(LIB_EXT) $(UIs) $(RES) $(QMs) __pycache__ *.pyc
  153. # old files
  154. rm -f ui_carla_add_jack.py
  155. rm -f ui_carla_database.py
  156. rm -f ui_carla_refresh.py
  157. debug:
  158. $(MAKE) DEBUG=true
  159. # ---------------------------------------------------------------------------------------------------------------------
  160. tests: pluginlist/jackappdialog$(APP_EXT)
  161. # $(UI_FILES:%.ui=%$(APP_EXT))
  162. pluginlist/jackappdialog$(APP_EXT): pluginlist/jackappdialog.cpp pluginlist/jackappdialog.ui pluginlist/jackappdialog_ui.hpp
  163. $(CXX) $< $(BUILD_CXX_FLAGS) $(QT5_LINK_FLAGS) -o $@
  164. pluginlist/pluginlistdialog$(APP_EXT): pluginlist/pluginlistdialog.cpp pluginlist/pluginlistdialog.ui pluginlist/pluginlistdialog_ui.hpp
  165. $(CXX) $< $(BUILD_CXX_FLAGS) $(QT5_LINK_FLAGS) -o $@
  166. # ---------------------------------------------------------------------------------------------------------------------
  167. lint:
  168. pylint \
  169. --extension-pkg-whitelist=PyQt5 \
  170. --max-line-length=120 \
  171. --max-locals=25 \
  172. --max-statements=100 \
  173. --disable=bare-except,duplicate-code,invalid-name,missing-docstring,too-many-branches,too-many-instance-attributes,too-many-statements \
  174. $(wildcard widgets/*.py)
  175. # ---------------------------------------------------------------------------------------------------------------------
  176. i18n_update: $(TSs)
  177. i18n_release: $(QMs)
  178. translations/%.ts:
  179. @install -d translations
  180. pylupdate5 *.py $(RESDIR)/ui/*.ui -ts $@
  181. %.qm: %.ts
  182. lrelease $< -qm $@
  183. # ---------------------------------------------------------------------------------------------------------------------