diff --git a/CMakeLists.txt b/CMakeLists.txt index b19620f..dd9d6d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,15 +14,25 @@ pkg_check_modules(FFMPEG REQUIRED IMPORTED_TARGET 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) target_link_libraries(mosh-me PkgConfig::FFMPEG spdlog::spdlog) target_compile_features(mosh-me PUBLIC cxx_std_23) target_include_directories(mosh-me PRIVATE ${PROJECT_SOURCE_DIR}/include) -install(TARGETS mosh-me) + +install(TARGETS mosh-me mosh-me-2) ################################################################################ diff --git a/app/mosh-me-2.cpp b/app/mosh-me-2.cpp new file mode 100644 index 0000000..a3ae6aa --- /dev/null +++ b/app/mosh-me-2.cpp @@ -0,0 +1,3 @@ +#include + +int main() { spdlog::info("MM2"); } diff --git a/flake.nix b/flake.nix index 7385e80..314e6fe 100644 --- a/flake.nix +++ b/flake.nix @@ -10,6 +10,9 @@ overlays.mosh-me = final: prev: { mosh-me = final.callPackage ./nix/mosh-me.nix {}; }; + overlays.avcpp = final: prev: { + avcpp = final.callPackage ./nix/avcpp.nix {}; + }; }; systems = [ "x86_64-linux" @@ -24,6 +27,7 @@ inherit system; overlays = [ self.overlays.mosh-me + self.overlays.avcpp ]; config = {}; }; diff --git a/nix/0001-fix-build-use-absolute-install-directories.patch b/nix/0001-fix-build-use-absolute-install-directories.patch new file mode 100644 index 0000000..5a3f91b --- /dev/null +++ b/nix/0001-fix-build-use-absolute-install-directories.patch @@ -0,0 +1,62 @@ +From ee5bad7f97fd1cdbc97bf46d2dd17cd8974b6922 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20R=C3=B6ger?= +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 + $ +- $ ++ $ + 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 + diff --git a/nix/avcpp.nix b/nix/avcpp.nix new file mode 100644 index 0000000..90a7f78 --- /dev/null +++ b/nix/avcpp.nix @@ -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; + }) diff --git a/nix/mosh-me.nix b/nix/mosh-me.nix index d3a1a78..a90911c 100644 --- a/nix/mosh-me.nix +++ b/nix/mosh-me.nix @@ -5,13 +5,14 @@ spdlog, stdenv, pkg-config, - ffmpeg, + ffmpeg_7, + avcpp, }: stdenv.mkDerivation (finalAttrs: { name = "mosh-me"; src = ../.; nativeBuildInputs = [cmake ninja pkg-config]; - buildInputs = [ffmpeg spdlog]; + buildInputs = [ffmpeg_7 spdlog avcpp]; cmakeFlags = [ (lib.cmakeBool "BUILD_TESTING" finalAttrs.doCheck) ];