nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1From 92f25181dbf722cb749e445851580df4ea779299 Mon Sep 17 00:00:00 2001
2From: Luna Nova <git@lunnova.dev>
3Date: Sun, 21 Dec 2025 08:01:08 -0800
4Subject: [PATCH 1/2] fix(rdc): set CMAKE_CXX_FLAGS after project() to avoid
5 clobbering env
6
7CMAKE_CXX_FLAGS' initial value is set from $CXXFLAGS on project() call
8so the previous location ignored CXXFLAGS from env or CMake toolchain
9config.
10
11Ref: https://cmake.org/cmake/help/v4.2/variable/CMAKE_LANG_FLAGS_INIT.html
12Fixes: 874a7b438f ("CMAKE - Fix build types")
13---
14 CMakeLists.txt | 48 +++++++++++++++++++------------------
15 1 file changed, 25 insertions(+), 23 deletions(-)
16
17diff --git a/CMakeLists.txt b/CMakeLists.txt
18index 907c9fbff42..8b386c7be3d 100755
19--- a/CMakeLists.txt
20+++ b/CMakeLists.txt
21@@ -55,29 +55,6 @@ set_property(
22 PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo" "MinSizeRel"
23 )
24
25-# Set compile flags
26-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -m64 -msse -msse2")
27-set(CMAKE_CXX_FLAGS_DEBUG
28- "${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb -DDEBUG"
29- CACHE STRING
30- "Flags for Debug builds"
31-)
32-set(CMAKE_CXX_FLAGS_RELEASE
33- "${CMAKE_CXX_FLAGS_RELEASE} -O2 -s -DNDEBUG"
34- CACHE STRING
35- "Flags for Release builds"
36-)
37-set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
38- "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -DNDEBUG"
39- CACHE STRING
40- "Flags for RelWithDebInfo builds"
41-)
42-set(CMAKE_CXX_FLAGS_MINSIZEREL
43- "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG"
44- CACHE STRING
45- "Flags for MinSizeRel builds"
46-)
47-
48 set(CMAKE_MODULE_PATH
49 "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/"
50 CACHE INTERNAL
51@@ -155,6 +132,31 @@ project(${RDC} VERSION "${VERSION_STRING}" HOMEPAGE_URL "https://github.com/Rade
52 # this must go after project()
53 include(GNUInstallDirs)
54
55+# NB: CMAKE_<LANG>_FLAGS are initialized from environment (CXXFLAGS et al.)
56+# during project(). Setting them before project() discards env and toolchain
57+# defaults. Cf. CMAKE_<LANG>_FLAGS_INIT for toolchain overrides.
58+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -m64 -msse -msse2")
59+set(CMAKE_CXX_FLAGS_DEBUG
60+ "${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb -DDEBUG"
61+ CACHE STRING
62+ "Flags for Debug builds"
63+)
64+set(CMAKE_CXX_FLAGS_RELEASE
65+ "${CMAKE_CXX_FLAGS_RELEASE} -O2 -s -DNDEBUG"
66+ CACHE STRING
67+ "Flags for Release builds"
68+)
69+set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
70+ "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -DNDEBUG"
71+ CACHE STRING
72+ "Flags for RelWithDebInfo builds"
73+)
74+set(CMAKE_CXX_FLAGS_MINSIZEREL
75+ "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG"
76+ CACHE STRING
77+ "Flags for MinSizeRel builds"
78+)
79+
80 set(COMMON_DIR "${CMAKE_CURRENT_SOURCE_DIR}/common")
81
82 set(GRPC_ROOT_DEFAULT "/usr")
83
84From 0c8710c3570963b29c709b1cd1f78b15fd73a950 Mon Sep 17 00:00:00 2001
85From: Luna Nova <git@lunnova.dev>
86Date: Sun, 21 Dec 2025 08:13:04 -0800
87Subject: [PATCH 2/2] fix(rdc): don't reimplement CMake default build type flag
88 logic
89
90The previous approach was overly complicated and added nothing. CMake already defaults
91similar flags for each of the default supported build types.
92Additionally, the previous flags broke AArch64 as -m64 -msse are incompatible.
93It's not necessary to explicitly set this with modern toolchains.
94
95Fixes: 874a7b438f ("CMAKE - Fix build types")
96Fixes: bc7f01e992 ("Initial RDC commit")
97---
98 CMakeLists.txt | 25 +---------------------
99 example/CMakeLists.txt | 26 ++---------------------
100 tests/example/CMakeLists.txt | 24 +--------------------
101 3 files changed, 4 insertions(+), 71 deletions(-)
102
103diff --git a/CMakeLists.txt b/CMakeLists.txt
104index 8b386c7be3d..251fcddd653 100755
105--- a/CMakeLists.txt
106+++ b/CMakeLists.txt
107@@ -132,30 +132,7 @@ project(${RDC} VERSION "${VERSION_STRING}" HOMEPAGE_URL "https://github.com/Rade
108 # this must go after project()
109 include(GNUInstallDirs)
110
111-# NB: CMAKE_<LANG>_FLAGS are initialized from environment (CXXFLAGS et al.)
112-# during project(). Setting them before project() discards env and toolchain
113-# defaults. Cf. CMAKE_<LANG>_FLAGS_INIT for toolchain overrides.
114-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -m64 -msse -msse2")
115-set(CMAKE_CXX_FLAGS_DEBUG
116- "${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb -DDEBUG"
117- CACHE STRING
118- "Flags for Debug builds"
119-)
120-set(CMAKE_CXX_FLAGS_RELEASE
121- "${CMAKE_CXX_FLAGS_RELEASE} -O2 -s -DNDEBUG"
122- CACHE STRING
123- "Flags for Release builds"
124-)
125-set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
126- "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -DNDEBUG"
127- CACHE STRING
128- "Flags for RelWithDebInfo builds"
129-)
130-set(CMAKE_CXX_FLAGS_MINSIZEREL
131- "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG"
132- CACHE STRING
133- "Flags for MinSizeRel builds"
134-)
135+add_compile_options(-Wall -Wextra)
136
137 set(COMMON_DIR "${CMAKE_CURRENT_SOURCE_DIR}/common")
138
139diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt
140index 378a2005818..7c51307ec38 100755
141--- a/example/CMakeLists.txt
142+++ b/example/CMakeLists.txt
143@@ -31,30 +31,6 @@ cmake_minimum_required(VERSION 3.15)
144 option(CMAKE_VERBOSE_MAKEFILE "Enable verbose output" ON)
145 option(CMAKE_EXPORT_COMPILE_COMMANDS "Export compile commands for linters and autocompleters" ON)
146
147-# Set compile flags
148-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -m64 -msse -msse2")
149-set(CMAKE_CXX_FLAGS_DEBUG
150- "${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb -DDEBUG"
151- CACHE STRING
152- "Flags for Debug builds"
153-)
154-# note: no '-s' here unlike other CMakeLists.txt
155-set(CMAKE_CXX_FLAGS_RELEASE
156- "${CMAKE_CXX_FLAGS_RELEASE} -O2 -DNDEBUG"
157- CACHE STRING
158- "Flags for Release builds"
159-)
160-set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
161- "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -DNDEBUG"
162- CACHE STRING
163- "Flags for RelWithDebInfo builds"
164-)
165-set(CMAKE_CXX_FLAGS_MINSIZEREL
166- "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG"
167- CACHE STRING
168- "Flags for MinSizeRel builds"
169-)
170-
171 set(CMAKE_CXX_STANDARD 17 CACHE STRING "The C++ standard to use")
172 set(CMAKE_CXX_STANDARD_REQUIRED ON)
173 set(CMAKE_CXX_EXTENSIONS OFF)
174@@ -66,6 +42,8 @@ endif()
175
176 project(RDC_example)
177
178+add_compile_options(-Wall -Wextra)
179+
180 # provides cmake_print_variables(VAR)
181 include(CMakePrintHelpers)
182
183diff --git a/tests/example/CMakeLists.txt b/tests/example/CMakeLists.txt
184index d5614f387bd..13c2f3857a1 100755
185--- a/tests/example/CMakeLists.txt
186+++ b/tests/example/CMakeLists.txt
187@@ -22,29 +22,7 @@ message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
188 message(" Cmake Example Lib ")
189 message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
190
191-# Set compile flags
192-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -m64 -msse -msse2")
193-set(CMAKE_CXX_FLAGS_DEBUG
194- "${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb -DDEBUG"
195- CACHE STRING
196- "Flags for Debug builds"
197-)
198-# note: no '-s' here unlike other CMakeLists.txt
199-set(CMAKE_CXX_FLAGS_RELEASE
200- "${CMAKE_CXX_FLAGS_RELEASE} -O2 -DNDEBUG"
201- CACHE STRING
202- "Flags for Release builds"
203-)
204-set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
205- "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -DNDEBUG"
206- CACHE STRING
207- "Flags for RelWithDebInfo builds"
208-)
209-set(CMAKE_CXX_FLAGS_MINSIZEREL
210- "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG"
211- CACHE STRING
212- "Flags for MinSizeRel builds"
213-)
214+add_compile_options(-Wall -Wextra)
215
216 # Required Defines first:
217