cmake_minimum_required(VERSION 2.8)
cmake_policy(PUSH)
cmake_policy(SET CMP0028 NEW)

project(renderer_app)

## --------------------------- CONFIGURATIONS ----------------------------------------
set(${PROJECT_NAME}_VERSION_MAJOR 0)
set(${PROJECT_NAME}_VERSION_MINOR 1)
set(${PROJECT_NAME}_VERSION_PATCH 0)
set(${PROJECT_NAME}_SOVERSION ${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR})
set(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_SOVERSION}.${${PROJECT_NAME}_VERSION_PATCH})

if(HOLO_BUILD_VERSION)
    set(${PROJECT_NAME}_VERSION_TWEAK)
    set(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_VERSION}.${HOLO_BUILD_VERSION})
endif(HOLO_BUILD_VERSION)

option(HOLO_BUILD_TEST "Build unit test" OFF)
option(HOLO_CPU_PROFILE "Use Google CPU Profiler" OFF)
option(HOLO_BUILD_SHARED "Build shared library" OFF)
option(HOLO_BUILD_COVERAGE "Generate coverage report" OFF)
option(HOLO_BUILD_ON_QNX "Build project on QNX" OFF)

if(${CMAKE_SYSTEM_NAME} STREQUAL "QNX")
    set(HOLO_BUILD_ON_QNX ON)
endif()

set(DEPEND_HOLO_BASE_VERSION 0.2.0)
set(DEPEND_CMW_WRAPPER_VERSION 0.1.0)
set(DEPEND_HOLO_PARKING_MSG_VERSION 0.1.0)
set(DEPEND_HOLO_SENSORS_BASE_VERSION 0.1.0)
set(DEPEND_FFMPEG_VERSION 3.4.6)
set(DEPEND_FFMPEG_COMPONENTS avcodec avdevice avfilter avformat avutil swresample swscale)
set(DEPEND_JPEG_VERSION 9.3)
set(DEPEND_X264_VERSION 0.157)
set(DEPEND_NANOPB_VERSION 0.3.9)
set(DEPEND_OPENCV_VERSION 3.3.1)

set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wno-error=deprecated-declarations")
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_C_FLAGS "-Wall -Wextra -Wno-error=deprecated-declarations")
set(CMAKE_C_STANDARD 99)

set(EXPORT_NAMESPACE ${PROJECT_NAME})
set(CMAKE_PREFIX_PATH "${HOLO_ROOT}/3rdparty/lib")

if(HOLO_BUILD_SHARED)
    set(BUILD_SHARED_LIBS ON)
else()
    set(BUILD_SHARED_LIBS OFF)
endif()

if(NOT HOLO_ROOT)
    set(HOLO_ROOT $ENV{HOLO_ROOT})
endif()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${HOLO_ROOT}/cmake")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${HOLO_ROOT}/cmake/Modules")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake")
include(HoloProjectConfiguration)

## -------------------------- DEPENDENCIES --------------------------------------
find_package(holo_base ${DEPEND_HOLO_BASE_VERSION} REQUIRED)

file(GLOB_RECURSE MAIN_SOURCE ${PROJECT_SOURCE_DIR}/src/*)

if("${CMAKE_SYSTEM_NAME}" STREQUAL "QNX")
    add_cmw_wrapper_executable(renderer_app
    SOURCES     ${MAIN_SOURCE}
    INCLUDES    include
                ${HOLO_ROOT}/include
                ${HOLO_ROOT}/3rdparty/include
    LIBRARIES   holo_base::holo_base_os                
                EGL
                GLESv2
                screen
                socket
    INSTALL_DIR bin
                PPS
    )
endif()

add_custom_target(uninstall_renderer
    COMMAND cat install_manifest.txt | xargs rm
    WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
    COMMENT "Uninstall")

cmake_policy(POP)
