|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
project(MacFreeRDP-library)
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
if(${CMAKE_VERSION} GREATER 2.8.12)
|
|
Packit |
1fb8d4 |
cmake_policy(SET CMP0026 OLD)
|
|
Packit |
1fb8d4 |
cmake_policy(SET CMP0045 OLD)
|
|
Packit |
1fb8d4 |
endif()
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
set(MODULE_NAME "MacFreeRDP-library")
|
|
Packit |
1fb8d4 |
set(MODULE_OUTPUT_NAME "MacFreeRDP")
|
|
Packit |
1fb8d4 |
set(MODULE_PREFIX "FREERDP_CLIENT_MAC_LIBRARY")
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
find_library(FOUNDATION_LIBRARY Foundation)
|
|
Packit |
1fb8d4 |
find_library(COCOA_LIBRARY Cocoa)
|
|
Packit |
1fb8d4 |
find_library(APPKIT_LIBRARY AppKit)
|
|
Packit |
1fb8d4 |
find_library(IOKIT_LIBRARY IOKit)
|
|
Packit Service |
5a9772 |
find_library(COREGRAPHICS_LIBRARY CoreGraphics)
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
mark_as_advanced(COCOA_LIBRARY FOUNDATION_LIBRARY APPKIT_LIBRARY)
|
|
Packit |
1fb8d4 |
set(EXTRA_LIBS ${COCOA_LIBRARY} ${FOUNDATION_LIBRARY} ${APPKIT_LIBRARY} ${IOKIT_LIBRARY})
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
string(TIMESTAMP VERSION_YEAR "%Y")
|
|
Packit |
1fb8d4 |
set(MACOSX_BUNDLE_INFO_STRING "${MODULE_OUTPUT_NAME}")
|
|
Packit |
1fb8d4 |
set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.freerdp.mac")
|
|
Packit |
1fb8d4 |
set(MACOSX_BUNDLE_BUNDLE_IDENTIFIER "FreeRDP-library.Mac")
|
|
Packit Service |
5a9772 |
set(MACOSX_BUNDLE_LONG_VERSION_STRING "MacFreeRDP library Version ${FREERDP_VERSION}")
|
|
Packit |
1fb8d4 |
set(MACOSX_BUNDLE_BUNDLE_NAME "${MODULE_OUTPUT_NAME}")
|
|
Packit Service |
5a9772 |
set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${FREERDP_VERSION})
|
|
Packit Service |
5a9772 |
set(MACOSX_BUNDLE_BUNDLE_VERSION ${FREERDP_VERSION})
|
|
Packit Service |
5a9772 |
set(MACOSX_BUNDLE_COPYRIGHT "Copyright 2013-${VERSION_YEAR}. All Rights Reserved.")
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
set(${MODULE_PREFIX}_XIBS
|
|
Packit Service |
5a9772 |
CertificateDialog.xib
|
|
Packit Service |
5a9772 |
PasswordDialog.xib)
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
set(${MODULE_PREFIX}_SOURCES "")
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
set(${MODULE_PREFIX}_OBJECTIVE_SOURCES
|
|
Packit |
1fb8d4 |
main.m
|
|
Packit |
1fb8d4 |
mf_client.m
|
|
Packit |
1fb8d4 |
MRDPCursor.m
|
|
Packit |
1fb8d4 |
MRDPView.m
|
|
Packit |
1fb8d4 |
Keyboard.m
|
|
Packit |
1fb8d4 |
Clipboard.m
|
|
Packit Service |
5a9772 |
CertificateDialog.m
|
|
Packit |
1fb8d4 |
PasswordDialog.m)
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
list(APPEND ${MODULE_PREFIX}_SOURCES ${${MODULE_PREFIX}_OBJECTIVE_SOURCES})
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
set(${MODULE_PREFIX}_HEADERS
|
|
Packit |
1fb8d4 |
mfreerdp.h
|
|
Packit |
1fb8d4 |
mf_client.h
|
|
Packit |
1fb8d4 |
MRDPCursor.h
|
|
Packit |
1fb8d4 |
MRDPView.h
|
|
Packit |
1fb8d4 |
Keyboard.h
|
|
Packit |
1fb8d4 |
Clipboard.h
|
|
Packit Service |
5a9772 |
CertificateDialog.h
|
|
Packit |
1fb8d4 |
PasswordDialog.h)
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
set(${MODULE_PREFIX}_RESOURCES "en.lproj/InfoPlist.strings")
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
# Include XIB file in Xcode resources.
|
|
Packit |
1fb8d4 |
if("${CMAKE_GENERATOR}" MATCHES "Xcode")
|
|
Packit |
1fb8d4 |
message(STATUS "Adding Xcode XIB resources for ${MODULE_NAME}")
|
|
Packit |
1fb8d4 |
set(${MODULE_PREFIX}_RESOURCES ${${MODULE_PREFIX}_RESOURCES} ${${MODULE_PREFIX}_XIBS})
|
|
Packit |
1fb8d4 |
endif()
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
add_library(${MODULE_NAME}
|
|
Packit |
1fb8d4 |
SHARED
|
|
Packit |
1fb8d4 |
../common/client.c
|
|
Packit |
1fb8d4 |
${${MODULE_PREFIX}_SOURCES}
|
|
Packit |
1fb8d4 |
${${MODULE_PREFIX}_HEADERS}
|
|
Packit |
1fb8d4 |
${${MODULE_PREFIX}_RESOURCES})
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "${MODULE_OUTPUT_NAME}")
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
# configures the framework to always be looked for in the application bundle in the Frameworks sub-folder.
|
|
Packit |
1fb8d4 |
set_target_properties(${MODULE_NAME} PROPERTIES XCODE_ATTRIBUTE_INSTALL_PATH @executable_path/../Frameworks/)
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
set_target_properties(${MODULE_NAME} PROPERTIES
|
|
Packit |
1fb8d4 |
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${EXECUTABLE_OUTPUT_PATH}
|
|
Packit |
1fb8d4 |
RUNTIME_OUTPUT_DIRECTORY_RELEASE ${EXECUTABLE_OUTPUT_PATH})
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
set_target_properties(${MODULE_NAME} PROPERTIES
|
|
Packit |
1fb8d4 |
FRAMEWORK TRUE
|
|
Packit |
1fb8d4 |
MACOSX_FRAMEWORK_IDENTIFIER com.awakecoding.${MODULE_NAME}
|
|
Packit Service |
5a9772 |
FRAMEWORK_VERSION ${FREERDP_VERSION}
|
|
Packit Service |
5a9772 |
MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${FREERDP_VERSION}
|
|
Packit Service |
5a9772 |
MACOSX_FRAMEWORK_BUNDLE_BUNDLE_VERSION ${FREERDP_VERSION}
|
|
Packit |
1fb8d4 |
INSTALL_NAME_DIR "@executable_path/../Frameworks"
|
|
Packit |
1fb8d4 |
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} ${EXTRA_LIBS} freerdp-client)
|
|
Packit |
1fb8d4 |
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} winpr freerdp)
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
# Set a list of the dependent targets used by the application. There should be a way to get this list automatically
|
|
Packit |
1fb8d4 |
# from cmake, but for now I put it down manually. I got the references by calling "otool -L MacFreeRDP-client"
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
set(DEPENDENCIES "")
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
foreach(LIB ${${MODULE_PREFIX}_LIBS})
|
|
Packit |
1fb8d4 |
get_target_property(LOCATION ${LIB} LOCATION)
|
|
Packit |
1fb8d4 |
if(NOT ${LOCATION} MATCHES ".*-NOTFOUND")
|
|
Packit |
1fb8d4 |
list(APPEND DEPENDENCIES ${LIB})
|
|
Packit |
1fb8d4 |
endif()
|
|
Packit |
1fb8d4 |
endforeach()
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Client/Mac")
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
if (${BUILD_SHARED_LIBS})
|
|
Packit |
1fb8d4 |
# Add a post-build event to copy the dependent libraries in the framework bundle
|
|
Packit |
1fb8d4 |
# Call install_name_tool to reassign the library install name
|
|
Packit |
1fb8d4 |
foreach(LIB ${DEPENDENCIES})
|
|
Packit |
1fb8d4 |
# message("adding post-build dependency: ${LIB}")
|
|
Packit |
1fb8d4 |
add_custom_command(TARGET ${MODULE_NAME} POST_BUILD
|
|
Packit |
1fb8d4 |
COMMAND "${CMAKE_COMMAND}" -E copy
|
|
Packit |
1fb8d4 |
"$<TARGET_FILE:${LIB}>"
|
|
Packit |
1fb8d4 |
"${CMAKE_CURRENT_BINARY_DIR}/$(CONFIGURATION)/${MODULE_OUTPUT_NAME}.framework/Contents/$<TARGET_FILE_NAME:${LIB}>"
|
|
Packit |
1fb8d4 |
COMMENT "Copying ${LIB} to output directory"
|
|
Packit |
1fb8d4 |
COMMAND install_name_tool -change "$<TARGET_SONAME_FILE:${LIB}>"
|
|
Packit |
1fb8d4 |
"@executable_path/../Frameworks/${MODULE_OUTPUT_NAME}.framework/Contents/$<TARGET_FILE_NAME:${LIB}>"
|
|
Packit |
1fb8d4 |
"${CMAKE_CURRENT_BINARY_DIR}/$(CONFIGURATION)/${MODULE_OUTPUT_NAME}.framework/${MODULE_OUTPUT_NAME}"
|
|
Packit |
1fb8d4 |
COMMENT Setting install name for ${LIB}
|
|
Packit |
1fb8d4 |
COMMAND "${CMAKE_COMMAND}" -E echo install_name_tool -change "$<TARGET_SONAME_FILE:${LIB}>"
|
|
Packit |
1fb8d4 |
"@executable_path/../Frameworks/${MODULE_OUTPUT_NAME}.framework/Contents/$<TARGET_FILE_NAME:${LIB}>"
|
|
Packit |
1fb8d4 |
"${CMAKE_CURRENT_BINARY_DIR}/$(CONFIGURATION)/${MODULE_OUTPUT_NAME}.framework/${MODULE_OUTPUT_NAME}")
|
|
Packit |
1fb8d4 |
endforeach()
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
# Call install_name_tool to reassign the library install names in dependent libraries
|
|
Packit |
1fb8d4 |
foreach(DEST ${DEPENDENCIES})
|
|
Packit |
1fb8d4 |
foreach(LIB ${DEPENDENCIES})
|
|
Packit |
1fb8d4 |
# message("adding post-build dependency: ${LIB}")
|
|
Packit |
1fb8d4 |
add_custom_command(TARGET ${MODULE_NAME} POST_BUILD
|
|
Packit |
1fb8d4 |
COMMAND install_name_tool -change "$<TARGET_SONAME_FILE:${LIB}>"
|
|
Packit |
1fb8d4 |
"@executable_path/../Frameworks/${MODULE_OUTPUT_NAME}.framework/Contents/$<TARGET_FILE_NAME:${LIB}>"
|
|
Packit |
1fb8d4 |
"${CMAKE_CURRENT_BINARY_DIR}/$(CONFIGURATION)/${MODULE_OUTPUT_NAME}.framework/Contents/$<TARGET_FILE_NAME:${DEST}>"
|
|
Packit |
1fb8d4 |
COMMENT Setting install name for ${LIB} in module ${DEST})
|
|
Packit |
1fb8d4 |
endforeach()
|
|
Packit |
1fb8d4 |
endforeach()
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
endif()
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
# Add post-build NIB file generation in unix makefiles. XCode handles this implicitly.
|
|
Packit |
1fb8d4 |
# if("${CMAKE_GENERATOR}" MATCHES "Unix Makefiles")
|
|
Packit |
1fb8d4 |
message(STATUS "Adding post-build NIB file generation event for ${MODULE_NAME}")
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
# Make sure we can find the 'ibtool' program. If we can NOT find it we
|
|
Packit |
1fb8d4 |
# skip generation of this project
|
|
Packit |
1fb8d4 |
find_program(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
|
|
Packit |
1fb8d4 |
if (${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
|
|
Packit |
1fb8d4 |
message(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
|
|
Packit |
1fb8d4 |
the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
|
|
Packit |
1fb8d4 |
endif()
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
# Make sure the 'Resources' Directory is correctly created before we build
|
|
Packit |
1fb8d4 |
add_custom_command(TARGET ${MODULE_NAME} PRE_BUILD
|
|
Packit |
1fb8d4 |
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/$(CONFIGURATION)/${MODULE_OUTPUT_NAME}.framework/Versions/${MACOSX_BUNDLE_SHORT_VERSION_STRING}/Resources)
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
# Compile the .xib files using the 'ibtool' program with the destination being the app package
|
|
Packit |
1fb8d4 |
foreach(xib ${${MODULE_PREFIX}_XIBS})
|
|
Packit |
1fb8d4 |
get_filename_component(XIB_WE ${xib} NAME_WE)
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
add_custom_command (TARGET ${MODULE_NAME} POST_BUILD
|
|
Packit |
1fb8d4 |
COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
|
|
Packit |
1fb8d4 |
--compile ${CMAKE_CURRENT_BINARY_DIR}/$(CONFIGURATION)/${MODULE_OUTPUT_NAME}.framework/Versions/${MACOSX_BUNDLE_SHORT_VERSION_STRING}/Resources/${XIB_WE}.nib ${CMAKE_CURRENT_SOURCE_DIR}/${xib}
|
|
Packit |
1fb8d4 |
COMMENT "Compiling ${xib}")
|
|
Packit |
1fb8d4 |
endforeach()
|
|
Packit |
1fb8d4 |
# endif()
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
# Copy the public header files into the framework
|
|
Packit |
1fb8d4 |
foreach(HEADER ${${MODULE_PREFIX}_HEADERS})
|
|
Packit |
1fb8d4 |
# message("adding post-build dependency: ${LIB}")
|
|
Packit |
1fb8d4 |
add_custom_command(TARGET ${MODULE_NAME} POST_BUILD
|
|
Packit |
1fb8d4 |
COMMAND ditto ${CMAKE_CURRENT_SOURCE_DIR}/${HEADER} ${CMAKE_CURRENT_BINARY_DIR}/$(CONFIGURATION)/${MODULE_OUTPUT_NAME}.framework/Headers/
|
|
Packit |
1fb8d4 |
COMMENT Copying public header files to ${MODULE_NAME})
|
|
Packit |
1fb8d4 |
endforeach()
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
# Copy the FreeRDP header files into the framework
|
|
Packit |
1fb8d4 |
add_custom_command(TARGET ${MODULE_NAME} POST_BUILD
|
|
Packit |
1fb8d4 |
COMMAND ditto ${CMAKE_SOURCE_DIR}/include/freerdp ${CMAKE_CURRENT_BINARY_DIR}/$(CONFIGURATION)/${MODULE_OUTPUT_NAME}.framework/Headers/freerdp
|
|
Packit |
1fb8d4 |
COMMAND ditto ${CMAKE_SOURCE_DIR}/winpr/include/winpr ${CMAKE_CURRENT_BINARY_DIR}/$(CONFIGURATION)/${MODULE_OUTPUT_NAME}.framework/Headers/winpr
|
|
Packit |
1fb8d4 |
COMMENT Copying FreeRDP header files to ${MODULE_NAME})
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
add_subdirectory(cli)
|