cs-midi/CMakeLists.txt

92 lines
2.4 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)
# 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()
add_library(cs_midi STATIC ${CS_MIDI_SOURCES})
target_include_directories(cs_midi PUBLIC
${CMAKE_CURRENT_LIST_DIR}
)
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>
)
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()
target_compile_features(cs_midi PUBLIC cxx_std_17)