diff options
author | Brad King <brad.king@kitware.com> | 2018-04-04 15:14:29 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2018-04-04 15:14:36 (GMT) |
commit | 8496d11ef8a5c4a14a13c7df5e7f214028c35f5c (patch) | |
tree | 3523240a260dce410594ce58ac1d151fb1e99ecf /Tests | |
parent | 1f72f409ee85bfa4cb95701ebd237302989bcf85 (diff) | |
parent | 843d55de295b0eeca2a028badde3b2f9a409cc72 (diff) | |
download | CMake-8496d11ef8a5c4a14a13c7df5e7f214028c35f5c.zip CMake-8496d11ef8a5c4a14a13c7df5e7f214028c35f5c.tar.gz CMake-8496d11ef8a5c4a14a13c7df5e7f214028c35f5c.tar.bz2 |
Merge topic 'android-no-libstdc++'
843d55de29 Android: Suppress implicit -lstdc++ linker flag
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1919
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/RunCMake/Android/android_lib.cxx | 4 | ||||
-rw-r--r-- | Tests/RunCMake/Android/check_binary.cmake | 8 | ||||
-rw-r--r-- | Tests/RunCMake/Android/common.cmake | 17 |
3 files changed, 29 insertions, 0 deletions
diff --git a/Tests/RunCMake/Android/android_lib.cxx b/Tests/RunCMake/Android/android_lib.cxx new file mode 100644 index 0000000..82f9d27 --- /dev/null +++ b/Tests/RunCMake/Android/android_lib.cxx @@ -0,0 +1,4 @@ +int android_lib() +{ + return 0; +} diff --git a/Tests/RunCMake/Android/check_binary.cmake b/Tests/RunCMake/Android/check_binary.cmake new file mode 100644 index 0000000..1d1b01a --- /dev/null +++ b/Tests/RunCMake/Android/check_binary.cmake @@ -0,0 +1,8 @@ +if(NOT EXISTS "${file}") + message(FATAL_ERROR "Missing file:\n ${file}") +endif() +execute_process(COMMAND "${objdump}" -p ${file} OUTPUT_VARIABLE out) +if(out MATCHES "NEEDED[^\n]*stdc\\+\\+") + string(REPLACE "\n" "\n " out " ${out}") + message(FATAL_ERROR "File:\n ${file}\ndepends on libstdc++:\n${out}") +endif() diff --git a/Tests/RunCMake/Android/common.cmake b/Tests/RunCMake/Android/common.cmake index 015f202..f931be1 100644 --- a/Tests/RunCMake/Android/common.cmake +++ b/Tests/RunCMake/Android/common.cmake @@ -92,6 +92,23 @@ if(CMAKE_ANDROID_ARCH_ABI STREQUAL "armeabi-v7a") endif() add_executable(android_c android.c) add_executable(android_cxx android.cxx) +add_library(android_cxx_lib SHARED android_lib.cxx) + +set(objdump "${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}objdump") +if(NOT EXISTS "${objdump}") + message(FATAL_ERROR "Expected tool missing:\n ${objdump}") +endif() + +if(NOT CMAKE_ANDROID_STL_TYPE MATCHES "^(system|stlport_static|stlport_shared)$") + foreach(tgt android_cxx android_cxx_lib) + add_custom_command(TARGET ${tgt} POST_BUILD + COMMAND ${CMAKE_COMMAND} + -Dobjdump=${objdump} + -Dfile=$<TARGET_FILE:${tgt}> + -P ${CMAKE_CURRENT_SOURCE_DIR}/check_binary.cmake + ) + endforeach() +endif() # Test that an explicit /usr/include is ignored in favor of # appearing as a standard include directory at the end. |