192 lines
6.1 KiB
CMake
192 lines
6.1 KiB
CMake
|
|
option(WITH_TANGO "Include Tango support" ON)
|
|
option(WITH_ARCORE "Include ARCore support" ON)
|
|
option(WITH_ARENGINE "Include AREngine support" ON)
|
|
option(DISABLE_LOG "Disable Android logging (should be true in release)" ON)
|
|
option(DEPTH_TEST "Enable depth test on ARCore" OFF)
|
|
|
|
# Google Tango needs access to system shared
|
|
# libraries (e.g. libbinder.so) that are not accessible
|
|
# with android >=24
|
|
IF(WITH_TANGO AND ${ANDROID_NATIVE_API_LEVEL} LESS 24)
|
|
FIND_PACKAGE(Tango QUIET)
|
|
IF(Tango_FOUND)
|
|
MESSAGE(STATUS "Found Tango: ${Tango_INCLUDE_DIRS}")
|
|
ENDIF(Tango_FOUND)
|
|
ENDIF(WITH_TANGO AND ${ANDROID_NATIVE_API_LEVEL} LESS 24)
|
|
|
|
IF(WITH_ARCORE AND ${ANDROID_NATIVE_API_LEVEL} GREATER 22)
|
|
FIND_PACKAGE(ARCore QUIET)
|
|
IF(ARCore_FOUND)
|
|
MESSAGE(STATUS "Found ARCore: ${ARCore_INCLUDE_DIRS}")
|
|
ENDIF(ARCore_FOUND)
|
|
ENDIF(WITH_ARCORE AND ${ANDROID_NATIVE_API_LEVEL} GREATER 22)
|
|
|
|
IF(WITH_ARENGINE AND ${ANDROID_NATIVE_API_LEVEL} GREATER 23)
|
|
FIND_PACKAGE(AREngine QUIET)
|
|
IF(AREngine_FOUND)
|
|
MESSAGE(STATUS "Found AREngine: ${AREngine_INCLUDE_DIRS}")
|
|
ENDIF(AREngine_FOUND)
|
|
ENDIF(WITH_ARENGINE AND ${ANDROID_NATIVE_API_LEVEL} GREATER 23)
|
|
|
|
IF(NOT Tango_FOUND)
|
|
SET(TANGO "//")
|
|
ENDIF(NOT Tango_FOUND)
|
|
IF(NOT ARCore_FOUND)
|
|
SET(ARCORE "//")
|
|
ENDIF(NOT ARCore_FOUND)
|
|
IF(NOT AREngine_FOUND)
|
|
SET(ARENGINE "//")
|
|
ENDIF(NOT AREngine_FOUND)
|
|
|
|
CONFIGURE_FILE(CameraAvailability.h.in ${CMAKE_CURRENT_SOURCE_DIR}/jni/CameraAvailability.h)
|
|
|
|
|
|
IF(DISABLE_LOG)
|
|
ADD_DEFINITIONS(-DDISABLE_LOG)
|
|
ENDIF(DISABLE_LOG)
|
|
IF(DEPTH_TEST)
|
|
ADD_DEFINITIONS(-DDEPTH_TEST)
|
|
ENDIF(DEPTH_TEST)
|
|
|
|
MESSAGE(STATUS "--------------------------------------------")
|
|
MESSAGE(STATUS "Android build info:")
|
|
MESSAGE(STATUS " DISABLE_LOG = ${DISABLE_LOG}")
|
|
MESSAGE(STATUS " DEPTH_TEST = ${DEPTH_TEST}")
|
|
IF(Tango_FOUND)
|
|
MESSAGE(STATUS " With Tango = YES")
|
|
ELSEIF(NOT WITH_TANGO)
|
|
MESSAGE(STATUS " With Tango = NO (WITH_TANGO=OFF)")
|
|
ELSE()
|
|
IF(${ANDROID_NATIVE_API_LEVEL} GREATER 23)
|
|
MESSAGE(STATUS " With Tango = NO (ANDROID_NATIVE_API_LEVEL should be <= 23)")
|
|
ELSE()
|
|
MESSAGE(STATUS " With Tango = NO (tango not found)")
|
|
ENDIF()
|
|
ENDIF()
|
|
IF(ARCore_FOUND)
|
|
MESSAGE(STATUS " With ARCore = YES")
|
|
ELSEIF(NOT WITH_ARCORE)
|
|
MESSAGE(STATUS " With ARCore = NO (WITH_ARCORE=OFF)")
|
|
ELSE()
|
|
IF(${ANDROID_NATIVE_API_LEVEL} LESS 23)
|
|
MESSAGE(STATUS " With ARCore = NO (ANDROID_NATIVE_API_LEVEL should be >= 23)")
|
|
ELSE()
|
|
MESSAGE(STATUS " With ARCore = NO (ARCore not found)")
|
|
ENDIF()
|
|
ENDIF()
|
|
IF(AREngine_FOUND)
|
|
MESSAGE(STATUS " With AREngine = YES")
|
|
ELSEIF(NOT WITH_ARENGINE)
|
|
MESSAGE(STATUS " With AREngine = NO (WITH_ARENGINE=OFF)")
|
|
ELSE()
|
|
IF(${ANDROID_NATIVE_API_LEVEL} LESS 24)
|
|
MESSAGE(STATUS " With AREngine = NO (ANDROID_NATIVE_API_LEVEL should be >= 24)")
|
|
ELSE()
|
|
MESSAGE(STATUS " With AREngine = NO (AREngine not found)")
|
|
ENDIF()
|
|
ENDIF()
|
|
MESSAGE(STATUS " ANDROID_NATIVE_API_LEVEL = ${ANDROID_NATIVE_API_LEVEL}")
|
|
MESSAGE(STATUS " ANDROID_COMPILER_FLAGS_RELEASE = ${ANDROID_COMPILER_FLAGS_RELEASE}")
|
|
MESSAGE(STATUS " ANDROID_TOOLCHAIN_PREFIX = ${ANDROID_TOOLCHAIN_PREFIX}")
|
|
|
|
|
|
IF(DISABLE_LOG)
|
|
SET(ANDROID_DEBUGGABLE false)
|
|
ELSE()
|
|
SET(ANDROID_DEBUGGABLE true)
|
|
ENDIF()
|
|
|
|
add_subdirectory(jni)
|
|
|
|
|
|
######
|
|
# Packaging
|
|
######
|
|
|
|
# find android
|
|
find_host_program(ANDROID_EXECUTABLE
|
|
NAMES android
|
|
DOC "The android command-line tool")
|
|
if(NOT ANDROID_EXECUTABLE)
|
|
message(FATAL_ERROR "Can not find android command line tool: android")
|
|
endif()
|
|
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/AndroidManifest.xml.in"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/AndroidManifest.xml"
|
|
@ONLY)
|
|
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/AndroidManifest.xml"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/AndroidManifest.xml"
|
|
COPYONLY)
|
|
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/info.txt.in"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/res/raw/info.txt")
|
|
|
|
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/ant.properties.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/ant.properties"
|
|
@ONLY)
|
|
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/custom_rules.xml"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/custom_rules.xml"
|
|
COPYONLY)
|
|
|
|
add_custom_target(NativeRTABMap-ant-configure ALL
|
|
COMMAND "${ANDROID_EXECUTABLE}"
|
|
update project
|
|
--name RTABMap
|
|
--path "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
--target "android-${ANDROID_NATIVE_API_LEVEL}"
|
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/build.xml"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/build.xml"
|
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/local.properties"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/local.properties"
|
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/project.properties"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/project.properties"
|
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/proguard-project.txt"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/proguard-project.txt"
|
|
COMMAND "${CMAKE_COMMAND}" -E remove
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/build.xml"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/local.properties"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/project.properties"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/proguard-project.txt"
|
|
WORKING_DIRECTORY
|
|
"${CMAKE_CURRENT_BINARY_DIR}")
|
|
|
|
add_dependencies(NativeRTABMap-ant-configure NativeRTABMap)
|
|
|
|
#find ant
|
|
find_host_program(ANT_EXECUTABLE
|
|
NAMES ant
|
|
DOC "The ant build tool")
|
|
if(NOT ANT_EXECUTABLE)
|
|
message(FATAL_ERROR "Can not find ant build tool: ant")
|
|
endif()
|
|
|
|
add_custom_target(NativeRTABMap-apk-release ALL
|
|
COMMAND ${ANT_EXECUTABLE}
|
|
-file "${CMAKE_CURRENT_BINARY_DIR}/build.xml"
|
|
release)
|
|
add_dependencies(NativeRTABMap-apk-release
|
|
NativeRTABMap-ant-configure
|
|
NativeRTABMap)
|
|
|
|
add_custom_target(NativeRTABMap-apk-debug ALL
|
|
COMMAND ${ANT_EXECUTABLE}
|
|
-file "${CMAKE_CURRENT_BINARY_DIR}/build.xml"
|
|
debug)
|
|
add_dependencies(NativeRTABMap-apk-debug
|
|
# NativeRTABMap-apk-release
|
|
NativeRTABMap-ant-configure
|
|
NativeRTABMap)
|