alsa-lib ported to zig-build
This commit is contained in:
parent
165abc7fbe
commit
e91610bc54
6 changed files with 224 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
.zig-cache/
|
||||||
|
zig-out/
|
11
.mise.toml
Normal file
11
.mise.toml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
[tools]
|
||||||
|
zig = "0.15.1"
|
||||||
|
zls = "0.15.0"
|
||||||
|
pre-commit = "latest"
|
||||||
|
"ubi:DonIsaac/zlint" = "latest"
|
||||||
|
|
||||||
|
[hooks]
|
||||||
|
enter = 'echo use "nix develop" if you want to build'
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
experimental = true
|
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2025 Emil Lerch
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
0
README.md
Normal file
0
README.md
Normal file
172
build.zig
Normal file
172
build.zig
Normal file
|
@ -0,0 +1,172 @@
|
||||||
|
const std = @import("std");
|
||||||
|
|
||||||
|
pub fn build(b: *std.Build) void {
|
||||||
|
const target = b.standardTargetOptions(.{});
|
||||||
|
const optimize = b.standardOptimizeOption(.{});
|
||||||
|
|
||||||
|
const upstream = b.dependency("alsa-lib", .{});
|
||||||
|
|
||||||
|
// Create config header matching autotools output
|
||||||
|
const config = b.addConfigHeader(.{
|
||||||
|
.style = .blank,
|
||||||
|
.include_path = "config.h",
|
||||||
|
}, .{
|
||||||
|
.PACKAGE_NAME = "alsa-lib",
|
||||||
|
.VERSION = "1.2.14",
|
||||||
|
.HAVE_USELOCALE = 1,
|
||||||
|
.HAVE_EACCESS = 1,
|
||||||
|
.HAVE_ENDIAN_H = 1,
|
||||||
|
.HAVE_SYS_SHM_H = 1,
|
||||||
|
.HAVE_MALLOC_H = 1,
|
||||||
|
.HAVE_LFS = 1,
|
||||||
|
.HAVE_LIBDL = 1,
|
||||||
|
.PIC = 1,
|
||||||
|
.BUILD_PCM = "1",
|
||||||
|
.BUILD_MIXER = "1",
|
||||||
|
.BUILD_HWDEP = "1",
|
||||||
|
.ALSA_DEVICE_DIRECTORY = "/dev/snd/",
|
||||||
|
.ALSA_CONFIG_DIR = "/usr/share/alsa",
|
||||||
|
.ALSA_PLUGIN_DIR = "/usr/lib/alsa-lib",
|
||||||
|
.SND_MAX_CARDS = 32,
|
||||||
|
.__SYMBOL_PREFIX = "",
|
||||||
|
._GNU_SOURCE = 1,
|
||||||
|
.HAVE_GNU_LD = 1,
|
||||||
|
.HAVE_ELF = 1,
|
||||||
|
.HAVE_ASM_PREVIOUS_DIRECTIVE = 1,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Create version.h
|
||||||
|
const version_h = b.addWriteFiles();
|
||||||
|
_ = version_h.add("version.h",
|
||||||
|
\\/*
|
||||||
|
\\ * version.h
|
||||||
|
\\ */
|
||||||
|
\\
|
||||||
|
\\#define SND_LIB_MAJOR 1 /**< major number of library version */
|
||||||
|
\\#define SND_LIB_MINOR 2 /**< minor number of library version */
|
||||||
|
\\#define SND_LIB_SUBMINOR 14 /**< subminor number of library version */
|
||||||
|
\\#define SND_LIB_EXTRAVER 1000000 /**< extra version number, used mainly for betas */
|
||||||
|
\\/** library version */
|
||||||
|
\\#define SND_LIB_VER(maj, min, sub) (((maj)<<16)|((min)<<8)|(sub))
|
||||||
|
\\#define SND_LIB_VERSION SND_LIB_VER(SND_LIB_MAJOR, SND_LIB_MINOR, SND_LIB_SUBMINOR)
|
||||||
|
\\/** library version (string) */
|
||||||
|
\\#define SND_LIB_VERSION_STR "1.2.14"
|
||||||
|
\\
|
||||||
|
);
|
||||||
|
|
||||||
|
// Generate asoundlib.h
|
||||||
|
const asoundlib_h = b.addWriteFiles();
|
||||||
|
_ = asoundlib_h.add("asoundlib.h",
|
||||||
|
\\/*
|
||||||
|
\\ * ALSA library - main header file
|
||||||
|
\\ */
|
||||||
|
\\
|
||||||
|
\\#ifndef __ALSA_ASOUNDLIB_H
|
||||||
|
\\#define __ALSA_ASOUNDLIB_H
|
||||||
|
\\
|
||||||
|
\\#include <stdio.h>
|
||||||
|
\\#include <stdlib.h>
|
||||||
|
\\#include <string.h>
|
||||||
|
\\#include <fcntl.h>
|
||||||
|
\\#include <assert.h>
|
||||||
|
\\#include <endian.h>
|
||||||
|
\\#include <sys/poll.h>
|
||||||
|
\\#include <errno.h>
|
||||||
|
\\#include <stdint.h>
|
||||||
|
\\#include <sys/types.h>
|
||||||
|
\\#include <unistd.h>
|
||||||
|
\\
|
||||||
|
\\#include <alsa/asoundef.h>
|
||||||
|
\\#include <alsa/version.h>
|
||||||
|
\\#include <alsa/global.h>
|
||||||
|
\\#include <alsa/input.h>
|
||||||
|
\\#include <alsa/output.h>
|
||||||
|
\\#include <alsa/error.h>
|
||||||
|
\\#include <alsa/conf.h>
|
||||||
|
\\#include <alsa/control.h>
|
||||||
|
\\#include <alsa/pcm.h>
|
||||||
|
\\
|
||||||
|
\\#endif /* __ALSA_ASOUNDLIB_H */
|
||||||
|
\\
|
||||||
|
);
|
||||||
|
|
||||||
|
const lib = b.addLibrary(.{
|
||||||
|
.name = "asound",
|
||||||
|
.linkage = .static,
|
||||||
|
.root_module = b.createModule(.{
|
||||||
|
.target = target,
|
||||||
|
.optimize = optimize,
|
||||||
|
.link_libc = true,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
lib.addConfigHeader(config);
|
||||||
|
lib.addIncludePath(upstream.path("include"));
|
||||||
|
lib.addIncludePath(version_h.getDirectory());
|
||||||
|
lib.addIncludePath(asoundlib_h.getDirectory());
|
||||||
|
|
||||||
|
// Create alsa as symlink for the include directory. Not sure why upstream
|
||||||
|
// does this, but since we're not using their scripts, we need to do that
|
||||||
|
// as well
|
||||||
|
const create_symlink = b.addSystemCommand(&.{ "sh", "-c", "rm -f alsa; ln -sf . alsa" });
|
||||||
|
create_symlink.setCwd(upstream.path("include"));
|
||||||
|
lib.step.dependOn(&create_symlink.step);
|
||||||
|
|
||||||
|
lib.addCSourceFiles(.{
|
||||||
|
.root = upstream.path(""),
|
||||||
|
.files = &.{
|
||||||
|
"src/conf.c",
|
||||||
|
"src/confeval.c",
|
||||||
|
"src/confmisc.c",
|
||||||
|
"src/input.c",
|
||||||
|
"src/output.c",
|
||||||
|
"src/async.c",
|
||||||
|
"src/error.c",
|
||||||
|
"src/dlmisc.c",
|
||||||
|
"src/socket.c",
|
||||||
|
"src/shmarea.c",
|
||||||
|
"src/userfile.c",
|
||||||
|
"src/names.c",
|
||||||
|
"src/control/control.c",
|
||||||
|
"src/control/control_hw.c",
|
||||||
|
"src/control/cards.c",
|
||||||
|
"src/control/namehint.c",
|
||||||
|
"src/control/hcontrol.c",
|
||||||
|
"src/control/tlv.c",
|
||||||
|
"src/control/setup.c",
|
||||||
|
"src/control/ctlparse.c",
|
||||||
|
"src/control/eld.c",
|
||||||
|
"src/pcm/pcm.c",
|
||||||
|
"src/pcm/pcm_hw.c",
|
||||||
|
"src/pcm/pcm_params.c",
|
||||||
|
"src/pcm/pcm_misc.c",
|
||||||
|
"src/pcm/pcm_mmap.c",
|
||||||
|
"src/pcm/mask.c",
|
||||||
|
"src/pcm/interval.c",
|
||||||
|
},
|
||||||
|
.flags = &.{
|
||||||
|
"-D_GNU_SOURCE",
|
||||||
|
"-DALSA_LIBRARY_BUILD",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
lib.installHeadersDirectory(upstream.path("include"), "alsa", .{
|
||||||
|
.include_extensions = &.{
|
||||||
|
"asoundef.h",
|
||||||
|
"version.h",
|
||||||
|
"global.h",
|
||||||
|
"input.h",
|
||||||
|
"output.h",
|
||||||
|
"error.h",
|
||||||
|
"conf.h",
|
||||||
|
"control.h",
|
||||||
|
"pcm.h",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Install generated asoundlib.h and version.h
|
||||||
|
lib.installHeader(asoundlib_h.getDirectory().path(b, "asoundlib.h"), "alsa/asoundlib.h");
|
||||||
|
lib.installHeader(version_h.getDirectory().path(b, "version.h"), "alsa/version.h");
|
||||||
|
|
||||||
|
b.installArtifact(lib);
|
||||||
|
}
|
18
build.zig.zon
Normal file
18
build.zig.zon
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
.{
|
||||||
|
.name = .alsa,
|
||||||
|
.version = "1.2.14",
|
||||||
|
.minimum_zig_version = "0.15.1",
|
||||||
|
.fingerprint = 0xddb406c516c1eb8d,
|
||||||
|
.dependencies = .{
|
||||||
|
.@"alsa-lib" = .{
|
||||||
|
.url = "git+https://github.com/alsa-project/alsa-lib?ref=v1.2.14#81d70a27136840fa8fb1bec6eb8e04fc1475a380",
|
||||||
|
.hash = "N-V-__8AACPMQgBfqlZq9Kx2qUwCMrZVkl-5dDd5bVDiF06E",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.paths = .{
|
||||||
|
"LICENSE",
|
||||||
|
"README.md",
|
||||||
|
"build.zig",
|
||||||
|
"build.zig.zon",
|
||||||
|
},
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue