Cleanup
[carla.git] / source / frontend / Makefile
blob80593375696304aa73de2282492cb88c23407ef2
1 #!/usr/bin/make -f
2 # Makefile for carla-frontend #
3 # --------------------------- #
4 # Created by falkTX
7 CWD=..
8 include $(CWD)/Makefile.mk
10 # ---------------------------------------------------------------------------------------------------------------------
12 BINDIR := $(CWD)/../bin
13 RESDIR := $(CWD)/../resources
15 ifeq ($(DEBUG),true)
16 OBJDIR := $(CWD)/../build/frontend/Debug
17 else
18 OBJDIR := $(CWD)/../build/frontend/Release
19 endif
21 # ---------------------------------------------------------------------------------------------------------------------
23 BUILD_CXX_FLAGS += -I. -Iutils
24 BUILD_CXX_FLAGS += -I../backend
25 BUILD_CXX_FLAGS += -I../includes
26 BUILD_CXX_FLAGS += -I../modules
27 BUILD_CXX_FLAGS += -I../utils
29 # ---------------------------------------------------------------------------------------------------------------------
31 ifeq ($(WINDOWS),true)
32 NON_STATIC_LINK_FLAGS = $(shell echo $(LINK_FLAGS) | awk 'sub(" -static","")') -static-libgcc
33 else
34 NON_STATIC_LINK_FLAGS = $(LINK_FLAGS)
35 endif
37 ifeq ($(WINDOWS),true)
38 QT_LINK_FLAGS += -L$(BINDIR) $(BINDIR)/libcarla_utils.dll
39 else
40 QT_LINK_FLAGS += -L$(BINDIR) -lcarla_utils
41 endif
43 ifeq ($(MACOS),true)
44 QT_LINK_FLAGS += -install_name @rpath/libcarla_frontend.dylib
45 # FIXME this does not work: -Wl,-rpath,@loader_path
46 else
47 QT_LINK_FLAGS += -Wl,-rpath,'$${ORIGIN}'
48 endif
50 # ---------------------------------------------------------------------------------------------------------------------
51 # Translations
53 TSs = $(patsubst %,translations/carla_%.ts,$(I18N_LANGUAGES))
54 QMs = $(patsubst %,translations/carla_%.qm,$(I18N_LANGUAGES))
56 # ---------------------------------------------------------------------------------------------------------------------
57 # C++ files
59 CPP_FILES = \
60 carla_frontend.cpp \
61 dialogs/jackappdialog.cpp \
62 pluginlist/pluginlistdialog.cpp
64 OBJS = $(CPP_FILES:%=$(OBJDIR)/%.o)
66 # ---------------------------------------------------------------------------------------------------------------------
67 # Resources
69 RES = \
70 qt_config.py \
71 resources_rc.py \
72 $(BINDIR)/resources/modgui \
73 $(BINDIR)/resources/patchcanvas \
74 $(BINDIR)/resources/widgets \
75 $(BINDIR)/resources/bigmeter-ui \
76 $(BINDIR)/resources/carla-plugin \
77 $(BINDIR)/resources/carla-plugin-patchbay \
78 $(BINDIR)/resources/carla_app.py \
79 $(BINDIR)/resources/carla_backend.py \
80 $(BINDIR)/resources/carla_backend_qt.py \
81 $(BINDIR)/resources/carla_host.py \
82 $(BINDIR)/resources/carla_host_control.py \
83 $(BINDIR)/resources/carla_modgui.py \
84 $(BINDIR)/resources/carla_settings.py \
85 $(BINDIR)/resources/carla_skin.py \
86 $(BINDIR)/resources/carla_shared.py \
87 $(BINDIR)/resources/carla_utils.py \
88 $(BINDIR)/resources/carla_widgets.py \
89 $(BINDIR)/resources/externalui.py \
90 $(BINDIR)/resources/midipattern-ui \
91 $(BINDIR)/resources/notes-ui \
92 $(BINDIR)/resources/xycontroller-ui \
93 $(BINDIR)/resources/resources_rc.py \
94 $(BINDIR)/resources/ui_carla_about.py \
95 $(BINDIR)/resources/ui_carla_edit.py \
96 $(BINDIR)/resources/ui_carla_host.py \
97 $(BINDIR)/resources/ui_carla_osc_connect.py \
98 $(BINDIR)/resources/ui_carla_parameter.py \
99 $(BINDIR)/resources/ui_carla_plugin_calf.py \
100 $(BINDIR)/resources/ui_carla_plugin_classic.py \
101 $(BINDIR)/resources/ui_carla_plugin_compact.py \
102 $(BINDIR)/resources/ui_carla_plugin_default.py \
103 $(BINDIR)/resources/ui_carla_plugin_presets.py \
104 $(BINDIR)/resources/ui_carla_settings.py \
105 $(BINDIR)/resources/ui_carla_settings_driver.py \
106 $(BINDIR)/resources/ui_inputdialog_value.py \
107 $(BINDIR)/resources/ui_midipattern.py \
108 $(BINDIR)/resources/ui_xycontroller.py
110 ifneq ($(SKIP_ZYN_SYNTH),true)
111 ifeq ($(HAVE_ZYN_UI_DEPS),true)
112 RES += \
113 $(BINDIR)/resources/zynaddsubfx \
114 $(BINDIR)/resources/zynaddsubfx-ui
115 endif
116 endif
118 # ---------------------------------------------------------------------------------------------------------------------
119 # UI code
121 DIALOG_UI_FILES = $(wildcard dialogs/*.ui)
122 PLUGINLIST_UI_FILES = $(wildcard pluginlist/*.ui)
124 UIs = $(DIALOG_UI_FILES:dialogs/%.ui=dialogs/ui_%.h)
125 UIs += $(PLUGINLIST_UI_FILES:pluginlist/%.ui=pluginlist/ui_%.h)
127 UIs += $(DIALOG_UI_FILES:%.ui=%_ui.py)
129 # old stuff, not yet converted
130 UIs += \
131 ui_carla_about.py \
132 ui_carla_edit.py \
133 ui_carla_host.py \
134 ui_carla_osc_connect.py \
135 ui_carla_parameter.py \
136 ui_carla_plugin_calf.py \
137 ui_carla_plugin_classic.py \
138 ui_carla_plugin_compact.py \
139 ui_carla_plugin_default.py \
140 ui_carla_plugin_presets.py \
141 ui_carla_settings.py \
142 ui_carla_settings_driver.py \
143 ui_inputdialog_value.py \
144 ui_midipattern.py \
145 ui_xycontroller.py
147 # ---------------------------------------------------------------------------------------------------------------------
149 all: $(BINDIR)/libcarla_frontend$(LIB_EXT) $(QMs) $(RES) $(UIs)
151 # ---------------------------------------------------------------------------------------------------------------------
153 dialogs/ui_%.h: dialogs/%.ui qt_config.py
154 $(UIC) $< -o $@
156 pluginlist/ui_%.h: pluginlist/%.ui qt_config.py
157 $(UIC) $< -o $@
159 %_ui.py: %.ui qt_config.py
160 $(PYUIC) $< -o $@
162 ui_%.py: $(RESDIR)/ui/%.ui qt_config.py
163 $(PYUIC) $< -o $@
165 qt_config.py:
166 ifneq (,$(FRONTEND_TYPE))
167 echo "#!/usr/bin/env python3" > $@
168 echo "qt = $(FRONTEND_TYPE)" >> $@
169 else
170 @echo Error: Trying to build frontend without Qt and/or PyQt, cannot continue
171 @false
172 endif
174 resources_rc.py: $(RESDIR)/resources.qrc $(RESDIR)/*/*.png $(RESDIR)/*/*.svg $(RESDIR)/*/*.svgz
175 ifeq ($(FRONTEND_TYPE),6)
176 $(PYRCC) $< | sed -e 's/PySide6/PyQt6/' > $@
177 else
178 $(PYRCC) $< -o $@
179 endif
181 test: $(OBJS) $(LIBS) test.cpp
182 @echo "Linking test"
183 $(SILENT)$(CXX) $(OBJS) test.cpp $(BUILD_CXX_FLAGS) $(NON_STATIC_LINK_FLAGS) -Wl,-rpath,$(abspath $(BINDIR)) $(QT_LINK_FLAGS) -o $@
185 $(BINDIR)/resources/%: %
186 -@mkdir -p $(BINDIR)/resources
187 $(LINK) $(CURDIR)/$* $(BINDIR)/resources/
189 $(BINDIR)/resources/zynaddsubfx: ../native-plugins/resources/zynaddsubfx
190 -@mkdir -p $(BINDIR)/resources
191 $(LINK) $(CURDIR)/$< $(BINDIR)/resources/
193 $(BINDIR)/resources/zynaddsubfx-ui: ../native-plugins/resources/zynaddsubfx-ui
194 -@mkdir -p $(BINDIR)/resources
195 $(LINK) $(CURDIR)/$< $(BINDIR)/resources/
197 # ---------------------------------------------------------------------------------------------------------------------
199 $(BINDIR)/libcarla_frontend$(LIB_EXT): $(OBJS) $(LIBS)
200 -@mkdir -p $(BINDIR)
201 @echo "Linking libcarla_frontend$(LIB_EXT)"
202 $(SILENT)$(CXX) $(OBJS) $(BUILD_CXX_FLAGS) $(QT_CXX_FLAGS) $(NON_STATIC_LINK_FLAGS) $(QT_LINK_FLAGS) $(SHARED) -o $@
203 ifeq ($(MACOS),true)
204 # FIXME this does not work: -Wl,-rpath,@loader_path
205 $(SILENT)install_name_tool -change ../../../bin/libcarla_utils.dylib @loader_path/libcarla_utils.dylib $@
206 endif
208 $(OBJDIR)/%.cpp.o: %.cpp $(UIs)
209 -@mkdir -p $(shell dirname $@)
210 @echo "Compiling $<"
211 $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(QT_CXX_FLAGS) -c -o $@
213 -include $(OBJS:%.o=%.d)
215 # ---------------------------------------------------------------------------------------------------------------------
217 clean:
218 rm -rf $(BINDIR)/libcarla_frontend$(LIB_EXT) $(UIs) $(RES) $(QMs) __pycache__ *.pyc
219 # old files
220 rm -f ui_carla_add_jack.py
221 rm -f ui_carla_database.py
222 rm -f ui_carla_refresh.py
224 debug:
225 $(MAKE) DEBUG=true
227 # ---------------------------------------------------------------------------------------------------------------------
229 lint:
230 pylint \
231 --extension-pkg-whitelist=PyQt5 \
232 --max-line-length=120 \
233 --max-locals=25 \
234 --max-statements=100 \
235 --disable=bare-except,duplicate-code,invalid-name,missing-docstring,too-many-branches,too-many-instance-attributes,too-many-statements \
236 $(wildcard widgets/*.py)
238 # ---------------------------------------------------------------------------------------------------------------------
240 i18n_update: $(TSs)
241 i18n_release: $(QMs)
243 translations/%.ts:
244 @install -d translations
245 pylupdate5 *.py $(RESDIR)/ui/*.ui -ts $@
247 %.qm: %.ts
248 lrelease $< -qm $@
250 # ---------------------------------------------------------------------------------------------------------------------