# Copy shared STL files to Android Studio output directory so they can be # packaged in the APK. # Usage: # # find_package(ndk-stl REQUIRED) # # or # # find_package(ndk-stl REQUIRED PATHS ".") if(NOT ${ANDROID_STL} MATCHES "_shared") return() endif() function(configure_shared_stl lib_path so_base) message("Configuring STL ${so_base} for ${ANDROID_ABI}") configure_file( "${ANDROID_NDK}/sources/cxx-stl/${lib_path}/libs/${ANDROID_ABI}/lib${so_base}.so" "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${so_base}.so" COPYONLY) endfunction() if("${ANDROID_STL}" STREQUAL "libstdc++") # The default minimal system C++ runtime library. elseif("${ANDROID_STL}" STREQUAL "gabi++_shared") # The GAbi++ runtime (shared). message(FATAL_ERROR "gabi++_shared was not configured by ndk-stl package") elseif("${ANDROID_STL}" STREQUAL "stlport_shared") # The STLport runtime (shared). configure_shared_stl("stlport" "stlport_shared") elseif("${ANDROID_STL}" STREQUAL "gnustl_shared") # The GNU STL (shared). configure_shared_stl("gnu-libstdc++/4.9" "gnustl_shared") elseif("${ANDROID_STL}" STREQUAL "c++_shared") # The LLVM libc++ runtime (shared). configure_shared_stl("llvm-libc++" "c++_shared") else() message(FATAL_ERROR "STL configuration ANDROID_STL=${ANDROID_STL} is not supported") endif()