From 4aab637f3f8cb03751835322fc09da4487f44951 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 25 Jun 2021 20:17:53 +0100 Subject: [PATCH] Copy libasan library and wrapper script on android when asan is enabled --- renderdoccmd/CMakeLists.txt | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/renderdoccmd/CMakeLists.txt b/renderdoccmd/CMakeLists.txt index fb1aff119..a801b589e 100644 --- a/renderdoccmd/CMakeLists.txt +++ b/renderdoccmd/CMakeLists.txt @@ -206,6 +206,43 @@ if(ANDROID) COMMAND ${CMAKE_COMMAND} -E make_directory bin COMMAND ${CMAKE_COMMAND} -E copy $ libs/lib/${ANDROID_ABI}/$ COMMAND ${CMAKE_COMMAND} -E copy $ libs/lib/${ANDROID_ABI}/$ + ) + + if(ENABLE_ASAN) + set(ASAN_ABI_TAG "") + if(ANDROID_ABI STREQUAL "armeabi-v7a") + set(ASAN_ABI_TAG "arm") + elseif(ANDROID_ABI STREQUAL "arm64-v8a") + set(ASAN_ABI_TAG "aarch64") + else() + message(WARNING "Unknown ABI ${ANDROID_ABI}, libasan tag unknown") + endif() + + file(GLOB ASAN_LIBRARIES "${ANDROID_TOOLCHAIN_ROOT}/lib64/clang/*/lib/linux/libclang_rt.asan-${ASAN_ABI_TAG}-android.so") + list(SORT ASAN_LIBRARIES) + + list(GET ASAN_LIBRARIES -1 ASAN_LIBRARY) + + set(WRAP_SCRIPT "${ANDROID_NDK_ROOT_PATH}/wrap.sh/asan.sh") + + string(REPLACE "\\" "/" WRAP_SCRIPT "${WRAP_SCRIPT}") + string(REPLACE "\\" "/" ASAN_LIBRARY "${ASAN_LIBRARY}") + + # Copy in the wrap script and libasan library + if(${WRAP_SCRIPT} STREQUAL "" OR NOT EXISTS ${WRAP_SCRIPT}) + message(WARNING "Wrap script couldn't be found in NDK, you will need to manually create one and re-generate apk") + elseif(${ASAN_LIBRARY} STREQUAL "" OR NOT EXISTS ${ASAN_LIBRARY}) + message(WARNING "libasan library couldn't be found in NDK, you will need to manually copy it in and re-generate apk") + else() + message(STATUS "Using wrap script ${WRAP_SCRIPT} and libasan library ${ASAN_LIBRARY}") + add_custom_command(OUTPUT ${APK_FILE} APPEND + COMMAND ${CMAKE_COMMAND} -E copy ${WRAP_SCRIPT} libs/lib/${ANDROID_ABI}/wrap.sh + COMMAND ${CMAKE_COMMAND} -E copy ${ASAN_LIBRARY} libs/lib/${ANDROID_ABI}/ + ) + endif() + endif() + + add_custom_command(OUTPUT ${APK_FILE} APPEND COMMAND ${BUILD_TOOLS}/aapt package -f -m -S res -J src -M AndroidManifest.xml -I ${ANDROID_JAR} COMMAND ${JAVA_BIN}/javac -d ./obj -source 1.7 -target 1.7 -bootclasspath ${RT_JAR} -classpath "${CLASS_PATH}" -sourcepath src src/org/renderdoc/renderdoccmd/*.java COMMAND ${BUILD_TOOLS}/dx${TOOL_SCRIPT_EXTENSION} --dex --output=bin/classes.dex ./obj