diff --git a/CMakeLists.txt b/CMakeLists.txt index 3cec7cdcfcd..2e657c816df 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -729,8 +729,6 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL src/controllers/midi/midimessage.cpp src/controllers/midi/midioutputhandler.cpp src/controllers/midi/midiutils.cpp - src/controllers/midi/portmidicontroller.cpp - src/controllers/midi/portmidienumerator.cpp src/controllers/scripting/colormapper.cpp src/controllers/scripting/colormapperjsproxy.cpp src/controllers/scripting/controllerscriptenginebase.cpp @@ -2578,9 +2576,17 @@ target_include_directories(mixxx-lib SYSTEM PUBLIC lib/portaudio) target_link_libraries(mixxx-lib PRIVATE PortAudioRingBuffer) # PortMidi -find_package(PortMidi REQUIRED) -target_include_directories(mixxx-lib SYSTEM PUBLIC ${PortMidi_INCLUDE_DIRS}) -target_link_libraries(mixxx-lib PRIVATE ${PortMidi_LIBRARIES}) +option(PORTMIDI "Enable the PortMidi backend for MIDI controllers" ON) +if(PORTMIDI) + target_compile_definitions(mixxx-lib PUBLIC __PORTMIDI__) + find_package(PortMidi REQUIRED) + target_include_directories(mixxx-lib SYSTEM PUBLIC ${PortMidi_INCLUDE_DIRS}) + target_link_libraries(mixxx-lib PRIVATE ${PortMidi_LIBRARIES}) + target_sources(mixxx-lib PRIVATE + src/controllers/midi/portmidicontroller.cpp + src/controllers/midi/portmidienumerator.cpp + ) +endif() # Protobuf add_subdirectory(src/proto) diff --git a/src/controllers/controllermanager.cpp b/src/controllers/controllermanager.cpp index 971c9dc634b..52501776ffb 100644 --- a/src/controllers/controllermanager.cpp +++ b/src/controllers/controllermanager.cpp @@ -7,12 +7,16 @@ #include "controllers/controllerlearningeventfilter.h" #include "controllers/controllermappinginfoenumerator.h" #include "controllers/defs_controllers.h" -#include "controllers/midi/portmidienumerator.h" #include "moc_controllermanager.cpp" #include "util/cmdlineargs.h" #include "util/compatibility/qmutex.h" #include "util/duration.h" #include "util/time.h" + +#ifdef __PORTMIDI__ +#include "controllers/midi/portmidienumerator.h" +#endif + #ifdef __HSS1394__ #include "controllers/midi/hss1394enumerator.h" #endif @@ -148,7 +152,9 @@ void ControllerManager::slotInitialize() { // Instantiate all enumerators. Enumerators can take a long time to // construct since they interact with host MIDI APIs. +#ifdef __PORTMIDI__ m_enumerators.append(new PortMidiEnumerator()); +#endif #ifdef __HSS1394__ m_enumerators.append(new Hss1394Enumerator(m_pConfig)); #endif diff --git a/src/controllers/controllermanager.h b/src/controllers/controllermanager.h index a41b015c020..cfa040d496a 100644 --- a/src/controllers/controllermanager.h +++ b/src/controllers/controllermanager.h @@ -5,6 +5,7 @@ #include #include +#include "controllers/controllerenumerator.h" #include "preferences/usersettings.h" #include "util/duration.h"