@@ -36,6 +36,113 @@ endif | |||||
all: BIN RES UI WIDGETS | all: BIN RES UI WIDGETS | ||||
# ---------------------------------------------------------------------------------------------------------------------------- | |||||
# Config | |||||
config: source/carla_config.py source/includes/config.h | |||||
source/carla_config.py: | |||||
@echo "#!/usr/bin/env python3" > $@ | |||||
@echo "# -*- coding: utf-8 -*-" >> $@ | |||||
ifeq ($(DEFAULT_QT),4) | |||||
@echo "config_UseQt5 = False" >> $@ | |||||
else | |||||
@echo "config_UseQt5 = True" >> $@ | |||||
endif | |||||
source/includes/config.h: | |||||
@echo "/* Carla config, auto-generated file */" > $@ | |||||
@echo "" >> $@ | |||||
@echo "/* additional audio drivers, Linux only */" >> $@ | |||||
ifeq ($(HAVE_ALSA),true) | |||||
@echo "#define HAVE_ALSA" >> $@ | |||||
else | |||||
@echo "// #define HAVE_ALSA" >> $@ | |||||
endif | |||||
ifeq ($(HAVE_PULSEAUDIO),true) | |||||
@echo "#define HAVE_PULSEAUDIO" >> $@ | |||||
else | |||||
@echo "// #define HAVE_PULSEAUDIO" >> $@ | |||||
endif | |||||
@echo "" >> $@ | |||||
@echo "/* optional libs for extra backend features */" >> $@ | |||||
ifeq ($(HAVE_LIBLO),true) | |||||
@echo "#define HAVE_LIBLO" >> $@ | |||||
else | |||||
@echo "// #define HAVE_LIBLO" >> $@ | |||||
endif | |||||
ifeq ($(HAVE_LIBMAGIC),true) | |||||
@echo "#define HAVE_LIBMAGIC" >> $@ | |||||
else | |||||
@echo "// #define HAVE_LIBMAGIC" >> $@ | |||||
endif | |||||
ifeq ($(HAVE_FLUIDSYNTH),true) | |||||
@echo "#define HAVE_FLUIDSYNTH" >> $@ | |||||
else | |||||
@echo "// #define HAVE_FLUIDSYNTH" >> $@ | |||||
endif | |||||
ifeq ($(HAVE_LINUXSAMPLER),true) | |||||
@echo "#define HAVE_LINUXSAMPLER" >> $@ | |||||
else | |||||
@echo "// #define HAVE_LINUXSAMPLER" >> $@ | |||||
endif | |||||
@echo "" >> $@ | |||||
@echo "/* optional libs for extra plugins and UIs */" >> $@ | |||||
ifeq ($(HAVE_DGL),true) | |||||
@echo "#define HAVE_DGL" >> $@ | |||||
else | |||||
@echo "// #define HAVE_DGL" >> $@ | |||||
endif | |||||
ifeq ($(HAVE_PROJECTM),true) | |||||
@echo "#define HAVE_PROJECTM" >> $@ | |||||
else | |||||
@echo "// #define HAVE_PROJECTM" >> $@ | |||||
endif | |||||
ifeq ($(HAVE_ZYN_DEPS),true) | |||||
@echo "#define HAVE_ZYN_DEPS" >> $@ | |||||
else | |||||
@echo "// #define HAVE_ZYN_DEPS" >> $@ | |||||
endif | |||||
ifeq ($(HAVE_ZYN_UI_DEPS),true) | |||||
@echo "#define HAVE_ZYN_UI_DEPS" >> $@ | |||||
else | |||||
@echo "// #define HAVE_ZYN_UI_DEPS" >> $@ | |||||
endif | |||||
@echo "" >> $@ | |||||
@echo "/* extra toolkits/frameworks for plugin UIs (native) */" >> $@ | |||||
ifeq ($(HAVE_X11),true) | |||||
@echo "#define HAVE_X11" >> $@ | |||||
else | |||||
@echo "// #define HAVE_X11" >> $@ | |||||
endif | |||||
@echo "" >> $@ | |||||
@echo "/* extra toolkits/frameworks for plugin UIs (bridges, Linux only) */" >> $@ | |||||
ifeq ($(HAVE_GTK2),true) | |||||
@echo "#define HAVE_GTK2" >> $@ | |||||
else | |||||
@echo "// #define HAVE_GTK2" >> $@ | |||||
endif | |||||
ifeq ($(HAVE_GTK3),true) | |||||
@echo "#define HAVE_GTK3" >> $@ | |||||
else | |||||
@echo "// #define HAVE_GTK3" >> $@ | |||||
endif | |||||
ifeq ($(HAVE_QT4),true) | |||||
@echo "#define HAVE_QT4" >> $@ | |||||
else | |||||
@echo "// #define HAVE_QT4" >> $@ | |||||
endif | |||||
ifeq ($(HAVE_QT5),true) | |||||
@echo "#define HAVE_QT5" >> $@ | |||||
else | |||||
@echo "// #define HAVE_QT5" >> $@ | |||||
endif | |||||
# ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- | ||||
# Binaries (native) | # Binaries (native) | ||||
@@ -81,7 +188,7 @@ ifeq ($(HAVE_QT5),true) | |||||
ALL_LIBS += $(MODULEDIR)/theme.qt5.a | ALL_LIBS += $(MODULEDIR)/theme.qt5.a | ||||
endif | endif | ||||
libs: $(ALL_LIBS) | |||||
libs: config $(ALL_LIBS) | |||||
$(MODULEDIR)/carla_engine.a: .FORCE | $(MODULEDIR)/carla_engine.a: .FORCE | ||||
@$(MAKE) -C source/backend/engine | @$(MAKE) -C source/backend/engine | ||||
@@ -140,7 +247,7 @@ discovery: libs | |||||
@$(MAKE) -C source/discovery | @$(MAKE) -C source/discovery | ||||
ifeq ($(LINUX),true) | ifeq ($(LINUX),true) | ||||
interposer: | |||||
interposer: config | |||||
@$(MAKE) -C source/interposer | @$(MAKE) -C source/interposer | ||||
else | else | ||||
interposer: | interposer: | ||||
@@ -150,7 +257,7 @@ plugin: backend bridges-plugin bridges-ui discovery | |||||
@$(MAKE) -C source/plugin | @$(MAKE) -C source/plugin | ||||
ifeq ($(HAVE_QT),true) | ifeq ($(HAVE_QT),true) | ||||
theme: | |||||
theme: config | |||||
@$(MAKE) -C source/theme | @$(MAKE) -C source/theme | ||||
else | else | ||||
theme: | theme: | ||||
@@ -174,7 +281,7 @@ LIBS_POSIX32 += $(MODULEDIR)/juce_gui_basics.posix32.a | |||||
LIBS_POSIX32 += $(MODULEDIR)/juce_gui_extra.posix32.a | LIBS_POSIX32 += $(MODULEDIR)/juce_gui_extra.posix32.a | ||||
endif | endif | ||||
posix32: $(LIBS_POSIX32) | |||||
posix32: config $(LIBS_POSIX32) | |||||
$(MAKE) -C source/bridges-plugin posix32 | $(MAKE) -C source/bridges-plugin posix32 | ||||
$(MAKE) -C source/discovery posix32 | $(MAKE) -C source/discovery posix32 | ||||
@@ -196,7 +303,7 @@ LIBS_POSIX64 += $(MODULEDIR)/juce_gui_basics.posix64.a | |||||
LIBS_POSIX64 += $(MODULEDIR)/juce_gui_extra.posix64.a | LIBS_POSIX64 += $(MODULEDIR)/juce_gui_extra.posix64.a | ||||
endif | endif | ||||
posix64: $(LIBS_POSIX64) | |||||
posix64: config $(LIBS_POSIX64) | |||||
$(MAKE) -C source/bridges-plugin posix64 | $(MAKE) -C source/bridges-plugin posix64 | ||||
$(MAKE) -C source/discovery posix64 | $(MAKE) -C source/discovery posix64 | ||||
@@ -214,7 +321,7 @@ LIBS_WIN32 += $(MODULEDIR)/juce_gui_basics.win32.a | |||||
LIBS_WIN32 += $(MODULEDIR)/lilv.win32.a | LIBS_WIN32 += $(MODULEDIR)/lilv.win32.a | ||||
LIBS_WIN32 += $(MODULEDIR)/rtmempool.win32.a | LIBS_WIN32 += $(MODULEDIR)/rtmempool.win32.a | ||||
win32: $(LIBS_WIN32) | |||||
win32: config $(LIBS_WIN32) | |||||
$(MAKE) -C source/bridges-plugin win32 | $(MAKE) -C source/bridges-plugin win32 | ||||
$(MAKE) -C source/discovery win32 | $(MAKE) -C source/discovery win32 | ||||
@@ -232,18 +339,18 @@ LIBS_WIN64 += $(MODULEDIR)/juce_gui_basics.win64.a | |||||
LIBS_WIN64 += $(MODULEDIR)/lilv.win64.a | LIBS_WIN64 += $(MODULEDIR)/lilv.win64.a | ||||
LIBS_WIN64 += $(MODULEDIR)/rtmempool.win64.a | LIBS_WIN64 += $(MODULEDIR)/rtmempool.win64.a | ||||
win64: $(LIBS_WIN64) | |||||
win64: config $(LIBS_WIN64) | |||||
$(MAKE) -C source/bridges-plugin win64 | $(MAKE) -C source/bridges-plugin win64 | ||||
$(MAKE) -C source/discovery win64 | $(MAKE) -C source/discovery win64 | ||||
# ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- | ||||
# Binaries (wine) | # Binaries (wine) | ||||
wine32: | |||||
wine32: config | |||||
$(MAKE) -C source/jackbridge wine32 | $(MAKE) -C source/jackbridge wine32 | ||||
cp -f $(MODULEDIR)/jackbridge-wine32.dll.so $(BINDIR)/jackbridge-wine32.dll | cp -f $(MODULEDIR)/jackbridge-wine32.dll.so $(BINDIR)/jackbridge-wine32.dll | ||||
wine64: | |||||
wine64: config | |||||
$(MAKE) -C source/jackbridge wine64 | $(MAKE) -C source/jackbridge wine64 | ||||
cp -f $(MODULEDIR)/jackbridge-wine64.dll.so $(BINDIR)/jackbridge-wine64.dll | cp -f $(MODULEDIR)/jackbridge-wine64.dll.so $(BINDIR)/jackbridge-wine64.dll | ||||
@@ -293,18 +400,9 @@ RES = \ | |||||
bin/resources/ui_carla_settings.py \ | bin/resources/ui_carla_settings.py \ | ||||
bin/resources/ui_carla_settings_driver.py \ | bin/resources/ui_carla_settings_driver.py \ | ||||
bin/resources/ui_inputdialog_value.py \ | bin/resources/ui_inputdialog_value.py \ | ||||
source/carla_config.py \ | |||||
source/resources_rc.py | source/resources_rc.py | ||||
RES: $(RES) | |||||
source/carla_config.py: | |||||
@echo "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n" > $@ | |||||
ifeq ($(DEFAULT_QT),4) | |||||
@echo "config_UseQt5 = False" >> $@ | |||||
else | |||||
@echo "config_UseQt5 = True" >> $@ | |||||
endif | |||||
RES: config $(RES) | |||||
source/resources_rc.py: resources/resources.qrc resources/*/*.png resources/*/*.svg | source/resources_rc.py: resources/resources.qrc resources/*/*.png resources/*/*.svg | ||||
$(PYRCC) $< -o $@ | $(PYRCC) $< -o $@ | ||||
@@ -339,7 +437,7 @@ UIs = \ | |||||
source/ui_carla_settings_driver.py \ | source/ui_carla_settings_driver.py \ | ||||
source/ui_inputdialog_value.py | source/ui_inputdialog_value.py | ||||
UI: $(UIs) | |||||
UI: config $(UIs) | |||||
source/ui_%.py: resources/ui/%.ui | source/ui_%.py: resources/ui/%.ui | ||||
$(PYUIC) $< -o $@ | $(PYUIC) $< -o $@ | ||||
@@ -360,7 +458,7 @@ WIDGETS = \ | |||||
source/pixmapkeyboard.py \ | source/pixmapkeyboard.py \ | ||||
source/racklistwidget.py | source/racklistwidget.py | ||||
WIDGETS: $(WIDGETS) | |||||
WIDGETS: config $(WIDGETS) | |||||
source/%.py: source/widgets/%.py | source/%.py: source/widgets/%.py | ||||
$(LINK) widgets/$*.py $@ | $(LINK) widgets/$*.py $@ | ||||
@@ -378,6 +476,7 @@ clean: | |||||
rm -f $(UIs) | rm -f $(UIs) | ||||
rm -f $(WIDGETS) | rm -f $(WIDGETS) | ||||
rm -f *~ source/*~ source/*.pyc source/*_rc.py source/ui_*.py | rm -f *~ source/*~ source/*.pyc source/*_rc.py source/ui_*.py | ||||
rm -f source/carla_config.py source/includes/config.h | |||||
distclean: clean | distclean: clean | ||||
rm -f bin/*.dll bin/*.so | rm -f bin/*.dll bin/*.so | ||||
@@ -756,21 +855,21 @@ ifeq ($(HAVE_QT5),true) | |||||
else | else | ||||
@echo "Qt5: $(ANS_NO) $(mS)Qt5 missing$(mE)" | @echo "Qt5: $(ANS_NO) $(mS)Qt5 missing$(mE)" | ||||
endif | endif | ||||
ifeq ($(MACOS),true) | |||||
@echo "Cocoa: $(ANS_YES) (direct+bridge)" | |||||
else | |||||
@echo "Cocoa: $(ANS_NO) $(mZ)MacOS only$(mE)" | |||||
endif | |||||
ifeq ($(WIN32),true) | |||||
@echo "Windows: $(ANS_YES) (direct+bridge)" | |||||
else | |||||
@echo "Windows: $(ANS_NO) $(mZ)Windows only$(mE)" | |||||
endif | |||||
ifeq ($(HAVE_X11),true) | ifeq ($(HAVE_X11),true) | ||||
@echo "X11: $(ANS_YES) (direct+bridge)" | @echo "X11: $(ANS_YES) (direct+bridge)" | ||||
else | else | ||||
@echo "X11: $(ANS_NO) $(mS)X11 missing$(mE)" | @echo "X11: $(ANS_NO) $(mS)X11 missing$(mE)" | ||||
endif | endif | ||||
# ifeq ($(MACOS),true) | |||||
# @echo "Cocoa: $(ANS_YES) (direct+bridge)" | |||||
# else | |||||
# @echo "Cocoa: $(ANS_NO) $(mZ)MacOS only$(mE)" | |||||
# endif | |||||
# ifeq ($(WIN32),true) | |||||
# @echo "Windows: $(ANS_YES) (direct+bridge)" | |||||
# else | |||||
# @echo "Windows: $(ANS_NO) $(mZ)Windows only$(mE)" | |||||
# endif | |||||
@echo "" | @echo "" | ||||
@echo "$(tS)---> File formats: $(tE)" | @echo "$(tS)---> File formats: $(tE)" | ||||
@@ -804,6 +903,11 @@ ifeq ($(HAVE_DGL),true) | |||||
else | else | ||||
@echo "DISTRHO Plugins:$(ANS_YES) (without UI)" | @echo "DISTRHO Plugins:$(ANS_YES) (without UI)" | ||||
endif | endif | ||||
ifeq ($(HAVE_PROJECTM),true) | |||||
@echo "DISTRHO ProM: $(ANS_YES)" | |||||
else | |||||
@echo "DISTRHO ProM: $(ANS_NO) (missing libprojectM)" | |||||
endif | |||||
ifeq ($(HAVE_ZYN_DEPS),true) | ifeq ($(HAVE_ZYN_DEPS),true) | ||||
ifeq ($(HAVE_ZYN_UI_DEPS),true) | ifeq ($(HAVE_ZYN_UI_DEPS),true) | ||||
@echo "ZynAddSubFX: $(ANS_YES) (with UI)" | @echo "ZynAddSubFX: $(ANS_YES) (with UI)" | ||||
@@ -142,15 +142,6 @@ endif | |||||
endif | endif | ||||
endif | endif | ||||
# -------------------------------------------------------------- | |||||
# Check for required libs | |||||
ifeq ($(LINUX),true) | |||||
ifeq (,$(wildcard /usr/include/magic.h)) | |||||
$(error libmagic missing, cannot continue) | |||||
endif | |||||
endif | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
# Check for optional libs (required by backend or bridges) | # Check for optional libs (required by backend or bridges) | ||||
@@ -173,6 +164,13 @@ HAVE_QT5 = $(shell pkg-config --exists Qt5Core Qt5Gui Qt5Widgets && ech | |||||
HAVE_LIBLO = $(shell pkg-config --exists liblo && echo true) | HAVE_LIBLO = $(shell pkg-config --exists liblo && echo true) | ||||
HAVE_FLUIDSYNTH = $(shell pkg-config --exists fluidsynth && echo true) | HAVE_FLUIDSYNTH = $(shell pkg-config --exists fluidsynth && echo true) | ||||
HAVE_LINUXSAMPLER = $(shell pkg-config --atleast-version=1.0.0.svn41 linuxsampler && echo true) | HAVE_LINUXSAMPLER = $(shell pkg-config --atleast-version=1.0.0.svn41 linuxsampler && echo true) | ||||
HAVE_PROJECTM = $(shell pkg-config --exists libprojectM && echo true) | |||||
HAVE_ZYN_DEPS = $(shell pkg-config --exists fftw3 mxml zlib && echo true) | |||||
HAVE_ZYN_UI_DEPS = $(shell pkg-config --exists ntk_images ntk && echo true) | |||||
# libmagic doesn't have a pkg-config file, so we need to call the compiler to test it | |||||
HAVE_LIBMAGIC = $(shell echo '\#include <magic.h>' | $(CC) $(CFLAGS) -x c -w -c - -o .libmagic-tmp 2>/dev/null && echo true) | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
# Set Qt tools | # Set Qt tools | ||||
@@ -247,35 +245,9 @@ else | |||||
DEFAULT_QT ?= 5 | DEFAULT_QT ?= 5 | ||||
endif | endif | ||||
# -------------------------------------------------------------- | |||||
# Check for optional libs (required by internal plugins) | |||||
HAVE_ZYN_DEPS = $(shell pkg-config --exists fftw3 mxml zlib && echo true) | |||||
HAVE_ZYN_UI_DEPS = $(shell pkg-config --exists ntk_images ntk && echo true) | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
# Set base defines | # Set base defines | ||||
ifeq ($(HAVE_DGL),true) | |||||
BASE_FLAGS += -DHAVE_DGL | |||||
endif | |||||
ifeq ($(HAVE_LIBLO),true) | |||||
BASE_FLAGS += -DHAVE_LIBLO | |||||
endif | |||||
ifeq ($(HAVE_FLUIDSYNTH),true) | |||||
BASE_FLAGS += -DHAVE_FLUIDSYNTH | |||||
endif | |||||
ifeq ($(HAVE_LINUXSAMPLER),true) | |||||
BASE_FLAGS += -DHAVE_LINUXSAMPLER | |||||
endif | |||||
ifeq ($(HAVE_X11),true) | |||||
BASE_FLAGS += -DHAVE_X11 | |||||
endif | |||||
ifeq ($(CARLA_VESTIGE_HEADER),true) | ifeq ($(CARLA_VESTIGE_HEADER),true) | ||||
BASE_FLAGS += -DVESTIGE_HEADER | BASE_FLAGS += -DVESTIGE_HEADER | ||||
endif | endif | ||||
@@ -298,6 +270,11 @@ LINUXSAMPLER_FLAGS = $(shell pkg-config --cflags linuxsampler) -DIS_CPP11=1 -Wno | |||||
LINUXSAMPLER_LIBS = $(shell pkg-config --libs linuxsampler) | LINUXSAMPLER_LIBS = $(shell pkg-config --libs linuxsampler) | ||||
endif | endif | ||||
ifeq ($(HAVE_PROJECTM),true) | |||||
PROJECTM_FLAGS = $(shell pkg-config --cflags libprojectM) | |||||
PROJECTM_LIBS = $(shell pkg-config --libs libprojectM) | |||||
endif | |||||
ifeq ($(HAVE_X11),true) | ifeq ($(HAVE_X11),true) | ||||
X11_FLAGS = $(shell pkg-config --cflags x11) | X11_FLAGS = $(shell pkg-config --cflags x11) | ||||
X11_LIBS = $(shell pkg-config --libs x11) | X11_LIBS = $(shell pkg-config --libs x11) | ||||
@@ -367,10 +344,8 @@ endif | |||||
# Set libs stuff (part 3) | # Set libs stuff (part 3) | ||||
ifeq ($(HAVE_ZYN_DEPS),true) | ifeq ($(HAVE_ZYN_DEPS),true) | ||||
NATIVE_PLUGINS_FLAGS += -DWANT_ZYNADDSUBFX | |||||
NATIVE_PLUGINS_LIBS += $(shell pkg-config --libs fftw3 mxml zlib) | NATIVE_PLUGINS_LIBS += $(shell pkg-config --libs fftw3 mxml zlib) | ||||
ifeq ($(HAVE_ZYN_UI_DEPS),true) | ifeq ($(HAVE_ZYN_UI_DEPS),true) | ||||
NATIVE_PLUGINS_FLAGS += -DWANT_ZYNADDSUBFX_UI | |||||
NATIVE_PLUGINS_LIBS += $(shell pkg-config --libs ntk_images ntk) | NATIVE_PLUGINS_LIBS += $(shell pkg-config --libs ntk_images ntk) | ||||
endif | endif | ||||
endif | endif | ||||
@@ -65,7 +65,6 @@ STANDALONE_LINK_FLAGS = $(JACKBRIDGE_LIBS) | |||||
STANDALONE_LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) | STANDALONE_LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) | ||||
STANDALONE_LINK_FLAGS += $(JUCE_AUDIO_FORMATS_LIBS) | STANDALONE_LINK_FLAGS += $(JUCE_AUDIO_FORMATS_LIBS) | ||||
STANDALONE_LINK_FLAGS += $(JUCE_CORE_LIBS) | STANDALONE_LINK_FLAGS += $(JUCE_CORE_LIBS) | ||||
STANDALONE_LINK_FLAGS += $(LIBLO_LIBS) | |||||
STANDALONE_LINK_FLAGS += $(LILV_LIBS) | STANDALONE_LINK_FLAGS += $(LILV_LIBS) | ||||
STANDALONE_LINK_FLAGS += $(NATIVE_PLUGINS_LIBS) | STANDALONE_LINK_FLAGS += $(NATIVE_PLUGINS_LIBS) | ||||
STANDALONE_LINK_FLAGS += $(RTMEMPOOL_LIBS) | STANDALONE_LINK_FLAGS += $(RTMEMPOOL_LIBS) | ||||
@@ -85,8 +84,12 @@ STANDALONE_LINK_FLAGS += $(RTAUDIO_LIBS) | |||||
STANDALONE_LINK_FLAGS += $(RTMIDI_LIBS) | STANDALONE_LINK_FLAGS += $(RTMIDI_LIBS) | ||||
endif | endif | ||||
ifeq ($(HAVE_DGL),true) | |||||
STANDALONE_LINK_FLAGS += $(DGL_LIBS) | |||||
ifeq ($(HAVE_LIBLO),true) | |||||
STANDALONE_LINK_FLAGS += $(LIBLO_LIBS) | |||||
endif | |||||
ifeq ($(HAVE_LIBMAGIC),true) | |||||
STANDALONE_LINK_FLAGS += -lmagic | |||||
endif | endif | ||||
ifeq ($(HAVE_FLUIDSYNTH),true) | ifeq ($(HAVE_FLUIDSYNTH),true) | ||||
@@ -97,12 +100,12 @@ ifeq ($(HAVE_LINUXSAMPLER),true) | |||||
STANDALONE_LINK_FLAGS += $(LINUXSAMPLER_LIBS) | STANDALONE_LINK_FLAGS += $(LINUXSAMPLER_LIBS) | ||||
endif | endif | ||||
ifeq ($(HAVE_X11),true) | |||||
STANDALONE_LINK_FLAGS += $(X11_LIBS) | |||||
ifeq ($(HAVE_DGL),true) | |||||
STANDALONE_LINK_FLAGS += $(DGL_LIBS) | |||||
endif | endif | ||||
ifeq ($(UNIX),true) | |||||
STANDALONE_LINK_FLAGS += -lmagic | |||||
ifeq ($(HAVE_X11),true) | |||||
STANDALONE_LINK_FLAGS += $(X11_LIBS) | |||||
endif | endif | ||||
UTILS_LINK_FLAGS = $(JUCE_AUDIO_BASICS_LIBS) | UTILS_LINK_FLAGS = $(JUCE_AUDIO_BASICS_LIBS) | ||||
@@ -1448,7 +1448,7 @@ protected: | |||||
event.ctrl.convertToMidiData(event.channel, size, data); | event.ctrl.convertToMidiData(event.channel, size, data); | ||||
CARLA_SAFE_ASSERT_CONTINUE(size > 0 && size <= 3); | CARLA_SAFE_ASSERT_CONTINUE(size > 0 && size <= 3); | ||||
if (curMidiDataPos + 1 /* size*/ + 4 /* time */ + size >= kBridgeRtClientDataMidiOutSize) | |||||
if (curMidiDataPos + 1U /* size*/ + 4U /* time */ + size >= kBridgeRtClientDataMidiOutSize) | |||||
break; | break; | ||||
// set size | // set size | ||||
@@ -1462,7 +1462,7 @@ protected: | |||||
for (uint8_t j=0; j<size; ++j) | for (uint8_t j=0; j<size; ++j) | ||||
*midiData++ = data[j]; | *midiData++ = data[j]; | ||||
curMidiDataPos += 1 /* size*/ + 4 /* time */ + size; | |||||
curMidiDataPos += 1U /* size*/ + 4U /* time */ + size; | |||||
} | } | ||||
else if (event.type == kEngineEventTypeMidi) | else if (event.type == kEngineEventTypeMidi) | ||||
{ | { | ||||
@@ -1486,7 +1486,7 @@ protected: | |||||
for (uint8_t j=1; j<_midiEvent.size; ++j) | for (uint8_t j=1; j<_midiEvent.size; ++j) | ||||
*midiData++ = _midiData[j]; | *midiData++ = _midiData[j]; | ||||
curMidiDataPos += 1 /* size*/ + 4 /* time */ + _midiEvent.size; | |||||
curMidiDataPos += 1U /* size*/ + 4U /* time */ + _midiEvent.size; | |||||
} | } | ||||
} | } | ||||
@@ -15,6 +15,8 @@ | |||||
* For a full copy of the GNU General Public License see the doc/GPL.txt file. | * For a full copy of the GNU General Public License see the doc/GPL.txt file. | ||||
*/ | */ | ||||
#include "CarlaDefines.h" | |||||
#ifdef HAVE_LIBLO | #ifdef HAVE_LIBLO | ||||
#include "CarlaEngine.hpp" | #include "CarlaEngine.hpp" | ||||
@@ -18,6 +18,8 @@ | |||||
#ifndef CARLA_ENGINE_OSC_HPP_INCLUDED | #ifndef CARLA_ENGINE_OSC_HPP_INCLUDED | ||||
#define CARLA_ENGINE_OSC_HPP_INCLUDED | #define CARLA_ENGINE_OSC_HPP_INCLUDED | ||||
#include "CarlaDefines.h" | |||||
#ifdef HAVE_LIBLO | #ifdef HAVE_LIBLO | ||||
#include "CarlaBackend.h" | #include "CarlaBackend.h" | ||||
@@ -15,6 +15,8 @@ | |||||
* For a full copy of the GNU General Public License see the doc/GPL.txt file. | * For a full copy of the GNU General Public License see the doc/GPL.txt file. | ||||
*/ | */ | ||||
#include "CarlaDefines.h" | |||||
#ifdef HAVE_LIBLO | #ifdef HAVE_LIBLO | ||||
#include "CarlaBackendUtils.hpp" | #include "CarlaBackendUtils.hpp" | ||||
@@ -1676,7 +1676,7 @@ public: | |||||
midiData = midiData + 1; | midiData = midiData + 1; | ||||
// get time as 32bit | // get time as 32bit | ||||
time = *(uint32_t*)midiData; | |||||
time = *(const uint32_t*)midiData; | |||||
// advance 32 bits (4 bytes) | // advance 32 bits (4 bytes) | ||||
midiData = midiData + 4; | midiData = midiData + 4; | ||||
@@ -1689,7 +1689,7 @@ public: | |||||
pData->event.portOut->writeMidiEvent(time, size, data); | pData->event.portOut->writeMidiEvent(time, size, data); | ||||
read += 1 /* size*/ + 4 /* time */ + size; | |||||
read += 1U /* size*/ + 4U /* time */ + size; | |||||
} | } | ||||
} // End of Control and MIDI Output | } // End of Control and MIDI Output | ||||
@@ -411,7 +411,7 @@ public: | |||||
void setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) noexcept override | void setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) noexcept override | ||||
{ | { | ||||
if (channel >= 0 && channel < MAX_MIDI_CHANNELS) | if (channel >= 0 && channel < MAX_MIDI_CHANNELS) | ||||
pData->prog.current = fCurProgs[channel]; | |||||
pData->prog.current = static_cast<int32_t>(fCurProgs[channel]); | |||||
CarlaPlugin::setCtrlChannel(channel, sendOsc, sendCallback); | CarlaPlugin::setCtrlChannel(channel, sendOsc, sendCallback); | ||||
} | } | ||||
@@ -438,7 +438,7 @@ public: | |||||
if (programList.size() == MAX_MIDI_CHANNELS) | if (programList.size() == MAX_MIDI_CHANNELS) | ||||
{ | { | ||||
int8_t channel = 0; | |||||
uint8_t channel = 0; | |||||
for (juce::String *it=programList.begin(), *end=programList.end(); it != end; ++it) | for (juce::String *it=programList.begin(), *end=programList.end(); it != end; ++it) | ||||
{ | { | ||||
const int index(it->getIntValue()); | const int index(it->getIntValue()); | ||||
@@ -464,15 +464,15 @@ public: | |||||
const int8_t channel(kIsGIG ? pData->ctrlChannel : int8_t(0)); | const int8_t channel(kIsGIG ? pData->ctrlChannel : int8_t(0)); | ||||
if (index >= 0 && channel >= 0) | if (index >= 0 && channel >= 0) | ||||
setProgramInternal(static_cast<uint>(index), channel, sendCallback, false); | |||||
setProgramInternal(static_cast<uint>(index), static_cast<uint8_t>(channel), sendCallback, false); | |||||
CarlaPlugin::setProgram(index, sendGui, sendOsc, sendCallback); | CarlaPlugin::setProgram(index, sendGui, sendOsc, sendCallback); | ||||
} | } | ||||
void setProgramInternal(const uint32_t index, const int8_t channel, const bool sendCallback, const bool inRtContent) noexcept | |||||
void setProgramInternal(const uint32_t index, const uint8_t channel, const bool sendCallback, const bool inRtContent) noexcept | |||||
{ | { | ||||
CARLA_SAFE_ASSERT_RETURN(index < pData->prog.count,); | CARLA_SAFE_ASSERT_RETURN(index < pData->prog.count,); | ||||
CARLA_SAFE_ASSERT_RETURN(channel >= 0 && channel < MAX_MIDI_CHANNELS,); | |||||
CARLA_SAFE_ASSERT_RETURN(channel < MAX_MIDI_CHANNELS,); | |||||
if (fCurProgs[channel] == index) | if (fCurProgs[channel] == index) | ||||
return; | return; | ||||
@@ -500,12 +500,14 @@ public: | |||||
if (pData->ctrlChannel == channel) | if (pData->ctrlChannel == channel) | ||||
{ | { | ||||
pData->prog.current = index; | |||||
const int32_t iindex(static_cast<int32_t>(index)); | |||||
pData->prog.current = iindex; | |||||
if (inRtContent) | if (inRtContent) | ||||
pData->postponeRtEvent(kPluginPostRtEventProgramChange, static_cast<int32_t>(index), 0, 0.0f); | |||||
pData->postponeRtEvent(kPluginPostRtEventProgramChange, iindex, 0, 0.0f); | |||||
else if (sendCallback) | else if (sendCallback) | ||||
pData->engine->callback(ENGINE_CALLBACK_PROGRAM_CHANGED, pData->id, index, 0, 0.0f, nullptr); | |||||
pData->engine->callback(ENGINE_CALLBACK_PROGRAM_CHANGED, pData->id, iindex, 0, 0.0f, nullptr); | |||||
} | } | ||||
} | } | ||||
@@ -1042,8 +1044,19 @@ public: | |||||
// -------------------------------------------------------------------------------------------------------- | // -------------------------------------------------------------------------------------------------------- | ||||
// Parameter outputs | // Parameter outputs | ||||
fParamBuffers[LinuxSamplerDiskStreamCount] = fEngineChannels[0]->GetDiskStreamCount(); | |||||
fParamBuffers[LinuxSamplerVoiceCount] = fEngineChannels[0]->GetVoiceCount(); | |||||
uint diskStreamCount=0, voiceCount=0; | |||||
for (uint i=0; i<kMaxChannels; ++i) | |||||
{ | |||||
LinuxSampler::EngineChannel* const engineChannel(fEngineChannels[i]); | |||||
CARLA_SAFE_ASSERT_CONTINUE(engineChannel != nullptr); | |||||
diskStreamCount += engineChannel->GetDiskStreamCount(); | |||||
/**/ voiceCount += engineChannel->GetVoiceCount(); | |||||
} | |||||
fParamBuffers[LinuxSamplerDiskStreamCount] = static_cast<float>(diskStreamCount); | |||||
fParamBuffers[LinuxSamplerVoiceCount] = static_cast<float>(voiceCount); | |||||
} | } | ||||
bool processSingle(float** const outBuffer, const uint32_t frames, const uint32_t timeOffset) | bool processSingle(float** const outBuffer, const uint32_t frames, const uint32_t timeOffset) | ||||
@@ -1198,7 +1211,7 @@ public: | |||||
samplerChannel->SetEngineType(kIsGIG ? "GIG" : "SFZ"); | samplerChannel->SetEngineType(kIsGIG ? "GIG" : "SFZ"); | ||||
samplerChannel->SetAudioOutputDevice(&fAudioOutputDevice); | samplerChannel->SetAudioOutputDevice(&fAudioOutputDevice); | ||||
samplerChannel->SetMidiInputDevice(&fMidiInputDevice); | |||||
//samplerChannel->SetMidiInputDevice(&fMidiInputDevice); | |||||
samplerChannel->SetMidiInputChannel(kUses16Outs ? static_cast<LinuxSampler::midi_chan_t>(i) : LinuxSampler::midi_chan_all); | samplerChannel->SetMidiInputChannel(kUses16Outs ? static_cast<LinuxSampler::midi_chan_t>(i) : LinuxSampler::midi_chan_all); | ||||
//samplerChannel->Connect(fMidiInputPort); | //samplerChannel->Connect(fMidiInputPort); | ||||
@@ -1208,6 +1221,7 @@ public: | |||||
engineChannel->Pan(0.0f); | engineChannel->Pan(0.0f); | ||||
engineChannel->Volume(kIsGIG ? LinuxSampler::kVolumeMax/10.0f : LinuxSampler::kVolumeMax); // FIXME | engineChannel->Volume(kIsGIG ? LinuxSampler::kVolumeMax/10.0f : LinuxSampler::kVolumeMax); // FIXME | ||||
engineChannel->SetMidiInstrumentMapToDefault(); | engineChannel->SetMidiInstrumentMapToDefault(); | ||||
engineChannel->Connect(fMidiInputPort); | |||||
if (kUses16Outs) | if (kUses16Outs) | ||||
{ | { | ||||
@@ -19,7 +19,8 @@ | |||||
#include <gtk/gtk.h> | #include <gtk/gtk.h> | ||||
#ifdef CARLA_OS_LINUX | |||||
#if defined(CARLA_OS_LINUX) && defined(HAVE_X11) | |||||
# define USE_CUSTOM_X11_METHODS | |||||
# include <gdk/gdkx.h> | # include <gdk/gdkx.h> | ||||
#endif | #endif | ||||
@@ -225,10 +226,11 @@ protected: | |||||
CARLA_SAFE_ASSERT_RETURN(fWindow != nullptr,); | CARLA_SAFE_ASSERT_RETURN(fWindow != nullptr,); | ||||
carla_debug("CarlaBridgeToolkitGtk::setTransient(0x" P_UINTPTR ")", winId); | carla_debug("CarlaBridgeToolkitGtk::setTransient(0x" P_UINTPTR ")", winId); | ||||
#ifdef USE_CUSTOM_X11_METHODS | |||||
GdkWindow* const gdkWindow(gtk_widget_get_window(fWindow)); | GdkWindow* const gdkWindow(gtk_widget_get_window(fWindow)); | ||||
CARLA_SAFE_ASSERT_RETURN(gdkWindow != nullptr,); | CARLA_SAFE_ASSERT_RETURN(gdkWindow != nullptr,); | ||||
#ifdef BRIDGE_GTK3 | |||||
# ifdef BRIDGE_GTK3 | |||||
GdkDisplay* const gdkDisplay(gdk_window_get_display(gdkWindow)); | GdkDisplay* const gdkDisplay(gdk_window_get_display(gdkWindow)); | ||||
CARLA_SAFE_ASSERT_RETURN(gdkDisplay != nullptr,); | CARLA_SAFE_ASSERT_RETURN(gdkDisplay != nullptr,); | ||||
@@ -237,15 +239,16 @@ protected: | |||||
const ::XID xid(gdk_x11_window_get_xid(gdkWindow)); | const ::XID xid(gdk_x11_window_get_xid(gdkWindow)); | ||||
CARLA_SAFE_ASSERT_RETURN(xid != 0,); | CARLA_SAFE_ASSERT_RETURN(xid != 0,); | ||||
#else | |||||
# else | |||||
::Display* const display(gdk_x11_drawable_get_xdisplay(gdkWindow)); | ::Display* const display(gdk_x11_drawable_get_xdisplay(gdkWindow)); | ||||
CARLA_SAFE_ASSERT_RETURN(display != nullptr,); | CARLA_SAFE_ASSERT_RETURN(display != nullptr,); | ||||
const ::XID xid(gdk_x11_drawable_get_xid(gdkWindow)); | const ::XID xid(gdk_x11_drawable_get_xid(gdkWindow)); | ||||
CARLA_SAFE_ASSERT_RETURN(xid != 0,); | CARLA_SAFE_ASSERT_RETURN(xid != 0,); | ||||
#endif | |||||
# endif | |||||
XSetTransientForHint(display, xid, static_cast< ::Window>(winId)); | XSetTransientForHint(display, xid, static_cast< ::Window>(winId)); | ||||
#endif | |||||
} | } | ||||
// --------------------------------------------------------------------- | // --------------------------------------------------------------------- | ||||
@@ -30,7 +30,8 @@ | |||||
# include <QtGui/QMainWindow> | # include <QtGui/QMainWindow> | ||||
#endif | #endif | ||||
#if defined(CARLA_OS_LINUX) && QT_VERSION < QT_VERSION_CHECK(5, 0, 0) | |||||
#if defined(CARLA_OS_LINUX) && defined(HAVE_X11) && QT_VERSION < QT_VERSION_CHECK(5, 0, 0) | |||||
# define USE_CUSTOM_X11_METHODS | |||||
# include <QtGui/QX11Info> | # include <QtGui/QX11Info> | ||||
# include <X11/Xlib.h> | # include <X11/Xlib.h> | ||||
#endif | #endif | ||||
@@ -116,7 +117,7 @@ public: | |||||
if (options.transientWindowId != 0) | if (options.transientWindowId != 0) | ||||
{ | { | ||||
#if defined(CARLA_OS_LINUX) && QT_VERSION < QT_VERSION_CHECK(5, 0, 0) | |||||
#ifdef USE_CUSTOM_X11_METHODS | |||||
XSetTransientForHint(QX11Info::display(), static_cast< ::Window>(fWindow->winId()), static_cast< ::Window>(options.transientWindowId)); | XSetTransientForHint(QX11Info::display(), static_cast< ::Window>(fWindow->winId()), static_cast< ::Window>(options.transientWindowId)); | ||||
#endif | #endif | ||||
} | } | ||||
@@ -26,9 +26,6 @@ | |||||
#include "lv2/atom.h" | #include "lv2/atom.h" | ||||
#include "lv2/urid.h" | #include "lv2/urid.h" | ||||
//#include "CarlaBridgeToolkit.hpp" | |||||
//#include "CarlaLibUtils.hpp" | |||||
CARLA_BRIDGE_START_NAMESPACE | CARLA_BRIDGE_START_NAMESPACE | ||||
/*! | /*! | ||||
@@ -53,10 +53,12 @@ BUILD_WINDOWS_FLAGS = $(BUILD_CXX_FLAGS) -DBRIDGE_HWND | |||||
LINK_WINDOWS_FLAGS = $(LINK_FLAGS) -static -mwindows | LINK_WINDOWS_FLAGS = $(LINK_FLAGS) -static -mwindows | ||||
ifeq ($(LINUX),true) | ifeq ($(LINUX),true) | ||||
ifeq ($(HAVE_X11),true) | |||||
LINK_GTK2_FLAGS += -lX11 | LINK_GTK2_FLAGS += -lX11 | ||||
LINK_GTK3_FLAGS += -lX11 | LINK_GTK3_FLAGS += -lX11 | ||||
LINK_QT4_FLAGS += -lX11 | LINK_QT4_FLAGS += -lX11 | ||||
endif | endif | ||||
endif | |||||
# ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- | ||||
@@ -18,10 +18,8 @@ | |||||
#ifndef CARLA_DEFINES_H_INCLUDED | #ifndef CARLA_DEFINES_H_INCLUDED | ||||
#define CARLA_DEFINES_H_INCLUDED | #define CARLA_DEFINES_H_INCLUDED | ||||
/* IDE Helper */ | |||||
#ifndef REAL_BUILD | |||||
# include "config.h" | |||||
#endif | |||||
/* Configuration */ | |||||
#include "config.h" | |||||
/* Compatibility with non-clang compilers */ | /* Compatibility with non-clang compilers */ | ||||
#ifndef __has_feature | #ifndef __has_feature | ||||
@@ -66,6 +66,9 @@ END_NAMESPACE_DISTRHO | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
CARLA_EXPORT | |||||
void carla_register_native_plugin_distrho_3bandeq(); | |||||
CARLA_EXPORT | CARLA_EXPORT | ||||
void carla_register_native_plugin_distrho_3bandeq() | void carla_register_native_plugin_distrho_3bandeq() | ||||
{ | { | ||||
@@ -66,6 +66,9 @@ END_NAMESPACE_DISTRHO | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
CARLA_EXPORT | |||||
void carla_register_native_plugin_distrho_3bandsplitter(); | |||||
CARLA_EXPORT | CARLA_EXPORT | ||||
void carla_register_native_plugin_distrho_3bandsplitter() | void carla_register_native_plugin_distrho_3bandsplitter() | ||||
{ | { | ||||
@@ -67,6 +67,9 @@ END_NAMESPACE_DISTRHO | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
CARLA_EXPORT | |||||
void carla_register_native_plugin_distrho_mverb(); | |||||
CARLA_EXPORT | CARLA_EXPORT | ||||
void carla_register_native_plugin_distrho_mverb() | void carla_register_native_plugin_distrho_mverb() | ||||
{ | { | ||||
@@ -66,6 +66,9 @@ END_NAMESPACE_DISTRHO | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
CARLA_EXPORT | |||||
void carla_register_native_plugin_distrho_nekobi(); | |||||
CARLA_EXPORT | CARLA_EXPORT | ||||
void carla_register_native_plugin_distrho_nekobi() | void carla_register_native_plugin_distrho_nekobi() | ||||
{ | { | ||||
@@ -66,6 +66,9 @@ END_NAMESPACE_DISTRHO | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
CARLA_EXPORT | |||||
void carla_register_native_plugin_distrho_pingpongpan(); | |||||
CARLA_EXPORT | CARLA_EXPORT | ||||
void carla_register_native_plugin_distrho_pingpongpan() | void carla_register_native_plugin_distrho_pingpongpan() | ||||
{ | { | ||||
@@ -60,7 +60,6 @@ LINK_FLAGS += $(JACKBRIDGE_LIBS) | |||||
LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) | LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) | ||||
LINK_FLAGS += $(JUCE_AUDIO_FORMATS_LIBS) | LINK_FLAGS += $(JUCE_AUDIO_FORMATS_LIBS) | ||||
LINK_FLAGS += $(JUCE_CORE_LIBS) | LINK_FLAGS += $(JUCE_CORE_LIBS) | ||||
LINK_FLAGS += $(LIBLO_LIBS) | |||||
LINK_FLAGS += $(LILV_LIBS) | LINK_FLAGS += $(LILV_LIBS) | ||||
LINK_FLAGS += $(NATIVE_PLUGINS_LIBS) | LINK_FLAGS += $(NATIVE_PLUGINS_LIBS) | ||||
LINK_FLAGS += $(RTMEMPOOL_LIBS) | LINK_FLAGS += $(RTMEMPOOL_LIBS) | ||||
@@ -77,8 +76,12 @@ ifeq ($(MACOS),true) | |||||
LINK_FLAGS += $(JUCE_GUI_EXTRA_LIBS) | LINK_FLAGS += $(JUCE_GUI_EXTRA_LIBS) | ||||
endif | endif | ||||
ifeq ($(HAVE_DGL),true) | |||||
LINK_FLAGS += $(DGL_LIBS) | |||||
ifeq ($(HAVE_LIBLO),true) | |||||
LINK_FLAGS += $(LIBLO_LIBS) | |||||
endif | |||||
ifeq ($(HAVE_LIBMAGIC),true) | |||||
LINK_FLAGS += -lmagic | |||||
endif | endif | ||||
ifeq ($(HAVE_FLUIDSYNTH),true) | ifeq ($(HAVE_FLUIDSYNTH),true) | ||||
@@ -89,12 +92,12 @@ ifeq ($(HAVE_LINUXSAMPLER),true) | |||||
LINK_FLAGS += $(LINUXSAMPLER_LIBS) | LINK_FLAGS += $(LINUXSAMPLER_LIBS) | ||||
endif | endif | ||||
ifeq ($(HAVE_X11),true) | |||||
LINK_FLAGS += $(X11_LIBS) | |||||
ifeq ($(HAVE_DGL),true) | |||||
LINK_FLAGS += $(DGL_LIBS) | |||||
endif | endif | ||||
ifeq ($(UNIX),true) | |||||
LINK_FLAGS += -lmagic | |||||
ifeq ($(HAVE_X11),true) | |||||
LINK_FLAGS += $(X11_LIBS) | |||||
endif | endif | ||||
# ---------------------------------------------------------------------------------------------------------------------------- | # ---------------------------------------------------------------------------------------------------------------------------- | ||||
@@ -21,13 +21,13 @@ | |||||
#include "CarlaBackend.h" | #include "CarlaBackend.h" | ||||
#include "CarlaUtils.hpp" | #include "CarlaUtils.hpp" | ||||
#if defined(CARLA_OS_UNIX) && ! defined(BUILD_BRIDGE) | |||||
# include "magic.h" | |||||
#if defined(HAVE_LIBMAGIC) && ! defined(BUILD_BRIDGE) | |||||
# include <magic.h> | |||||
#endif | #endif | ||||
CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
#if defined(CARLA_OS_UNIX) && ! defined(BUILD_BRIDGE) | |||||
#if defined(HAVE_LIBMAGIC) && ! defined(BUILD_BRIDGE) | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
class CarlaMagic | class CarlaMagic | ||||
@@ -72,7 +72,7 @@ BinaryType getBinaryTypeFromFile(const char* const filename) | |||||
if (filename == nullptr || filename[0] == '\0') | if (filename == nullptr || filename[0] == '\0') | ||||
return BINARY_NATIVE; | return BINARY_NATIVE; | ||||
#if defined(CARLA_OS_UNIX) && ! defined(BUILD_BRIDGE) | |||||
#if defined(HAVE_LIBMAGIC) && ! defined(BUILD_BRIDGE) | |||||
static const CarlaMagic magic; | static const CarlaMagic magic; | ||||
const char* const output(magic.getFileDescription(filename)); | const char* const output(magic.getFileDescription(filename)); | ||||