cmake_minimum_required(VERSION 3.6)

set (PROJECT_NAME ImGCS)
project(${PROJECT_NAME})

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

set(CMAKE_THREAD_LIBS_INIT "-lpthread")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")


add_definitions(-w)

set(PROJECT_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/..)

#------------------------------------------------------
#------------------------------------------------------
add_library(${CMAKE_PROJECT_NAME} SHARED
  
  	# entry point
  	${CMAKE_CURRENT_SOURCE_DIR}/android_main.cpp 

  	${CMAKE_CURRENT_SOURCE_DIR}/../libs/imgui/imgui.cpp
  	${CMAKE_CURRENT_SOURCE_DIR}/../libs/imgui/imgui_demo.cpp
  	${CMAKE_CURRENT_SOURCE_DIR}/../libs/imgui/imgui_draw.cpp
  	${CMAKE_CURRENT_SOURCE_DIR}/../libs/imgui/imgui_tables.cpp
  	${CMAKE_CURRENT_SOURCE_DIR}/../libs/imgui/imgui_widgets.cpp

  	${CMAKE_CURRENT_SOURCE_DIR}/../libs/imgui/backends/imgui_impl_android.cpp
  	${CMAKE_CURRENT_SOURCE_DIR}/../libs/imgui/backends/imgui_impl_opengl3.cpp

  	${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c
)

set(CMAKE_SHARED_LINKER_FLAGS
  	"${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate"
)

target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE
  	IMGUI_IMPL_OPENGL_ES3
)

target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
  	${CMAKE_CURRENT_SOURCE_DIR}/../libs/imgui
  	${CMAKE_CURRENT_SOURCE_DIR}/../libs/imgui/backends
  	${ANDROID_NDK}/sources/android/native_app_glue
)
#------------------------------------------------------
#------------------------------------------------------


#---------------- EXTERNAL DEPENDENCIES ---------------
include(${PROJECT_ROOT_PATH}/cmake/mavlink.cmake)
include(${PROJECT_ROOT_PATH}/cmake/asio.cmake)
include(${PROJECT_ROOT_PATH}/cmake/httplib.cmake)


#--------------- PROJECT IMPLEMENTATIONS --------------
add_library(gcs-main INTERFACE)

set (GCS_APPCLASS_DIR ${PROJECT_ROOT_PATH}/src/Application)
file(GLOB GCS_APPCLASS_SOURCE_FILES 
  	${GCS_APPCLASS_DIR}/IAppClass.h 
  	${GCS_APPCLASS_DIR}/AndroidAppClass.h
  	${GCS_APPCLASS_DIR}/AndroidAppClass.cpp    
)

target_sources(gcs-main INTERFACE ${GCS_APPCLASS_SOURCE_FILES})
target_include_directories(gcs-main INTERFACE ${GCS_APPCLASS_DIR})




#------------------- COPY RESOURCES -------------------
configure_file(${PROJECT_ROOT_PATH}/assets/fonts/SF-UI-Display-Regular.otf ${PROJECT_ROOT_PATH}/android/app/src/main/assets/fonts/SF-UI-Display-Regular.otf COPYONLY)
configure_file(${PROJECT_ROOT_PATH}/assets/fonts/SF-UI-Display-Regular.ttf ${PROJECT_ROOT_PATH}/android/app/src/main/assets/fonts/SF-UI-Display-Regular.ttf COPYONLY)

configure_file(${PROJECT_ROOT_PATH}/assets/textures/tileload.png ${PROJECT_ROOT_PATH}/android/app/src/main/assets/textures/tileload.png COPYONLY)




add_library(gcs-deps INTERFACE)
include(${PROJECT_ROOT_PATH}/src/Widgets/CMakeLists.txt)
include(${PROJECT_ROOT_PATH}/src/Mavlink/CMakeLists.txt)

target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE
	  android
	  EGL
  	GLESv3
  	log

  	asio
    httplib
    mavlink

  	# Software related implemetations
  	gcs-main 
  	gcs-deps 
)
