aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>2020-01-28 06:21:09 +0800
committerVictor Romero <romerosanchezv@gmail.com>2020-01-27 14:21:09 -0800
commit53f1ae86d038c0ccf7edbbcfda1eaf6c6d271e9e (patch)
tree764e778cfe0701692eba113e1834900d6d204c13
parentebda0b9fc2533cf1d44c57840d595dfe90de2359 (diff)
downloadvcpkg-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.txt30
-rw-r--r--ports/sdl2-mixer/CONTROL5
-rw-r--r--ports/sdl2-mixer/portfile.cmake23
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
)