diff --git a/.gitignore b/.gitignore index 869ab7e30..f16bf2091 100755 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,8 @@ _CPack_Packages LICENSE.txt /external/* !external/README +*Config.cmake +*ConfigVersion.cmake *.a.objlist.cmake *.a.objlist diff --git a/CMakeLists.txt b/CMakeLists.txt index 4ecb4df90..f4b0d3102 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,6 +51,7 @@ include(ComplexLibrary) include(FeatureSummary) include(CheckCCompilerFlag) include(GNUInstallDirsWrapper) +include(CMakePackageConfigHelpers) # Soname versioning set(FREERDP_VERSION_MAJOR "1") @@ -551,6 +552,24 @@ if(WITH_SERVER) add_subdirectory(server) endif() +# Exporting + +export(PACKAGE freerdp) + +set(FREERDP_CMAKE_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/FreeRDP/cmake") + +configure_package_config_file(FreeRDPConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FreeRDPConfig.cmake + INSTALL_DESTINATION ${FREERDP_CMAKE_INSTALL_DIR} + PATH_VARS CMAKE_INSTALL_INCLUDEDIR) + +write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/FreeRDPConfigVersion.cmake + VERSION ${FREERDP_VERSION} COMPATIBILITY SameMajorVersion) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FreeRDPConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/FreeRDPConfigVersion.cmake + DESTINATION ${FREERDP_CMAKE_INSTALL_DIR}) + +install(EXPORT FreeRDPTargets DESTINATION ${FREERDP_CMAKE_INSTALL_DIR}) + # Packaging set(CMAKE_CPACK_INCLUDE_FILE "CMakeCPack.cmake") diff --git a/FreeRDPConfig.cmake.in b/FreeRDPConfig.cmake.in new file mode 100644 index 000000000..dab53fa34 --- /dev/null +++ b/FreeRDPConfig.cmake.in @@ -0,0 +1,10 @@ + +@PACKAGE_INIT@ + +set(FreeRDP_VERSION_MAJOR "@FREERDP_VERSION_MAJOR@") +set(FreeRDP_VERSION_MINOR "@FREERDP_VERSION_MINOR@") +set(FreeRDP_VERSION_PATCH "@FREERDP_VERSION_PATCH@") + +set_and_check(FreeRDP_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") + +include("${CMAKE_CURRENT_LIST_DIR}/FreeRDPTargets.cmake") diff --git a/libfreerdp/CMakeLists.txt b/libfreerdp/CMakeLists.txt index 1dbdb2ce1..f2063e8ea 100644 --- a/libfreerdp/CMakeLists.txt +++ b/libfreerdp/CMakeLists.txt @@ -60,7 +60,7 @@ if(MONOLITHIC_BUILD) target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS} ${PROFILER_LIBRARIES}) - install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries) + install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries EXPORT FreeRDPTargets) set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "FreeRDP/libfreerdp") endif() diff --git a/winpr/CMakeLists.txt b/winpr/CMakeLists.txt index b4aaf45d2..2870b8943 100644 --- a/winpr/CMakeLists.txt +++ b/winpr/CMakeLists.txt @@ -79,3 +79,21 @@ add_subdirectory(libwinpr) if(NOT ANDROID AND NOT IOS) add_subdirectory(tools) endif() + +# Exporting + +export(PACKAGE winpr) + +set(WINPR_CMAKE_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/WinPR/cmake") + +configure_package_config_file(WinPRConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/WinPRConfig.cmake + INSTALL_DESTINATION ${WINPR_CMAKE_INSTALL_DIR} + PATH_VARS CMAKE_INSTALL_INCLUDEDIR) + +write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/WinPRConfigVersion.cmake + VERSION ${WINPR_VERSION} COMPATIBILITY SameMajorVersion) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/WinPRConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/WinPRConfigVersion.cmake + DESTINATION ${WINPR_CMAKE_INSTALL_DIR}) + +install(EXPORT WinPRTargets DESTINATION ${WINPR_CMAKE_INSTALL_DIR}) diff --git a/winpr/WinPRConfig.cmake.in b/winpr/WinPRConfig.cmake.in new file mode 100644 index 000000000..f3adb4def --- /dev/null +++ b/winpr/WinPRConfig.cmake.in @@ -0,0 +1,10 @@ + +@PACKAGE_INIT@ + +set(WinPR_VERSION_MAJOR "@WINPR_VERSION_MAJOR@") +set(WinPR_VERSION_MINOR "@WINPR_VERSION_MINOR@") +set(WinPR_VERSION_PATCH "@WINPR_VERSION_PATCH@") + +set_and_check(WinPR_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") + +include("${CMAKE_CURRENT_LIST_DIR}/WinPRTargets.cmake") diff --git a/winpr/libwinpr/CMakeLists.txt b/winpr/libwinpr/CMakeLists.txt index a0d0f612c..5915ad00a 100644 --- a/winpr/libwinpr/CMakeLists.txt +++ b/winpr/libwinpr/CMakeLists.txt @@ -55,7 +55,7 @@ if(MONOLITHIC_BUILD) target_link_libraries(${MODULE_NAME} ${WINPR_LIBS}) - install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries) + install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries EXPORT WinPRTargets) set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "WinPR/libwinpr") endif()