@@ -207,113 +207,6 @@ rest: libs | |||
theme: libs | |||
@$(MAKE) -C source/theme | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
# prepare for (re)distribution | |||
_CARLA_QT5_DYLIBS = \ | |||
iconengines/libqsvgicon.dylib \ | |||
imageformats/libqjpeg.dylib \ | |||
imageformats/libqsvg.dylib \ | |||
platforms/libqcocoa.dylib \ | |||
platforms/libqminimal.dylib \ | |||
platforms/libqoffscreen.dylib \ | |||
styles/carlastyle.dylib | |||
_CARLA_PLUGIN_UIS = \ | |||
carla-plugin \ | |||
bigmeter-ui \ | |||
midipattern-ui \ | |||
notes-ui \ | |||
xycontroller-ui | |||
_CARLA_APP_FILES = \ | |||
Carla \ | |||
carla-bridge-lv2-cocoa \ | |||
carla-bridge-lv2.dylib \ | |||
carla-bridge-native \ | |||
carla-discovery-native \ | |||
libcarla_standalone2.dylib \ | |||
libcarla_utils.dylib \ | |||
styles/carlastyle.json \ | |||
$(_CARLA_QT5_DYLIBS) \ | |||
$(_CARLA_PLUGIN_UIS:%=resources/%) | |||
CARLA_APP_FILES = $(_CARLA_APP_FILES:%=build/Carla.app/Contents/MacOS/%) | |||
CARLA_QT5_DYLIBS = $(_CARLA_QT5_DYLIBS:%=build/Carla.app/Contents/MacOS/%) | |||
CARLA_PLUGIN_ZIPS = $(_CARLA_PLUGIN_UIS:%=build/%.app/Contents/MacOS/lib/library.zip) | |||
QT5_PREFIX = $(shell pkg-config --variable=prefix Qt5OpenGLExtensions) | |||
dist: carla_mac | |||
carla_mac: $(CARLA_APP_FILES) | |||
build/Carla.app/Contents/MacOS/Carla: build/Carla.app/Contents/MacOS/lib/library.zip $(CARLA_QT5_DYLIBS) | |||
# cleanup | |||
find build/Carla.app/Contents/MacOS/ -type f -name "*.py" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "*.pyi" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "pylupdate.so" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "pyrcc.so" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "QtMacExtras*" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "QtNetwork*" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "QtSql*" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "QtTest*" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "QtXml*" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "*.pyc" -delete | |||
rm -rf build/Carla.app/Contents/MacOS/lib/PyQt5/uic | |||
# adjust binaries | |||
(cd build/Carla.app/Contents/MacOS && \ | |||
for f in `find . -type f | grep -e Q -e libq -e carlastyle.dylib`; do \ | |||
install_name_tool -change "@rpath/QtCore.framework/Versions/5/QtCore" @executable_path/QtCore $$f && \ | |||
install_name_tool -change "@rpath/QtGui.framework/Versions/5/QtGui" @executable_path/QtGui $$f && \ | |||
install_name_tool -change "@rpath/QtOpenGL.framework/Versions/5/QtOpenGL" @executable_path/QtOpenGL $$f && \ | |||
install_name_tool -change "@rpath/QtPrintSupport.framework/Versions/5/QtPrintSupport" @executable_path/QtPrintSupport $$f && \ | |||
install_name_tool -change "@rpath/QtSvg.framework/Versions/5/QtSvg" @executable_path/QtSvg $$f && \ | |||
install_name_tool -change "@rpath/QtWidgets.framework/Versions/5/QtWidgets" @executable_path/QtWidgets $$f && \ | |||
install_name_tool -change "@rpath/QtMacExtras.framework/Versions/5/QtMacExtras" @executable_path/QtMacExtras $$f; \ | |||
done) | |||
# symlink resources | |||
mkdir -p build/Carla.app/Contents/MacOS/resources | |||
(cd build/Carla.app/Contents/MacOS/resources && \ | |||
ln -sf ../Qt* ../lib ../iconengines ../imageformats ../platforms ../styles . && \ | |||
ln -sf carla-plugin carla-plugin-patchbay) | |||
build/Carla.app/Contents/MacOS/lib/library.zip: $(CARLA_PLUGIN_ZIPS) data/macos/bundle.py data/macos/*.plist source/frontend/* | |||
env PYTHONPATH=$(CURDIR)/source/frontend SCRIPT_NAME=Carla python3 ./data/macos/bundle.py bdist_mac --bundle-name=Carla | |||
# merge all zips into 1 | |||
rm -rf build/Carla.app/Contents/MacOS/lib/_lib | |||
mkdir build/Carla.app/Contents/MacOS/lib/_lib | |||
(cd build/Carla.app/Contents/MacOS/lib/_lib && \ | |||
mv ../library.zip ../library-main.zip && \ | |||
$(_CARLA_PLUGIN_UIS:%=unzip -n $(CURDIR)/build/%.app/Contents/MacOS/lib/library.zip &&) \ | |||
unzip -o ../library-main.zip && \ | |||
zip -r -9 ../library.zip *) | |||
rm -rf build/Carla.app/Contents/MacOS/lib/_lib | |||
rm -rf build/Carla.app/Contents/MacOS/lib/library-main.zip | |||
build/%.app/Contents/MacOS/lib/library.zip: data/macos/bundle.py data/macos/*.plist source/frontend/* | |||
env PYTHONPATH=$(CURDIR)/source/frontend SCRIPT_NAME=$* python3 ./data/macos/bundle.py bdist_mac --bundle-name=$* | |||
build/Carla.app/Contents/MacOS/iconengines/%: ${QT5_PREFIX}/lib/qt5/plugins/iconengines/% | |||
-@mkdir -p $(shell dirname $@) | |||
@cp -v $< $@ | |||
build/Carla.app/Contents/MacOS/imageformats/%: ${QT5_PREFIX}/lib/qt5/plugins/imageformats/% | |||
-@mkdir -p $(shell dirname $@) | |||
@cp -v $< $@ | |||
build/Carla.app/Contents/MacOS/platforms/%: ${QT5_PREFIX}/lib/qt5/plugins/platforms/% | |||
-@mkdir -p $(shell dirname $@) | |||
@cp -v $< $@ | |||
build/Carla.app/Contents/MacOS/resources/%: build/%.app/Contents/MacOS/lib/library.zip source/frontend/% | |||
-@mkdir -p $(shell dirname $@) | |||
@cp -v build/$*.app/Contents/MacOS/$* $@ | |||
build/Carla.app/Contents/MacOS/%: bin/% | |||
-@mkdir -p $(shell dirname $@) | |||
@cp -v $< $@ | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
# hacks | |||
@@ -927,230 +820,8 @@ uninstall: | |||
# ---------------------------------------------------------------------------------------------------------------------------- | |||
ifneq ($(MAKE_TERMOUT),) | |||
ANS_NO=\033[31mNO\033[0m | |||
ANS_YES=\033[32mYES\033[0m | |||
mS=\033[33m[ | |||
mZ=\033[30;1m[ | |||
mE=]\033[0m | |||
tS=\033[36m | |||
tE=\033[0m | |||
else | |||
ANS_NO=NO | |||
ANS_YES=YES | |||
mS=[ | |||
mZ=[ | |||
mE=] | |||
endif | |||
features_print_main: | |||
@printf -- "$(tS)---> Main features $(tE)\n" | |||
ifeq ($(HAVE_PYQT),true) | |||
@printf -- "Front-End: $(ANS_YES)\n" | |||
@printf -- "LV2 plugin: $(ANS_YES)\n" | |||
ifneq ($(HAIKU),true) | |||
@printf -- "VST2 plugin: $(ANS_YES)\n" | |||
else | |||
@printf -- "VST2 plugin: $(ANS_NO) $(mZ)Not available for Haiku$(mE)\n" | |||
endif | |||
else | |||
@printf -- "Front-End: $(ANS_NO) $(mS)Missing PyQt$(mE)\n" | |||
@printf -- "LV2 plugin: $(ANS_NO) $(mS)No front-end$(mE)\n" | |||
@printf -- "VST2 plugin: $(ANS_NO) $(mS)No front-end$(mE)\n" | |||
endif | |||
ifeq ($(HAVE_HYLIA),true) | |||
@printf -- "Link support: $(ANS_YES)\n" | |||
else | |||
ifeq ($(MACOS_OLD),true) | |||
@printf -- "Link support: $(ANS_NO) $(mZ)MacOS >= 10.8 only$(mE)\n" | |||
else | |||
@printf -- "Link support: $(ANS_NO) $(mZ)Linux, MacOS and Windows only$(mE)\n" | |||
endif | |||
endif | |||
ifeq ($(HAVE_LIBLO),true) | |||
@printf -- "OSC support: $(ANS_YES)\n" | |||
else | |||
@printf -- "OSC support: $(ANS_NO) $(mS)Missing liblo$(mE)\n" | |||
endif | |||
ifeq ($(WIN32),true) | |||
@printf -- "Binary detect: $(ANS_YES)\n" | |||
else | |||
ifeq ($(HAVE_LIBMAGIC),true) | |||
@printf -- "Binary detect: $(ANS_YES)\n" | |||
else | |||
@printf -- "Binary detect: $(ANS_NO) $(mS)Missing libmagic/file$(mE)\n" | |||
endif | |||
endif | |||
@printf -- "\n" | |||
@printf -- "$(tS)---> Engine drivers $(tE)\n" | |||
@printf -- "JACK: $(ANS_YES)\n" | |||
ifeq ($(LINUX),true) | |||
ifeq ($(HAVE_ALSA),true) | |||
@printf -- "ALSA: $(ANS_YES)\n" | |||
else | |||
@printf -- "ALSA: $(ANS_NO) $(mS)Missing ALSA$(mE)\n" | |||
endif | |||
else | |||
@printf -- "ALSA: $(ANS_NO) $(mZ)Linux only$(mE)\n" | |||
endif | |||
ifeq ($(UNIX),true) | |||
ifneq ($(MACOS),true) | |||
ifeq ($(HAVE_PULSEAUDIO),true) | |||
@printf -- "PulseAudio: $(ANS_YES)\n" | |||
else | |||
@printf -- "PulseAudio: $(ANS_NO) $(mS)Missing PulseAudio$(mE)\n" | |||
endif | |||
else | |||
@printf -- "PulseAudio: $(ANS_NO) $(mZ)Not available for MacOS$(mE)\n" | |||
endif | |||
else | |||
@printf -- "PulseAudio: $(ANS_NO) $(mZ)Only available for Unix systems$(mE)\n" | |||
endif | |||
ifeq ($(MACOS),true) | |||
@printf -- "CoreAudio: $(ANS_YES)\n" | |||
else | |||
@printf -- "CoreAudio: $(ANS_NO) $(mZ)MacOS only$(mE)\n" | |||
endif | |||
ifeq ($(WIN32),true) | |||
@printf -- "ASIO: $(ANS_YES)\n" | |||
@printf -- "DirectSound: $(ANS_YES)\n" | |||
@printf -- "WASAPI: $(ANS_YES)\n" | |||
else | |||
@printf -- "ASIO: $(ANS_NO) $(mZ)Windows only$(mE)\n" | |||
@printf -- "DirectSound: $(ANS_NO) $(mZ)Windows only$(mE)\n" | |||
@printf -- "WASAPI: $(ANS_NO) $(mZ)Windows only$(mE)\n" | |||
endif | |||
@printf -- "\n" | |||
@printf -- "$(tS)---> Plugin formats: $(tE)\n" | |||
@printf -- "Internal: $(ANS_YES)\n" | |||
@printf -- "LADSPA: $(ANS_YES)\n" | |||
@printf -- "DSSI: $(ANS_YES)\n" | |||
@printf -- "LV2: $(ANS_YES)\n" | |||
ifeq ($(MACOS_OR_WIN32),true) | |||
ifeq ($(USING_JUCE),true) | |||
@printf -- "VST2: $(ANS_YES) (with UI, using JUCE)\n" | |||
@printf -- "VST3: $(ANS_YES) (with UI, using JUCE)\n" | |||
else # USING_JUCE | |||
@printf -- "VST2: $(ANS_YES) (with UI)\n" | |||
@printf -- "VST3: $(ANS_NO)\n" | |||
endif # USING_JUCE | |||
else # MACOS_OR_WIN32 | |||
ifeq ($(HAIKU),true) | |||
@printf -- "VST2: $(ANS_YES) (without UI)\n" | |||
@printf -- "VST3: $(ANS_NO)\n" | |||
else # HAIKU | |||
ifeq ($(HAVE_X11),true) | |||
@printf -- "VST2: $(ANS_YES) (with UI)\n" | |||
ifeq ($(USING_JUCE),true) | |||
@printf -- "VST3: $(ANS_YES) (with UI, using JUCE)\n" | |||
else # USING_JUCE | |||
@printf -- "VST3: $(ANS_NO)\n" | |||
endif # USING_JUCE | |||
else # HAVE_X11 | |||
@printf -- "VST2: $(ANS_YES) (without UI) $(mS)Missing X11$(mE)\n" | |||
@printf -- "VST3: $(ANS_NO)\n" | |||
endif # HAVE_X11 | |||
endif # HAIKU | |||
endif # MACOS_OR_WIN32 | |||
ifeq ($(MACOS),true) | |||
ifeq ($(USING_JUCE),true) | |||
@printf -- "AU: $(ANS_YES) (with UI, using JUCE)\n" | |||
else # USING_JUCE | |||
@printf -- "AU: $(ANS_NO)\n" | |||
endif # USING_JUCE | |||
else # MACOS | |||
@printf -- "AU: $(ANS_NO) $(mZ)MacOS only$(mE)\n" | |||
endif # MACOS | |||
@printf -- "\n" | |||
@printf -- "$(tS)---> LV2 UI toolkit support: $(tE)\n" | |||
@printf -- "External: $(ANS_YES) (direct)\n" | |||
ifneq ($(MACOS_OR_WIN32),true) | |||
ifeq ($(HAVE_GTK2),true) | |||
@printf -- "Gtk2: $(ANS_YES) (bridge)\n" | |||
else | |||
@printf -- "Gtk2: $(ANS_NO) $(mS)Gtk2 missing$(mE)\n" | |||
endif | |||
ifeq ($(HAVE_GTK3),true) | |||
@printf -- "Gtk3: $(ANS_YES) (bridge)\n" | |||
else | |||
@printf -- "Gtk3: $(ANS_NO) $(mS)Gtk3 missing$(mE)\n" | |||
endif | |||
ifeq ($(HAVE_QT4),true) | |||
@printf -- "Qt4: $(ANS_YES) (bridge)\n" | |||
else | |||
@printf -- "Qt4: $(ANS_NO) $(mS)Qt4 missing$(mE)\n" | |||
endif | |||
ifeq ($(HAVE_QT5),true) | |||
@printf -- "Qt5: $(ANS_YES) (bridge)\n" | |||
else | |||
@printf -- "Qt5: $(ANS_NO) $(mS)Qt5 missing$(mE)\n" | |||
endif | |||
ifeq ($(HAVE_X11),true) | |||
@printf -- "X11: $(ANS_YES) (direct+bridge)\n" | |||
else | |||
@printf -- "X11: $(ANS_NO) $(mS)X11 missing$(mE)\n" | |||
endif | |||
else # LINUX | |||
@printf -- "Gtk2: $(ANS_NO) $(mZ)Not available for Windows or MacOS$(mE)\n" | |||
@printf -- "Gtk3: $(ANS_NO) $(mZ)Not available for Windows or MacOS$(mE)\n" | |||
@printf -- "Qt4: $(ANS_NO) $(mZ)Not available for Windows or MacOS$(mE)\n" | |||
@printf -- "Qt5: $(ANS_NO) $(mZ)Not available for Windows or MacOS$(mE)\n" | |||
@printf -- "X11: $(ANS_NO) $(mZ)Not available for Windows or MacOS$(mE)\n" | |||
endif # LINUX | |||
ifeq ($(MACOS),true) | |||
@printf -- "Cocoa: $(ANS_YES) (direct+bridge)\n" | |||
else | |||
@printf -- "Cocoa: $(ANS_NO) $(mZ)MacOS only$(mE)\n" | |||
endif | |||
ifeq ($(WIN32),true) | |||
@printf -- "Windows: $(ANS_YES) (direct+bridge)\n" | |||
else | |||
@printf -- "Windows: $(ANS_NO) $(mZ)Windows only$(mE)\n" | |||
endif | |||
@printf -- "\n" | |||
@printf -- "$(tS)---> File formats: $(tE)\n" | |||
ifeq ($(HAVE_SNDFILE),true) | |||
@printf -- "Basic: $(ANS_YES)\n" | |||
else | |||
@printf -- "Basic: $(ANS_NO) $(mS)libsndfile missing$(mE)\n" | |||
endif | |||
ifeq ($(HAVE_FFMPEG),true) | |||
@printf -- "Extra: $(ANS_YES)\n" | |||
else | |||
@printf -- "Extra: $(ANS_NO) $(mS)FFmpeg missing or too new$(mE)\n" | |||
endif | |||
# ifeq ($(HAVE_FLUIDSYNTH_INSTPATCH),true) | |||
# @printf -- "DLS: $(ANS_YES)\n" | |||
# else | |||
# @printf -- "DLS: $(ANS_NO) $(mS)FluidSynth/instpatch missing or too old$(mE)\n" | |||
# endif | |||
ifeq ($(HAVE_FLUIDSYNTH),true) | |||
@printf -- "SF2/3: $(ANS_YES)\n" | |||
else | |||
@printf -- "SF2/3: $(ANS_NO) $(mS)FluidSynth missing or too old$(mE)\n" | |||
endif | |||
@printf -- "SFZ: $(ANS_YES)\n" | |||
@printf -- "\n" | |||
@printf -- "$(tS)---> Internal plugins: $(tE)\n" | |||
@printf -- "Basic Plugins: $(ANS_YES)\n" | |||
@printf -- "Carla-Patchbay: $(ANS_YES)\n" | |||
@printf -- "Carla-Rack: $(ANS_YES)\n" | |||
ifeq ($(EXTERNAL_PLUGINS),true) | |||
@printf -- "External Plugins: $(ANS_YES)\n" | |||
else | |||
@printf -- "External Plugins: $(ANS_NO)\n" | |||
endif | |||
ifneq ($(EXTERNAL_PLUGINS),true) | |||
features_print_external_plugins: | |||
endif | |||
features: features_print_main features_print_external_plugins | |||
include Makefile.dist.mk | |||
include Makefile.print.mk | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
@@ -0,0 +1,121 @@ | |||
#!/usr/bin/make -f | |||
# Makefile for Carla # | |||
# ------------------ # | |||
# Created by falkTX | |||
# | |||
# NOTE to be imported from main Makefile | |||
# ---------------------------------------------------------------------------------------------------------------------------- | |||
QT5_PREFIX = $(shell pkg-config --variable=prefix Qt5OpenGLExtensions) | |||
# ---------------------------------------------------------------------------------------------------------------------------- | |||
_CARLA_QT5_DLLS = \ | |||
iconengines/libqsvgicon.$(LIB_EXT) \ | |||
imageformats/libqjpeg.$(LIB_EXT) \ | |||
imageformats/libqsvg.$(LIB_EXT) \ | |||
platforms/libqcocoa.$(LIB_EXT) \ | |||
platforms/libqminimal.$(LIB_EXT) \ | |||
platforms/libqoffscreen.$(LIB_EXT) \ | |||
styles/carlastyle.$(LIB_EXT) | |||
_CARLA_PLUGIN_UIS = \ | |||
carla-plugin \ | |||
bigmeter-ui \ | |||
midipattern-ui \ | |||
notes-ui \ | |||
xycontroller-ui | |||
_CARLA_APP_FILES = \ | |||
Carla \ | |||
carla-bridge-lv2-cocoa \ | |||
carla-bridge-lv2.$(LIB_EXT) \ | |||
carla-bridge-native \ | |||
carla-discovery-native \ | |||
libcarla_standalone2.$(LIB_EXT) \ | |||
libcarla_utils.$(LIB_EXT) \ | |||
styles/carlastyle.json \ | |||
$(_CARLA_QT5_DLLS) \ | |||
$(_CARLA_PLUGIN_UIS:%=resources/%$(APP_EXT)) | |||
CARLA_APP_FILES = $(_CARLA_APP_FILES:%=build/Carla.app/Contents/MacOS/%) | |||
CARLA_QT5_DLLS = $(_CARLA_QT5_DLLS:%=build/Carla.app/Contents/MacOS/%) | |||
CARLA_PLUGIN_ZIPS = $(_CARLA_PLUGIN_UIS:%=build/%.app/Contents/MacOS/lib/library.zip) | |||
# ---------------------------------------------------------------------------------------------------------------------------- | |||
build/Carla.app/Contents/MacOS/Carla: build/Carla.app/Contents/MacOS/lib/library.zip $(CARLA_QT5_DLLS) | |||
# cleanup | |||
find build/Carla.app/Contents/MacOS/ -type f -name "*.py" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "*.pyi" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "pylupdate.so" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "pyrcc.so" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "QtMacExtras*" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "QtNetwork*" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "QtSql*" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "QtTest*" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "QtXml*" -delete | |||
find build/Carla.app/Contents/MacOS/ -type f -name "*.pyc" -delete | |||
rm -rf build/Carla.app/Contents/MacOS/lib/PyQt5/uic | |||
# adjust binaries | |||
(cd build/Carla.app/Contents/MacOS && \ | |||
for f in `find . -type f | grep -e Q -e libq -e carlastyle.dylib`; do \ | |||
install_name_tool -change "@rpath/QtCore.framework/Versions/5/QtCore" @executable_path/QtCore $$f && \ | |||
install_name_tool -change "@rpath/QtGui.framework/Versions/5/QtGui" @executable_path/QtGui $$f && \ | |||
install_name_tool -change "@rpath/QtOpenGL.framework/Versions/5/QtOpenGL" @executable_path/QtOpenGL $$f && \ | |||
install_name_tool -change "@rpath/QtPrintSupport.framework/Versions/5/QtPrintSupport" @executable_path/QtPrintSupport $$f && \ | |||
install_name_tool -change "@rpath/QtSvg.framework/Versions/5/QtSvg" @executable_path/QtSvg $$f && \ | |||
install_name_tool -change "@rpath/QtWidgets.framework/Versions/5/QtWidgets" @executable_path/QtWidgets $$f && \ | |||
install_name_tool -change "@rpath/QtMacExtras.framework/Versions/5/QtMacExtras" @executable_path/QtMacExtras $$f; \ | |||
done) | |||
# symlink resources | |||
mkdir -p build/Carla.app/Contents/MacOS/resources | |||
(cd build/Carla.app/Contents/MacOS/resources && \ | |||
ln -sf ../Qt* ../lib ../iconengines ../imageformats ../platforms ../styles . && \ | |||
ln -sf carla-plugin carla-plugin-patchbay) | |||
build/Carla.app/Contents/MacOS/lib/library.zip: $(CARLA_PLUGIN_ZIPS) data/macos/bundle.py data/macos/*.plist source/frontend/* | |||
env PYTHONPATH=$(CURDIR)/source/frontend SCRIPT_NAME=Carla python3 ./data/macos/bundle.py bdist_mac --bundle-name=Carla | |||
# merge all zips into 1 | |||
rm -rf build/Carla.app/Contents/MacOS/lib/_lib | |||
mkdir build/Carla.app/Contents/MacOS/lib/_lib | |||
(cd build/Carla.app/Contents/MacOS/lib/_lib && \ | |||
mv ../library.zip ../library-main.zip && \ | |||
$(_CARLA_PLUGIN_UIS:%=unzip -n $(CURDIR)/build/%.app/Contents/MacOS/lib/library.zip &&) \ | |||
unzip -o ../library-main.zip && \ | |||
zip -r -9 ../library.zip *) | |||
rm -rf build/Carla.app/Contents/MacOS/lib/_lib | |||
rm -rf build/Carla.app/Contents/MacOS/lib/library-main.zip | |||
build/%.app/Contents/MacOS/lib/library.zip: data/macos/bundle.py data/macos/*.plist source/frontend/* | |||
env PYTHONPATH=$(CURDIR)/source/frontend SCRIPT_NAME=$* python3 ./data/macos/bundle.py bdist_mac --bundle-name=$* | |||
build/Carla.app/Contents/MacOS/iconengines/%: ${QT5_PREFIX}/lib/qt5/plugins/iconengines/% | |||
-@mkdir -p $(shell dirname $@) | |||
@cp -v $< $@ | |||
build/Carla.app/Contents/MacOS/imageformats/%: ${QT5_PREFIX}/lib/qt5/plugins/imageformats/% | |||
-@mkdir -p $(shell dirname $@) | |||
@cp -v $< $@ | |||
build/Carla.app/Contents/MacOS/platforms/%: ${QT5_PREFIX}/lib/qt5/plugins/platforms/% | |||
-@mkdir -p $(shell dirname $@) | |||
@cp -v $< $@ | |||
build/Carla.app/Contents/MacOS/resources/%: build/%.app/Contents/MacOS/lib/library.zip source/frontend/% | |||
-@mkdir -p $(shell dirname $@) | |||
@cp -v build/$*.app/Contents/MacOS/$* $@ | |||
build/Carla.app/Contents/MacOS/%: bin/% | |||
-@mkdir -p $(shell dirname $@) | |||
@cp -v $< $@ | |||
# ---------------------------------------------------------------------------------------------------------------------------- | |||
dist: carla_mac | |||
carla_mac: $(CARLA_APP_FILES) | |||
# ---------------------------------------------------------------------------------------------------------------------------- |
@@ -0,0 +1,236 @@ | |||
#!/usr/bin/make -f | |||
# Makefile for Carla # | |||
# ------------------ # | |||
# Created by falkTX | |||
# | |||
# NOTE to be imported from main Makefile | |||
# ---------------------------------------------------------------------------------------------------------------------------- | |||
ifneq ($(MAKE_TERMOUT),) | |||
ANS_NO=\033[31mNO\033[0m | |||
ANS_YES=\033[32mYES\033[0m | |||
mS=\033[33m[ | |||
mZ=\033[30;1m[ | |||
mE=]\033[0m | |||
tS=\033[36m | |||
tE=\033[0m | |||
else | |||
ANS_NO=NO | |||
ANS_YES=YES | |||
mS=[ | |||
mZ=[ | |||
mE=] | |||
endif | |||
features_print_main: | |||
@printf -- "$(tS)---> Main features $(tE)\n" | |||
ifeq ($(HAVE_PYQT),true) | |||
@printf -- "Front-End: $(ANS_YES)\n" | |||
@printf -- "LV2 plugin: $(ANS_YES)\n" | |||
ifneq ($(HAIKU),true) | |||
@printf -- "VST2 plugin: $(ANS_YES)\n" | |||
else | |||
@printf -- "VST2 plugin: $(ANS_NO) $(mZ)Not available for Haiku$(mE)\n" | |||
endif | |||
else | |||
@printf -- "Front-End: $(ANS_NO) $(mS)Missing PyQt$(mE)\n" | |||
@printf -- "LV2 plugin: $(ANS_NO) $(mS)No front-end$(mE)\n" | |||
@printf -- "VST2 plugin: $(ANS_NO) $(mS)No front-end$(mE)\n" | |||
endif | |||
ifeq ($(HAVE_HYLIA),true) | |||
@printf -- "Link support: $(ANS_YES)\n" | |||
else | |||
ifeq ($(MACOS_OLD),true) | |||
@printf -- "Link support: $(ANS_NO) $(mZ)MacOS >= 10.8 only$(mE)\n" | |||
else | |||
@printf -- "Link support: $(ANS_NO) $(mZ)Linux, MacOS and Windows only$(mE)\n" | |||
endif | |||
endif | |||
ifeq ($(HAVE_LIBLO),true) | |||
@printf -- "OSC support: $(ANS_YES)\n" | |||
else | |||
@printf -- "OSC support: $(ANS_NO) $(mS)Missing liblo$(mE)\n" | |||
endif | |||
ifeq ($(WIN32),true) | |||
@printf -- "Binary detect: $(ANS_YES)\n" | |||
else | |||
ifeq ($(HAVE_LIBMAGIC),true) | |||
@printf -- "Binary detect: $(ANS_YES)\n" | |||
else | |||
@printf -- "Binary detect: $(ANS_NO) $(mS)Missing libmagic/file$(mE)\n" | |||
endif | |||
endif | |||
@printf -- "\n" | |||
@printf -- "$(tS)---> Engine drivers $(tE)\n" | |||
@printf -- "JACK: $(ANS_YES)\n" | |||
ifeq ($(LINUX),true) | |||
ifeq ($(HAVE_ALSA),true) | |||
@printf -- "ALSA: $(ANS_YES)\n" | |||
else | |||
@printf -- "ALSA: $(ANS_NO) $(mS)Missing ALSA$(mE)\n" | |||
endif | |||
else | |||
@printf -- "ALSA: $(ANS_NO) $(mZ)Linux only$(mE)\n" | |||
endif | |||
ifeq ($(UNIX),true) | |||
ifneq ($(MACOS),true) | |||
ifeq ($(HAVE_PULSEAUDIO),true) | |||
@printf -- "PulseAudio: $(ANS_YES)\n" | |||
else | |||
@printf -- "PulseAudio: $(ANS_NO) $(mS)Missing PulseAudio$(mE)\n" | |||
endif | |||
else | |||
@printf -- "PulseAudio: $(ANS_NO) $(mZ)Not available for MacOS$(mE)\n" | |||
endif | |||
else | |||
@printf -- "PulseAudio: $(ANS_NO) $(mZ)Only available for Unix systems$(mE)\n" | |||
endif | |||
ifeq ($(MACOS),true) | |||
@printf -- "CoreAudio: $(ANS_YES)\n" | |||
else | |||
@printf -- "CoreAudio: $(ANS_NO) $(mZ)MacOS only$(mE)\n" | |||
endif | |||
ifeq ($(WIN32),true) | |||
@printf -- "ASIO: $(ANS_YES)\n" | |||
@printf -- "DirectSound: $(ANS_YES)\n" | |||
@printf -- "WASAPI: $(ANS_YES)\n" | |||
else | |||
@printf -- "ASIO: $(ANS_NO) $(mZ)Windows only$(mE)\n" | |||
@printf -- "DirectSound: $(ANS_NO) $(mZ)Windows only$(mE)\n" | |||
@printf -- "WASAPI: $(ANS_NO) $(mZ)Windows only$(mE)\n" | |||
endif | |||
@printf -- "\n" | |||
@printf -- "$(tS)---> Plugin formats: $(tE)\n" | |||
@printf -- "Internal: $(ANS_YES)\n" | |||
@printf -- "LADSPA: $(ANS_YES)\n" | |||
@printf -- "DSSI: $(ANS_YES)\n" | |||
@printf -- "LV2: $(ANS_YES)\n" | |||
ifeq ($(MACOS_OR_WIN32),true) | |||
ifeq ($(USING_JUCE),true) | |||
@printf -- "VST2: $(ANS_YES) (with UI, using JUCE)\n" | |||
@printf -- "VST3: $(ANS_YES) (with UI, using JUCE)\n" | |||
else # USING_JUCE | |||
@printf -- "VST2: $(ANS_YES) (with UI)\n" | |||
@printf -- "VST3: $(ANS_NO)\n" | |||
endif # USING_JUCE | |||
else # MACOS_OR_WIN32 | |||
ifeq ($(HAIKU),true) | |||
@printf -- "VST2: $(ANS_YES) (without UI)\n" | |||
@printf -- "VST3: $(ANS_NO)\n" | |||
else # HAIKU | |||
ifeq ($(HAVE_X11),true) | |||
@printf -- "VST2: $(ANS_YES) (with UI)\n" | |||
ifeq ($(USING_JUCE),true) | |||
@printf -- "VST3: $(ANS_YES) (with UI, using JUCE)\n" | |||
else # USING_JUCE | |||
@printf -- "VST3: $(ANS_NO)\n" | |||
endif # USING_JUCE | |||
else # HAVE_X11 | |||
@printf -- "VST2: $(ANS_YES) (without UI) $(mS)Missing X11$(mE)\n" | |||
@printf -- "VST3: $(ANS_NO)\n" | |||
endif # HAVE_X11 | |||
endif # HAIKU | |||
endif # MACOS_OR_WIN32 | |||
ifeq ($(MACOS),true) | |||
ifeq ($(USING_JUCE),true) | |||
@printf -- "AU: $(ANS_YES) (with UI, using JUCE)\n" | |||
else # USING_JUCE | |||
@printf -- "AU: $(ANS_NO)\n" | |||
endif # USING_JUCE | |||
else # MACOS | |||
@printf -- "AU: $(ANS_NO) $(mZ)MacOS only$(mE)\n" | |||
endif # MACOS | |||
@printf -- "\n" | |||
@printf -- "$(tS)---> LV2 UI toolkit support: $(tE)\n" | |||
@printf -- "External: $(ANS_YES) (direct)\n" | |||
ifneq ($(MACOS_OR_WIN32),true) | |||
ifeq ($(HAVE_GTK2),true) | |||
@printf -- "Gtk2: $(ANS_YES) (bridge)\n" | |||
else | |||
@printf -- "Gtk2: $(ANS_NO) $(mS)Gtk2 missing$(mE)\n" | |||
endif | |||
ifeq ($(HAVE_GTK3),true) | |||
@printf -- "Gtk3: $(ANS_YES) (bridge)\n" | |||
else | |||
@printf -- "Gtk3: $(ANS_NO) $(mS)Gtk3 missing$(mE)\n" | |||
endif | |||
ifeq ($(HAVE_QT4),true) | |||
@printf -- "Qt4: $(ANS_YES) (bridge)\n" | |||
else | |||
@printf -- "Qt4: $(ANS_NO) $(mS)Qt4 missing$(mE)\n" | |||
endif | |||
ifeq ($(HAVE_QT5),true) | |||
@printf -- "Qt5: $(ANS_YES) (bridge)\n" | |||
else | |||
@printf -- "Qt5: $(ANS_NO) $(mS)Qt5 missing$(mE)\n" | |||
endif | |||
ifeq ($(HAVE_X11),true) | |||
@printf -- "X11: $(ANS_YES) (direct+bridge)\n" | |||
else | |||
@printf -- "X11: $(ANS_NO) $(mS)X11 missing$(mE)\n" | |||
endif | |||
else # LINUX | |||
@printf -- "Gtk2: $(ANS_NO) $(mZ)Not available for Windows or MacOS$(mE)\n" | |||
@printf -- "Gtk3: $(ANS_NO) $(mZ)Not available for Windows or MacOS$(mE)\n" | |||
@printf -- "Qt4: $(ANS_NO) $(mZ)Not available for Windows or MacOS$(mE)\n" | |||
@printf -- "Qt5: $(ANS_NO) $(mZ)Not available for Windows or MacOS$(mE)\n" | |||
@printf -- "X11: $(ANS_NO) $(mZ)Not available for Windows or MacOS$(mE)\n" | |||
endif # LINUX | |||
ifeq ($(MACOS),true) | |||
@printf -- "Cocoa: $(ANS_YES) (direct+bridge)\n" | |||
else | |||
@printf -- "Cocoa: $(ANS_NO) $(mZ)MacOS only$(mE)\n" | |||
endif | |||
ifeq ($(WIN32),true) | |||
@printf -- "Windows: $(ANS_YES) (direct+bridge)\n" | |||
else | |||
@printf -- "Windows: $(ANS_NO) $(mZ)Windows only$(mE)\n" | |||
endif | |||
@printf -- "\n" | |||
@printf -- "$(tS)---> File formats: $(tE)\n" | |||
ifeq ($(HAVE_SNDFILE),true) | |||
@printf -- "Basic: $(ANS_YES)\n" | |||
else | |||
@printf -- "Basic: $(ANS_NO) $(mS)libsndfile missing$(mE)\n" | |||
endif | |||
ifeq ($(HAVE_FFMPEG),true) | |||
@printf -- "Extra: $(ANS_YES)\n" | |||
else | |||
@printf -- "Extra: $(ANS_NO) $(mS)FFmpeg missing or too new$(mE)\n" | |||
endif | |||
# ifeq ($(HAVE_FLUIDSYNTH_INSTPATCH),true) | |||
# @printf -- "DLS: $(ANS_YES)\n" | |||
# else | |||
# @printf -- "DLS: $(ANS_NO) $(mS)FluidSynth/instpatch missing or too old$(mE)\n" | |||
# endif | |||
ifeq ($(HAVE_FLUIDSYNTH),true) | |||
@printf -- "SF2/3: $(ANS_YES)\n" | |||
else | |||
@printf -- "SF2/3: $(ANS_NO) $(mS)FluidSynth missing or too old$(mE)\n" | |||
endif | |||
@printf -- "SFZ: $(ANS_YES)\n" | |||
@printf -- "\n" | |||
@printf -- "$(tS)---> Internal plugins: $(tE)\n" | |||
@printf -- "Basic Plugins: $(ANS_YES)\n" | |||
@printf -- "Carla-Patchbay: $(ANS_YES)\n" | |||
@printf -- "Carla-Rack: $(ANS_YES)\n" | |||
ifeq ($(EXTERNAL_PLUGINS),true) | |||
@printf -- "External Plugins: $(ANS_YES)\n" | |||
else | |||
@printf -- "External Plugins: $(ANS_NO)\n" | |||
endif | |||
ifneq ($(EXTERNAL_PLUGINS),true) | |||
features_print_external_plugins: | |||
endif | |||
features: features_print_main features_print_external_plugins | |||
# --------------------------------------------------------------------------------------------------------------------- |