diff --git a/projects/rocr-runtime/CMakeLists.txt b/projects/rocr-runtime/CMakeLists.txt index 1e8f204c02..ed8a5ea09e 100644 --- a/projects/rocr-runtime/CMakeLists.txt +++ b/projects/rocr-runtime/CMakeLists.txt @@ -94,7 +94,24 @@ set ( HSAKMT_LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/src/libhsakmt.ver" ) ## Linker Flags ## Add --enable-new-dtags to generate DT_RUNPATH -set (HSAKMT_LINK_FLAGS "-Wl,--enable-new-dtags -Wl,--version-script=${HSAKMT_LINKER_SCRIPT} -Wl,-soname=${HSAKMT_COMPONENT}.so.${LIB_VERSION_MAJOR} -Wl,-z,nodelete -Wl,-no-undefined" ) +set (HSAKMT_LINK_FLAGS "${HSAKMT_LINK_FLAGS} -Wl,--enable-new-dtags -Wl,--version-script=${HSAKMT_LINKER_SCRIPT} -Wl,-soname=${HSAKMT_COMPONENT}.so.${LIB_VERSION_MAJOR} -Wl,-z,nodelete") + +## Address Sanitize Flag +if ( ${ADDRESS_SANITIZER} ) + set ( HSAKMT_C_FLAGS "${HSAKMT_C_FLAGS}" -fsanitize=address ) + set ( HSAKMT_LINK_FLAGS "${HSAKMT_LINK_FLAGS}" -fsanitize=address ) + if ( BUILD_SHARED_LIBS} ) + set ( HSAKMT_LINK_FLAGS "${HSAKMT_LINK_FLAGS}" -shared-libasan ) + else () + set ( HSAKMT_LINK_FLAGS "${HSAKMT_LINK_FLAGS}" -static-libasan ) + endif () +else () + if ( CMAKE_COMPILER_IS_GNUCC ) + set ( HSAKMT_LINK_FLAGS "${HSAKMT_LINK_FLAGS}" -Wl,-no-undefined ) + else () + set ( HSAKMT_LINK_FLAGS "${HSAKMT_LINK_FLAGS}" -Wl,-undefined,error ) + endif () +endif () ## Source files set ( HSAKMT_SRC "src/debug.c" diff --git a/projects/rocr-runtime/tests/kfdtest/CMakeLists.txt b/projects/rocr-runtime/tests/kfdtest/CMakeLists.txt index 9a0ac90960..17d4b9bf4a 100644 --- a/projects/rocr-runtime/tests/kfdtest/CMakeLists.txt +++ b/projects/rocr-runtime/tests/kfdtest/CMakeLists.txt @@ -24,7 +24,7 @@ # If environment variable DRM_DIR or LIBHSAKMT_PATH is set, the script # will pick up the corresponding libraries from those pathes. -cmake_minimum_required(VERSION 2.8 FATAL_ERROR) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) project(KFDTest) @@ -165,6 +165,12 @@ else () set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g" ) endif () +## Address Sanitize Flag +if ( ${ADDRESS_SANITIZER} ) + set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address" ) + set ( CMAKE_EXE_LINKER_FLAGS -fsanitize=address ) +endif () + # link_directories() has to be put before add_executable() # The modules found by pkg_check_modules() in the default pkg config # path do not need to use link_directories() here.