Allowing to build with ASan enabled
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
This commit is contained in:
+62
-65
@@ -20,24 +20,33 @@ include_guard(GLOBAL)
|
||||
# \arg:LINK_STATIC_${CONFIGURATION}
|
||||
# \arg:LINK_NON_STATIC
|
||||
# \arg:LINK_NON_STATIC_${CONFIGURATION}
|
||||
# \arg:LINK_EXECUTABLE
|
||||
# \arg:LINK_EXECUTABLE_${CONFIGURATION}
|
||||
# \arg:LINK_EXE
|
||||
# \arg:LINK_EXE_${CONFIGURATION}
|
||||
# \arg:LINK_MODULE
|
||||
# \arg:LINK_MODULE_${CONFIGURATION}
|
||||
# \arg:LINK_SHARED
|
||||
# \arg:LINK_SHARED_${CONFIGURATION}
|
||||
#
|
||||
function(ly_append_configurations_options)
|
||||
|
||||
set(options)
|
||||
set(oneValueArgs)
|
||||
set(multiValueArgs
|
||||
set(multiArgs
|
||||
DEFINES
|
||||
COMPILATION
|
||||
LINK
|
||||
LINK_STATIC
|
||||
LINK_NON_STATIC
|
||||
LINK_EXECUTABLE
|
||||
LINK_EXE
|
||||
LINK_MODULE
|
||||
LINK_SHARED
|
||||
)
|
||||
foreach(conf IN LISTS CMAKE_CONFIGURATION_TYPES)
|
||||
string(TOUPPER ${conf} UCONF)
|
||||
set(multiValueArgs ${multiValueArgs} DEFINES_${UCONF} COMPILATION_${UCONF} LINK_${UCONF} LINK_STATIC_${UCONF} LINK_NON_STATIC_${UCONF} LINK_EXECUTABLE_${UCONF})
|
||||
foreach(arg IN LISTS multiArgs)
|
||||
list(APPEND multiValueArgs ${arg})
|
||||
foreach(conf IN LISTS CMAKE_CONFIGURATION_TYPES)
|
||||
string(TOUPPER ${conf} UCONF)
|
||||
list(APPEND multiValueArgs ${arg}_${UCONF})
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
cmake_parse_arguments(ly_append_configurations_options "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
@@ -45,48 +54,46 @@ function(ly_append_configurations_options)
|
||||
if(ly_append_configurations_options_DEFINES)
|
||||
add_compile_definitions(${ly_append_configurations_options_DEFINES})
|
||||
endif()
|
||||
|
||||
if(ly_append_configurations_options_COMPILATION)
|
||||
string(REPLACE ";" " " COMPILATION_STR "${ly_append_configurations_options_COMPILATION}")
|
||||
string(APPEND CMAKE_C_FLAGS " " ${COMPILATION_STR})
|
||||
string(APPEND CMAKE_CXX_FLAGS " " ${COMPILATION_STR})
|
||||
set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} PARENT_SCOPE)
|
||||
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} PARENT_SCOPE)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMPILATION_STR}" PARENT_SCOPE)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMPILATION_STR}" PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
if(ly_append_configurations_options_LINK)
|
||||
string(REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK}")
|
||||
string(APPEND LINK_OPTIONS " " ${LINK_STR})
|
||||
set(LINK_OPTIONS ${LINK_OPTIONS} PARENT_SCOPE)
|
||||
|
||||
# Not defining these issue warnings, TODO: investigate
|
||||
set(CMAKE_STATIC_LINKER_FLAGS ${LINK_OPTIONS} PARENT_SCOPE)
|
||||
set(CMAKE_MODULE_LINKER_FLAGS ${LINK_OPTIONS} PARENT_SCOPE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS ${LINK_OPTIONS} PARENT_SCOPE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS ${LINK_OPTIONS} PARENT_SCOPE)
|
||||
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE)
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINK_OPTIONS}" PARENT_SCOPE)
|
||||
endif()
|
||||
if(ly_append_configurations_options_LINK_STATIC)
|
||||
string(REPLACE ";" " " LINK_STATIC_STR "${ly_append_configurations_options_LINK_STATIC}")
|
||||
string(APPEND LINK_STATIC_OPTIONS " " ${LINK_STATIC_STR})
|
||||
set(LINK_STATIC_OPTIONS ${LINK_STATIC_OPTIONS} PARENT_SCOPE)
|
||||
|
||||
set(CMAKE_STATIC_LINKER_FLAGS ${LINK_STATIC_OPTIONS} PARENT_SCOPE)
|
||||
if(ly_append_configurations_options_LINK_STATIC)
|
||||
string(REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_STATIC}")
|
||||
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
if(ly_append_configurations_options_LINK_NON_STATIC)
|
||||
string(REPLACE ";" " " LINK_NON_STATIC_STR "${ly_append_configurations_options_LINK_NON_STATIC}")
|
||||
string(APPEND LINK_NON_STATIC_OPTIONS " " ${LINK_NON_STATIC_STR})
|
||||
set(LINK_NON_STATIC_OPTIONS ${LINK_NON_STATIC_OPTIONS} PARENT_SCOPE)
|
||||
|
||||
set(CMAKE_MODULE_LINKER_FLAGS ${LINK_NON_STATIC_OPTIONS} PARENT_SCOPE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS ${LINK_NON_STATIC_OPTIONS} PARENT_SCOPE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS ${LINK_NON_STATIC_OPTIONS} PARENT_SCOPE)
|
||||
string(REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_NON_STATIC}")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
if(ly_append_configurations_options_LINK_EXECUTABLE)
|
||||
string(REPLACE ";" " " LINK_EXECUTABLE_STR "${ly_append_configurations_options_LINK_EXECUTABLE}")
|
||||
string(APPEND LINK_EXECUTABLE_OPTIONS " " ${LINK_EXECUTABLE_STR})
|
||||
set(LINK_EXECUTABLE_OPTIONS ${LINK_EXECUTABLE_OPTIONS} PARENT_SCOPE)
|
||||
if(ly_append_configurations_options_LINK_EXE)
|
||||
string(REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_EXE}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
set(CMAKE_EXE_LINKER_FLAGS ${LINK_EXECUTABLE_OPTIONS} PARENT_SCOPE)
|
||||
if(ly_append_configurations_options_LINK_MODULE)
|
||||
string(REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_MODULE}")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
if(ly_append_configurations_options_LINK_SHARED)
|
||||
string(REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_SHARED}")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
foreach(conf IN LISTS CMAKE_CONFIGURATION_TYPES)
|
||||
@@ -100,43 +107,33 @@ function(ly_append_configurations_options)
|
||||
endif()
|
||||
if(ly_append_configurations_options_COMPILATION_${UCONF})
|
||||
string(REPLACE ";" " " COMPILATION_STR "${ly_append_configurations_options_COMPILATION_${UCONF}}")
|
||||
string(APPEND CMAKE_C_FLAGS_${UCONF} " " ${COMPILATION_STR})
|
||||
string(APPEND CMAKE_CXX_FLAGS_${UCONF} " " ${COMPILATION_STR})
|
||||
set(CMAKE_C_FLAGS_${UCONF} ${CMAKE_C_FLAGS_${UCONF}} PARENT_SCOPE)
|
||||
set(CMAKE_CXX_FLAGS_${UCONF} ${CMAKE_CXX_FLAGS_${UCONF}} PARENT_SCOPE)
|
||||
set(CMAKE_C_FLAGS_${UCONF} "${CMAKE_C_FLAGS_${UCONF}} ${COMPILATION_STR}" PARENT_SCOPE)
|
||||
set(CMAKE_CXX_FLAGS_${UCONF} "${CMAKE_CXX_FLAGS_${UCONF}} ${COMPILATION_STR}" PARENT_SCOPE)
|
||||
endif()
|
||||
if(ly_append_configurations_options_LINK_${UCONF})
|
||||
string(REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_${UCONF}}")
|
||||
string(APPEND LINK_OPTIONS_${UCONF} " " ${LINK_STR})
|
||||
set(LINK_OPTIONS_${UCONF} ${LINK_OPTIONS_${UCONF}} PARENT_SCOPE)
|
||||
|
||||
set(CMAKE_STATIC_LINKER_FLAGS_${UCONF} ${LINK_OPTIONS_${UCONF}} PARENT_SCOPE)
|
||||
set(CMAKE_MODULE_LINKER_FLAGS_${UCONF} ${LINK_OPTIONS_${UCONF}} PARENT_SCOPE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_${UCONF} ${LINK_OPTIONS_${UCONF}} PARENT_SCOPE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS_${UCONF} ${LINK_OPTIONS_${UCONF}} PARENT_SCOPE)
|
||||
set(CMAKE_STATIC_LINKER_FLAGS_${UCONF} "${CMAKE_STATIC_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE)
|
||||
set(CMAKE_MODULE_LINKER_FLAGS_${UCONF} "${CMAKE_MODULE_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_${UCONF} "${CMAKE_SHARED_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS_${UCONF} "${CMAKE_EXE_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE)
|
||||
endif()
|
||||
if(ly_append_configurations_options_LINK_STATIC_${UCONF})
|
||||
string(REPLACE ";" " " LINK_STATIC_STR "${ly_append_configurations_options_LINK_STATIC_${UCONF}}")
|
||||
string(APPEND LINK_STATIC_OPTIONS_${UCONF} " " ${LINK_STATIC_STR})
|
||||
set(LINK_STATIC_OPTIONS_${UCONF} ${LINK_STATIC_OPTIONS_${UCONF}} PARENT_SCOPE)
|
||||
|
||||
set(CMAKE_STATIC_LINKER_FLAGS_${UCONF} ${LINK_STATIC_OPTIONS_${UCONF}} PARENT_SCOPE)
|
||||
string(REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_STATIC_${UCONF}}")
|
||||
set(CMAKE_STATIC_LINKER_FLAGS_${UCONF} "${CMAKE_STATIC_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE)
|
||||
endif()
|
||||
if(ly_append_configurations_options_LINK_NON_STATIC_${UCONF})
|
||||
string(REPLACE ";" " " LINK_NON_STATIC_STR "${ly_append_configurations_options_LINK_NON_STATIC_${UCONF}}")
|
||||
string(APPEND LINK_NON_STATIC_OPTIONS_${UCONF} " " ${LINK_NON_STATIC_STR})
|
||||
set(LINK_NON_STATIC_OPTIONS_${UCONF} ${LINK_NON_STATIC_OPTIONS_${UCONF}} PARENT_SCOPE)
|
||||
|
||||
set(CMAKE_MODULE_LINKER_FLAGS_${UCONF} ${LINK_NON_STATIC_OPTIONS_${UCONF}} PARENT_SCOPE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_${UCONF} ${LINK_NON_STATIC_OPTIONS_${UCONF}} PARENT_SCOPE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS_${UCONF} ${LINK_NON_STATIC_OPTIONS_${UCONF}} PARENT_SCOPE)
|
||||
string(REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_NON_STATIC_${UCONF}}")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS_${UCONF} "${CMAKE_MODULE_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_${UCONF} "${CMAKE_SHARED_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS_${UCONF} "${CMAKE_EXE_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE)
|
||||
endif()
|
||||
if(ly_append_configurations_options_LINK_EXECUTABLE_${UCONF})
|
||||
string(REPLACE ";" " " LINK_EXECUTABLE_STR "${ly_append_configurations_options_LINK_EXECUTABLE_${UCONF}}")
|
||||
string(APPEND LINK_EXECUTABLE_OPTIONS_${UCONF} " " ${LINK_EXECUTABLE_STR})
|
||||
set(LINK_EXECUTABLE_OPTIONS_${UCONF} ${LINK_EXECUTABLE_OPTIONS_${UCONF}} PARENT_SCOPE)
|
||||
|
||||
set(CMAKE_EXE_LINKER_FLAGS_${UCONF} ${LINK_EXECUTABLE_OPTIONS_${UCONF}} PARENT_SCOPE)
|
||||
if(ly_append_configurations_options_LINK_EXE_${UCONF})
|
||||
string(REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_EXE_${UCONF}}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_${UCONF} "${CMAKE_EXE_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE)
|
||||
endif()
|
||||
if(ly_append_configurations_options_LINK_MODULE_${UCONF})
|
||||
string(REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_MODULE_${UCONF}}")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS_${UCONF} "${CMAKE_MODULE_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
|
||||
@@ -64,9 +64,6 @@ ly_append_configurations_options(
|
||||
# It also causes the compiler to place the library name MSVCRTD.lib into the .obj file.
|
||||
/Ob0 # Disables inline expansions
|
||||
/Od # Disables optimization
|
||||
/RTCsu # Run-Time Error Checks: c Reports when a value is assigned to a smaller data type and results in a data loss (Not supoported by the STL)
|
||||
# s Enables stack frame run-time error checking
|
||||
# u Reports when a variable is used without having been initialized
|
||||
COMPILATION_PROFILE
|
||||
/GF # Enable string pooling
|
||||
/Gy # Function level linking
|
||||
@@ -96,6 +93,26 @@ ly_append_configurations_options(
|
||||
/INCREMENTAL:NO
|
||||
)
|
||||
|
||||
set(LY_BUILD_WITH_ADDRESS_SANITIZER FALSE CACHE BOOL "Builds using AddressSanitizer (ASan). Will disable Edit/Continue, Incremental building and Run-Time checks (default = FALSE)")
|
||||
if(LY_BUILD_WITH_ADDRESS_SANITIZER)
|
||||
set(LY_BUILD_WITH_INCREMENTAL_LINKING_DEBUG FALSE)
|
||||
ly_append_configurations_options(
|
||||
COMPILATION_DEBUG
|
||||
/fsanitize=address
|
||||
)
|
||||
get_filename_component(link_tools_dir ${CMAKE_LINKER} DIRECTORY)
|
||||
file(COPY
|
||||
${link_tools_dir}/clang_rt.asan_dbg_dynamic-x86_64.dll
|
||||
DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG})
|
||||
else()
|
||||
ly_append_configurations_options(
|
||||
COMPILATION_DEBUG
|
||||
/RTCsu # Run-Time Error Checks: c Reports when a value is assigned to a smaller data type and results in a data loss (Not supoported by the STL)
|
||||
# s Enables stack frame run-time error checking
|
||||
# u Reports when a variable is used without having been initialized
|
||||
)
|
||||
endif()
|
||||
|
||||
set(LY_BUILD_WITH_INCREMENTAL_LINKING_DEBUG FALSE CACHE BOOL "Indicates if incremental linking is used in debug configurations (default = FALSE)")
|
||||
if(LY_BUILD_WITH_INCREMENTAL_LINKING_DEBUG)
|
||||
ly_append_configurations_options(
|
||||
|
||||
@@ -20,6 +20,7 @@ set(FILES
|
||||
Findo3de.cmake
|
||||
Gems.cmake
|
||||
GeneralSettings.cmake
|
||||
Initialize.cmake
|
||||
Install.cmake
|
||||
LyAutoGen.cmake
|
||||
LYPackage_S3Downloader.cmake
|
||||
|
||||
Reference in New Issue
Block a user