From 63858bf72210ccddcdeb0836a967ec6637672f95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Wed, 17 Oct 2012 13:07:29 -0400 Subject: [PATCH] cmake: improve NSIS packaging --- .gitignore | 2 +- CMakeLists.txt | 11 +++++++++++ client/Windows/CMakeLists.txt | 3 ++- client/common/CMakeLists.txt | 4 ++-- include/CMakeLists.txt | 24 +++++++++++------------- libfreerdp/CMakeLists.txt | 8 ++++++-- server/common/CMakeLists.txt | 3 ++- winpr/include/CMakeLists.txt | 2 +- 8 files changed, 36 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index a6b7efe65..cf8fb726a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,7 @@ CMakeFiles/ CMakeScripts/ CMakeCache.txt config.h -install_manifest.txt +install_manifest*.txt CTestTestfile.cmake freerdp.pc Makefile diff --git a/CMakeLists.txt b/CMakeLists.txt index b801c938f..5d37ee0ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -311,8 +311,19 @@ set(CPACK_PACKAGE_INSTALL_DIRECTORY "FreeRDP") set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/LICENSE") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE") +set(CPACK_NSIS_MODIFY_PATH ON) set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/resources\\\\FreeRDP_Install.bmp") set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/resources\\\\FreeRDP_Icon_96px.ico") set(CPACK_NSIS_MUI_UNICON "${CMAKE_SOURCE_DIR}/resource\\\\FreeRDP_Icon_96px.ico") +if(${MSVC_RUNTIME} STREQUAL "dynamic") + include(InstallRequiredSystemLibraries) +endif() + include(CPack) + +cpack_add_component(headers DISPLAY_NAME "Headers") +cpack_add_component(libraries DISPLAY_NAME "Libraries") +cpack_add_component(clients DISPLAY_NAME "Clients") + +set(CPACK_COMPONENTS_ALL clients libraries headers) diff --git a/client/Windows/CMakeLists.txt b/client/Windows/CMakeLists.txt index 33fa5da37..eed2f229d 100644 --- a/client/Windows/CMakeLists.txt +++ b/client/Windows/CMakeLists.txt @@ -44,6 +44,7 @@ set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS MODULES freerdp-core freerdp-gdi freerdp-codec freerdp-utils) target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS}) -install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR}) + +install(TARGETS ${MODULE_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT clients) set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Client/Windows") diff --git a/client/common/CMakeLists.txt b/client/common/CMakeLists.txt index 18f0ed7b4..2a0cc2fbf 100644 --- a/client/common/CMakeLists.txt +++ b/client/common/CMakeLists.txt @@ -33,7 +33,7 @@ set_target_properties(${MODULE_NAME} PROPERTIES VERSION ${FREERDP_VERSION_FULL} set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-channels-client) target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS}) -install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries) set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Client/Common") - diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt index d50abfa5b..ec64d17ac 100644 --- a/include/CMakeLists.txt +++ b/include/CMakeLists.txt @@ -18,17 +18,15 @@ # limitations under the License. file(GLOB FREERDP_HEADERS "freerdp/*.h") -install(FILES ${FREERDP_HEADERS} DESTINATION include/freerdp) - -install(DIRECTORY freerdp/cache DESTINATION include/freerdp FILES_MATCHING PATTERN "*.h") -install(DIRECTORY freerdp/codec DESTINATION include/freerdp FILES_MATCHING PATTERN "*.h") -install(DIRECTORY freerdp/crypto DESTINATION include/freerdp FILES_MATCHING PATTERN "*.h") -install(DIRECTORY freerdp/gdi DESTINATION include/freerdp FILES_MATCHING PATTERN "*.h") -install(DIRECTORY freerdp/locale DESTINATION include/freerdp FILES_MATCHING PATTERN "*.h") -install(DIRECTORY freerdp/rail DESTINATION include/freerdp FILES_MATCHING PATTERN "*.h") -install(DIRECTORY freerdp/utils DESTINATION include/freerdp FILES_MATCHING PATTERN "*.h") -install(DIRECTORY freerdp/client DESTINATION include/freerdp FILES_MATCHING PATTERN "*.h") -install(DIRECTORY freerdp/server DESTINATION include/freerdp FILES_MATCHING PATTERN "*.h") -install(DIRECTORY freerdp/channels DESTINATION include/freerdp FILES_MATCHING PATTERN "*.h") - +install(FILES ${FREERDP_HEADERS} DESTINATION include/freerdp COMPONENT headers) +install(DIRECTORY freerdp/cache DESTINATION include/freerdp COMPONENT headers FILES_MATCHING PATTERN "*.h") +install(DIRECTORY freerdp/codec DESTINATION include/freerdp COMPONENT headers FILES_MATCHING PATTERN "*.h") +install(DIRECTORY freerdp/crypto DESTINATION include/freerdp COMPONENT headers FILES_MATCHING PATTERN "*.h") +install(DIRECTORY freerdp/gdi DESTINATION include/freerdp COMPONENT headers FILES_MATCHING PATTERN "*.h") +install(DIRECTORY freerdp/locale DESTINATION include/freerdp COMPONENT headers FILES_MATCHING PATTERN "*.h") +install(DIRECTORY freerdp/rail DESTINATION include/freerdp COMPONENT headers FILES_MATCHING PATTERN "*.h") +install(DIRECTORY freerdp/utils DESTINATION include/freerdp COMPONENT headers FILES_MATCHING PATTERN "*.h") +install(DIRECTORY freerdp/client DESTINATION include/freerdp COMPONENT headers FILES_MATCHING PATTERN "*.h") +install(DIRECTORY freerdp/server DESTINATION include/freerdp COMPONENT headers FILES_MATCHING PATTERN "*.h") +install(DIRECTORY freerdp/channels DESTINATION include/freerdp COMPONENT headers FILES_MATCHING PATTERN "*.h") diff --git a/libfreerdp/CMakeLists.txt b/libfreerdp/CMakeLists.txt index 985f009b3..a50df1e06 100644 --- a/libfreerdp/CMakeLists.txt +++ b/libfreerdp/CMakeLists.txt @@ -47,8 +47,12 @@ if(MONOLITHIC_BUILD) set_target_properties(${MODULE_NAME} PROPERTIES VERSION ${FREERDP_VERSION_FULL} SOVERSION ${FREERDP_VERSION} PREFIX "lib") target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS}) - install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}) + + install(TARGETS ${MODULE_NAME} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT libraries) set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "FreeRDP/libfreerdp") endif() - diff --git a/server/common/CMakeLists.txt b/server/common/CMakeLists.txt index 42a59d20b..00c9e33c6 100644 --- a/server/common/CMakeLists.txt +++ b/server/common/CMakeLists.txt @@ -32,6 +32,7 @@ set_target_properties(${MODULE_NAME} PROPERTIES VERSION ${FREERDP_VERSION_FULL} set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-channels-server) target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS}) -install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries) set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Server/Common") diff --git a/winpr/include/CMakeLists.txt b/winpr/include/CMakeLists.txt index fec1ede14..0a049aaf5 100644 --- a/winpr/include/CMakeLists.txt +++ b/winpr/include/CMakeLists.txt @@ -16,4 +16,4 @@ # limitations under the License. file(GLOB WINPR_HEADERS "winpr/*.h") -install(FILES ${WINPR_HEADERS} DESTINATION include/winpr) +install(FILES ${WINPR_HEADERS} DESTINATION include/winpr COMPONENT headers)