1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
#
# This file is run prior to the unit tests for preparing the testing
# environment. Currently only required / necessary for running the
# tests on the Android device emulator.
#
# Restore the required settings of the CMake configuration step
cmake_minimum_required(VERSION 3.1)
set(CMAKE_COMMAND "@CMAKE_COMMAND@")
set(CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@")
set(CMAKE_CURRENT_BINARY_DIR "@CMAKE_BINARY_DIR@")
set(CMAKE_FILES_DIRECTORY "@CMAKE_FILES_DIRECTORY@")
set(CMAKE_MODULE_PATH "@CMAKE_ROOT@/Modules")
set(CMAKE_SHARED_LIBRARY_PREFIX "@CMAKE_SHARED_LIBRARY_PREFIX@")
set(CMAKE_SHARED_LIBRARY_SUFFIX "@CMAKE_SHARED_LIBRARY_SUFFIX@")
set(CMAKE_HOST_SYSTEM "@CMAKE_HOST_SYSTEM@")
set(DCMTK_CMAKE_INCLUDE "@CMAKE_SOURCE_DIR@/@DCMTK_CMAKE_INCLUDE@")
set(DCMTK_TEST_EXECUTABLES "@DCMTK_TEST_EXECUTABLES@")
set(DCMTK_ALL_LIBRARIES "@DCMTK_ALL_LIBRARIES@")
set(DCMTK_LIBRARY_DEPENDENCIES "@DCMTK_LIBRARY_DEPENDENCIES@")
set(DCMTK_PACKAGE_VERSION "@DCMTK_PACKAGE_VERSION@")
set(DCMTK_ABI_VERSION "@DCMTK_ABI_VERSION@")
set(BUILD_SHARED_LIBS "@BUILD_SHARED_LIBS@")
set(DCMTK_DICOM_DICTIONARIES "@DCMTK_DICOM_DICTIONARIES@")
set(ANDROID "@ANDROID@")
set(ANDROID_ADB_PROGRAM "@ANDROID_ADB_PROGRAM@")
set(ANDROID_ANDROID_PROGRAM "@ANDROID_ANDROID_PROGRAM@")
set(ANDROID_EMULATOR_PROGRAM "@ANDROID_EMULATOR_PROGRAM@")
set(ANDROID_EMULATOR_AVD "@ANDROID_EMULATOR_AVD@")
set(ANDROID_RUNTIME_LIBRARIES "@ANDROID_RUNTIME_LIBRARIES@")
set(ANDROID_TEMPORARY_FILES_LOCATION "@ANDROID_TEMPORARY_FILES_LOCATION@")
# Emulate some required CMake commands while running inside CTest
include(${DCMTK_CMAKE_INCLUDE}CMake/CTest/dcmtkCTestMacros.cmake)
# For DCMTK_UNSET_XXX
include(${DCMTK_CMAKE_INCLUDE}CMake/dcmtkMacros.cmake)
# Load required functions for controlling the Android device emulator
include(${DCMTK_CMAKE_INCLUDE}CMake/dcmtkUseAndroidSDK.cmake)
# Prepare the Android testing environment
# Prepare the emulator
DCMTK_ANDROID_START_EMULATOR(DCMTK_ANDROID_EMULATOR_INSTANCE)
DCMTK_ANDROID_WAIT_FOR_EMULATOR(DCMTK_ANDROID_EMULATOR_INSTANCE)
# Get the emulator's name for emitting a shutdown command when done
DCMTK_ANDROID_GET_OBJECT_PROPERTIES(DCMTK_ANDROID_EMULATOR_INSTANCE)
DCMTK_ANDROID_STOP_EMULATOR_COMMAND(STOP_EMULATOR "${EMULATOR_NAME}")
DCMTK_ANDROID_EMULATOR_SHUTDOWN_MESSAGE(STOP_MESSAGE)
# Note: no quotation marks around STOP_MESSAGE, since it contains the message
# and the message type (e.g. STATUS)
MESSAGE_COMMAND(STOP_MESSAGE ${STOP_MESSAGE})
# CTEST_CUSTOM_POST_TESTS executes a sequence of 'non CMake' commands separated
# by ';' characters. Therefore the sequence a single command consists of must
# be translated appropriately first
string(REPLACE ";" " " STOP_EMULATOR "${STOP_EMULATOR}")
string(REPLACE ";" " " STOP_MESSAGE "${STOP_MESSAGE}")
# Register the cleanup hooks
set(CTEST_CUSTOM_POST_TEST "${STOP_MESSAGE}" "${STOP_EMULATOR}")
# Set the current emulator instance handle via an environment variable
set(ENV{DCMTK_ANDROID_EMULATOR_INSTANCE} "${DCMTK_ANDROID_EMULATOR_INSTANCE}")
# Collect the list of required libraries
if(BUILD_SHARED_LIBS)
foreach(LIBRARY ${DCMTK_ALL_LIBRARIES})
list(APPEND DCMTK_CREATED_SHARED_LIBRARIES "${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIBRARY}${CMAKE_SHARED_LIBRARY_SUFFIX}.${DCMTK_PACKAGE_VERSION}")
endforeach()
endif()
# Transmit the required executables, libraries and dictionaries to the emulator
DCMTK_ANDROID_PUSH(DCMTK_ANDROID_EMULATOR_INSTANCE
${ANDROID_RUNTIME_LIBRARIES}
${DCMTK_LIBRARY_DEPENDENCIES}
${DCMTK_CREATED_SHARED_LIBRARIES}
${DCMTK_TEST_EXECUTABLES}
${DCMTK_DICOM_DICTIONARIES}
DESTINATION ${ANDROID_TEMPORARY_FILES_LOCATION}
)
# Set executable permissions
foreach(TEST_EXECUTABLE ${DCMTK_TEST_EXECUTABLES})
get_filename_component(NAME "${TEST_EXECUTABLE}" NAME)
DCMTK_ANDROID_SHELL(DCMTK_ANDROID_EMULATOR_INSTANCE
COMMAND chmod 755 "${ANDROID_TEMPORARY_FILES_LOCATION}/${NAME}"
OUTPUT_QUIET
ERROR_QUIET
)
endforeach()
# Create necessary softlinks
if(BUILD_SHARED_LIBS)
foreach(LIBRARY ${DCMTK_ALL_LIBRARIES})
DCMTK_ANDROID_SHELL(DCMTK_ANDROID_EMULATOR_INSTANCE
COMMAND ln -s "./${CMAKE_SHARED_LIBRARY_PREFIX}${LIBRARY}${CMAKE_SHARED_LIBRARY_SUFFIX}.${DCMTK_PACKAGE_VERSION}" "${ANDROID_TEMPORARY_FILES_LOCATION}/${CMAKE_SHARED_LIBRARY_PREFIX}${LIBRARY}${CMAKE_SHARED_LIBRARY_SUFFIX}.${DCMTK_ABI_VERSION}"
OUTPUT_QUIET
ERROR_QUIET
)
endforeach()
endif()
|