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()
|
||||||
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}")
|
string(REGEX REPLACE "^v" "" VERSION "${VERSION}")
|
||||||
|
|
||||||
project(caelestia-shell VERSION ${VERSION} LANGUAGES CXX)
|
project(caelestia-shell VERSION ${VERSION} LANGUAGES CXX)
|
||||||
|
|
@ -20,6 +32,7 @@ set(CMAKE_CXX_STANDARD 20)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
|
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_LIBDIR "usr/lib/caelestia" CACHE STRING "Library install dir")
|
||||||
set(INSTALL_QMLDIR "usr/lib/qt6/qml" CACHE STRING "QML 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")
|
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(PIPEWIRE REQUIRED libpipewire-0.3)
|
||||||
pkg_check_modules(AUBIO REQUIRED aubio)
|
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
|
# Beat detector
|
||||||
add_executable(beat_detector beat-detector.cpp)
|
add_executable(beat_detector beat-detector.cpp)
|
||||||
target_include_directories(beat_detector PRIVATE ${PIPEWIRE_INCLUDE_DIRS} ${AUBIO_INCLUDE_DIRS})
|
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 {
|
packages = forAllSystems (pkgs: rec {
|
||||||
caelestia-shell = pkgs.callPackage ./nix {
|
caelestia-shell = pkgs.callPackage ./nix {
|
||||||
|
rev = self.rev or self.dirtyRev;
|
||||||
quickshell = inputs.quickshell.packages.${pkgs.system}.default.override {
|
quickshell = inputs.quickshell.packages.${pkgs.system}.default.override {
|
||||||
withX11 = false;
|
withX11 = false;
|
||||||
withI3 = false;
|
withI3 = false;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
rev,
|
||||||
lib,
|
lib,
|
||||||
stdenv,
|
stdenv,
|
||||||
makeWrapper,
|
makeWrapper,
|
||||||
|
|
@ -64,6 +65,12 @@
|
||||||
fontDirectories = [material-symbols rubik nerd-fonts.caskaydia-cove];
|
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 {
|
assets = stdenv.mkDerivation {
|
||||||
name = "caelestia-assets";
|
name = "caelestia-assets";
|
||||||
src = ./../assets/cpp;
|
src = ./../assets/cpp;
|
||||||
|
|
@ -71,7 +78,7 @@
|
||||||
nativeBuildInputs = [cmake ninja pkg-config];
|
nativeBuildInputs = [cmake ninja pkg-config];
|
||||||
buildInputs = [aubio pipewire];
|
buildInputs = [aubio pipewire];
|
||||||
|
|
||||||
cmakeFlags = [(lib.cmakeFeature "INSTALL_LIBDIR" "${placeholder "out"}/lib")];
|
cmakeFlags = [(lib.cmakeFeature "INSTALL_LIBDIR" "${placeholder "out"}/lib")] ++ cmakeVersionFlags;
|
||||||
};
|
};
|
||||||
|
|
||||||
plugin = stdenv.mkDerivation {
|
plugin = stdenv.mkDerivation {
|
||||||
|
|
@ -82,7 +89,7 @@
|
||||||
buildInputs = [qt6.qtbase qt6.qtdeclarative];
|
buildInputs = [qt6.qtbase qt6.qtdeclarative];
|
||||||
|
|
||||||
dontWrapQtApps = true;
|
dontWrapQtApps = true;
|
||||||
cmakeFlags = [(lib.cmakeFeature "INSTALL_QMLDIR" qt6.qtbase.qtQmlPrefix)];
|
cmakeFlags = [(lib.cmakeFeature "INSTALL_QMLDIR" qt6.qtbase.qtQmlPrefix)] ++ cmakeVersionFlags;
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
|
|
@ -96,11 +103,10 @@ in
|
||||||
|
|
||||||
cmakeBuildType = "Release";
|
cmakeBuildType = "Release";
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
(lib.cmakeFeature "VERSION" version)
|
|
||||||
(lib.cmakeBool "DONT_BUILD_PLUGIN" true)
|
(lib.cmakeBool "DONT_BUILD_PLUGIN" true)
|
||||||
(lib.cmakeBool "DONT_BUILD_ASSETS" true)
|
(lib.cmakeBool "DONT_BUILD_ASSETS" true)
|
||||||
(lib.cmakeFeature "INSTALL_QSCONFDIR" "${placeholder "out"}/share/caelestia-shell")
|
(lib.cmakeFeature "INSTALL_QSCONFDIR" "${placeholder "out"}/share/caelestia-shell")
|
||||||
];
|
] ++ cmakeVersionFlags;
|
||||||
|
|
||||||
prePatch = ''
|
prePatch = ''
|
||||||
substituteInPlace assets/pam.d/fprint \
|
substituteInPlace assets/pam.d/fprint \
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue