diff options
author | Vaxry <[email protected]> | 2024-08-08 10:54:41 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2024-08-08 11:54:41 +0200 |
commit | 83a334f97df4389ca30cb63e50317a66a82562b9 (patch) | |
tree | be03ceb8abfd97443ab846cfb624d38028f52c74 | |
parent | 9a09eac79b85c846e3a865a9078a3f8ff65a9259 (diff) | |
download | Hyprland-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.txt | 2 | ||||
-rw-r--r-- | flake.nix | 2 | ||||
-rw-r--r-- | meson.build | 2 | ||||
-rw-r--r-- | nix/default.nix | 5 | ||||
-rw-r--r-- | nix/overlays.nix | 2 | ||||
-rw-r--r-- | nix/stdcxx.patch | 12 | ||||
-rw-r--r-- | src/debug/Log.cpp | 3 |
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 @@ -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() { |