cmake_minimum_required(VERSION 3.25)

project(iPhoneMirror VERSION 1.8.4 LANGUAGES CXX)

set(IPHONEMIRROR_VERSION "${PROJECT_VERSION}" CACHE STRING
    "Product version embedded in native binaries")
string(REGEX REPLACE "^([0-9]+\\.[0-9]+\\.[0-9]+)(-.*)?$" "\\1" IPHONEMIRROR_BASE_VERSION "${IPHONEMIRROR_VERSION}")
string(REPLACE "." "," IPHONEMIRROR_FILE_VERSION "${IPHONEMIRROR_BASE_VERSION}")
set(IPHONEMIRROR_FILE_VERSION "${IPHONEMIRROR_FILE_VERSION},0")
configure_file(
    "${CMAKE_CURRENT_SOURCE_DIR}/src/Core/resources/iPhoneMirror.Core.rc.in"
    "${CMAKE_CURRENT_BINARY_DIR}/src/Core/iPhoneMirror.Core.rc"
    @ONLY)

if(NOT WIN32)
    message(FATAL_ERROR "iPhoneMirror currently targets Windows 10/11 only")
endif()

option(IPHONEMIRROR_BUILD_TESTS "Build native protocol tests" ON)
option(IPHONEMIRROR_BUILD_DANGEROUS_USB_TOOLS
    "Build tools that issue real Apple USB configuration and bulk requests" OFF)

if(IPHONEMIRROR_BUILD_TESTS)
    enable_testing()
endif()

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")

add_subdirectory(src/Core)
add_subdirectory(src/WirelessHost)
add_subdirectory(src/UxPlayHost)
add_subdirectory(src/VirtualCamera)
