aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/alsa
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/alsa
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/alsa')
-rw-r--r--vcpkg/ports/alsa/fix-plugin-dir.patch47
-rw-r--r--vcpkg/ports/alsa/libdl.diff12
-rw-r--r--vcpkg/ports/alsa/portfile.cmake63
-rw-r--r--vcpkg/ports/alsa/usage4
-rw-r--r--vcpkg/ports/alsa/vcpkg-cmake-wrapper.cmake93
-rw-r--r--vcpkg/ports/alsa/vcpkg.json9
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"
+}