[sdl2-mixer] Fix dynamic loading when building static library (#9332)

* [sdl2-mixer] Fix dynamic loading when building static library

* [sdl2-mixer] Set dynamic load as a feature

* [sdl2-mixer] Disable feature dynamic-load when building static
This commit is contained in:
Jack·Boos·Yu 2020-01-28 06:21:09 +08:00 committed by Victor Romero
parent ebda0b9fc2
commit 53f1ae86d0
3 changed files with 40 additions and 18 deletions

View File

@ -16,9 +16,11 @@ if(SDL_MIXER_ENABLE_MP3)
find_library(MPG123_LIBRARY NAMES libmpg123 mpg123) find_library(MPG123_LIBRARY NAMES libmpg123 mpg123)
list(APPEND SDL_MIXER_INCLUDES ${MPG123_INCLUDE_DIR}) list(APPEND SDL_MIXER_INCLUDES ${MPG123_INCLUDE_DIR})
list(APPEND SDL_MIXER_DEFINES MUSIC_MP3_MPG123) list(APPEND SDL_MIXER_DEFINES MUSIC_MP3_MPG123)
if (SDL_DYNAMIC_LOAD)
get_filename_component(MPG123_LIBRARY_NAME "${MPG123_LIBRARY}" NAME_WE) get_filename_component(MPG123_LIBRARY_NAME "${MPG123_LIBRARY}" NAME_WE)
list(APPEND SDL_MIXER_LOAD_DEFINES -DMPG123_DYNAMIC="${MPG123_LIBRARY_NAME}${LIBRARY_SUFFIX}") list(APPEND SDL_MIXER_LOAD_DEFINES -DMPG123_DYNAMIC="${MPG123_LIBRARY_NAME}${LIBRARY_SUFFIX}")
endif() endif()
endif()
# FLAC support # FLAC support
if(SDL_MIXER_ENABLE_FLAC) if(SDL_MIXER_ENABLE_FLAC)
@ -26,9 +28,11 @@ if(SDL_MIXER_ENABLE_FLAC)
find_library(FLAC_LIBRARY FLAC) find_library(FLAC_LIBRARY FLAC)
list(APPEND SDL_MIXER_INCLUDES ${FLAC_INCLUDE_DIR}) list(APPEND SDL_MIXER_INCLUDES ${FLAC_INCLUDE_DIR})
list(APPEND SDL_MIXER_DEFINES MUSIC_FLAC) list(APPEND SDL_MIXER_DEFINES MUSIC_FLAC)
if (SDL_DYNAMIC_LOAD)
get_filename_component(FLAC_LIBRARY_NAME "${FLAC_LIBRARY}" NAME_WE) get_filename_component(FLAC_LIBRARY_NAME "${FLAC_LIBRARY}" NAME_WE)
list(APPEND SDL_MIXER_LOAD_DEFINES -DFLAC_DYNAMIC="${FLAC_LIBRARY_NAME}${LIBRARY_SUFFIX}") list(APPEND SDL_MIXER_LOAD_DEFINES -DFLAC_DYNAMIC="${FLAC_LIBRARY_NAME}${LIBRARY_SUFFIX}")
endif() endif()
endif()
# MOD support # MOD support
if(SDL_MIXER_ENABLE_MOD) if(SDL_MIXER_ENABLE_MOD)
@ -36,9 +40,11 @@ if(SDL_MIXER_ENABLE_MOD)
find_library(MODPLUG_LIBRARY modplug) find_library(MODPLUG_LIBRARY modplug)
list(APPEND SDL_MIXER_INCLUDES ${MODPLUG_INCLUDE_DIR}) list(APPEND SDL_MIXER_INCLUDES ${MODPLUG_INCLUDE_DIR})
list(APPEND SDL_MIXER_DEFINES MUSIC_MOD_MODPLUG) list(APPEND SDL_MIXER_DEFINES MUSIC_MOD_MODPLUG)
if (SDL_DYNAMIC_LOAD)
get_filename_component(MODPLUG_LIBRARY_NAME "${MODPLUG_LIBRARY}" NAME_WE) get_filename_component(MODPLUG_LIBRARY_NAME "${MODPLUG_LIBRARY}" NAME_WE)
list(APPEND SDL_MIXER_LOAD_DEFINES -DMODPLUG_DYNAMIC="${MODPLUG_LIBRARY_NAME}${LIBRARY_SUFFIX}") list(APPEND SDL_MIXER_LOAD_DEFINES -DMODPLUG_DYNAMIC="${MODPLUG_LIBRARY_NAME}${LIBRARY_SUFFIX}")
endif() endif()
endif()
# Ogg-Vorbis support # Ogg-Vorbis support
if(SDL_MIXER_ENABLE_OGGVORBIS) if(SDL_MIXER_ENABLE_OGGVORBIS)
@ -46,9 +52,11 @@ if(SDL_MIXER_ENABLE_OGGVORBIS)
find_library(VORBISFILE_LIBRARY vorbisfile) find_library(VORBISFILE_LIBRARY vorbisfile)
list(APPEND SDL_MIXER_INCLUDES ${VORBIS_INCLUDE_DIR}) list(APPEND SDL_MIXER_INCLUDES ${VORBIS_INCLUDE_DIR})
list(APPEND SDL_MIXER_DEFINES MUSIC_OGG) list(APPEND SDL_MIXER_DEFINES MUSIC_OGG)
if (SDL_DYNAMIC_LOAD)
get_filename_component(VORBISFILE_LIBRARY_NAME "${VORBISFILE_LIBRARY}" NAME_WE) get_filename_component(VORBISFILE_LIBRARY_NAME "${VORBISFILE_LIBRARY}" NAME_WE)
list(APPEND SDL_MIXER_LOAD_DEFINES -DOGG_DYNAMIC="${VORBISFILE_LIBRARY_NAME}${LIBRARY_SUFFIX}") list(APPEND SDL_MIXER_LOAD_DEFINES -DOGG_DYNAMIC="${VORBISFILE_LIBRARY_NAME}${LIBRARY_SUFFIX}")
endif() endif()
endif()
# Opus support # Opus support
if(SDL_MIXER_ENABLE_OPUS) if(SDL_MIXER_ENABLE_OPUS)
@ -56,9 +64,11 @@ if(SDL_MIXER_ENABLE_OPUS)
find_library(OPUSFILE_LIBRARY opusfile) find_library(OPUSFILE_LIBRARY opusfile)
list(APPEND SDL_MIXER_INCLUDES ${OPUS_INCLUDE_DIR}) list(APPEND SDL_MIXER_INCLUDES ${OPUS_INCLUDE_DIR})
list(APPEND SDL_MIXER_DEFINES MUSIC_OPUS) list(APPEND SDL_MIXER_DEFINES MUSIC_OPUS)
if (SDL_DYNAMIC_LOAD)
get_filename_component(OPUSFILE_LIBRARY_NAME "${OPUSFILE_LIBRARY}" NAME_WE) get_filename_component(OPUSFILE_LIBRARY_NAME "${OPUSFILE_LIBRARY}" NAME_WE)
list(APPEND SDL_MIXER_LOAD_DEFINES -DOPUS_DYNAMIC="${OPUSFILE_LIBRARY_NAME}${LIBRARY_SUFFIX}") list(APPEND SDL_MIXER_LOAD_DEFINES -DOPUS_DYNAMIC="${OPUSFILE_LIBRARY_NAME}${LIBRARY_SUFFIX}")
endif() endif()
endif()
add_library(SDL2_mixer add_library(SDL2_mixer
effect_position.c effect_position.c

View File

@ -1,9 +1,12 @@
Source: sdl2-mixer Source: sdl2-mixer
Version: 2.0.4-7 Version: 2.0.4-8
Homepage: https://www.libsdl.org/projects/SDL_mixer Homepage: https://www.libsdl.org/projects/SDL_mixer
Description: Multi-channel audio mixer library for SDL. Description: Multi-channel audio mixer library for SDL.
Build-Depends: sdl2 Build-Depends: sdl2
Feature: dynamic-load
Description: Load plugins with dynamic call
Feature: libflac Feature: libflac
Description: Support for FLAC audio format. Description: Support for FLAC audio format.
Build-Depends: libflac Build-Depends: libflac

View File

@ -1,5 +1,5 @@
include(vcpkg_common_functions)
set(SDL2_MIXER_VERSION 2.0.4) set(SDL2_MIXER_VERSION 2.0.4)
vcpkg_download_distfile(ARCHIVE vcpkg_download_distfile(ARCHIVE
URLS "https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-${SDL2_MIXER_VERSION}.zip" URLS "https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-${SDL2_MIXER_VERSION}.zip"
FILENAME "SDL2_mixer-${SDL2_MIXER_VERSION}.zip" FILENAME "SDL2_mixer-${SDL2_MIXER_VERSION}.zip"
@ -11,15 +11,24 @@ vcpkg_extract_source_archive_ex(
ARCHIVE ${ARCHIVE} ARCHIVE ${ARCHIVE}
REF ${SDL2_MIXER_VERSION} REF ${SDL2_MIXER_VERSION}
) )
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) if ("dynamic-load" IN_LIST FEATURES)
set(LIBRARY_SUFFIX ${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}) if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
else() message("Building static library, disable dynamic loading")
set(LIBRARY_SUFFIX ${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}) elseif (NOT "mpg123" IN_LIST FEATURES
AND NOT "libflac" IN_LIST FEATURES
AND NOT "libmodplug" IN_LIST FEATURES
AND NOT "libvorbis" IN_LIST FEATURES
AND NOT "opusfile" IN_LIST FEATURES
)
message("No features selected, dynamic loading will not be enabled")
endif()
endif() endif()
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
dynamic-load SDL_DYNAMIC_LOAD
mpg123 SDL_MIXER_ENABLE_MP3 mpg123 SDL_MIXER_ENABLE_MP3
libflac SDL_MIXER_ENABLE_FLAC libflac SDL_MIXER_ENABLE_FLAC
libmodplug SDL_MIXER_ENABLE_MOD libmodplug SDL_MIXER_ENABLE_MOD
@ -32,7 +41,7 @@ vcpkg_configure_cmake(
PREFER_NINJA PREFER_NINJA
OPTIONS OPTIONS
${FEATURE_OPTIONS} ${FEATURE_OPTIONS}
-DLIBRARY_SUFFIX=${LIBRARY_SUFFIX} -DLIBRARY_SUFFIX=${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX} # It should always be dynamic suffix
OPTIONS_DEBUG OPTIONS_DEBUG
-DSDL_MIXER_SKIP_HEADERS=ON -DSDL_MIXER_SKIP_HEADERS=ON
) )