Allowing to build with ASan enabled

Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
monroegm-disable-blank-issue-2
Esteban Papp 5 years ago
parent 48503679c4
commit f7da64a518

@ -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)
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()
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)
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()
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_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()
set(CMAKE_EXE_LINKER_FLAGS ${LINK_EXECUTABLE_OPTIONS} PARENT_SCOPE)
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

Loading…
Cancel
Save