mirror of
https://github.com/xiph/opus.git
synced 2025-05-28 22:29:14 +00:00
cmake - add support to run ctest on android #2347
Signed-off-by: Ralph Giles <giles@thaumas.net>
This commit is contained in:
parent
2985a40afe
commit
dfd6c88aaa
3 changed files with 90 additions and 19 deletions
61
cmake/RunTest.cmake
Normal file
61
cmake/RunTest.cmake
Normal file
|
@ -0,0 +1,61 @@
|
|||
if(NOT EXISTS ${TEST_EXECUTABLE})
|
||||
message(FATAL_ERROR "Error could not find ${TEST_EXECUTABLE}, ensure that you built the test binary")
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||
|
||||
# support to run plain old binary on android devices
|
||||
# requires android debug bridge to be installed
|
||||
|
||||
find_program(adb_executable adb)
|
||||
if(NOT adb_executable)
|
||||
message(FATAL_ERROR "Error could not find adb")
|
||||
endif()
|
||||
|
||||
# check if any device emulator is attached
|
||||
execute_process(COMMAND ${adb_executable} shell echo RESULT_VARIABLE CMD_RESULT)
|
||||
if(CMD_RESULT)
|
||||
message(FATAL_ERROR "Error adb: no devices/emulators found")
|
||||
endif()
|
||||
|
||||
# push binary
|
||||
set(android_path /data/local/tmp)
|
||||
execute_process(COMMAND ${adb_executable} push ${TEST_EXECUTABLE} ${android_path} RESULT_VARIABLE CMD_RESULT)
|
||||
if(CMD_RESULT)
|
||||
message(FATAL_ERROR "Error running ${adb_executable} push ${TEST_EXECUTABLE} ${android_path} failed with result ${CMD_RESULT}")
|
||||
endif()
|
||||
|
||||
# set permissions
|
||||
get_filename_component(test_executable ${TEST_EXECUTABLE} NAME)
|
||||
set(test_executable_on_android /data/local/tmp/${test_executable})
|
||||
execute_process(COMMAND ${adb_executable} shell chmod 555 ${test_executable_on_android} RESULT_VARIABLE CMD_RESULT)
|
||||
if(CMD_RESULT)
|
||||
message(FATAL_ERROR "Error running ${adb_executable} shell chmod 555 ${test_executable_on_android} failed with result ${CMD_RESULT}")
|
||||
endif()
|
||||
|
||||
# run executable
|
||||
execute_process(COMMAND ${adb_executable} shell ${test_executable_on_android} RESULT_VARIABLE CMD_RESULT)
|
||||
if(CMD_RESULT)
|
||||
message(FATAL_ERROR "Error running ${adb_executable} shell ${test_executable_on_android} failed with result ${CMD_RESULT}")
|
||||
endif()
|
||||
|
||||
# clean up binary
|
||||
execute_process(COMMAND ${adb_executable} shell rm ${test_executable_on_android} RESULT_VARIABLE CMD_RESULT)
|
||||
if(CMD_RESULT)
|
||||
message(FATAL_ERROR "Error running ${adb_executable} shell rm ${test_executable_on_android} failed with result ${CMD_RESULT}")
|
||||
endif()
|
||||
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "iOS")
|
||||
# CTest doesn't support iOS
|
||||
|
||||
message(FATAL_ERROR "Error CTest is not supported on iOS")
|
||||
|
||||
else()
|
||||
# for other platforms just execute test binary on host
|
||||
|
||||
execute_process(COMMAND ${TEST_EXECUTABLE} RESULT_VARIABLE CMD_RESULT)
|
||||
if(CMD_RESULT)
|
||||
message(FATAL_ERROR "Error running ${TEST_EXECUTABLE} failed with result ${CMD_RESULT}")
|
||||
endif()
|
||||
|
||||
endif()
|
Loading…
Add table
Add a link
Reference in a new issue