mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-22 18:05:58 +01:00
core: Move to C++26 and use native_handle to CLOEXEC the debug fd (#7219)
Requires GCC >= 14 / Clang >= 18 --------- Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
This commit is contained in:
parent
9a09eac79b
commit
83a334f97d
7 changed files with 24 additions and 4 deletions
|
@ -62,7 +62,7 @@ else()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include_directories(. "src/" "subprojects/udis86/" "protocols/")
|
include_directories(. "src/" "subprojects/udis86/" "protocols/")
|
||||||
set(CMAKE_CXX_STANDARD 23)
|
set(CMAKE_CXX_STANDARD 26)
|
||||||
add_compile_options(
|
add_compile_options(
|
||||||
-Wall
|
-Wall
|
||||||
-Wextra
|
-Wextra
|
||||||
|
|
|
@ -95,7 +95,7 @@
|
||||||
devShells = eachSystem (system: {
|
devShells = eachSystem (system: {
|
||||||
default =
|
default =
|
||||||
pkgsFor.${system}.mkShell.override {
|
pkgsFor.${system}.mkShell.override {
|
||||||
stdenv = pkgsFor.${system}.gcc13Stdenv;
|
stdenv = pkgsFor.${system}.gcc14Stdenv;
|
||||||
} {
|
} {
|
||||||
name = "hyprland-shell";
|
name = "hyprland-shell";
|
||||||
nativeBuildInputs = with pkgsFor.${system}; [
|
nativeBuildInputs = with pkgsFor.${system}; [
|
||||||
|
|
|
@ -6,7 +6,7 @@ project('Hyprland', 'cpp', 'c',
|
||||||
'optimization=3',
|
'optimization=3',
|
||||||
'buildtype=release',
|
'buildtype=release',
|
||||||
'debug=false',
|
'debug=false',
|
||||||
'cpp_std=c++23',
|
'cpp_std=c++26',
|
||||||
])
|
])
|
||||||
|
|
||||||
datarootdir = '-DDATAROOTDIR="' + get_option('prefix') / get_option('datadir') + '"'
|
datarootdir = '-DDATAROOTDIR="' + get_option('prefix') / get_option('datadir') + '"'
|
||||||
|
|
|
@ -71,6 +71,11 @@ assert lib.assertMsg (!hidpiXWayland) "The option `hidpiXWayland` has been remov
|
||||||
src = lib.cleanSource ../.;
|
src = lib.cleanSource ../.;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# forces GCC to use -std=c++26
|
||||||
|
./stdcxx.patch
|
||||||
|
];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
# Fix hardcoded paths to /usr installation
|
# Fix hardcoded paths to /usr installation
|
||||||
sed -i "s#/usr#$out#" src/render/OpenGL.cpp
|
sed -i "s#/usr#$out#" src/render/OpenGL.cpp
|
||||||
|
|
|
@ -31,7 +31,7 @@ in {
|
||||||
date = mkDate (self.lastModifiedDate or "19700101");
|
date = mkDate (self.lastModifiedDate or "19700101");
|
||||||
in {
|
in {
|
||||||
hyprland = final.callPackage ./default.nix {
|
hyprland = final.callPackage ./default.nix {
|
||||||
stdenv = final.gcc13Stdenv;
|
stdenv = final.gcc14Stdenv;
|
||||||
version = "${version}+date=${date}_${self.shortRev or "dirty"}";
|
version = "${version}+date=${date}_${self.shortRev or "dirty"}";
|
||||||
commit = self.rev or "";
|
commit = self.rev or "";
|
||||||
inherit date;
|
inherit date;
|
||||||
|
|
12
nix/stdcxx.patch
Normal file
12
nix/stdcxx.patch
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index cfbd431f..73e8e0c2 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -64,6 +64,7 @@ endif()
|
||||||
|
include_directories(. "src/" "subprojects/udis86/" "protocols/")
|
||||||
|
set(CMAKE_CXX_STANDARD 26)
|
||||||
|
add_compile_options(
|
||||||
|
+ -std=c++26
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
-Wno-unused-parameter
|
|
@ -5,10 +5,13 @@
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
void Debug::init(const std::string& IS) {
|
void Debug::init(const std::string& IS) {
|
||||||
logFile = IS + (ISDEBUG ? "/hyprlandd.log" : "/hyprland.log");
|
logFile = IS + (ISDEBUG ? "/hyprlandd.log" : "/hyprland.log");
|
||||||
logOfs.open(logFile, std::ios::out | std::ios::app);
|
logOfs.open(logFile, std::ios::out | std::ios::app);
|
||||||
|
auto handle = logOfs.native_handle();
|
||||||
|
fcntl(handle, F_SETFD, FD_CLOEXEC);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Debug::close() {
|
void Debug::close() {
|
||||||
|
|
Loading…
Reference in a new issue