#!/bin/bash

# This shell script is to set up ASAN for debugging native libs.
# Specify your own path in those variables below.

# They have to be adjusted to your environment and NDK version.
# Although note that whenever we use AAP the NDK version has to be fixed to
# this one otherwise libc++_shared.so version mismatch may bite you.
#
# Also note that you need below in build.gradle:
# > android.packagingOptions.jniLibs.useLegacyPackaging = true
#
ANDROID_NDK_PATH=~/Android/Sdk/ndk/21.4.7075529
#ANDROID_NDK_PATH=~/Android/Sdk/ndk/23.1.7779620
CLANG_VER=9.0.9
#CLANG_VER=12.0.8
HOST_ARCH_LIB=linux-x86_64/lib64
CLANG_LIB=$ANDROID_NDK_PATH/toolchains/llvm/prebuilt/$HOST_ARCH_LIB/clang/$CLANG_VER/lib

ALL_ABIS=("x86" "x86_64" "armeabi-v7a" "arm64-v8a")

ALL_APPS=("aap-ayumi")

for sample in "${ALL_APPS[@]}"; do

  SAMPLE=$sample/src/main
  SAMPLE_RES=$SAMPLE/resources/lib

  for a in "${ALL_ABIS[@]}"; do
    echo "ABI: $a"
    mkdir -p $SAMPLE/jniLibs/$a ;
    # This is causing unresponsive debugger. Do not use it. Load asan so at using System.loadLibrary() instead.
    mkdir -p $SAMPLE_RES/$a
    cp -R asan-wrap-bugfixed.sh $SAMPLE_RES/$a/wrap.sh
    dos2unix $SAMPLE_RES/$a/wrap.sh
  done

  cp $CLANG_LIB/linux/libclang_rt.asan-i686*.so $SAMPLE/jniLibs/x86
  cp $CLANG_LIB/linux/libclang_rt.asan-x86_64*.so $SAMPLE/jniLibs/x86_64
  cp $CLANG_LIB/linux/libclang_rt.asan-arm*.so $SAMPLE/jniLibs/armeabi-v7a
  cp $CLANG_LIB/linux/libclang_rt.asan-aarch64*.so $SAMPLE/jniLibs/arm64-v8a

done