mirror of
https://github.com/godotengine/godot-cpp.git
synced 2026-01-06 06:10:06 +03:00
CMake: public/private flags
Made all warnings private. Warning as error private Consistency in generator expressions
This commit is contained in:
@@ -29,11 +29,11 @@ set(IS_GNU "$<CXX_COMPILER_ID:GNU>")
|
|||||||
set(IS_MSVC "$<CXX_COMPILER_ID:MSVC>")
|
set(IS_MSVC "$<CXX_COMPILER_ID:MSVC>")
|
||||||
set(NOT_MSVC "$<NOT:$<CXX_COMPILER_ID:MSVC>>")
|
set(NOT_MSVC "$<NOT:$<CXX_COMPILER_ID:MSVC>>")
|
||||||
|
|
||||||
set(GNU_LT_V8 "$<VERSION_LESS:$<CXX_COMPILER_VERSION>,8>")
|
set(LT_V8 "$<VERSION_LESS:$<CXX_COMPILER_VERSION>,8>")
|
||||||
set(GNU_GE_V9 "$<VERSION_GREATER_EQUAL:$<CXX_COMPILER_VERSION>,9>")
|
set(GE_V9 "$<VERSION_GREATER_EQUAL:$<CXX_COMPILER_VERSION>,9>")
|
||||||
set(GNU_GT_V11 "$<VERSION_GREATER_EQUAL:$<CXX_COMPILER_VERSION>,11>")
|
set(GT_V11 "$<VERSION_GREATER_EQUAL:$<CXX_COMPILER_VERSION>,11>")
|
||||||
set(GNU_LT_V11 "$<VERSION_LESS:$<CXX_COMPILER_VERSION>,11>")
|
set(LT_V11 "$<VERSION_LESS:$<CXX_COMPILER_VERSION>,11>")
|
||||||
set(GNU_GE_V12 "$<VERSION_GREATER_EQUAL:$<CXX_COMPILER_VERSION>,12>")
|
set(GE_V12 "$<VERSION_GREATER_EQUAL:$<CXX_COMPILER_VERSION>,12>")
|
||||||
|
|
||||||
#[===========================[ compiler_detection ]===========================]
|
#[===========================[ compiler_detection ]===========================]
|
||||||
#[[ Check for clang-cl with MSVC frontend
|
#[[ Check for clang-cl with MSVC frontend
|
||||||
@@ -63,6 +63,8 @@ function(common_compiler_flags)
|
|||||||
# These compiler options reflect what is in godot/SConstruct.
|
# These compiler options reflect what is in godot/SConstruct.
|
||||||
target_compile_options(
|
target_compile_options(
|
||||||
godot-cpp
|
godot-cpp
|
||||||
|
# The public flag tells CMake that the following options are transient,
|
||||||
|
# and will propagate to consumers.
|
||||||
PUBLIC
|
PUBLIC
|
||||||
# Disable exception handling. Godot doesn't use exceptions anywhere, and this
|
# Disable exception handling. Godot doesn't use exceptions anywhere, and this
|
||||||
# saves around 20% of binary size and very significant build time.
|
# saves around 20% of binary size and very significant build time.
|
||||||
@@ -86,7 +88,15 @@ function(common_compiler_flags)
|
|||||||
$<${IS_MSVC}:
|
$<${IS_MSVC}:
|
||||||
# /MP isn't valid for clang-cl with msvc frontend
|
# /MP isn't valid for clang-cl with msvc frontend
|
||||||
$<$<CXX_COMPILER_ID:MSVC>:/MP${PROC_N}>
|
$<$<CXX_COMPILER_ID:MSVC>:/MP${PROC_N}>
|
||||||
/W4
|
|
||||||
|
# Interpret source files as utf-8
|
||||||
|
/utf-8
|
||||||
|
>
|
||||||
|
|
||||||
|
# Warnings below, these do not need to propagate to consumers.
|
||||||
|
PRIVATE
|
||||||
|
$<${IS_MSVC}:
|
||||||
|
/W4 # Warning level 4 (informational) warnings that aren't off by default.
|
||||||
|
|
||||||
# Disable warnings which we don't plan to fix.
|
# Disable warnings which we don't plan to fix.
|
||||||
/wd4100 # C4100 (unreferenced formal parameter): Doesn't play nice with polymorphism.
|
/wd4100 # C4100 (unreferenced formal parameter): Doesn't play nice with polymorphism.
|
||||||
@@ -99,8 +109,6 @@ function(common_compiler_flags)
|
|||||||
/wd4514 # C4514 (unreferenced inline function has been removed)
|
/wd4514 # C4514 (unreferenced inline function has been removed)
|
||||||
/wd4714 # C4714 (function marked as __forceinline not inlined)
|
/wd4714 # C4714 (function marked as __forceinline not inlined)
|
||||||
/wd4820 # C4820 (padding added after construct)
|
/wd4820 # C4820 (padding added after construct)
|
||||||
|
|
||||||
/utf-8
|
|
||||||
>
|
>
|
||||||
|
|
||||||
# Clang and GNU common options
|
# Clang and GNU common options
|
||||||
@@ -130,18 +138,18 @@ function(common_compiler_flags)
|
|||||||
-Wstringop-overflow=4
|
-Wstringop-overflow=4
|
||||||
|
|
||||||
# Bogus warning fixed in 8+.
|
# Bogus warning fixed in 8+.
|
||||||
$<${GNU_LT_V8}:-Wno-strict-overflow>
|
$<${LT_V8}:-Wno-strict-overflow>
|
||||||
|
|
||||||
$<${GNU_GE_V9}:-Wattribute-alias=2>
|
$<${GE_V9}:-Wattribute-alias=2>
|
||||||
|
|
||||||
# Broke on MethodBind templates before GCC 11.
|
# Broke on MethodBind templates before GCC 11.
|
||||||
$<${GNU_GT_V11}:-Wlogical-op>
|
$<${GT_V11}:-Wlogical-op>
|
||||||
|
|
||||||
# Regression in GCC 9/10, spams so much in our variadic templates that we need to outright disable it.
|
# Regression in GCC 9/10, spams so much in our variadic templates that we need to outright disable it.
|
||||||
$<${GNU_LT_V11}:-Wno-type-limits>
|
$<${LT_V11}:-Wno-type-limits>
|
||||||
|
|
||||||
# False positives in our error macros, see GH-58747.
|
# False positives in our error macros, see GH-58747.
|
||||||
$<${GNU_GE_V12}:-Wno-return-type>
|
$<${GE_V12}:-Wno-return-type>
|
||||||
>
|
>
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -167,11 +175,6 @@ function(common_compiler_flags)
|
|||||||
target_link_options(
|
target_link_options(
|
||||||
godot-cpp
|
godot-cpp
|
||||||
PUBLIC
|
PUBLIC
|
||||||
$<${IS_MSVC}:
|
|
||||||
/WX # treat link warnings as errors.
|
|
||||||
/MANIFEST:NO # We dont need a manifest
|
|
||||||
>
|
|
||||||
|
|
||||||
$<${DEBUG_SYMBOLS}:$<${IS_MSVC}:/DEBUG:FULL>>
|
$<${DEBUG_SYMBOLS}:$<${IS_MSVC}:/DEBUG:FULL>>
|
||||||
|
|
||||||
$<$<NOT:${DEBUG_SYMBOLS}>:
|
$<$<NOT:${DEBUG_SYMBOLS}>:
|
||||||
@@ -179,6 +182,11 @@ function(common_compiler_flags)
|
|||||||
$<${IS_CLANG}:-s>
|
$<${IS_CLANG}:-s>
|
||||||
$<${IS_APPLECLANG}:-Wl,-S -Wl,-x -Wl,-dead_strip>
|
$<${IS_APPLECLANG}:-Wl,-S -Wl,-x -Wl,-dead_strip>
|
||||||
>
|
>
|
||||||
|
PRIVATE
|
||||||
|
$<${IS_MSVC}:
|
||||||
|
/WX # treat link warnings as errors.
|
||||||
|
/MANIFEST:NO # We dont need a manifest
|
||||||
|
>
|
||||||
)
|
)
|
||||||
# gersemi: on
|
# gersemi: on
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|||||||
Reference in New Issue
Block a user