diff options
| author | Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com> | 2020-01-28 06:21:09 +0800 |
|---|---|---|
| committer | Victor Romero <romerosanchezv@gmail.com> | 2020-01-27 14:21:09 -0800 |
| commit | 53f1ae86d038c0ccf7edbbcfda1eaf6c6d271e9e (patch) | |
| tree | 764e778cfe0701692eba113e1834900d6d204c13 | |
| parent | ebda0b9fc2533cf1d44c57840d595dfe90de2359 (diff) | |
| download | vcpkg-53f1ae86d038c0ccf7edbbcfda1eaf6c6d271e9e.tar.gz vcpkg-53f1ae86d038c0ccf7edbbcfda1eaf6c6d271e9e.zip | |
[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
| -rw-r--r-- | ports/sdl2-mixer/CMakeLists.txt | 30 | ||||
| -rw-r--r-- | ports/sdl2-mixer/CONTROL | 5 | ||||
| -rw-r--r-- | ports/sdl2-mixer/portfile.cmake | 23 |
3 files changed, 40 insertions, 18 deletions
diff --git a/ports/sdl2-mixer/CMakeLists.txt b/ports/sdl2-mixer/CMakeLists.txt index 08190988e..57c840ea1 100644 --- a/ports/sdl2-mixer/CMakeLists.txt +++ b/ports/sdl2-mixer/CMakeLists.txt @@ -16,8 +16,10 @@ if(SDL_MIXER_ENABLE_MP3) find_library(MPG123_LIBRARY NAMES libmpg123 mpg123) list(APPEND SDL_MIXER_INCLUDES ${MPG123_INCLUDE_DIR}) list(APPEND SDL_MIXER_DEFINES MUSIC_MP3_MPG123) - get_filename_component(MPG123_LIBRARY_NAME "${MPG123_LIBRARY}" NAME_WE) - list(APPEND SDL_MIXER_LOAD_DEFINES -DMPG123_DYNAMIC="${MPG123_LIBRARY_NAME}${LIBRARY_SUFFIX}") + if (SDL_DYNAMIC_LOAD) + get_filename_component(MPG123_LIBRARY_NAME "${MPG123_LIBRARY}" NAME_WE) + list(APPEND SDL_MIXER_LOAD_DEFINES -DMPG123_DYNAMIC="${MPG123_LIBRARY_NAME}${LIBRARY_SUFFIX}") + endif() endif() # FLAC support @@ -26,8 +28,10 @@ if(SDL_MIXER_ENABLE_FLAC) find_library(FLAC_LIBRARY FLAC) list(APPEND SDL_MIXER_INCLUDES ${FLAC_INCLUDE_DIR}) list(APPEND SDL_MIXER_DEFINES MUSIC_FLAC) - get_filename_component(FLAC_LIBRARY_NAME "${FLAC_LIBRARY}" NAME_WE) - list(APPEND SDL_MIXER_LOAD_DEFINES -DFLAC_DYNAMIC="${FLAC_LIBRARY_NAME}${LIBRARY_SUFFIX}") + if (SDL_DYNAMIC_LOAD) + get_filename_component(FLAC_LIBRARY_NAME "${FLAC_LIBRARY}" NAME_WE) + list(APPEND SDL_MIXER_LOAD_DEFINES -DFLAC_DYNAMIC="${FLAC_LIBRARY_NAME}${LIBRARY_SUFFIX}") + endif() endif() # MOD support @@ -36,8 +40,10 @@ if(SDL_MIXER_ENABLE_MOD) find_library(MODPLUG_LIBRARY modplug) list(APPEND SDL_MIXER_INCLUDES ${MODPLUG_INCLUDE_DIR}) list(APPEND SDL_MIXER_DEFINES MUSIC_MOD_MODPLUG) - get_filename_component(MODPLUG_LIBRARY_NAME "${MODPLUG_LIBRARY}" NAME_WE) - list(APPEND SDL_MIXER_LOAD_DEFINES -DMODPLUG_DYNAMIC="${MODPLUG_LIBRARY_NAME}${LIBRARY_SUFFIX}") + if (SDL_DYNAMIC_LOAD) + get_filename_component(MODPLUG_LIBRARY_NAME "${MODPLUG_LIBRARY}" NAME_WE) + list(APPEND SDL_MIXER_LOAD_DEFINES -DMODPLUG_DYNAMIC="${MODPLUG_LIBRARY_NAME}${LIBRARY_SUFFIX}") + endif() endif() # Ogg-Vorbis support @@ -46,8 +52,10 @@ if(SDL_MIXER_ENABLE_OGGVORBIS) find_library(VORBISFILE_LIBRARY vorbisfile) list(APPEND SDL_MIXER_INCLUDES ${VORBIS_INCLUDE_DIR}) list(APPEND SDL_MIXER_DEFINES MUSIC_OGG) - get_filename_component(VORBISFILE_LIBRARY_NAME "${VORBISFILE_LIBRARY}" NAME_WE) - list(APPEND SDL_MIXER_LOAD_DEFINES -DOGG_DYNAMIC="${VORBISFILE_LIBRARY_NAME}${LIBRARY_SUFFIX}") + if (SDL_DYNAMIC_LOAD) + get_filename_component(VORBISFILE_LIBRARY_NAME "${VORBISFILE_LIBRARY}" NAME_WE) + list(APPEND SDL_MIXER_LOAD_DEFINES -DOGG_DYNAMIC="${VORBISFILE_LIBRARY_NAME}${LIBRARY_SUFFIX}") + endif() endif() # Opus support @@ -56,8 +64,10 @@ if(SDL_MIXER_ENABLE_OPUS) find_library(OPUSFILE_LIBRARY opusfile) list(APPEND SDL_MIXER_INCLUDES ${OPUS_INCLUDE_DIR}) list(APPEND SDL_MIXER_DEFINES MUSIC_OPUS) - get_filename_component(OPUSFILE_LIBRARY_NAME "${OPUSFILE_LIBRARY}" NAME_WE) - list(APPEND SDL_MIXER_LOAD_DEFINES -DOPUS_DYNAMIC="${OPUSFILE_LIBRARY_NAME}${LIBRARY_SUFFIX}") + if (SDL_DYNAMIC_LOAD) + get_filename_component(OPUSFILE_LIBRARY_NAME "${OPUSFILE_LIBRARY}" NAME_WE) + list(APPEND SDL_MIXER_LOAD_DEFINES -DOPUS_DYNAMIC="${OPUSFILE_LIBRARY_NAME}${LIBRARY_SUFFIX}") + endif() endif() add_library(SDL2_mixer diff --git a/ports/sdl2-mixer/CONTROL b/ports/sdl2-mixer/CONTROL index b2f731152..c3c60d942 100644 --- a/ports/sdl2-mixer/CONTROL +++ b/ports/sdl2-mixer/CONTROL @@ -1,9 +1,12 @@ Source: sdl2-mixer -Version: 2.0.4-7 +Version: 2.0.4-8 Homepage: https://www.libsdl.org/projects/SDL_mixer Description: Multi-channel audio mixer library for SDL. Build-Depends: sdl2 +Feature: dynamic-load +Description: Load plugins with dynamic call + Feature: libflac Description: Support for FLAC audio format. Build-Depends: libflac diff --git a/ports/sdl2-mixer/portfile.cmake b/ports/sdl2-mixer/portfile.cmake index 9777f0b90..74037d2f6 100644 --- a/ports/sdl2-mixer/portfile.cmake +++ b/ports/sdl2-mixer/portfile.cmake @@ -1,5 +1,5 @@ -include(vcpkg_common_functions) set(SDL2_MIXER_VERSION 2.0.4) + vcpkg_download_distfile(ARCHIVE URLS "https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-${SDL2_MIXER_VERSION}.zip" FILENAME "SDL2_mixer-${SDL2_MIXER_VERSION}.zip" @@ -11,15 +11,24 @@ vcpkg_extract_source_archive_ex( ARCHIVE ${ARCHIVE} REF ${SDL2_MIXER_VERSION} ) -file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) -if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) - set(LIBRARY_SUFFIX ${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX}) -else() - set(LIBRARY_SUFFIX ${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}) +if ("dynamic-load" IN_LIST FEATURES) + if (VCPKG_LIBRARY_LINKAGE STREQUAL static) + message("Building static library, disable dynamic loading") + 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() +file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) + vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + dynamic-load SDL_DYNAMIC_LOAD mpg123 SDL_MIXER_ENABLE_MP3 libflac SDL_MIXER_ENABLE_FLAC libmodplug SDL_MIXER_ENABLE_MOD @@ -32,7 +41,7 @@ vcpkg_configure_cmake( PREFER_NINJA OPTIONS ${FEATURE_OPTIONS} - -DLIBRARY_SUFFIX=${LIBRARY_SUFFIX} + -DLIBRARY_SUFFIX=${VCPKG_TARGET_SHARED_LIBRARY_SUFFIX} # It should always be dynamic suffix OPTIONS_DEBUG -DSDL_MIXER_SKIP_HEADERS=ON ) |
