cmake_minimum_required(VERSION 3.4.0)

# Main example
set(APP_TARGET_NAME stitch360)

if (NOT PROJECT_NAME)
project(${APP_TARGET_NAME})
endif()


set(APP_SRC jni/NativeApp.cpp)
source_group("src" FILES ${APP_SRC})
add_definitions(-DANDROID_ARCH_NAME="${ANDROID_ARCH_NAME}")
set_source_files_properties(jni/NativeApp.cpp PROPERTIES COMPILE_FLAGS "-std=c++11")
add_library(${APP_TARGET_NAME} SHARED ${APP_SRC})

set(VS_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/../../..")

# ----------------------------------------------------------------------------
# Copy precompiled libraries headers
# ----------------------------------------------------------------------------
file(GLOB MY_DEPS "${VS_ROOT_DIR}/external_deps/lib64/lib*.so")
file(GLOB MY_PLUGINS "${VS_ROOT_DIR}/bin/x64/release/*_plugins/lib*Plugin.so")

find_library(NVGameWorks NAMES NVGameWorks PATHS "${VS_ROOT_DIR}/external_deps/lib64" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
target_include_directories(${APP_TARGET_NAME} PRIVATE ${VS_ROOT_DIR}/external_deps/include/NVGameWorks)
target_include_directories(${APP_TARGET_NAME} PRIVATE ${VS_ROOT_DIR}/external_deps/include/NVGameWorks/NvFoundation)

#target_include_directories(${APP_TARGET_NAME} PRIVATE ${ANDROID_NDK}/sources/android/native_app_glue/)
if(PROJECT_NAME STREQUAL ${APP_TARGET_NAME})
#additional commands for standalone compilation (outside VideoStitch project)
add_custom_command(
         TARGET ${APP_TARGET_NAME} PRE_BUILD
         COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_LIST_DIR}/libs/${ANDROID_ABI}
         COMMAND ${CMAKE_COMMAND} -E copy ${VS_ROOT_DIR}/bin/x64/release/libvideostitch_opencl.so ${CMAKE_CURRENT_LIST_DIR}/libs/${ANDROID_ABI}
         COMMAND ${CMAKE_COMMAND} -E copy ${VS_ROOT_DIR}/bin/x64/release/libvideostitch-gpudiscovery.so ${CMAKE_CURRENT_LIST_DIR}/libs/${ANDROID_ABI}
         COMMAND ${CMAKE_COMMAND} -E copy ${MY_DEPS} ${CMAKE_CURRENT_LIST_DIR}/libs/${ANDROID_ABI}
         COMMAND ${CMAKE_COMMAND} -E copy ${MY_PLUGINS} ${CMAKE_CURRENT_LIST_DIR}/libs/${ANDROID_ABI})
find_library(VS_LIB_OPENCL NAMES videostitch_opencl PATHS "${VS_ROOT_DIR}/bin/x64/release" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
find_library(VS_DISCOVERY NAMES videostitch-gpudiscovery PATHS "${VS_ROOT_DIR}/bin/x64/release" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
target_include_directories(${APP_TARGET_NAME} PRIVATE ${VS_ROOT_DIR}/lib/include)
target_include_directories(${APP_TARGET_NAME} PRIVATE ${VS_ROOT_DIR}/discovery/include)
else()
include_lib_vs_headers(${APP_TARGET_NAME})
include_discovery_vs_headers(${APP_TARGET_NAME})
endif()

find_library(log-lib log)
find_library(android-lib android)
find_library(EGL-lib EGL)
find_library(GLESv2-lib GLESv2)
if (WINDOWS)
  set_target_properties(${APP_TARGET_NAME} PROPERTIES COMPILE_FLAGS "/Wall")
else(WINDOWS)
  set_target_properties(${APP_TARGET_NAME} PROPERTIES COMPILE_FLAGS "-Wno-unused-parameter -DNDEBUG")
endif(WINDOWS)

target_link_libraries(${APP_TARGET_NAME} ${VS_LIB_OPENCL} ${VS_DISCOVERY} ${log-lib} ${android-lib} ${EGL-lib} ${GLESv2-lib} ${NVGameWorks})