lib: add version script
This commit is contained in:
parent
84cd315aa0
commit
416a41affe
5 changed files with 60 additions and 4 deletions
|
|
@ -12,6 +12,18 @@ if(NOT DEFINED VERSION)
|
|||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED GIT_REVISION)
|
||||
execute_process(COMMAND git rev-parse HEAD
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
OUTPUT_VARIABLE GIT_REVISION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
if("${GIT_REVISION}" STREQUAL "")
|
||||
message(FATAL_ERROR "GIT_REVISION is not set and failed to get from git")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
string(REGEX REPLACE "^v" "" VERSION "${VERSION}")
|
||||
|
||||
project(caelestia-shell VERSION ${VERSION} LANGUAGES CXX)
|
||||
|
|
@ -20,6 +32,7 @@ set(CMAKE_CXX_STANDARD 20)
|
|||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
|
||||
|
||||
set(DISTRIBUTOR "Unset" CACHE STRING "Distributor")
|
||||
set(INSTALL_LIBDIR "usr/lib/caelestia" CACHE STRING "Library install dir")
|
||||
set(INSTALL_QMLDIR "usr/lib/qt6/qml" CACHE STRING "QML install dir")
|
||||
set(INSTALL_QSCONFDIR "etc/xdg/quickshell/caelestia" CACHE STRING "Quickshell config install dir")
|
||||
|
|
|
|||
|
|
@ -3,6 +3,16 @@ find_package(PkgConfig REQUIRED)
|
|||
pkg_check_modules(PIPEWIRE REQUIRED libpipewire-0.3)
|
||||
pkg_check_modules(AUBIO REQUIRED aubio)
|
||||
|
||||
# Version
|
||||
add_executable(version version.cpp)
|
||||
target_compile_definitions(version PRIVATE
|
||||
PROJECT_NAME="${PROJECT_NAME}"
|
||||
VERSION="${VERSION}"
|
||||
GIT_REVISION="${GIT_REVISION}"
|
||||
DISTRIBUTOR="${DISTRIBUTOR}"
|
||||
)
|
||||
install(TARGETS version DESTINATION ${INSTALL_LIBDIR})
|
||||
|
||||
# Beat detector
|
||||
add_executable(beat_detector beat-detector.cpp)
|
||||
target_include_directories(beat_detector PRIVATE ${PIPEWIRE_INCLUDE_DIRS} ${AUBIO_INCLUDE_DIRS})
|
||||
|
|
|
|||
26
assets/cpp/version.cpp
Normal file
26
assets/cpp/version.cpp
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
#include <iostream>
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
if (argc > 1) {
|
||||
std::string arg = argv[1];
|
||||
|
||||
if (arg == "-t" || arg == "--terse") {
|
||||
std::cout << PROJECT_NAME << std::endl;
|
||||
std::cout << VERSION << std::endl;
|
||||
std::cout << GIT_REVISION << std::endl;
|
||||
std::cout << DISTRIBUTOR << std::endl;
|
||||
} else if (arg == "-s" || arg == "--short") {
|
||||
std::cout << PROJECT_NAME << " " << VERSION << ", revision " << GIT_REVISION << ", distrubuted by: " << DISTRIBUTOR << std::endl;
|
||||
} else {
|
||||
std::cout << "Usage: " << argv[0] << " [-t | --terse] [-s | --short]" << std::endl;
|
||||
return arg != "-h" && arg != "--help";
|
||||
}
|
||||
} else {
|
||||
std::cout << "Project: " << PROJECT_NAME << std::endl;
|
||||
std::cout << "Version: " << VERSION << std::endl;
|
||||
std::cout << "Git revision: " << GIT_REVISION << std::endl;
|
||||
std::cout << "Distributor: " << DISTRIBUTOR << std::endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -30,6 +30,7 @@
|
|||
|
||||
packages = forAllSystems (pkgs: rec {
|
||||
caelestia-shell = pkgs.callPackage ./nix {
|
||||
rev = self.rev or self.dirtyRev;
|
||||
quickshell = inputs.quickshell.packages.${pkgs.system}.default.override {
|
||||
withX11 = false;
|
||||
withI3 = false;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
rev,
|
||||
lib,
|
||||
stdenv,
|
||||
makeWrapper,
|
||||
|
|
@ -64,6 +65,12 @@
|
|||
fontDirectories = [material-symbols rubik nerd-fonts.caskaydia-cove];
|
||||
};
|
||||
|
||||
cmakeVersionFlags = [
|
||||
(lib.cmakeFeature "VERSION" version)
|
||||
(lib.cmakeFeature "GIT_REVISION" rev)
|
||||
(lib.cmakeFeature "DISTRIBUTOR" "Nix Flake")
|
||||
];
|
||||
|
||||
assets = stdenv.mkDerivation {
|
||||
name = "caelestia-assets";
|
||||
src = ./../assets/cpp;
|
||||
|
|
@ -71,7 +78,7 @@
|
|||
nativeBuildInputs = [cmake ninja pkg-config];
|
||||
buildInputs = [aubio pipewire];
|
||||
|
||||
cmakeFlags = [(lib.cmakeFeature "INSTALL_LIBDIR" "${placeholder "out"}/lib")];
|
||||
cmakeFlags = [(lib.cmakeFeature "INSTALL_LIBDIR" "${placeholder "out"}/lib")] ++ cmakeVersionFlags;
|
||||
};
|
||||
|
||||
plugin = stdenv.mkDerivation {
|
||||
|
|
@ -82,7 +89,7 @@
|
|||
buildInputs = [qt6.qtbase qt6.qtdeclarative];
|
||||
|
||||
dontWrapQtApps = true;
|
||||
cmakeFlags = [(lib.cmakeFeature "INSTALL_QMLDIR" qt6.qtbase.qtQmlPrefix)];
|
||||
cmakeFlags = [(lib.cmakeFeature "INSTALL_QMLDIR" qt6.qtbase.qtQmlPrefix)] ++ cmakeVersionFlags;
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
|
|
@ -96,11 +103,10 @@ in
|
|||
|
||||
cmakeBuildType = "Release";
|
||||
cmakeFlags = [
|
||||
(lib.cmakeFeature "VERSION" version)
|
||||
(lib.cmakeBool "DONT_BUILD_PLUGIN" true)
|
||||
(lib.cmakeBool "DONT_BUILD_ASSETS" true)
|
||||
(lib.cmakeFeature "INSTALL_QSCONFDIR" "${placeholder "out"}/share/caelestia-shell")
|
||||
];
|
||||
] ++ cmakeVersionFlags;
|
||||
|
||||
prePatch = ''
|
||||
substituteInPlace assets/pam.d/fprint \
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue