carla/source/frontend/Makefile

243 lines
7.7 KiB
Makefile

#!/usr/bin/make -f
# Makefile for carla-frontend #
# --------------------------- #
# Created by falkTX
#
CWD=..
include $(CWD)/Makefile.mk
# ---------------------------------------------------------------------------------------------------------------------
BINDIR := $(CWD)/../bin
RESDIR := $(CWD)/../resources
ifeq ($(DEBUG),true)
OBJDIR := $(CWD)/../build/frontend/Debug
else
OBJDIR := $(CWD)/../build/frontend/Release
endif
# ---------------------------------------------------------------------------------------------------------------------
BUILD_CXX_FLAGS += -Iutils
BUILD_CXX_FLAGS += -I../backend
BUILD_CXX_FLAGS += -I../includes
BUILD_CXX_FLAGS += -I../modules
BUILD_CXX_FLAGS += -I../utils
# ---------------------------------------------------------------------------------------------------------------------
ifeq ($(WINDOWS),true)
QT5_LINK_FLAGS = $(shell echo $(LINK_FLAGS) | awk 'sub(" -static","")')
else
QT5_LINK_FLAGS = $(LINK_FLAGS)
endif
ifeq ($(HAVE_QT5),true)
QT5_PREFIX = $(shell $(PKG_CONFIG) --variable=prefix Qt5Core)
BUILD_CXX_FLAGS += $(shell $(PKG_CONFIG) --cflags Qt5Core Qt5Gui Qt5Widgets)
QT5_LINK_FLAGS += -Wl,-rpath,$(QT5_PREFIX)/lib $(shell $(PKG_CONFIG) --libs Qt5Core Qt5Gui Qt5Widgets)
else ifeq ($(HAVE_QT5PKG),true)
QT5_PREFIX = $(shell $(PKG_CONFIG) --variable=prefix Qt5OpenGLExtensions)
BUILD_CXX_FLAGS += -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -I $(QT5_PREFIX)/include/qt5
QT5_LINK_FLAGS += -Wl,-rpath,$(QT5_PREFIX)/lib -F $(QT5_PREFIX)/lib -framework QtCore -framework QtGui -framework QtWidgets
else
$(error Trying to build frontend without Qt5, cannot continue)
endif
ifeq ($(WINDOWS),true)
QT5_LINK_FLAGS += -L$(BINDIR) $(BINDIR)/libcarla_utils.dll
else
QT5_LINK_FLAGS += -L$(BINDIR) -lcarla_utils
endif
ifeq ($(MACOS),true)
QT5_LINK_FLAGS += -install_name @rpath/libcarla_frontend.dylib
# FIXME this does not work: -Wl,-rpath,@loader_path
else
QT5_LINK_FLAGS += -Wl,-rpath,'$${ORIGIN}'
endif
# ---------------------------------------------------------------------------------------------------------------------
# Translations
TSs = $(patsubst %,translations/carla_%.ts,$(I18N_LANGUAGES))
QMs = $(patsubst %,translations/carla_%.qm,$(I18N_LANGUAGES))
# ---------------------------------------------------------------------------------------------------------------------
# C++ files
CPP_FILES = \
carla_frontend.cpp \
dialogs/aboutjucedialog.cpp \
dialogs/jackappdialog.cpp \
pluginlist/pluginlistdialog.cpp
OBJS = $(CPP_FILES:%=$(OBJDIR)/%.o)
# ---------------------------------------------------------------------------------------------------------------------
# Resources
RES = \
resources_rc.py \
$(BINDIR)/resources/modgui \
$(BINDIR)/resources/patchcanvas \
$(BINDIR)/resources/widgets \
$(BINDIR)/resources/bigmeter-ui \
$(BINDIR)/resources/carla-plugin \
$(BINDIR)/resources/carla-plugin-patchbay \
$(BINDIR)/resources/carla_app.py \
$(BINDIR)/resources/carla_backend.py \
$(BINDIR)/resources/carla_backend_qt.py \
$(BINDIR)/resources/carla_host.py \
$(BINDIR)/resources/carla_host_control.py \
$(BINDIR)/resources/carla_modgui.py \
$(BINDIR)/resources/carla_settings.py \
$(BINDIR)/resources/carla_skin.py \
$(BINDIR)/resources/carla_shared.py \
$(BINDIR)/resources/carla_utils.py \
$(BINDIR)/resources/carla_widgets.py \
$(BINDIR)/resources/externalui.py \
$(BINDIR)/resources/midipattern-ui \
$(BINDIR)/resources/notes-ui \
$(BINDIR)/resources/xycontroller-ui \
$(BINDIR)/resources/resources_rc.py \
$(BINDIR)/resources/ui_carla_about.py \
$(BINDIR)/resources/ui_carla_edit.py \
$(BINDIR)/resources/ui_carla_host.py \
$(BINDIR)/resources/ui_carla_osc_connect.py \
$(BINDIR)/resources/ui_carla_parameter.py \
$(BINDIR)/resources/ui_carla_plugin_calf.py \
$(BINDIR)/resources/ui_carla_plugin_classic.py \
$(BINDIR)/resources/ui_carla_plugin_compact.py \
$(BINDIR)/resources/ui_carla_plugin_default.py \
$(BINDIR)/resources/ui_carla_plugin_presets.py \
$(BINDIR)/resources/ui_carla_settings.py \
$(BINDIR)/resources/ui_carla_settings_driver.py \
$(BINDIR)/resources/ui_inputdialog_value.py \
$(BINDIR)/resources/ui_midipattern.py \
$(BINDIR)/resources/ui_xycontroller.py
ifneq ($(SKIP_ZYN_SYNTH),true)
ifeq ($(HAVE_ZYN_UI_DEPS),true)
RES += \
$(BINDIR)/resources/zynaddsubfx \
$(BINDIR)/resources/zynaddsubfx-ui
endif
endif
# ---------------------------------------------------------------------------------------------------------------------
# UI code
UI_FILES = $(wildcard dialogs/*.ui)
UI_FILES += $(wildcard pluginlist/*.ui)
UIs = $(UI_FILES:%.ui=%_ui.hpp)
UIs += $(UI_FILES:%.ui=%_ui.py)
# old stuff, not yet converted
UIs += \
ui_carla_about.py \
ui_carla_edit.py \
ui_carla_host.py \
ui_carla_osc_connect.py \
ui_carla_parameter.py \
ui_carla_plugin_calf.py \
ui_carla_plugin_classic.py \
ui_carla_plugin_compact.py \
ui_carla_plugin_default.py \
ui_carla_plugin_presets.py \
ui_carla_settings.py \
ui_carla_settings_driver.py \
ui_inputdialog_value.py \
ui_midipattern.py \
ui_xycontroller.py
# ---------------------------------------------------------------------------------------------------------------------
all: $(BINDIR)/libcarla_frontend$(LIB_EXT) $(QMs) $(RES) $(UIs)
# ---------------------------------------------------------------------------------------------------------------------
%_ui.hpp: %.ui
$(UIC_QT5) $< -o $@
%_ui.py: %.ui
$(PYUIC) $< -o $@
ui_%.py: $(RESDIR)/ui/%.ui
$(PYUIC) $< -o $@
resources_rc.py: $(RESDIR)/resources.qrc $(RESDIR)/*/*.png $(RESDIR)/*/*.svg $(RESDIR)/*/*.svgz
$(PYRCC) $< -o $@
$(BINDIR)/resources/%: %
-@mkdir -p $(BINDIR)/resources
$(LINK) $(CURDIR)/$* $(BINDIR)/resources/
$(BINDIR)/resources/zynaddsubfx: ../native-plugins/resources/zynaddsubfx
-@mkdir -p $(BINDIR)/resources
$(LINK) $(CURDIR)/$< $(BINDIR)/resources/
$(BINDIR)/resources/zynaddsubfx-ui: ../native-plugins/resources/zynaddsubfx-ui
-@mkdir -p $(BINDIR)/resources
$(LINK) $(CURDIR)/$< $(BINDIR)/resources/
# ---------------------------------------------------------------------------------------------------------------------
$(BINDIR)/libcarla_frontend$(LIB_EXT): $(OBJS) $(LIBS)
-@mkdir -p $(BINDIR)
@echo "Linking libcarla_frontend$(LIB_EXT)"
$(SILENT)$(CXX) $(OBJS) $(BUILD_CXX_FLAGS) $(QT5_LINK_FLAGS) $(SHARED) -o $@
ifeq ($(MACOS),true)
# FIXME this does not work: -Wl,-rpath,@loader_path
$(SILENT)install_name_tool -change ../../../bin/libcarla_utils.dylib @loader_path/libcarla_utils.dylib $@
endif
$(OBJDIR)/%.cpp.o: %.cpp $(UIs)
-@mkdir -p $(shell dirname $@)
@echo "Compiling $<"
$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
-include $(OBJS:%.o=%.d)
# ---------------------------------------------------------------------------------------------------------------------
clean:
rm -rf $(BINDIR)/libcarla_frontend$(LIB_EXT) $(UIs) $(RES) $(QMs) __pycache__ *.pyc
# old files
rm -f ui_carla_about_juce.py
rm -f ui_carla_add_jack.py
rm -f ui_carla_database.py
rm -f ui_carla_refresh.py
debug:
$(MAKE) DEBUG=true
# ---------------------------------------------------------------------------------------------------------------------
lint:
pylint \
--extension-pkg-whitelist=PyQt5 \
--max-line-length=120 \
--max-locals=25 \
--max-statements=100 \
--disable=bare-except,duplicate-code,invalid-name,missing-docstring,too-many-branches,too-many-instance-attributes,too-many-statements \
$(wildcard widgets/*.py)
# ---------------------------------------------------------------------------------------------------------------------
i18n_update: $(TSs)
i18n_release: $(QMs)
translations/%.ts:
@install -d translations
pylupdate5 *.py $(RESDIR)/ui/*.ui -ts $@
%.qm: %.ts
lrelease $< -qm $@
# ---------------------------------------------------------------------------------------------------------------------