Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F340532
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Size
8 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/cmake/modules/HandleROSAOptions.cmake b/cmake/modules/HandleROSAOptions.cmake
index 0dba861..e569892 100644
--- a/cmake/modules/HandleROSAOptions.cmake
+++ b/cmake/modules/HandleROSAOptions.cmake
@@ -1,221 +1,221 @@
# This CMake module is responsible for interpreting the user defined ROSA_
# options and executing the appropriate CMake commands to realize the users'
# selections.
include(CheckCCompilerFlag)
include(CheckCXXCompilerFlag)
if ( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )
set(ROSA_COMPILER_IS_CLANG ON)
# Enforce minimum version.
if ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.9.0" )
message(FATAL_ERROR "Insufficient LLVM version")
endif()
else()
set(ROSA_COMPILER_IS_CLANG OFF)
endif()
if( CMAKE_COMPILER_IS_GNUCXX )
set(ROSA_COMPILER_IS_GCC_COMPATIBLE ON)
elseif( MSVC )
set(ROSA_COMPILER_IS_GCC_COMPATIBLE OFF)
elseif( ROSA_COMPILER_IS_CLANG )
set(ROSA_COMPILER_IS_GCC_COMPATIBLE ON)
else()
message(FATAL_ERROR "Unexpected C++ compiler!")
endif()
function(append value)
foreach(variable ${ARGN})
set(${variable} "${${variable}} ${value}" PARENT_SCOPE)
endforeach(variable)
endfunction()
function(append_if condition value)
if (${condition})
foreach(variable ${ARGN})
set(${variable} "${${variable}} ${value}" PARENT_SCOPE)
endforeach(variable)
endif()
endfunction()
function(remove value)
foreach(variable ${ARGN})
string(REPLACE "${value}" "" NEWVAR "${${variable}}")
set(${variable} "${NEWVAR}" PARENT_SCOPE)
endforeach(variable)
endfunction()
# NDEBUG on non-Debug builds
append("-DNDEBUG" CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS_MINSIZEREL
CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_C_FLAGS_MINSIZEREL)
# Assertions are always enabled on Debug builds, this is interesting for
# non-Debug builds.
if( NOT "${uppercase_CMAKE_BUILD_TYPE}" STREQUAL "DEBUG" AND ${ROSA_ENABLE_ASSERTIONS} )
# MSVC doesn't like _DEBUG on release builds. See PR 4379.
if( NOT MSVC )
add_definitions( -D_DEBUG )
set(ENABLE_ASSERTIONS "1")
else()
set(ENABLE_ASSERTIONS "0")
endif()
# On non-Debug builds we NDEBUG, but in this case we need to undefine it:
add_definitions(-UNDEBUG)
# Also remove /D NDEBUG to avoid MSVC warnings about conflicting defines.
foreach (flags_var_to_scrub
CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS_MINSIZEREL
CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_C_FLAGS_MINSIZEREL)
string (REGEX REPLACE "(^| )[/-]D *NDEBUG($| )" " "
"${flags_var_to_scrub}" "${${flags_var_to_scrub}}")
endforeach()
endif()
set(ROSA_ENABLE_ASSERTIONS_INT -1)
if( "${uppercase_CMAKE_BUILD_TYPE}" STREQUAL "DEBUG" OR ${ROSA_ENABLE_ASSERTIONS} )
set(ROSA_ENABLE_ASSERTIONS_INT 1)
endif()
if( ROSA_COMPILER_IS_GCC_COMPATIBLE )
append("-Wall -Wextra -Wdocumentation -Werror" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
append_if(ROSA_ENABLE_PEDANTIC "-pedantic -Wno-long-long" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
append("-fno-rtti -fno-exceptions" CMAKE_CXX_FLAGS)
append("-Wno-c++1z-compat" CMAKE_CXX_FLAGS)
- check_cxx_compiler_flag("-std=c++14" CXX_SUPPORTS_CXX14)
- if ( CXX_SUPPORTS_CXX14 )
- append("-std=c++14" CMAKE_CXX_FLAGS)
+ check_cxx_compiler_flag("-std=c++17" CXX_SUPPORTS_CXX17)
+ if ( CXX_SUPPORTS_CXX17 )
+ append("-std=c++17" CMAKE_CXX_FLAGS)
else()
- message(FATAL_ERROR "RoSA requires C++17 support but the '-std=c++14' flag isn't supported.")
+ message(FATAL_ERROR "RoSA requires C++17 support but the '-std=c++17' flag isn't supported.")
endif()
check_c_compiler_flag("-std=c11" C_SUPPORTS_C11)
if ( C_SUPPORTS_C11 )
append("-std=c11" CMAKE_C_FLAGS)
else()
message(FATAL_ERROR "RoSA requires C11 support but the '-std=c11' flag isn't supported.")
endif()
elseif ( MSVC )
if (ROSA_COMPILER_IS_CLANG)
# Remove/adjsut incorrect flags that might be generated automatically.
foreach (flags_var_to_scrub
CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS_MINSIZEREL
CMAKE_C_FLAGS
CMAKE_C_FLAGS_DEBUG
CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_C_FLAGS_MINSIZEREL)
string (REGEX REPLACE "(^| )-Wall($| )" " "
"${flags_var_to_scrub}" "${${flags_var_to_scrub}}")
string (REGEX REPLACE "(^| )-frtti($| )" " "
"${flags_var_to_scrub}" "${${flags_var_to_scrub}}")
string (REGEX REPLACE "(^| )-fexceptions($| )" " "
"${flags_var_to_scrub}" "${${flags_var_to_scrub}}")
string (REGEX REPLACE "(^| )-fno-inline($| )" " -Ob0 "
"${flags_var_to_scrub}" "${${flags_var_to_scrub}}")
string (REGEX REPLACE "(^| )-gline-tables-only($| )" " "
"${flags_var_to_scrub}" "${${flags_var_to_scrub}}")
message("${flags_var_to_scrub}: ${${flags_var_to_scrub}}")
endforeach()
endif()
# Flags matching GCC-compatible "-Wall -Wextra -Werror".
# NOTE: Do not use -Wall for MSVC because it generates silly warning (e.g.,
# warnings about things in external libraries), use -W4 instead.
append("/W4 /WX" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
if ( ROSA_COMPILER_IS_CLANG )
# GCC-compatible flags without corresponding MSVC options.
append("-Wdocumentation" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
# The flag "-pedantic" is not in the MSVC flavour.
append_if(ROSA_ENABLE_PEDANTIC "-Wno-long-long" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
endif()
# Flags matching GCC-compatible "-fno-rtti".
append("/GR-" CMAKE_CXX_FLAGS)
# NOTE: We cannot disable unwind semantics (i.e., -fno-exceptions) for Windows
# libraries...
append("/EHsc" CMAKE_CXX_FLAGS)
if ( ROSA_COMPILER_IS_CLANG )
append("-Wno-c++1z-compat" CMAKE_CXX_FLAGS)
# MSVC puts there some garbage which needs to be ignored...
append("-Qunused-arguments" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
endif()
if ( ROSA_COMPILER_IS_CLANG )
- check_cxx_compiler_flag("-Xclang -std=c++14" CXX_SUPPORTS_CXX14)
- if ( CXX_SUPPORTS_CXX14 )
- append("-Xclang -std=c++14" CMAKE_CXX_FLAGS)
+ check_cxx_compiler_flag("-Xclang -std=c++17" CXX_SUPPORTS_CXX17)
+ if ( CXX_SUPPORTS_CXX17 )
+ append("-Xclang -std=c++17" CMAKE_CXX_FLAGS)
else()
- message(FATAL_ERROR "RoSA requires C++17 support but the '-std=c++14' flag isn't supported.")
+ message(FATAL_ERROR "RoSA requires C++17 support but the '-std=c++17' flag isn't supported.")
endif()
check_c_compiler_flag("-Xclang -std=c11" C_SUPPORTS_C11)
if ( C_SUPPORTS_C11 )
append("-Xclang -std=c11" CMAKE_C_FLAGS)
else()
message(FATAL_ERROR "RoSA requires C11 support but the '-std=c11' flag isn't supported.")
endif()
else ()
- check_cxx_compiler_flag("/std:c++14 /permissive-" CXX_SUPPORTS_CXX14)
- if ( CXX_SUPPORTS_CXX14 )
- append("/std:c++14 /permissive-" CMAKE_CXX_FLAGS)
+ check_cxx_compiler_flag("/std:c++17 /permissive-" CXX_SUPPORTS_CXX17)
+ if ( CXX_SUPPORTS_CXX17 )
+ append("/std:c++17 /permissive-" CMAKE_CXX_FLAGS)
else()
- message(FATAL_ERROR "RoSA requires C++17 support but the '/std:c++14 /permissive-' flags aren't supported.")
+ message(FATAL_ERROR "RoSA requires C++17 support but the '/std:c++17 /permissive-' flags aren't supported.")
endif()
message(WARNING "RoSA is supposed to use C11 code in C files, which MSVC might not fully support.")
# Make MSVC ignore warning C4514 about unreferenced inline functions.
append("/nowarn:4514")
# Make MSVC ignore warning LNK4221 in libraries. The warning is caused by
# empty object files that correspond to the empty .cpp files, which we have
# for generating compile database entries for all header files.
append("/IGNORE:4221" CMAKE_STATIC_LINKER_FLAGS)
endif()
endif()
if( ROSA_ENABLE_CLANG_TIDY )
# Set clang-tidy arguments, use the same for both C and CXX.
set(CMAKE_C_CLANG_TIDY "${CLANGTIDY_EXECUTABLE};-header-filter=.*")
set(CMAKE_CXX_CLANG_TIDY ${CMAKE_C_CLANG_TIDY})
# Apply suggested fixes if requested.
append_if(ROSA_CLANG_TIDY_FIX ",-fix" CMAKE_C_CLANG_TIDY CMAKE_CXX_CLANG_TIDY)
endif( ROSA_ENABLE_CLANG_TIDY )
if( ROSA_INCLUDE_APPS STREQUAL "")
message(STATUS "Include all apps by default.")
SUBDIRLIST(ROSA_INCLUDE_APPS ${ROSA_MAIN_SRC_DIR}/apps)
else()
message(STATUS "Include apps: ${ROSA_INCLUDE_APPS}.")
endif()
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sun, Apr 27, 6:20 PM (1 d, 10 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
134552
Default Alt Text
(8 KB)
Attached To
Mode
R20 SoC_Rosa_repo
Attached
Detach File
Event Timeline
Log In to Comment