diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/alsa | |
Diffstat (limited to 'vcpkg/ports/alsa')
| -rw-r--r-- | vcpkg/ports/alsa/fix-plugin-dir.patch | 47 | ||||
| -rw-r--r-- | vcpkg/ports/alsa/libdl.diff | 12 | ||||
| -rw-r--r-- | vcpkg/ports/alsa/portfile.cmake | 63 | ||||
| -rw-r--r-- | vcpkg/ports/alsa/usage | 4 | ||||
| -rw-r--r-- | vcpkg/ports/alsa/vcpkg-cmake-wrapper.cmake | 93 | ||||
| -rw-r--r-- | vcpkg/ports/alsa/vcpkg.json | 9 |
6 files changed, 228 insertions, 0 deletions
diff --git a/vcpkg/ports/alsa/fix-plugin-dir.patch b/vcpkg/ports/alsa/fix-plugin-dir.patch new file mode 100644 index 0000000..9194a90 --- /dev/null +++ b/vcpkg/ports/alsa/fix-plugin-dir.patch @@ -0,0 +1,47 @@ +diff --git a/src/dlmisc.c b/src/dlmisc.c +index f64c716..a413233 100644 +--- a/src/dlmisc.c ++++ b/src/dlmisc.c +@@ -34,6 +34,9 @@ + #endif + #include <limits.h> + ++#include <sys/types.h> ++#include <dirent.h> ++ + #if defined(HAVE_LIBDL) && defined(__GLIBC__) && !defined(__UCLIBC__) + #define DL_ORIGIN_AVAILABLE 1 + #endif +@@ -79,6 +82,16 @@ static void snd_dlinfo_origin(char *path, size_t path_len) + #endif + } + ++static unsigned int checkExist(const char* dirName) { ++ DIR* dir = opendir(dirName); ++ if(dir) { ++ closedir(dir); ++ return 1; ++ } else { ++ return 0; ++ } ++} ++ + /** + * + * \brief Compose the dynamic path +@@ -94,8 +107,14 @@ int snd_dlpath(char *path, size_t path_len, const char *name) + const char *env = getenv("ALSA_PLUGIN_DIR"); + if (env) { + snd_plugin_dir = strdup(env); ++ } else if(checkExist(ALSA_PLUGIN_DIR) ) { ++ snd_plugin_dir = strdup(ALSA_PLUGIN_DIR); ++ } else if(sizeof(void*) == 8 && checkExist("/usr/lib64/alsa-lib") ) { ++ snd_plugin_dir = strdup("/usr/lib64/alsa-lib"); ++ } else if(sizeof(void*) == 4 && checkExist("/usr/lib32/alsa-lib") ) { ++ snd_plugin_dir = strdup("/usr/lib32/alsa-lib"); + } else { +- snd_dlinfo_origin(path, path_len); ++ snd_plugin_dir = strdup("/usr/lib/alsa-lib"); + } + snd_plugin_dir_set = 1; + } diff --git a/vcpkg/ports/alsa/libdl.diff b/vcpkg/ports/alsa/libdl.diff new file mode 100644 index 0000000..f2d721b --- /dev/null +++ b/vcpkg/ports/alsa/libdl.diff @@ -0,0 +1,12 @@ +diff --git a/configure.ac b/configure.ac +index 7a152a4..324adf8 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -261,6 +261,7 @@ HAVE_LIBDL= + if test "$have_libdl" = "yes"; then + AC_SEARCH_LIBS([dlsym], [dl], [HAVE_LIBDL="yes"]) + if test "$HAVE_LIBDL" = "yes" ; then ++ ALSA_DEPLIBS="$ALSA_DEPLIBS -ldl" + AC_DEFINE([HAVE_LIBDL], 1, [Have libdl]) + fi + else diff --git a/vcpkg/ports/alsa/portfile.cmake b/vcpkg/ports/alsa/portfile.cmake new file mode 100644 index 0000000..499b2c4 --- /dev/null +++ b/vcpkg/ports/alsa/portfile.cmake @@ -0,0 +1,63 @@ +message( +"alsa currently requires the following programs from the system package manager: + autoconf autoheader aclocal automake libtoolize +On Debian and Ubuntu derivatives: + sudo apt install autoconf libtool +On recent Red Hat and Fedora derivatives: + sudo dnf install autoconf libtool +On Arch Linux and derivatives: + sudo pacman -S autoconf automake libtool +On Alpine: + apk add autoconf automake libtool" +) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO alsa-project/alsa-lib + REF "v${VERSION}" + SHA512 c28e9fbd2cdf8f6482ed8fb1d48235441e6de9939406b7e1d2b595a9c6587c39e408dd892bca55af0e8e892b30622d89e796fbff2c0bde67f730a34be2017aa1 + HEAD_REF master + PATCHES + fix-plugin-dir.patch + libdl.diff +) + +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(ALSA_PLUGIN_DIR "/usr/lib/x86_64-linux-gnu/alsa-lib") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(ALSA_PLUGIN_DIR "/usr/lib/aarch64-linux-gnu/alsa-lib") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") + set(ALSA_PLUGIN_DIR "/usr/lib/arm-linux-gnueabihf/alsa-lib") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "s390x") + set(ALSA_PLUGIN_DIR "/usr/lib/s390x-linux-gnu/alsa-lib") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "ppc64le") + set(ALSA_PLUGIN_DIR "/usr/lib/powerpc64le-linux-gnu/alsa-lib") +else() + set(ALSA_PLUGIN_DIR "/usr/lib/alsa-lib") +endif() +set(ALSA_CONFIG_DIR "/usr/share/alsa") + +vcpkg_configure_make( + SOURCE_PATH "${SOURCE_PATH}" + AUTOCONFIG + OPTIONS + ${BUILD_OPTS} + --disable-python + "--with-configdir=${ALSA_CONFIG_DIR}" + "--with-plugindir=${ALSA_PLUGIN_DIR}" +) + +vcpkg_install_make() +vcpkg_fixup_pkgconfig() + +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/debug/share" + "${CURRENT_PACKAGES_DIR}/debug/tools/alsa/debug" +) + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") + +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") diff --git a/vcpkg/ports/alsa/usage b/vcpkg/ports/alsa/usage new file mode 100644 index 0000000..7a69ce5 --- /dev/null +++ b/vcpkg/ports/alsa/usage @@ -0,0 +1,4 @@ +alsa is compatible with built-in CMake targets: + + find_package(ALSA REQUIRED) + target_link_libraries(main PRIVATE ALSA::ALSA) # since CMake 3.12 diff --git a/vcpkg/ports/alsa/vcpkg-cmake-wrapper.cmake b/vcpkg/ports/alsa/vcpkg-cmake-wrapper.cmake new file mode 100644 index 0000000..490d45d --- /dev/null +++ b/vcpkg/ports/alsa/vcpkg-cmake-wrapper.cmake @@ -0,0 +1,93 @@ +find_path( + ALSA_INCLUDE_DIR + NAMES alsa/asoundlib.h + PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include" + NO_DEFAULT_PATH +) + +find_library( + ALSA_LIBRARY_DEBUG + NAMES asound + PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib" + NO_DEFAULT_PATH +) + +find_library( + ALSA_LIBRARY_RELEASE + NAMES asound + PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib" + NO_DEFAULT_PATH +) + +include(SelectLibraryConfigurations) +select_library_configurations(ALSA) +unset(ALSA_FOUND) +set(ALSA_LIBRARY "${ALSA_LIBRARY}" CACHE INTERNAL "") + +_find_package(${ARGS}) + +if(TARGET ALSA::ALSA) + if(ALSA_LIBRARY_DEBUG) + set_property( + TARGET ALSA::ALSA + APPEND + PROPERTY IMPORTED_CONFIGURATIONS DEBUG + ) + set_target_properties( + ALSA::ALSA + PROPERTIES + IMPORTED_LOCATION_DEBUG "${ALSA_LIBRARY_DEBUG}" + ) + endif() + if(ALSA_LIBRARY_RELEASE) + set_property( + TARGET ALSA::ALSA + APPEND + PROPERTY IMPORTED_CONFIGURATIONS RELEASE + ) + set_target_properties( + ALSA::ALSA + PROPERTIES + IMPORTED_LOCATION_RELEASE "${ALSA_LIBRARY_RELEASE}" + ) + endif() + + find_library(Z_VCPKG_HAS_LIBM NAMES m) + if(Z_VCPKG_HAS_LIBM) + list(APPEND ALSA_LIBRARIES m) + set_property( + TARGET ALSA::ALSA + APPEND + PROPERTY INTERFACE_LINK_LIBRARIES m + ) + endif() + + if(CMAKE_DL_LIBS) + list(APPEND ALSA_LIBRARIES ${CMAKE_DL_LIBS}) + set_property( + TARGET ALSA::ALSA + APPEND + PROPERTY INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS} + ) + endif() + + find_package(Threads) + if(TARGET Threads::Threads) + list(APPEND ALSA_LIBRARIES Threads::Threads) + set_property( + TARGET ALSA::ALSA + APPEND + PROPERTY INTERFACE_LINK_LIBRARIES Threads::Threads + ) + endif() + + find_library(Z_VCPKG_HAS_LIBRT NAMES rt) + if(Z_VCPKG_HAS_LIBRT) + list(APPEND ALSA_LIBRARIES rt) + set_property( + TARGET ALSA::ALSA + APPEND + PROPERTY INTERFACE_LINK_LIBRARIES rt + ) + endif() +endif() diff --git a/vcpkg/ports/alsa/vcpkg.json b/vcpkg/ports/alsa/vcpkg.json new file mode 100644 index 0000000..fd1a6b1 --- /dev/null +++ b/vcpkg/ports/alsa/vcpkg.json @@ -0,0 +1,9 @@ +{ + "name": "alsa", + "version": "1.2.14", + "port-version": 1, + "description": "The Advanced Linux Sound Architecture (ALSA) - library", + "homepage": "https://www.alsa-project.org/", + "license": "LGPL-2.1-or-later", + "supports": "linux | android" +} |