From 4acb2acae9a6cfb38b0ea30e315efd478995d395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 2 Feb 2022 15:29:31 +0100 Subject: [PATCH] modules: link to CoreAudio in case of a static OpenAL (Soft) on Apple. --- modules/FindOpenAL.cmake | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/modules/FindOpenAL.cmake b/modules/FindOpenAL.cmake index a8c375bf2..9038ddc9c 100644 --- a/modules/FindOpenAL.cmake +++ b/modules/FindOpenAL.cmake @@ -135,6 +135,14 @@ find_path(OPENAL_INCLUDE_DIR NAMES al.h # As above, skipping the obsolete PATHS and registry in vanilla FindOpenAL ) +# (Static) macOS / iOS dependencies +if(CORRADE_TARGET_APPLE AND OPENAL_LIBRARY MATCHES "${CMAKE_STATIC_LIBRARY_SUFFIX}$") + find_library(_OPENAL_CoreAudio_LIBRARY CoreAudio) + mark_as_advanced(_OPENAL_CoreAudio_LIBRARY) + set(_OPENAL_FRAMEWORK_LIBRARIES ${_OPENAL_CoreAudio_LIBRARY}) + set(_OPENAL_FRAMEWORK_LIBRARY_NAMES _OPENAL_CoreAudio_LIBRARY) +endif() + # OpenAL DLL on Windows if(CORRADE_TARGET_WINDOWS) # TODO: debug? @@ -146,6 +154,7 @@ endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(OpenAL DEFAULT_MSG OPENAL_LIBRARY + ${_OPENAL_FRAMEWORK_LIBRARY_NAMES} OPENAL_INCLUDE_DIR) if(NOT TARGET OpenAL::OpenAL) @@ -162,6 +171,12 @@ if(NOT TARGET OpenAL::OpenAL) IMPORTED_LOCATION ${OPENAL_LIBRARY}) endif() + # Link frameworks on macOS / iOS if we have a static SDL + if(CORRADE_TARGET_APPLE AND OPENAL_LIBRARY MATCHES "${CMAKE_STATIC_LIBRARY_SUFFIX}$") + set_property(TARGET OpenAL::OpenAL APPEND PROPERTY + INTERFACE_LINK_LIBRARIES ${_OPENAL_FRAMEWORK_LIBRARIES}) + endif() + set_target_properties(OpenAL::OpenAL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${OPENAL_INCLUDE_DIR}) endif()