aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorVaxry <[email protected]>2024-08-08 10:54:41 +0100
committerGitHub <[email protected]>2024-08-08 11:54:41 +0200
commit83a334f97df4389ca30cb63e50317a66a82562b9 (patch)
treebe03ceb8abfd97443ab846cfb624d38028f52c74
parent9a09eac79b85c846e3a865a9078a3f8ff65a9259 (diff)
downloadHyprland-83a334f97df4389ca30cb63e50317a66a82562b9.tar.gz
Hyprland-83a334f97df4389ca30cb63e50317a66a82562b9.zip
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 <[email protected]>
-rw-r--r--CMakeLists.txt2
-rw-r--r--flake.nix2
-rw-r--r--meson.build2
-rw-r--r--nix/default.nix5
-rw-r--r--nix/overlays.nix2
-rw-r--r--nix/stdcxx.patch12
-rw-r--r--src/debug/Log.cpp3
7 files changed, 24 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fc8eafd5..cfbd431f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -62,7 +62,7 @@ else()
endif()
include_directories(. "src/" "subprojects/udis86/" "protocols/")
-set(CMAKE_CXX_STANDARD 23)
+set(CMAKE_CXX_STANDARD 26)
add_compile_options(
-Wall
-Wextra
diff --git a/flake.nix b/flake.nix
index 9c20b3f5..9e1e3ab4 100644
--- a/flake.nix
+++ b/flake.nix
@@ -95,7 +95,7 @@
devShells = eachSystem (system: {
default =
pkgsFor.${system}.mkShell.override {
- stdenv = pkgsFor.${system}.gcc13Stdenv;
+ stdenv = pkgsFor.${system}.gcc14Stdenv;
} {
name = "hyprland-shell";
nativeBuildInputs = with pkgsFor.${system}; [
diff --git a/meson.build b/meson.build
index 886f4f9c..e8cd25b4 100644
--- a/meson.build
+++ b/meson.build
@@ -6,7 +6,7 @@ project('Hyprland', 'cpp', 'c',
'optimization=3',
'buildtype=release',
'debug=false',
- 'cpp_std=c++23',
+ 'cpp_std=c++26',
])
datarootdir = '-DDATAROOTDIR="' + get_option('prefix') / get_option('datadir') + '"'
diff --git a/nix/default.nix b/nix/default.nix
index e4e12f43..9bae9d83 100644
--- a/nix/default.nix
+++ b/nix/default.nix
@@ -71,6 +71,11 @@ assert lib.assertMsg (!hidpiXWayland) "The option `hidpiXWayland` has been remov
src = lib.cleanSource ../.;
};
+ patches = [
+ # forces GCC to use -std=c++26
+ ./stdcxx.patch
+ ];
+
postPatch = ''
# Fix hardcoded paths to /usr installation
sed -i "s#/usr#$out#" src/render/OpenGL.cpp
diff --git a/nix/overlays.nix b/nix/overlays.nix
index d8979b45..36206f46 100644
--- a/nix/overlays.nix
+++ b/nix/overlays.nix
@@ -31,7 +31,7 @@ in {
date = mkDate (self.lastModifiedDate or "19700101");
in {
hyprland = final.callPackage ./default.nix {
- stdenv = final.gcc13Stdenv;
+ stdenv = final.gcc14Stdenv;
version = "${version}+date=${date}_${self.shortRev or "dirty"}";
commit = self.rev or "";
inherit date;
diff --git a/nix/stdcxx.patch b/nix/stdcxx.patch
new file mode 100644
index 00000000..032e494d
--- /dev/null
+++ b/nix/stdcxx.patch
@@ -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
diff --git a/src/debug/Log.cpp b/src/debug/Log.cpp
index 0def77c0..a4c5b08e 100644
--- a/src/debug/Log.cpp
+++ b/src/debug/Log.cpp
@@ -5,10 +5,13 @@
#include <fstream>
#include <iostream>
+#include <fcntl.h>
void Debug::init(const std::string& IS) {
logFile = IS + (ISDEBUG ? "/hyprlandd.log" : "/hyprland.log");
logOfs.open(logFile, std::ios::out | std::ios::app);
+ auto handle = logOfs.native_handle();
+ fcntl(handle, F_SETFD, FD_CLOEXEC);
}
void Debug::close() {