summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore8
-rwxr-xr-xenv/wsl/bootstrap-configuration.nix2
-rwxr-xr-xenv/wsl/flake.nix13
-rw-r--r--env/wsl/noto_cjk_no_variable.diff40
-rwxr-xr-xenv/wsl/wsl-dev-host.nix1
-rw-r--r--flake.lock6
-rw-r--r--flake.nix14
-rw-r--r--src/bimu/handlers/cdio.h17
-rw-r--r--src/bimu/handlers/cdio_server.c21
-rw-r--r--src/bimu/handlers/dvd.h14
-rw-r--r--src/bimu/handlers/dvd_server.c21
-rw-r--r--src/bimu/meson.build22
-rw-r--r--src/codec/meson.build9
-rw-r--r--src/fruits/sink/meson.build2
-rw-r--r--src/tree/meson.build2
-rw-r--r--subprojects/libcdio-paranoia.wrap8
-rw-r--r--subprojects/libdvdcss.wrap8
-rw-r--r--subprojects/libdvdnav.wrap8
-rw-r--r--subprojects/libdvdread.wrap8
-rw-r--r--subprojects/packagefiles/ffmpeg/meson.build8
-rw-r--r--subprojects/packagefiles/libcdio-paranoia/meson.build20
-rw-r--r--subprojects/packagefiles/libdvdcss/meson.build16
-rw-r--r--subprojects/packagefiles/libdvdnav/meson.build16
-rw-r--r--subprojects/packagefiles/libdvdread/meson.build16
24 files changed, 277 insertions, 23 deletions
diff --git a/.gitignore b/.gitignore
index e4bbbf0..8f48aae 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,8 +10,6 @@ old/
old_old/
subprojects/c89atomic/
subprojects/c89atomic.wrap
-subprojects/libcurl/
-subprojects/libcurl.wrap
subprojects/ffmpeg-*/
subprojects/glfw3/
subprojects/glfw3.wrap
@@ -20,6 +18,12 @@ subprojects/jansson.wrap
subprojects/libakiyo
subprojects/libalabaster
subprojects/libass/
+subprojects/libcdio-paranoia/
+subprojects/libcurl/
+subprojects/libcurl.wrap
+subprojects/libdvdcss/
+subprojects/libdvdnav/
+subprojects/libdvdread/
subprojects/libev-4.33/
subprojects/libev.wrap
subprojects/liblfds.wrap
diff --git a/env/wsl/bootstrap-configuration.nix b/env/wsl/bootstrap-configuration.nix
index 6439ba5..86464c8 100755
--- a/env/wsl/bootstrap-configuration.nix
+++ b/env/wsl/bootstrap-configuration.nix
@@ -3,7 +3,7 @@
imports = [ <nixos-wsl/modules> ];
wsl.enable = true;
- wsl.defaultUser = "nixos";
+ wsl.defaultUser = "john";
nix.settings.experimental-features = [ "nix-command" "flakes" ];
diff --git a/env/wsl/flake.nix b/env/wsl/flake.nix
index ca45951..577b607 100755
--- a/env/wsl/flake.nix
+++ b/env/wsl/flake.nix
@@ -9,8 +9,19 @@
};
outputs = { self, nixpkgs, home-manager, nixos-wsl }: {
- nixosConfigurations.wsl-dev = nixpkgs.lib.nixosSystem {
+ nixosConfigurations.wsl-dev = let
system = "x86_64-linux";
+ source-pkgs = nixpkgs.legacyPackages.${system};
+ nixpkgs-patched = source-pkgs.applyPatches {
+ name = "nixpkgs-patched";
+ src = nixpkgs;
+ patches = [
+ ./noto_cjk_no_variable.diff
+ ];
+ };
+ nixosSystem = import (nixpkgs-patched + "/nixos/lib/eval-config.nix");
+ in nixosSystem {
+ system = system;
modules = [
({ pkgs, ... }: { nixpkgs.overlays = [ ]; })
home-manager.nixosModules.home-manager {
diff --git a/env/wsl/noto_cjk_no_variable.diff b/env/wsl/noto_cjk_no_variable.diff
new file mode 100644
index 0000000..152c140
--- /dev/null
+++ b/env/wsl/noto_cjk_no_variable.diff
@@ -0,0 +1,40 @@
+diff --git a/pkgs/by-name/no/noto-fonts-cjk-sans/package.nix b/pkgs/by-name/no/noto-fonts-cjk-sans/package.nix
+index 5c7ab768..79981e27 100644
+--- a/pkgs/by-name/no/noto-fonts-cjk-sans/package.nix
++++ b/pkgs/by-name/no/noto-fonts-cjk-sans/package.nix
+@@ -13,12 +13,12 @@ stdenvNoCC.mkDerivation rec {
+ owner = "notofonts";
+ repo = "noto-cjk";
+ rev = "Sans${version}";
+- hash = "sha256-IgalJkiOAVjNxKaPAQWfb5hKeqclliR4qVXCq63FGWY=";
+- sparseCheckout = [ "Sans/Variable/OTC" ];
++ hash = "sha256-GXULnRPsIJRdiL3LdFtHbqTqSvegY2zodBxFm4P55to=";
++ sparseCheckout = [ "Sans/OTC" ];
+ };
+
+ installPhase = ''
+- install -m444 -Dt $out/share/fonts/opentype/noto-cjk Sans/Variable/OTC/*.otf.ttc
++ install -m444 -Dt $out/share/fonts/opentype/noto-cjk Sans/OTC/*.ttc
+ '';
+
+ passthru.tests.noto-fonts = nixosTests.noto-fonts;
+diff --git a/pkgs/by-name/no/noto-fonts-cjk-serif/package.nix b/pkgs/by-name/no/noto-fonts-cjk-serif/package.nix
+index d9fddcc6..55cde591 100644
+--- a/pkgs/by-name/no/noto-fonts-cjk-serif/package.nix
++++ b/pkgs/by-name/no/noto-fonts-cjk-serif/package.nix
+@@ -13,12 +13,12 @@ stdenvNoCC.mkDerivation rec {
+ owner = "notofonts";
+ repo = "noto-cjk";
+ rev = "Serif${version}";
+- hash = "sha256-GLjpTAiHfygj1J4AdUVDJh8kykkFOglq+h4kyat5W9s=";
+- sparseCheckout = [ "Serif/Variable/OTC" ];
++ hash = "sha256-ihbhbv875XEHupFUzIdEweukqEmwQXCXCiTG7qisE64=";
++ sparseCheckout = [ "Serif/OTC" ];
+ };
+
+ installPhase = ''
+- install -m444 -Dt $out/share/fonts/opentype/noto-cjk Serif/Variable/OTC/*.otf.ttc
++ install -m444 -Dt $out/share/fonts/opentype/noto-cjk Serif/OTC/*.ttc
+ '';
+
+ passthru.tests.noto-fonts = nixosTests.noto-fonts;
diff --git a/env/wsl/wsl-dev-host.nix b/env/wsl/wsl-dev-host.nix
index 6b6baea..ef7fbef 100755
--- a/env/wsl/wsl-dev-host.nix
+++ b/env/wsl/wsl-dev-host.nix
@@ -58,6 +58,7 @@ in {
vistafonts
noto-fonts
noto-fonts-extra
+ noto-fonts-cjk
noto-fonts-cjk-sans
noto-fonts-cjk-serif
noto-fonts-emoji-blob-bin
diff --git a/flake.lock b/flake.lock
index a0c3c97..c7d657f 100644
--- a/flake.lock
+++ b/flake.lock
@@ -20,11 +20,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1705677747,
- "narHash": "sha256-eyM3okYtMgYDgmYukoUzrmuoY4xl4FUujnsv/P6I/zI=",
+ "lastModified": 1706191920,
+ "narHash": "sha256-eLihrZAPZX0R6RyM5fYAWeKVNuQPYjAkCUBr+JNvtdE=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "bbe7d8f876fbbe7c959c90ba2ae2852220573261",
+ "rev": "ae5c332cbb5827f6b1f02572496b141021de335f",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 2be66b7..260f2f2 100644
--- a/flake.nix
+++ b/flake.nix
@@ -22,6 +22,10 @@
gcc13
nasm
pkg-config
+ autoconf
+ automake
+ autogen
+ libtool
ninja
meson
cmake
@@ -30,14 +34,18 @@
wayland-scanner
];
buildInputs = [
- curl
+ (curl.override { websocketSupport = true; })
jansson
ffmpeg_6-headless
libcdio
+ libcdio-paranoia
+ libdvdcss
+ libdvdread
+ libdvdnav
alsa-lib
pipewire
libpulseaudio
- #libplacebo
+ libplacebo
xxHash
lcms
shaderc
@@ -75,6 +83,7 @@
python3.pkgs.cython_3
python3.pkgs.setuptools
nodePackages.pyright
+ perl
asciidoctor
];
buildInputs = packages.default.buildInputs ++ [];
@@ -109,6 +118,7 @@
nativeBuildInputs = [
git
buildPackages.gcc
+ gdb
nasm
pkg-config
meson
diff --git a/src/bimu/handlers/cdio.h b/src/bimu/handlers/cdio.h
new file mode 100644
index 0000000..0f614af
--- /dev/null
+++ b/src/bimu/handlers/cdio.h
@@ -0,0 +1,17 @@
+#pragma once
+
+#include <cdio/paranoia/cdda.h>
+#include <cdio/cd_types.h>
+
+#include "../handler.h"
+
+struct bmu_cdio_server {
+ struct bmu_server_handler handler;
+};
+
+struct bmu_cdio_client {
+ struct bmu_client_handler handler;
+};
+
+struct bmu_server_handler *bmu_cdio_server_create(void);
+struct bmu_client_handler *bmu_cdio_client_create(void);
diff --git a/src/bimu/handlers/cdio_server.c b/src/bimu/handlers/cdio_server.c
new file mode 100644
index 0000000..151b94f
--- /dev/null
+++ b/src/bimu/handlers/cdio_server.c
@@ -0,0 +1,21 @@
+#include "cdio.h"
+
+static bool cdio_server_init(struct bmu_server_handler *handler, struct cch_handle *handle,
+ struct aki_packet_pool *pool)
+{
+ struct bmu_cdio_server *cdio = (struct bmu_cdio_server *)handler;
+ return true;
+}
+
+struct bmu_server_handler *bmu_cdio_server_create(void)
+{
+ struct bmu_cdio_server *cdio = al_alloc_object(struct bmu_cdio_server);
+ cdio->handler.init = cdio_server_init;
+// cdio->handler.write_info = cdio_server_write_info;
+// cdio->handler.subscribe = cdio_server_subscribe;
+// cdio->handler.get_duration = cdio_server_get_duration;
+// cdio->handler.seek = cdio_server_seek;
+// cdio->handler.step = cdio_server_step;
+// cdio->handler.free = cdio_server_free;
+ return (struct bmu_server_handler *)cdio;
+}
diff --git a/src/bimu/handlers/dvd.h b/src/bimu/handlers/dvd.h
new file mode 100644
index 0000000..db9bfe9
--- /dev/null
+++ b/src/bimu/handlers/dvd.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../handler.h"
+
+struct bmu_dvd_server {
+ struct bmu_server_handler handler;
+};
+
+struct bmu_dvd_client {
+ struct bmu_client_handler handler;
+};
+
+struct bmu_server_handler *bmu_dvd_server_create(void);
+struct bmu_client_handler *bmu_dvd_client_create(void);
diff --git a/src/bimu/handlers/dvd_server.c b/src/bimu/handlers/dvd_server.c
new file mode 100644
index 0000000..ea3a9d9
--- /dev/null
+++ b/src/bimu/handlers/dvd_server.c
@@ -0,0 +1,21 @@
+#include "dvd.h"
+
+static bool dvd_server_init(struct bmu_server_handler *handler, struct cch_handle *handle,
+ struct aki_packet_pool *pool)
+{
+ struct bmu_dvd_server *dvd = (struct bmu_dvd_server *)handler;
+ return true;
+}
+
+struct bmu_server_handler *bmu_dvd_server_create(void)
+{
+ struct bmu_dvd_server *dvd = al_alloc_object(struct bmu_dvd_server);
+ dvd->handler.init = dvd_server_init;
+// dvd->handler.write_info = dvd_server_write_info;
+// dvd->handler.subscribe = dvd_server_subscribe;
+// dvd->handler.get_duration = dvd_server_get_duration;
+// dvd->handler.seek = dvd_server_seek;
+// dvd->handler.step = dvd_server_step;
+// dvd->handler.free = dvd_server_free;
+ return (struct bmu_server_handler *)dvd;
+}
diff --git a/src/bimu/meson.build b/src/bimu/meson.build
index c7de266..cc1ff43 100644
--- a/src/bimu/meson.build
+++ b/src/bimu/meson.build
@@ -2,12 +2,28 @@ bimu_server_src = [
'server.c',
'handlers/codec_server.c'
]
-
bimu_client_src = [
'client.c',
'vcr.c',
'handlers/codec_client.c'
]
+bimu_server_deps = [av_server]
+bimu_client_deps = [av_client]
+
+#libcdio_paranoia = dependency('libcdio_paranoia', required: false, allow_fallback: true)
+#libcdio_cdda = dependency('libcdio_cdda', required: false, allow_fallback: true)
+#if libcdio_paranoia.found() and libcdio_cdda.found()
+# bimu_server_src += ['handlers/cdio_server.c']
+# bimu_server_deps += [libcdio_paranoia, libcdio_cdda]
+#endif
+#
+#libdvdcss = dependency('libdvdcss', required: false, allow_fallback: true)
+#libdvdread = dependency('libdvdread', required: false, allow_fallback: true)
+#libdvdnav = dependency('libdvdnav', required: false, allow_fallback: true)
+#if libdvdcss.found() and libdvdread.found() and libdvdnav.found()
+# bimu_server_src += ['handlers/dvd_server.c']
+# bimu_server_deps += [libdvdcss]
+#endif
-bimu_server = declare_dependency(sources: bimu_server_src)
-bimu_client = declare_dependency(sources: bimu_client_src)
+bimu_server = declare_dependency(sources: bimu_server_src, dependencies: bimu_server_deps)
+bimu_client = declare_dependency(sources: bimu_client_src, dependencies: bimu_client_deps)
diff --git a/src/codec/meson.build b/src/codec/meson.build
index 20524a4..4ca9c53 100644
--- a/src/codec/meson.build
+++ b/src/codec/meson.build
@@ -13,8 +13,8 @@ av_client_src = [
'libav/decoder.c',
'libav/resampler.c'
]
-av_ldflags = []
av_inc = []
+av_args = []
av_server_deps = []
av_client_deps = []
av_client_use_scaler = false
@@ -36,7 +36,6 @@ if not (libavutil.found() and libavformat.found() and libavcodec.found() and lib
libavcodec = av_proj.get_variable('avcodec')
libswresample = av_proj.get_variable('swresample')
libswscale = av_proj.get_variable('swscale')
- av_ldflags += ['-L' + av_proj.get_variable('av_lib_dir')]
# Only used to set include dirs for libav.
av_inc_dep = av_proj.get_variable('av_inc_dep')
av_server_deps += [av_inc_dep]
@@ -50,16 +49,16 @@ if not (libavutil.found() and libavformat.found() and libavcodec.found() and lib
endif
if libavutil.found() and libavformat.found() and libavcodec.found() and libswresample.found() and libswscale.found()
+ av_args += ['-DHAVE_FFMPEG']
av_server_deps += [libavutil, libavformat, libavcodec]
av_client_deps += [libavutil, libavformat, libavcodec, libswresample]
if av_client_use_scaler
av_client_deps += [libswscale]
endif
av_server = declare_dependency(sources: av_server_src, dependencies: av_server_deps,
- include_directories: av_inc, link_args: av_ldflags)
+ include_directories: av_inc, compile_args: av_args)
av_client = declare_dependency(sources: av_client_src, dependencies: av_client_deps,
- include_directories: av_inc, link_args: av_ldflags)
- add_project_arguments('-DHAVE_FFMPEG', language: ['c', 'cpp'])
+ include_directories: av_inc, compile_args: av_args)
endif
stb_image = declare_dependency(sources: ['stb_image/impl.c'],
diff --git a/src/fruits/sink/meson.build b/src/fruits/sink/meson.build
index e4f00e6..3986d7d 100644
--- a/src/fruits/sink/meson.build
+++ b/src/fruits/sink/meson.build
@@ -1,5 +1,5 @@
sink_src = ['sink.c']
-sink_deps = [common_deps, av_client, buffer, render, screen, mixer, libsink]
+sink_deps = [common_deps, buffer, render, screen, mixer, libsink]
sink_args = []
use_tui = false
diff --git a/src/tree/meson.build b/src/tree/meson.build
index bb049cb..3aba0a6 100644
--- a/src/tree/meson.build
+++ b/src/tree/meson.build
@@ -3,5 +3,5 @@ tree_src = [
'resource_manager.c',
'list.c'
]
-tree_deps = [common_deps, shoki, cache, av_server, bimu_server]
+tree_deps = [common_deps, shoki, cache, bimu_server]
executable('tree', sources: tree_src, dependencies: tree_deps)
diff --git a/subprojects/libcdio-paranoia.wrap b/subprojects/libcdio-paranoia.wrap
new file mode 100644
index 0000000..3ff07e8
--- /dev/null
+++ b/subprojects/libcdio-paranoia.wrap
@@ -0,0 +1,8 @@
+[wrap-git]
+url = https://github.com/rocky/libcdio-paranoia.git
+revision = 36534131998286bb41072e5b666f174d69d9281b
+depth = 1
+patch_directory = libcdio-paranoia
+
+[provide]
+dependency_names = libcdio_paranoia, libcdio_cdda
diff --git a/subprojects/libdvdcss.wrap b/subprojects/libdvdcss.wrap
new file mode 100644
index 0000000..acbc6f2
--- /dev/null
+++ b/subprojects/libdvdcss.wrap
@@ -0,0 +1,8 @@
+[wrap-git]
+url = https://code.videolan.org/videolan/libdvdcss.git
+revision = d0b6a291c24eda3727ad5c7a14956fc1fc82446d
+depth = 1
+patch_directory = libdvdcss
+
+[provide]
+dependency_names = libdvdcss
diff --git a/subprojects/libdvdnav.wrap b/subprojects/libdvdnav.wrap
new file mode 100644
index 0000000..6bc37a3
--- /dev/null
+++ b/subprojects/libdvdnav.wrap
@@ -0,0 +1,8 @@
+[wrap-git]
+url = https://code.videolan.org/videolan/libdvdnav.git
+revision = 9831fe01488bd0e9d1e3521195da6940cd8415eb
+depth = 1
+patch_directory = libdvdnav
+
+[provide]
+dependency_names = libdvdnav
diff --git a/subprojects/libdvdread.wrap b/subprojects/libdvdread.wrap
new file mode 100644
index 0000000..932fd51
--- /dev/null
+++ b/subprojects/libdvdread.wrap
@@ -0,0 +1,8 @@
+[wrap-git]
+url = https://code.videolan.org/videolan/libdvdread.git
+revision = ba2227bb8619724c2bfadcc4d8f25d741a3398ac
+depth = 1
+patch_directory = libdvdread
+
+[provide]
+dependency_names = libdvdread
diff --git a/subprojects/packagefiles/ffmpeg/meson.build b/subprojects/packagefiles/ffmpeg/meson.build
index cff10e9..6700f5d 100644
--- a/subprojects/packagefiles/ffmpeg/meson.build
+++ b/subprojects/packagefiles/ffmpeg/meson.build
@@ -55,14 +55,16 @@ ext_proj = import('unstable-external_project')
proj = ext_proj.add_project('configure',
configure_options: [
'--prefix=@PREFIX@',
- '--libdir=@PREFIX@@LIBDIR@',
- '--incdir=@PREFIX@@INCLUDEDIR@',
+ '--libdir=@PREFIX@/@LIBDIR@',
+ '--incdir=@PREFIX@/@INCLUDEDIR@',
'--enable-pic',
'--enable-static',
'--disable-shared',
'--disable-all',
'--disable-autodetect',
'--disable-everything',
+ '--disable-programs',
+ '--disable-doc',
'--disable-htmlpages',
'--disable-manpages',
'--disable-podpages',
@@ -105,6 +107,4 @@ avformat = proj.dependency('avformat')
avcodec = proj.dependency('avcodec')
swresample = proj.dependency('swresample')
swscale = proj.dependency('swscale')
-
av_inc_dep = declare_dependency(include_directories: include_directories('.', 'build/'))
-av_lib_dir = join_paths(meson.project_build_root(), 'dist/usr/locallib')
diff --git a/subprojects/packagefiles/libcdio-paranoia/meson.build b/subprojects/packagefiles/libcdio-paranoia/meson.build
new file mode 100644
index 0000000..45b2c12
--- /dev/null
+++ b/subprojects/packagefiles/libcdio-paranoia/meson.build
@@ -0,0 +1,20 @@
+project('libcdio-paranoia', 'c', version: 'git-3653413', meson_version: '>=0.57.0')
+
+ext_proj = import('unstable-external_project')
+
+run_command('autoreconf', '-fi', check: true)
+
+proj = ext_proj.add_project('configure',
+ configure_options: [
+ '--prefix=@PREFIX@',
+ '--libdir=@PREFIX@/@LIBDIR@',
+ '--includedir=@PREFIX@/@INCLUDEDIR@',
+ '--config-cache',
+ '--disable-cxx',
+ '--disable-example-progs'
+ ],
+ cross_configure_options: [],
+ verbose: true)
+
+meson.override_dependency('libcdio_paranoia', proj.dependency('cdio_paranoia'))
+meson.override_dependency('libcdio_cdda', proj.dependency('cdio_cdda'))
diff --git a/subprojects/packagefiles/libdvdcss/meson.build b/subprojects/packagefiles/libdvdcss/meson.build
new file mode 100644
index 0000000..caa0deb
--- /dev/null
+++ b/subprojects/packagefiles/libdvdcss/meson.build
@@ -0,0 +1,16 @@
+project('libdvdcss', 'c', version: 'git-d0b6a29', meson_version: '>=0.57.0')
+
+ext_proj = import('unstable-external_project')
+
+run_command('autoreconf', '-fi', check: true)
+
+proj = ext_proj.add_project('configure',
+ configure_options: [
+ '--prefix=@PREFIX@',
+ '--libdir=@PREFIX@/@LIBDIR@',
+ '--includedir=@PREFIX@/@INCLUDEDIR@'
+ ],
+ cross_configure_options: [],
+ verbose: true)
+
+meson.override_dependency('libdvdcss', proj.dependency('dvdcss'))
diff --git a/subprojects/packagefiles/libdvdnav/meson.build b/subprojects/packagefiles/libdvdnav/meson.build
new file mode 100644
index 0000000..3d220da
--- /dev/null
+++ b/subprojects/packagefiles/libdvdnav/meson.build
@@ -0,0 +1,16 @@
+project('libdvdnav', 'c', version: 'git-9831fe0', meson_version: '>=0.57.0')
+
+ext_proj = import('unstable-external_project')
+
+run_command('autoreconf', '-fi', check: true)
+
+proj = ext_proj.add_project('configure',
+ configure_options: [
+ '--prefix=@PREFIX@',
+ '--libdir=@PREFIX@/@LIBDIR@',
+ '--includedir=@PREFIX@/@INCLUDEDIR@'
+ ],
+ cross_configure_options: [],
+ verbose: true)
+
+meson.override_dependency('libdvdnav', proj.dependency('dvdnav'))
diff --git a/subprojects/packagefiles/libdvdread/meson.build b/subprojects/packagefiles/libdvdread/meson.build
new file mode 100644
index 0000000..8511017
--- /dev/null
+++ b/subprojects/packagefiles/libdvdread/meson.build
@@ -0,0 +1,16 @@
+project('libdvdread', 'c', version: 'git-ba2227b', meson_version: '>=0.57.0')
+
+ext_proj = import('unstable-external_project')
+
+run_command('autoreconf', '-fi', check: true)
+
+proj = ext_proj.add_project('configure',
+ configure_options: [
+ '--prefix=@PREFIX@',
+ '--libdir=@PREFIX@/@LIBDIR@',
+ '--includedir=@PREFIX@/@INCLUDEDIR@'
+ ],
+ cross_configure_options: [],
+ verbose: true)
+
+meson.override_dependency('libdvdread', proj.dependency('dvdread'))