mirror of
https://github.com/obsqrbtz/clrsync.git
synced 2026-04-08 20:19:04 +03:00
build: add flake.nix and wayland deps (untested)
This commit is contained in:
139
CMakeLists.txt
139
CMakeLists.txt
@@ -2,10 +2,12 @@ cmake_minimum_required(VERSION 3.25)
|
|||||||
project(clrsync VERSION 0.1.3 LANGUAGES CXX)
|
project(clrsync VERSION 0.1.3 LANGUAGES CXX)
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 20)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
# -----------------------------
|
||||||
|
# Platform-specific install dirs
|
||||||
|
# -----------------------------
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(CMAKE_INSTALL_PREFIX "C:/Program Files/clrsync")
|
set(CMAKE_INSTALL_PREFIX "C:/Program Files/clrsync")
|
||||||
set(CMAKE_INSTALL_BINDIR "bin")
|
set(CMAKE_INSTALL_BINDIR "bin")
|
||||||
@@ -14,11 +16,17 @@ if(WIN32)
|
|||||||
set(CMAKE_INSTALL_FULL_DATADIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}")
|
set(CMAKE_INSTALL_FULL_DATADIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# -----------------------------
|
||||||
|
# RPATH settings
|
||||||
|
# -----------------------------
|
||||||
set(CMAKE_SKIP_BUILD_RPATH FALSE)
|
set(CMAKE_SKIP_BUILD_RPATH FALSE)
|
||||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
|
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
|
||||||
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||||
set(CMAKE_INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}")
|
set(CMAKE_INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}")
|
||||||
|
|
||||||
|
# -----------------------------
|
||||||
|
# Templates
|
||||||
|
# -----------------------------
|
||||||
configure_file(
|
configure_file(
|
||||||
${CMAKE_SOURCE_DIR}/src/core/version.hpp.in
|
${CMAKE_SOURCE_DIR}/src/core/version.hpp.in
|
||||||
${CMAKE_SOURCE_DIR}/src/core/version.hpp
|
${CMAKE_SOURCE_DIR}/src/core/version.hpp
|
||||||
@@ -31,10 +39,14 @@ configure_file(
|
|||||||
@ONLY
|
@ONLY
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# -----------------------------
|
||||||
|
# Find packages
|
||||||
|
# -----------------------------
|
||||||
find_package(OpenGL REQUIRED)
|
find_package(OpenGL REQUIRED)
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
include(FetchContent)
|
include(FetchContent)
|
||||||
|
|
||||||
FetchContent_Declare(
|
FetchContent_Declare(
|
||||||
freetype
|
freetype
|
||||||
URL https://download.savannah.gnu.org/releases/freetype/freetype-2.14.1.tar.gz
|
URL https://download.savannah.gnu.org/releases/freetype/freetype-2.14.1.tar.gz
|
||||||
@@ -46,20 +58,60 @@ if(WIN32)
|
|||||||
GIT_REPOSITORY https://github.com/glfw/glfw.git
|
GIT_REPOSITORY https://github.com/glfw/glfw.git
|
||||||
GIT_TAG 3.3.10
|
GIT_TAG 3.3.10
|
||||||
)
|
)
|
||||||
|
|
||||||
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
||||||
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
||||||
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
|
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
FetchContent_MakeAvailable(glfw)
|
FetchContent_MakeAvailable(glfw)
|
||||||
|
|
||||||
else()
|
else()
|
||||||
find_package(Freetype REQUIRED)
|
find_package(Freetype REQUIRED)
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
find_package(Fontconfig REQUIRED)
|
find_package(Fontconfig REQUIRED)
|
||||||
|
find_package(ZLIB REQUIRED)
|
||||||
|
find_package(BZip2 REQUIRED)
|
||||||
|
find_package(PNG REQUIRED)
|
||||||
|
|
||||||
|
find_library(BROTLIDEC_LIBRARY NAMES brotlidec)
|
||||||
|
find_library(BROTLICOMMON_LIBRARY NAMES brotlicommon)
|
||||||
|
|
||||||
|
pkg_check_modules(HARFBUZZ harfbuzz)
|
||||||
pkg_check_modules(GLFW REQUIRED glfw3)
|
pkg_check_modules(GLFW REQUIRED glfw3)
|
||||||
|
pkg_check_modules(WAYLAND_CLIENT wayland-client)
|
||||||
|
pkg_check_modules(WAYLAND_EGL wayland-egl)
|
||||||
|
|
||||||
|
include(CheckSymbolExists)
|
||||||
|
check_symbol_exists(glfwGetWaylandDisplay "GLFW/glfw3.h" GLFW_HAS_WAYLAND)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# -----------------------------
|
||||||
|
# Extra libraries for Freetype
|
||||||
|
# -----------------------------
|
||||||
|
set(FREETYPE_EXTRA_LIBS "")
|
||||||
|
if(BROTLIDEC_LIBRARY AND BROTLICOMMON_LIBRARY)
|
||||||
|
list(APPEND FREETYPE_EXTRA_LIBS ${BROTLIDEC_LIBRARY} ${BROTLICOMMON_LIBRARY})
|
||||||
|
message(STATUS "Found Brotli libraries")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(HARFBUZZ_FOUND)
|
||||||
|
list(APPEND FREETYPE_EXTRA_LIBS ${HARFBUZZ_LIBRARIES})
|
||||||
|
message(STATUS "Found HarfBuzz")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# -----------------------------
|
||||||
|
# Wayland
|
||||||
|
# -----------------------------
|
||||||
|
set(WAYLAND_LIBS "")
|
||||||
|
if(WAYLAND_CLIENT_FOUND)
|
||||||
|
list(APPEND WAYLAND_LIBS ${WAYLAND_CLIENT_LIBRARIES})
|
||||||
|
message(STATUS "Found Wayland client")
|
||||||
|
endif()
|
||||||
|
if(WAYLAND_EGL_FOUND)
|
||||||
|
list(APPEND WAYLAND_LIBS ${WAYLAND_EGL_LIBRARIES})
|
||||||
|
message(STATUS "Found Wayland EGL")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# -----------------------------
|
||||||
|
# Core
|
||||||
|
# -----------------------------
|
||||||
set(CORE_SOURCES
|
set(CORE_SOURCES
|
||||||
src/core/palette/color.cpp
|
src/core/palette/color.cpp
|
||||||
src/core/io/toml_file.cpp
|
src/core/io/toml_file.cpp
|
||||||
@@ -76,10 +128,16 @@ target_compile_definitions(clrsync_core PUBLIC
|
|||||||
CLRSYNC_DATADIR=\"${CMAKE_INSTALL_FULL_DATADIR}/clrsync\"
|
CLRSYNC_DATADIR=\"${CMAKE_INSTALL_FULL_DATADIR}/clrsync\"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# -----------------------------
|
||||||
|
# CLI
|
||||||
|
# -----------------------------
|
||||||
add_executable(clrsync_cli src/cli/main.cpp)
|
add_executable(clrsync_cli src/cli/main.cpp)
|
||||||
target_include_directories(clrsync_cli PRIVATE src SYSTEM lib)
|
target_include_directories(clrsync_cli PRIVATE src SYSTEM lib)
|
||||||
target_link_libraries(clrsync_cli PRIVATE clrsync_core)
|
target_link_libraries(clrsync_cli PRIVATE clrsync_core)
|
||||||
|
|
||||||
|
# -----------------------------
|
||||||
|
# GUI
|
||||||
|
# -----------------------------
|
||||||
set(GUI_SOURCES
|
set(GUI_SOURCES
|
||||||
src/gui/main.cpp
|
src/gui/main.cpp
|
||||||
src/gui/color_scheme_editor.cpp
|
src/gui/color_scheme_editor.cpp
|
||||||
@@ -93,74 +151,66 @@ set(GUI_SOURCES
|
|||||||
src/gui/settings_window.cpp
|
src/gui/settings_window.cpp
|
||||||
src/gui/font_loader.cpp
|
src/gui/font_loader.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
add_executable(clrsync_gui ${GUI_SOURCES})
|
add_executable(clrsync_gui ${GUI_SOURCES})
|
||||||
target_include_directories(clrsync_gui PRIVATE src SYSTEM lib)
|
target_include_directories(clrsync_gui PRIVATE src SYSTEM lib)
|
||||||
# if(WIN32)
|
|
||||||
# set_target_properties(clrsync_gui PROPERTIES
|
|
||||||
# LINK_FLAGS "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup"
|
|
||||||
# )
|
|
||||||
# endif()
|
|
||||||
|
|
||||||
if(WIN32)
|
# imgui
|
||||||
target_link_libraries(clrsync_gui PRIVATE clrsync_core glfw freetype imgui OpenGL::GL)
|
set(IMGUI_SOURCE_DIR lib/imgui)
|
||||||
else()
|
|
||||||
target_include_directories(clrsync_gui PRIVATE ${FREETYPE_INCLUDE_DIRS} ${GLFW_INCLUDE_DIRS})
|
|
||||||
target_link_libraries(clrsync_gui PRIVATE clrsync_core imgui ${FREETYPE_LIBRARIES} ${GLFW_LIBRARIES} X11 Xrandr Xi Fontconfig::Fontconfig OpenGL::GL)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(imgui_SOURCE_DIR lib/imgui)
|
|
||||||
add_library(imgui STATIC
|
add_library(imgui STATIC
|
||||||
${imgui_SOURCE_DIR}/imgui.cpp
|
${IMGUI_SOURCE_DIR}/imgui.cpp
|
||||||
${imgui_SOURCE_DIR}/imgui_draw.cpp
|
${IMGUI_SOURCE_DIR}/imgui_draw.cpp
|
||||||
${imgui_SOURCE_DIR}/imgui_widgets.cpp
|
${IMGUI_SOURCE_DIR}/imgui_widgets.cpp
|
||||||
${imgui_SOURCE_DIR}/imgui_tables.cpp
|
${IMGUI_SOURCE_DIR}/imgui_tables.cpp
|
||||||
${imgui_SOURCE_DIR}/backends/imgui_impl_glfw.cpp
|
${IMGUI_SOURCE_DIR}/backends/imgui_impl_glfw.cpp
|
||||||
${imgui_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp
|
${IMGUI_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp
|
||||||
${imgui_SOURCE_DIR}/misc/freetype/imgui_freetype.cpp
|
${IMGUI_SOURCE_DIR}/misc/freetype/imgui_freetype.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(imgui PUBLIC SYSTEM
|
target_include_directories(imgui PUBLIC SYSTEM
|
||||||
${imgui_SOURCE_DIR}
|
${IMGUI_SOURCE_DIR}
|
||||||
${imgui_SOURCE_DIR}/backends
|
${IMGUI_SOURCE_DIR}/backends
|
||||||
)
|
)
|
||||||
|
target_compile_definitions(imgui PUBLIC IMGUI_ENABLE_FREETYPE)
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
target_include_directories(imgui PUBLIC ${GLFW_INCLUDE_DIRS} ${freetype_SOURCE_DIR}/include)
|
target_include_directories(imgui PUBLIC ${GLFW_INCLUDE_DIRS} ${freetype_SOURCE_DIR}/include)
|
||||||
|
target_link_libraries(clrsync_gui PRIVATE clrsync_core glfw freetype imgui OpenGL::GL)
|
||||||
else()
|
else()
|
||||||
target_include_directories(imgui PUBLIC ${GLFW_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS})
|
target_include_directories(imgui PUBLIC ${GLFW_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS})
|
||||||
|
target_link_libraries(clrsync_gui PRIVATE
|
||||||
|
clrsync_core imgui Freetype::Freetype ${FREETYPE_EXTRA_LIBS}
|
||||||
|
ZLIB::ZLIB BZip2::BZip2 PNG::PNG
|
||||||
|
${GLFW_LIBRARIES} ${WAYLAND_LIBS}
|
||||||
|
X11 Xrandr Xi Fontconfig::Fontconfig OpenGL::GL
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_link_libraries(imgui PUBLIC glfw OpenGL::GL freetype)
|
# -----------------------------
|
||||||
target_compile_definitions(imgui PUBLIC IMGUI_ENABLE_FREETYPE)
|
# Installation
|
||||||
|
# -----------------------------
|
||||||
install(TARGETS clrsync_core
|
install(TARGETS clrsync_core
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
COMPONENT Core
|
COMPONENT Core
|
||||||
)
|
)
|
||||||
|
|
||||||
install(TARGETS clrsync_cli
|
install(TARGETS clrsync_cli
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
COMPONENT CLI
|
COMPONENT CLI
|
||||||
)
|
)
|
||||||
|
|
||||||
install(TARGETS clrsync_gui
|
install(TARGETS clrsync_gui
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
COMPONENT GUI
|
COMPONENT GUI
|
||||||
)
|
)
|
||||||
|
|
||||||
install(FILES
|
install(FILES example_config/config.toml
|
||||||
example_config/config.toml
|
|
||||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/clrsync
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/clrsync
|
||||||
COMPONENT Core
|
COMPONENT Core
|
||||||
)
|
)
|
||||||
|
|
||||||
install(DIRECTORY example_config/templates
|
install(DIRECTORY example_config/templates
|
||||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/clrsync
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/clrsync
|
||||||
COMPONENT Core
|
COMPONENT Core
|
||||||
FILES_MATCHING PATTERN "*"
|
FILES_MATCHING PATTERN "*"
|
||||||
)
|
)
|
||||||
|
|
||||||
install(DIRECTORY example_config/palettes
|
install(DIRECTORY example_config/palettes
|
||||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/clrsync
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/clrsync
|
||||||
COMPONENT Core
|
COMPONENT Core
|
||||||
@@ -174,14 +224,17 @@ if(UNIX AND NOT APPLE)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# -----------------------------
|
||||||
|
# CPack configuration
|
||||||
|
# -----------------------------
|
||||||
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt")
|
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt")
|
||||||
set(CPACK_COMPONENTS_ALL Core GUI CLI)
|
|
||||||
|
|
||||||
set(CPACK_PACKAGE_NAME "clrsync")
|
set(CPACK_PACKAGE_NAME "clrsync")
|
||||||
set(CPACK_PACKAGE_VENDOR "Daniel Dada")
|
set(CPACK_PACKAGE_VENDOR "Daniel Dada")
|
||||||
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
|
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
|
||||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Color scheme manager")
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Color scheme manager")
|
||||||
|
set(CPACK_GENERATOR "NSIS;DEB;RPM")
|
||||||
|
|
||||||
|
# Components
|
||||||
set(CPACK_COMPONENTS_ALL Core GUI CLI)
|
set(CPACK_COMPONENTS_ALL Core GUI CLI)
|
||||||
set(CPACK_COMPONENT_CORE_DISPLAY_NAME "Core Library")
|
set(CPACK_COMPONENT_CORE_DISPLAY_NAME "Core Library")
|
||||||
set(CPACK_COMPONENT_CORE_DESCRIPTION "clrsync core library and default configs (required)")
|
set(CPACK_COMPONENT_CORE_DESCRIPTION "clrsync core library and default configs (required)")
|
||||||
@@ -193,30 +246,28 @@ set(CPACK_COMPONENT_CLI_DISPLAY_NAME "Command Line Tool")
|
|||||||
set(CPACK_COMPONENT_CLI_DESCRIPTION "clrsync CLI app")
|
set(CPACK_COMPONENT_CLI_DESCRIPTION "clrsync CLI app")
|
||||||
set(CPACK_COMPONENT_CLI_DEPENDS Core)
|
set(CPACK_COMPONENT_CLI_DEPENDS Core)
|
||||||
|
|
||||||
set(CPACK_GENERATOR "NSIS;DEB;RPM")
|
# NSIS
|
||||||
|
|
||||||
set(CPACK_NSIS_INSTALLED_NAME "clrsync")
|
set(CPACK_NSIS_INSTALLED_NAME "clrsync")
|
||||||
set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
|
set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
|
||||||
|
|
||||||
set(CPACK_NSIS_MODIFY_PATH ON)
|
set(CPACK_NSIS_MODIFY_PATH ON)
|
||||||
set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
|
set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
|
||||||
|
|
||||||
set(CPACK_NSIS_MENU_LINKS "bin/clrsync_gui.exe" "clrsync")
|
set(CPACK_NSIS_MENU_LINKS "bin/clrsync_gui.exe" "clrsync")
|
||||||
set(CPACK_NSIS_CREATE_DESKTOP_LINKS "bin/clrsync_gui.exe;clrsync")
|
set(CPACK_NSIS_CREATE_DESKTOP_LINKS "bin/clrsync_gui.exe;clrsync")
|
||||||
|
|
||||||
|
# Debian
|
||||||
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Daniel Dada <dan@binarygoose.dev>")
|
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Daniel Dada <dan@binarygoose.dev>")
|
||||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.31), libglfw3, libfreetype6")
|
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.31), libglfw3, libfreetype6")
|
||||||
set(CPACK_DEBIAN_PACKAGE_SECTION "utils")
|
set(CPACK_DEBIAN_PACKAGE_SECTION "utils")
|
||||||
set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
|
set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
|
||||||
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
|
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
|
||||||
|
|
||||||
|
# RPM
|
||||||
set(CPACK_RPM_PACKAGE_LICENSE "MIT")
|
set(CPACK_RPM_PACKAGE_LICENSE "MIT")
|
||||||
set(CPACK_RPM_PACKAGE_GROUP "Applications/System")
|
set(CPACK_RPM_PACKAGE_GROUP "Applications/System")
|
||||||
set(CPACK_RPM_PACKAGE_URL "https://github.com/obsqrbtz/clrsync")
|
set(CPACK_RPM_PACKAGE_URL "https://github.com/obsqrbtz/clrsync")
|
||||||
set(CPACK_RPM_PACKAGE_REQUIRES "freetype, glfw, fontconfig")
|
set(CPACK_RPM_PACKAGE_REQUIRES "freetype, glfw, fontconfig")
|
||||||
|
|
||||||
|
include(CPack)
|
||||||
|
|
||||||
message(STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
|
message(STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
|
||||||
message(STATUS "CMAKE_INSTALL_FULL_DATADIR: ${CMAKE_INSTALL_FULL_DATADIR}")
|
message(STATUS "CMAKE_INSTALL_FULL_DATADIR: ${CMAKE_INSTALL_FULL_DATADIR}")
|
||||||
|
|
||||||
include(CPack)
|
|
||||||
|
|||||||
27
flake.lock
generated
Normal file
27
flake.lock
generated
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1764950072,
|
||||||
|
"narHash": "sha256-BmPWzogsG2GsXZtlT+MTcAWeDK5hkbGRZTeZNW42fwA=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "f61125a668a320878494449750330ca58b78c557",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
99
flake.nix
Normal file
99
flake.nix
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
{
|
||||||
|
description = "clrsync - Color scheme manager";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, ... }: let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
in {
|
||||||
|
packages.${system} = rec {
|
||||||
|
clrsync-git = pkgs.stdenv.mkDerivation rec {
|
||||||
|
pname = "clrsync-git";
|
||||||
|
version = "unstable";
|
||||||
|
|
||||||
|
src = pkgs.fetchgit {
|
||||||
|
url = "https://github.com/obsqrbtz/clrsync.git";
|
||||||
|
rev = "HEAD";
|
||||||
|
sha256 = "sha256-znRtdLfdEmfdSGeiQA0v6hcZBFsQzgQtPY5uN98lwjo=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkgs.cmake
|
||||||
|
pkgs.git
|
||||||
|
pkgs.pkg-config
|
||||||
|
pkgs.makeWrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
pkgs.glfw
|
||||||
|
pkgs.freetype
|
||||||
|
pkgs.fontconfig
|
||||||
|
pkgs.xorg.libXcursor
|
||||||
|
pkgs.mesa
|
||||||
|
pkgs.xorg.libX11
|
||||||
|
pkgs.xorg.libXrandr
|
||||||
|
pkgs.xorg.libXi
|
||||||
|
pkgs.xorg.libXinerama
|
||||||
|
pkgs.xorg.libXcursor
|
||||||
|
pkgs.wayland
|
||||||
|
pkgs.wayland-protocols
|
||||||
|
pkgs.libxkbcommon
|
||||||
|
pkgs.zlib
|
||||||
|
pkgs.bzip2
|
||||||
|
];
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
"-DCMAKE_BUILD_TYPE=Release"
|
||||||
|
];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
cmake --install . --prefix $out
|
||||||
|
wrapProgram $out/bin/clrsync_gui \
|
||||||
|
--prefix LD_LIBRARY_PATH : ${pkgs.lib.makeLibraryPath buildInputs}
|
||||||
|
wrapProgram $out/bin/clrsync_cli \
|
||||||
|
--prefix LD_LIBRARY_PATH : ${pkgs.lib.makeLibraryPath buildInputs}
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with pkgs.lib; {
|
||||||
|
description = "Color scheme manager (git version)";
|
||||||
|
homepage = "https://github.com/obsqrbtz/clrsync";
|
||||||
|
license = licenses.mit;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
mainProgram = "clrsync_gui";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
default = clrsync-git;
|
||||||
|
};
|
||||||
|
|
||||||
|
apps.${system} = {
|
||||||
|
clrsync-gui = {
|
||||||
|
type = "app";
|
||||||
|
program = "${self.packages.${system}.clrsync-git}/bin/clrsync_gui";
|
||||||
|
};
|
||||||
|
|
||||||
|
clrsync-cli = {
|
||||||
|
type = "app";
|
||||||
|
program = "${self.packages.${system}.clrsync-git}/bin/clrsync_cli";
|
||||||
|
};
|
||||||
|
|
||||||
|
default = self.apps.${system}.clrsync-gui;
|
||||||
|
};
|
||||||
|
|
||||||
|
devShells.${system}.default = pkgs.mkShell {
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
cmake
|
||||||
|
git
|
||||||
|
pkg-config
|
||||||
|
glfw
|
||||||
|
freetype
|
||||||
|
fontconfig
|
||||||
|
xorg.libXcursor
|
||||||
|
mesa
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,6 +1,10 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
#define GLFW_EXPOSE_NATIVE_X11
|
||||||
|
#define GLFW_EXPOSE_NATIVE_WAYLAND
|
||||||
#include <GLFW/glfw3.h>
|
#include <GLFW/glfw3.h>
|
||||||
|
#include <GLFW/glfw3native.h>
|
||||||
|
|
||||||
|
|
||||||
#include "core/config/config.hpp"
|
#include "core/config/config.hpp"
|
||||||
#include "core/io/toml_file.hpp"
|
#include "core/io/toml_file.hpp"
|
||||||
@@ -27,6 +31,8 @@ int main(int, char**)
|
|||||||
GLFWwindow* window = init_glfw();
|
GLFWwindow* window = init_glfw();
|
||||||
if (!window) return 1;
|
if (!window) return 1;
|
||||||
|
|
||||||
|
printf("Using backend: %s\n", glfwGetVersionString());
|
||||||
|
|
||||||
init_imgui(window, ini_path);
|
init_imgui(window, ini_path);
|
||||||
|
|
||||||
font_loader loader;
|
font_loader loader;
|
||||||
|
|||||||
Reference in New Issue
Block a user