feat(build): add avcpp deps

This commit is contained in:
Jonas Röger 2025-11-23 19:57:29 +01:00
parent 6f3d503f74
commit bb29832f71
Signed by: jonas
GPG Key ID: 4000EB35E1AE0F07
6 changed files with 114 additions and 3 deletions

View File

@ -14,15 +14,25 @@ pkg_check_modules(FFMPEG REQUIRED IMPORTED_TARGET
libavutil libavutil
) )
find_package(avcpp REQUIRED)
# ############################################################################## # ##############################################################################
add_executable(mosh-me-2
${PROJECT_SOURCE_DIR}/app/mosh-me-2.cpp
)
target_link_libraries(mosh-me-2 avcpp::avcpp spdlog::spdlog)
target_compile_features(mosh-me-2 PUBLIC cxx_std_23)
target_include_directories(mosh-me-2 PRIVATE ${PROJECT_SOURCE_DIR}/include)
add_executable(mosh-me ${PROJECT_SOURCE_DIR}/app/mosh-me.cpp) add_executable(mosh-me ${PROJECT_SOURCE_DIR}/app/mosh-me.cpp)
target_link_libraries(mosh-me PkgConfig::FFMPEG spdlog::spdlog) target_link_libraries(mosh-me PkgConfig::FFMPEG spdlog::spdlog)
target_compile_features(mosh-me PUBLIC cxx_std_23) target_compile_features(mosh-me PUBLIC cxx_std_23)
target_include_directories(mosh-me PRIVATE ${PROJECT_SOURCE_DIR}/include) target_include_directories(mosh-me PRIVATE ${PROJECT_SOURCE_DIR}/include)
install(TARGETS mosh-me)
install(TARGETS mosh-me mosh-me-2)
################################################################################ ################################################################################

3
app/mosh-me-2.cpp Normal file
View File

@ -0,0 +1,3 @@
#include <spdlog/spdlog.h>
int main() { spdlog::info("MM2"); }

View File

@ -10,6 +10,9 @@
overlays.mosh-me = final: prev: { overlays.mosh-me = final: prev: {
mosh-me = final.callPackage ./nix/mosh-me.nix {}; mosh-me = final.callPackage ./nix/mosh-me.nix {};
}; };
overlays.avcpp = final: prev: {
avcpp = final.callPackage ./nix/avcpp.nix {};
};
}; };
systems = [ systems = [
"x86_64-linux" "x86_64-linux"
@ -24,6 +27,7 @@
inherit system; inherit system;
overlays = [ overlays = [
self.overlays.mosh-me self.overlays.mosh-me
self.overlays.avcpp
]; ];
config = {}; config = {};
}; };

View File

@ -0,0 +1,62 @@
From ee5bad7f97fd1cdbc97bf46d2dd17cd8974b6922 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20R=C3=B6ger?= <jonas.roeger@tu-dortmund.de>
Date: Sun, 23 Nov 2025 19:11:49 +0100
Subject: [PATCH] fix(build): use absolute install directories
---
src/CMakeLists.txt | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b4b53ca..c08d9bb 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -33,7 +33,7 @@ foreach(TARGET ${AV_TARGETS})
target_include_directories(${TARGET}
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/avcpp>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR})
set_target_properties(${TARGET} PROPERTIES PUBLIC_HEADER "${AV_HEADERS}")
@@ -77,12 +77,12 @@ if (AVCPP_NOT_SUBPROJECT)
install(TARGETS ${AV_TARGETS} FFmpeg
EXPORT avcpp-targets
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/avcpp
- PRIVATE_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/avcpp
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/avcpp)
+ LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR}
+ INCLUDES DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}/avcpp
+ PRIVATE_HEADER DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}/avcpp
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}/avcpp)
#cmake_policy(SET CMP0022 OLD)
install(EXPORT avcpp-targets
@@ -94,7 +94,7 @@ if (AVCPP_NOT_SUBPROJECT)
configure_package_config_file(
"Config.cmake.in"
"avcpp-config.cmake"
- INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/avcpp
+ INSTALL_DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/cmake/avcpp
# PATH_VARS
# CMAKE_INSTALL_LIBDIR
)
@@ -106,7 +106,7 @@ if (AVCPP_NOT_SUBPROJECT)
"${CMAKE_CURRENT_BINARY_DIR}/avcpp-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/avcpp-config-version.cmake"
DESTINATION
- "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/cmake/avcpp"
+ "${CMAKE_INSTALL_FULL_LIBDIR}/cmake/avcpp"
)
if (PKG_CONFIG_FOUND)
--
2.50.1

31
nix/avcpp.nix Normal file
View File

@ -0,0 +1,31 @@
{
cmake,
lib,
stdenv,
pkg-config,
ffmpeg_7,
fetchFromGitHub,
}: let
version = "2.7.1";
sha256 = "sha256-Vf5DkAX2zXlNd7zsQc5SQfNiKHpasRZpt7ppoLzlig0=";
in
stdenv.mkDerivation (finalAttrs: {
pname = "avcpp";
inherit version;
src = fetchFromGitHub {
owner = "h4tr3d";
repo = "avcpp";
tag = "v${version}";
inherit sha256;
};
patches = [
./0001-fix-build-use-absolute-install-directories.patch
];
nativeBuildInputs = [cmake pkg-config];
buildInputs = [ffmpeg_7];
cmakeFlags = [
(lib.cmakeBool "BUILD_TESTING" finalAttrs.doCheck)
(lib.cmakeBool "AVCPP_NOT_SUBPROJECT" true)
];
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
})

View File

@ -5,13 +5,14 @@
spdlog, spdlog,
stdenv, stdenv,
pkg-config, pkg-config,
ffmpeg, ffmpeg_7,
avcpp,
}: }:
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
name = "mosh-me"; name = "mosh-me";
src = ../.; src = ../.;
nativeBuildInputs = [cmake ninja pkg-config]; nativeBuildInputs = [cmake ninja pkg-config];
buildInputs = [ffmpeg spdlog]; buildInputs = [ffmpeg_7 spdlog avcpp];
cmakeFlags = [ cmakeFlags = [
(lib.cmakeBool "BUILD_TESTING" finalAttrs.doCheck) (lib.cmakeBool "BUILD_TESTING" finalAttrs.doCheck)
]; ];