# -*- cmake -*-

cmake_minimum_required(VERSION 3.12.0)

project(llwebrtc)

if (ARCH STREQUAL "" AND NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
    MESSAGE("ARCH not set" FATAL)
endif()

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(PACKAGES_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../include/webrtc"
						 "${CMAKE_CURRENT_SOURCE_DIR}/../include/webrtc/third_party"
						 "${CMAKE_CURRENT_SOURCE_DIR}/../include/webrtc/third_party/abseil-cpp")
set(PACKAGES_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../lib/release")

include_directories(${PACKAGES_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})

set(llwebrtc_SOURCE_FILES
	llwebrtc.cpp
)

set(llwebrtc_HEADER_FILES
	CMakeLists.txt
	llwebrtc_impl.h
	llwebrtc.h
)

set_source_files_properties(${llwebrtc_HEADER_FILES}
							PROPERTIES HEADER_FILE_ONLY TRUE)

list(APPEND llwebrtc_SOURCE_FILES ${llwebrtc_HEADER_FILES})

add_library(llwebrtc SHARED ${llwebrtc_SOURCE_FILES})

if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARCH} -std=c++20 -fPIC -O2 -fomit-frame-pointer -Wno-deprecated-declarations")
elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")
	set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /std:c++20 /MT /DNDEBUG /D_NDEBUG /D_HAS_ITERATOR_DEBUGGING=0")
	set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /std:c++20 /MTd /D_HAS_ITERATOR_DEBUGGING=0")
elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
	find_library(COREAUDIO_LIBRARY CoreAudio)
	find_library(COREGRAPHICS_LIBRARY CoreGraphics)
	find_library(AUDIOTOOLBOX_LIBRARY AudioToolbox)
	find_library(COREFOUNDATION_LIBRARY CoreFoundation)
	find_library(COCOA_LIBRARY Cocoa)
	set(WEBRTC_LIBRARIES
		${COREAUDIO_LIBRARY}
		${AUDIOTOOLBOX_LIBRARY}
		${COREGRAPHICS_LIBRARY}
		${COREFOUNDATION_LIBRARY}
		${COCOA_LIBRARY}
	)
	set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${ARCH} -std=c++20 -xobjective-c++ -stdlib=libc++ -Wno-deprecated-declarations")
	set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${ARCH} -std=c++20 -xobjective-c++ -stdlib=libc++ -Wno-deprecated-declarations")
    set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "")
endif ()

link_directories(${CMAKE_CURRENT_SOURCE_DIR} ${PACKAGES_LIB_DIR})

if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
#	target_link_libraries(llwebrtc PRIVATE -Wl,-Bstatic ${PACKAGES_LIB_DIR}/libwebrtc.a -Wl,-Bdynamic X11)
	target_link_libraries(llwebrtc PRIVATE -Wl,-Bstatic ${PACKAGES_LIB_DIR}/libwebrtc.a -Wl,-Bdynamic)
elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")
	target_link_libraries(llwebrtc PRIVATE ${PACKAGES_LIB_DIR}/webrtc.lib secur32 winmm dmoguids wmcodecdspuuid msdmo strmiids iphlpapi)
elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
	target_link_libraries(llwebrtc PRIVATE ${PACKAGES_LIB_DIR}/libwebrtc.a ${WEBRTC_LIBRARIES})
endif ()
