Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FindPortMidi: Link ALSA in static builds on Linux #12292

Merged
merged 2 commits into from Nov 12, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
35 changes: 32 additions & 3 deletions cmake/modules/FindPortMidi.cmake
Expand Up @@ -37,6 +37,8 @@ The following cache variables may also be set:

#]=======================================================================]

include(IsStaticLibrary)

find_path(PortMidi_INCLUDE_DIR
NAMES portmidi.h
PATH_SUFFIXES portmidi
Expand Down Expand Up @@ -72,12 +74,39 @@ find_package_handle_standard_args(
VERSION_VAR PortMidi_VERSION
)

if(PortMidi_FOUND)
set(PortMidi_LIBRARIES ${PortMidi_LIBRARY})
if(PortMidi_FOUND AND NOT TARGET PortMidi::portmidi)
add_library(PortMidi::portmidi UNKNOWN IMPORTED)
set_target_properties(PortMidi::portmidi
PROPERTIES
IMPORTED_LOCATION "${PortMidi_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${PC_PortMidi_CFLAGS_OTHER}"
INTERFACE_INCLUDE_DIRECTORIES "${PortMidi_INCLUDE_DIR}"
)

set(PortMidi_LIBRARIES PortMidi::portmidi)
# Depending on the library configuration PortTime might be statically
# linked with PortMidi.
if(PortTime_LIBRARY)
list(APPEND PortMidi_LIBRARIES ${PortTime_LIBRARY})
if(NOT TARGET PortTime::porttime)
add_library(PortTime::porttime UNKNOWN IMPORTED)
set_target_properties(PortTime::porttime
PROPERTIES
IMPORTED_LOCATION "${PortTime_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${PC_PortTime_CFLAGS_OTHER}"
INTERFACE_INCLUDE_DIRECTORIES "${PortTime_INCLUDE_DIR}"
)
endif()
list(APPEND PortMidi_LIBRARIES PortTime::porttime)
endif()
set(PortMidi_INCLUDE_DIRS ${PortMidi_INCLUDE_DIR} ${PortTime_INCLUDE_DIR})

is_static_library(PortMidi_IS_STATIC PortMidi::portmidi)
if(PortMidi_IS_STATIC)
find_package(ALSA)
if(ALSA_FOUND)
set_property(TARGET PortMidi::portmidi APPEND PROPERTY INTERFACE_LINK_LIBRARIES
ALSA::ALSA
)
endif()
endif()
endif()