cmake_minimum_required(VERSION 3.13)

if(NOT FREERDP_DEFAULT_PROJECT_VERSION)
  set(FREERDP_DEFAULT_PROJECT_VERSION "1.0.0.0")
endif()

project(MacFreeRDP-library VERSION ${FREERDP_DEFAULT_PROJECT_VERSION})

message("project ${PROJECT_NAME} is using version ${PROJECT_VERSION}")

list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/)
include(CommonConfigOptions)

find_library(FOUNDATION_LIBRARY Foundation REQUIRED)
find_library(COCOA_LIBRARY Cocoa REQUIRED)
find_library(APPKIT_LIBRARY AppKit REQUIRED)
find_library(IOKIT_LIBRARY IOKit REQUIRED)
find_library(COREGRAPHICS_LIBRARY CoreGraphics REQUIRED)

set(EXTRA_LIBS ${COCOA_LIBRARY} ${FOUNDATION_LIBRARY} ${APPKIT_LIBRARY} ${IOKIT_LIBRARY})

set(XIBS CertificateDialog.xib PasswordDialog.xib)

set(SOURCES "")

set(OBJECTIVE_SOURCES
    main.m
    mf_client.m
    MRDPCursor.m
    MRDPView.m
    Keyboard.m
    Clipboard.m
    CertificateDialog.m
    PasswordDialog.m
)

list(APPEND SOURCES ${OBJECTIVE_SOURCES})

set(HEADERS
    mfreerdp.h
    mf_client.h
    MRDPCursor.h
    MRDPView.h
    Keyboard.h
    Clipboard.h
    CertificateDialog.h
    PasswordDialog.h
)

set(RESOURCES "en.lproj/InfoPlist.strings")

# Include XIB file in Xcode resources.
if("${CMAKE_GENERATOR}" MATCHES "Xcode")
  message(STATUS "Adding Xcode XIB resources for ${MODULE_NAME}")
  list(APPEND RESOURCES ${XIBS})
  set(IS_XCODE ON)
endif()

add_library(${PROJECT_NAME} ../common/client.c ${SOURCES} ${HEADERS} ${RESOURCES})

set(LIBS ${EXTRA_LIBS} freerdp-client)

target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBS})

set_target_properties(${PROJECT_NAME} PROPERTIES RESOURCE "${RESOURCES}")

if(NOT IS_XCODE)
  find_program(IBTOOL ibtool REQUIRED HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")

  # Compile the .xib files using the 'ibtool' program with the destination being the app package
  foreach(xib ${XIBS})
    get_filename_component(XIB_WE ${xib} NAME_WE)
    set(NIB ${CMAKE_CURRENT_BINARY_DIR}/${XIB_WE}.nib)
    list(APPEND NIBS ${NIB})

    add_custom_command(
      TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${IBTOOL} --errors --warnings --notices --output-format
                                                human-readable-text --compile ${NIB} ${CMAKE_CURRENT_SOURCE_DIR}/${xib}
      COMMENT "Compiling ${xib}"
    )
  endforeach()

  install(FILES ${NIBS} DESTINATION ${CMAKE_INSTALL_DATADIR})
endif()

install(TARGETS ${PROJECT_NAME} COMPONENT client RESOURCE DESTINATION ${CMAKE_INSTALL_DATADIR})

include_directories(${CMAKE_CURRENT_SOURCE_DIR})
add_subdirectory(cli)
