117 lines
3.2 KiB
CMake
117 lines
3.2 KiB
CMake
cmake_minimum_required(VERSION 3.13)
|
|
|
|
# Interface selection — consumers set these before add_subdirectory()
|
|
option(CS_MIDI_BLE "Enable BLE MIDI interface (BTstack)" ON)
|
|
option(CS_MIDI_USB "Enable USB MIDI interface (TinyUSB)" OFF)
|
|
option(CS_MIDI_SERIAL "Enable Serial MIDI interface (UART)" OFF)
|
|
option(CS_MIDI_APPLEMIDI "Enable AppleMIDI interface (RTP-MIDI over WiFi)" OFF)
|
|
option(CS_MIDI_HID_KEYBOARD "HID keyboard + Battery Service for BLE auto-reconnect" OFF)
|
|
|
|
# Core sources — always compiled
|
|
set(CS_MIDI_CORE_SOURCES
|
|
AH/Debug/Debug.cpp
|
|
AH/Error/Exit.cpp
|
|
AH/PrintStream/PrintStream.cpp
|
|
AH/STL/vector.cpp
|
|
AH/Hardware/ExtendedInputOutput/ExtendedInputOutput.cpp
|
|
AH/Hardware/ExtendedInputOutput/ExtendedIOElement.cpp
|
|
AH/Hardware/Button.cpp
|
|
AH/Hardware/IncrementButton.cpp
|
|
AH/Hardware/IncrementDecrementButtons.cpp
|
|
Submodules/Encoder/AHEncoder.cpp
|
|
Control_Surface/Control_Surface_Class.cpp
|
|
MIDI_Senders/RelativeCCSender.cpp
|
|
Def/Cable.cpp
|
|
Def/Channel.cpp
|
|
Def/MIDIAddress.cpp
|
|
MIDI_Parsers/SerialMIDI_Parser.cpp
|
|
MIDI_Parsers/SysExBuffer.cpp
|
|
MIDI_Parsers/MIDI_MessageTypes.cpp
|
|
MIDI_Interfaces/MIDI_Interface.cpp
|
|
MIDI_Interfaces/MIDI_Pipes.cpp
|
|
)
|
|
|
|
set(CS_MIDI_SOURCES ${CS_MIDI_CORE_SOURCES})
|
|
|
|
if(CS_MIDI_BLE)
|
|
list(APPEND CS_MIDI_SOURCES
|
|
MIDI_Interfaces/BLEMIDI/BLEMIDIPacketBuilder.cpp
|
|
MIDI_Interfaces/BLEMIDI/BTstack/gatt_midi.cpp
|
|
MIDI_Interfaces/BLEMIDI/BTstack/advertising.cpp
|
|
)
|
|
endif()
|
|
|
|
if(CS_MIDI_USB)
|
|
list(APPEND CS_MIDI_SOURCES
|
|
MIDI_Parsers/USBMIDI_Parser.cpp
|
|
MIDI_Interfaces/USBMIDI_Interface.cpp
|
|
)
|
|
endif()
|
|
|
|
if(CS_MIDI_SERIAL)
|
|
list(APPEND CS_MIDI_SOURCES
|
|
MIDI_Interfaces/SerialMIDI_Interface.cpp
|
|
)
|
|
endif()
|
|
|
|
if(CS_MIDI_APPLEMIDI)
|
|
list(APPEND CS_MIDI_SOURCES
|
|
MIDI_Interfaces/AppleMIDI/LwIPUDP.cpp
|
|
MIDI_Interfaces/AppleMIDI/vendor/AppleMIDI.cpp
|
|
MIDI_Interfaces/AppleMIDI_Interface.cpp
|
|
)
|
|
endif()
|
|
|
|
add_library(cs_midi STATIC ${CS_MIDI_SOURCES})
|
|
|
|
target_include_directories(cs_midi PUBLIC
|
|
${CMAKE_CURRENT_LIST_DIR}
|
|
)
|
|
|
|
if(CS_MIDI_APPLEMIDI)
|
|
target_include_directories(cs_midi PRIVATE
|
|
${CMAKE_CURRENT_LIST_DIR}/MIDI_Interfaces/AppleMIDI/vendor
|
|
)
|
|
endif()
|
|
|
|
target_compile_definitions(cs_midi PUBLIC
|
|
MIDI_NUM_CABLES=1
|
|
$<$<BOOL:${CS_MIDI_BLE}>:CS_MIDI_BLE=1>
|
|
$<$<BOOL:${CS_MIDI_USB}>:CS_MIDI_USB=1>
|
|
$<$<BOOL:${CS_MIDI_SERIAL}>:CS_MIDI_SERIAL=1>
|
|
$<$<BOOL:${CS_MIDI_APPLEMIDI}>:CS_MIDI_APPLEMIDI=1>
|
|
$<$<BOOL:${CS_MIDI_HID_KEYBOARD}>:CS_MIDI_HID_KEYBOARD=1>
|
|
)
|
|
|
|
target_link_libraries(cs_midi
|
|
PUBLIC pico_stdlib hardware_sync hardware_adc
|
|
)
|
|
|
|
if(CS_MIDI_BLE)
|
|
target_link_libraries(cs_midi
|
|
PRIVATE pico_btstack_ble pico_btstack_cyw43
|
|
pico_cyw43_arch_lwip_threadsafe_background
|
|
)
|
|
endif()
|
|
|
|
if(CS_MIDI_SERIAL)
|
|
target_link_libraries(cs_midi
|
|
PRIVATE hardware_uart
|
|
)
|
|
endif()
|
|
|
|
if(CS_MIDI_USB)
|
|
target_link_libraries(cs_midi
|
|
PRIVATE tinyusb_device tinyusb_board
|
|
)
|
|
endif()
|
|
|
|
if(CS_MIDI_APPLEMIDI)
|
|
target_link_libraries(cs_midi
|
|
PRIVATE pico_cyw43_arch_lwip_threadsafe_background
|
|
pico_lwip_mdns
|
|
)
|
|
endif()
|
|
|
|
target_compile_features(cs_midi PUBLIC cxx_std_17)
|