# Ravenna/CMakeLists.txt  --  Ravenna Project
# Copyright (C) 2017, Merging Technologies S.A. -- All rights reserved.

cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR)
cmake_policy(SET CMP0043 NEW)
file(TO_CMAKE_PATH "$ENV{MTSOURCES}" MTSOURCES)

project(Ravenna)

set(ZMAN_SDK 1)

if (WIN32)
	set(USE_BONJOUR 1)
	add_definitions(-DUSE_BONJOUR)

	add_definitions(-DWIN32)
    if (MSVC)
		add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)
	
		add_definitions(-DLINUX_EMULATOR)
		add_definitions(-D_SCL_SECURE_NO_WARNINGS)

		include_directories("${MTSOURCES}/SDKs/Boost")


        if (CMAKE_CL_64)
			add_definitions(-D_AMD64_)
			link_directories("${MTSOURCES}/SDKs/boost/libx64")
			link_directories("${MTSOURCES}/SDKs/Bonjour SDK/lib/x64")
			link_directories("${MTSOURCES}/SDKs/WpdPack/Lib/x64")
		else (CMAKE_CL_64)
			link_directories("${MTSOURCES}/SDKs/boost/lib")
			link_directories("${MTSOURCES}/SDKs/Bonjour SDK/lib/win32")
			link_directories("${MTSOURCES}/SDKs/WpdPack/Lib")
		endif (CMAKE_CL_64)

        add_definitions(-DBOOST_THREAD_DYN_LINK)
        #add_definitions(-DBOOST_LIB_DIAGNOSTIC)

		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
        set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:\"LIBCMT\"")

        add_definitions(-D_WIN32_WINNT=0x0501)
        add_definitions(-DFD_SETSIZE=512)

    endif (MSVC)
elseif (ZMAN_FAMILY)
	set(MT_EMBEDDED 1)
	add_definitions(-DMT_EMBEDDED=1)

	add_definitions(-DZMAN_FAMILY=1)

	set(USE_BONJOUR 1)
	add_definitions(-DUSE_BONJOUR)
    link_directories(${BONJOUR_LIB_DIR})

	add_definitions(-DLINUX=1)

    include_directories("/opt/boost/stage_zman/include")
	set(BOOST_LIB_DIR "/opt/boost/stage_zman/lib")
    link_directories(${BOOST_LIB_DIR})
	# static link to boost
	set(Boost_LIBRARIES libboost_thread.a libboost_system.a libboost_filesystem.a libboost_regex.a libboost_date_time.a pthread)
	
	# include_directories("${MTSOURCES}/Pyramidion/Sources/Ravenna/device/src/zman/include/")
	# include_directories("${MTSOURCES}/Pyramidion/Sources/Ravenna/device/src/zman/bsp/ZBase/zbase_bsp/ps7_cortexa9_0/include/")
	# link_directories("${MTSOURCES}/Pyramidion/build_Ravenna/zman/device/src/zman/bsp/ZBase/zbase_bsp")
	# #set(XILINX_LIBRARY "xil")
	
    #set(CMAKE_BUILD_TYPE "Release")
	set(CMAKE_BUILD_TYPE "RelWithDebInfo")

	if ($(CMAKE_BUILD_TYPE) MATCHES "Release")
		set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s")	 ## Strip binary
	else ($(CMAKE_BUILD_TYPE) MATCHES "Release")
		list(REMOVE_ITEM CMAKE_EXE_LINKER_FLAGS -s)	 ## We don't want to strip binary, otherwise, all debug symbols are removed!!
	endif ($(CMAKE_BUILD_TYPE) MATCHES "Release")

	SET(Xlnx_BuildOptions "-marm -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=hard")
	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2 -Wno-psabi ${Xlnx_BuildOptions}")
	set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${Xlnx_BuildOptions}")
	set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--build-id=none") 
	link_directories("${TOOLCHAIN}/../../output/target/lib")

	# # Qt libraries
	# link_directories("/opt/qt/stage_zman/plugins/platforms/")
	# link_directories("/opt/qt/stage_zman/lib/")

else ()
	message("ERROR: only support WIN32, LINUX and OSX")
endif ()


## SDKs includes/libs
include_directories("common")

# rapidjson
set(RAPIDJSON_LIB rapidjson)
include_directories("../SDKs/rapidjson/include")
#subdirs("${MTSOURCES}/SDKs/rapidjson/include/rapidjson")
if (ZMAN_FAMILY)
	link_directories("${CMAKE_CURRENT_SOURCE_DIR}/../SDKs/rapidjson/lib/zman")
endif ()

include_directories(".")

include_directories("../SDKs/MTAL")
if (ZMAN_FAMILY)
	link_directories("${CMAKE_CURRENT_SOURCE_DIR}/../SDKs/MTAL/lib/zman")
endif ()

include_directories("../SDKs/rvstd")
if (ZMAN_FAMILY)
	link_directories("${CMAKE_CURRENT_SOURCE_DIR}/../SDKs/rvstd/lib/zman")
endif ()

include_directories("../SDKs/oem_zman_device_ipc")
if (ZMAN_FAMILY)
	link_directories("${CMAKE_CURRENT_SOURCE_DIR}/../SDKs/oem_zman_device_ipc/lib/zman")
endif ()

if (WIN32)
elseif (LINUX)
	set(MTAL_LIBRARIES pthread rt)
elseif (OSX)
endif ()


## sub projects to compile
subdirs(oem_modules_process)
subdirs(oem_ui_process)
subdirs(samples)




message("==========================================")
if (WIN32)
    if (MSVC)		
        if (CMAKE_CL_64)
			message("We are compiling for Windows x64")
		else (CMAKE_CL_64)
			message("We are compiling for Windows")
		endif (CMAKE_CL_64)
    endif (MSVC)
elseif (LINUX)
	message("We are compiling for Linux")
elseif (OSX)
	message("We are compiling for Mac OS X")
elseif (ALSA_LINUX)
	message("We are compiling for ALSA Linux")
else ()
	message("ERROR: only support WIN32, LINUX and OSX")
endif ()

if (HORUS_FAMILY)
    message("Product: Horus Family")
endif ()
if (ZMAN_FAMILY)
    message("Product: ZMAN Family")
endif ()
if (COREAUDIO)
    message("Product: CoreAudio")
endif ()
if (SYNOLOGY)
    message("Product: Synology")
endif ()
if (ALSA_LINUX)
	message("Product: ALSA driver")
endif ()
message("==========================================")


