Skip to content
This repository was archived by the owner on Nov 26, 2025. It is now read-only.

Commit a3dc839

Browse files
committed
cmake: copy across flags from dogen
1 parent c242582 commit a3dc839

File tree

1 file changed

+11
-95
lines changed

1 file changed

+11
-95
lines changed

projects/CMakeLists.txt

Lines changed: 11 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -75,20 +75,12 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
7575
set(CMAKE_COMPILER_IS_CLANGXX "TRUE")
7676
endif()
7777

78-
if (UNIX)
79-
check_library_exists(rt clock_gettime "" HAVE_CLOCK_GETTIME)
80-
if (HAVE_CLOCK_GETTIME)
81-
message(STATUS "Requires clock_gettime.")
82-
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} rt)
83-
else()
84-
message(STATUS "Does NOT require clock_gettime.")
85-
endif()
86-
endif()
87-
8878
#
8979
# Use C++ 17 on all compilers.
9080
#
91-
set(CMAKE_CXX_STANDARD 17)
81+
set(CMAKE_CXX_STANDARD 17 CACHE STRING "The C++ standard to use")
82+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
83+
set(CMAKE_CXX_EXTENSIONS OFF)
9284

9385
if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX
9486
AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
@@ -97,15 +89,18 @@ if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX
9789

9890
if (CMAKE_COMPILER_IS_GNUCXX)
9991
set(warning_flags "${warning_flags} -Wno-maybe-uninitialized")
100-
101-
# Ignore self-assigns as we need this for generated tests.
102-
set(warning_flags "${warning_flags} -Wno-self-assign-overloaded ")
10392
endif()
10493

10594
if (CMAKE_COMPILER_IS_CLANGXX)
10695
# disable mismatched tags as there are STL inconsistencies that
10796
# make it a bit useless.
10897
set(warning_flags "${warning_flags} -Wno-mismatched-tags")
98+
99+
# Ignore self-assigns as we need this for generated tests.
100+
set(warning_flags "${warning_flags} -Wno-self-assign-overloaded ")
101+
102+
# force DWARF version to 4 in order to keep Valgrind happy.
103+
set(warning_flags "${warning_flags} -gdwarf-4")
109104
if(CCACHE_PROGRAM)
110105
# CCache and Clang don't seem to play nice when it comes
111106
# to unused arguments.
@@ -129,7 +124,6 @@ if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX
129124
set(warning_flags "${warning_flags} -Wwrite-strings")
130125

131126
# enable RTTI
132-
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
133127
if(APPLE)
134128
set(other_flags "${other_flags} -fvisibility=default")
135129
else()
@@ -155,91 +149,13 @@ if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX
155149
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${other_flags}")
156150
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${profiling_flags}")
157151

158-
# ignore fuzzy link errors
159-
if (WIN32)
160-
set(CMAKE_EXE_LINKER_FLAGS
161-
"${CMAKE_EXE_LINKER_FLAGS} -Wl,-enable-stdcall-fixup")
162-
set(CMAKE_SHARED_LINKER_FLAGS
163-
"${CMAKE_SHARED_LINKER_FLAGS} -Wl,-enable-stdcall-fixup")
164-
endif()
165-
166-
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC" OR
167-
CMAKE_CXX_SIMULATE_ID MATCHES "MSVC")
168-
if(${MSVC_VERSION} GREATER 1399) # 1400+ => VC2005+
169-
# cannot use incremental rebuild
170-
string(REPLACE "/Gm" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
171-
string(REPLACE "/Gm" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
172-
string(REPLACE "/Gm" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
173-
string(REPLACE "/Gm" "" CMAKE_CXX_FLAGS_RELEASE
174-
"${CMAKE_CXX_FLAGS_RELEASE}")
175-
176-
# workaround for C1128: number of sections exceeded object
177-
# file format limit.
178-
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
179-
endif()
180-
181-
# It seems Wall and /W4 are not practical for now as it includes
182-
# all of the third party headers.
183-
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
184-
set(CMAKE_CXX_FLAGS
185-
"${CMAKE_CXX_FLAGS} /D _SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING")
186-
set(CMAKE_CXX_FLAGS
187-
"${CMAKE_CXX_FLAGS} /D _SILENCE_CXX17_ALLOCATOR_VOID_DEPRECATION_WARNING")
188-
set(CMAKE_CXX_FLAGS
189-
"${CMAKE_CXX_FLAGS} /D CRT_SECURE_NO_WARNINGS")
190-
191-
foreach(flag_var CMAKE_C_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO CMAKE_CXX_FLAGS_RELWITHDEBINFO)
192-
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${flag_var}")
193-
string(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${flag_var}")
194-
endforeach(flag_var)
195-
196-
# Options specific to clang-cl. We suppress a number of warnings
197-
# because at present the code is littered with these coming out of
198-
# third party libraries like boost.
199-
if (CMAKE_COMPILER_IS_CLANGXX)
200-
# Ingore the annoying "locally defined symbol imported"
201-
# warning we get from boost thread on clang-cl.
202-
set(CMAKE_EXE_LINKER_FLAGS
203-
"${CMAKE_EXE_LINKER_FLAGS} /IGNORE:4217")
204-
205-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xclang -Wno-unknown-pragmas")
206-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xclang -Wno-assume")
207-
set(CMAKE_CXX_FLAGS
208-
"${CMAKE_CXX_FLAGS} -Xclang -Wno-deprecated-declarations")
209-
set(CMAKE_CXX_FLAGS
210-
"${CMAKE_CXX_FLAGS} -Xclang -Wno-delete-non-virtual-dtor")
211-
set(CMAKE_CXX_FLAGS
212-
"${CMAKE_CXX_FLAGS} -Xclang -Wno-potentially-evaluated-expression")
213-
endif()
214-
215-
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
216-
# flag not supported by clang-cl
217-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
218-
219-
# For some reason CMake seems to be including the debug
220-
# version of this library on release builds as well so we
221-
# need to ignore it. Not adding this to clang-cl as it
222-
# does not seem to recognise it.
223-
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE
224-
"${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:libcmtd")
225-
set(CMAKE_EXE_LINKER_FLAGS_RELEASE
226-
"${CMAKE_EXE_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:libcmtd")
227-
elseif(UNIX AND NOT APPLE)
152+
if(UNIX AND NOT APPLE)
153+
# use the Gold linker.
228154
set(CMAKE_EXE_LINKER_FLAGS
229155
"${CMAKE_EXE_LINKER_FLAGS} -Wl,-fuse-ld=gold")
230156
set(CMAKE_SHARED_LINKER_FLAGS
231157
"${CMAKE_SHARED_LINKER_FLAGS} -Wl,-fuse-ld=gold")
232158
endif()
233-
234-
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}" CACHE STRING "MSVC C Debug MT flags " FORCE)
235-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}" CACHE STRING "MSVC CXX Debug MT flags " FORCE)
236-
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}" CACHE STRING "MSVC C Release MT flags " FORCE)
237-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}" CACHE STRING "MSVC CXX Release MT flags " FORCE)
238-
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}" CACHE STRING "MSVC C Debug MT flags " FORCE)
239-
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}" CACHE STRING "MSVC C Release MT flags " FORCE)
240-
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}" CACHE STRING "MSVC CXX Debug MT flags " FORCE)
241-
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}" CACHE STRING "MSVC CXX Release MT flags " FORCE)
242-
243159
endif()
244160

245161
# user includes

0 commit comments

Comments
 (0)