From 235707c9163d7ba73bbb9cbd70cf74d3aed6285c Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Sun, 8 Jan 2023 17:41:59 +0100 Subject: [PATCH] Added Windows installer target using CPack and NSIS --- CMakeLists.txt | 56 ++++++++++++++++++++++++++++++++++++++++++++- LICENSE.md | 2 +- packaging/README.md | 10 ++++++++ 3 files changed, 66 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e2bb0f79..f72fd95d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,35 @@ set(UML_HEADERS_DIR ${PROJECT_SOURCE_DIR}/src/uml) # option(LINK_LLVM_SHARED "Should LLVM be linked using shared libraries or statically" ON) set(LLVM_VERSION CACHE STRING "Path to custom llvm-config executable") -set(GIT_VERSION "0.3.0" CACHE STRING "clang-uml version") + +# +# Setup version string +# +find_package(Git) + +if(NOT DEFINED GIT_VERSION) + if(GIT_EXECUTABLE) + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --tags --always --abbrev=7 + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_VERSION + RESULT_VARIABLE GIT_ERROR_CODE + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + endif(GIT_EXECUTABLE) +endif(NOT DEFINED GIT_VERSION) + +if(NOT DEFINED GIT_VERSION) + set(GIT_VERSION "0.0.0-unknown") +endif(NOT DEFINED GIT_VERSION) + +string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.(.+)" + GIT_VERSION_MATCH ${GIT_VERSION}) +set(GIT_VERSION_MAJOR ${CMAKE_MATCH_1}) +set(GIT_VERSION_MINOR ${CMAKE_MATCH_2}) +set(GIT_VERSION_PATCH ${CMAKE_MATCH_3}) + +message(STATUS "clang-uml version: ${GIT_VERSION_MAJOR}.${GIT_VERSION_MINOR}.${GIT_VERSION_PATCH}") # # Setup LLVM @@ -214,6 +242,32 @@ install(TARGETS clang-uml DESTINATION ${CMAKE_INSTALL_BINDIR}) install(FILES LICENSE.md DESTINATION ${CMAKE_INSTALL_DOCDIR}) install(FILES README.md DESTINATION ${CMAKE_INSTALL_DOCDIR}) +# +# Setup installer +# +set(CPACK_PACKAGE_NAME "clang-uml") +set(CPACK_PACKAGE_VENDOR "Bartek Kryza ") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "clang-uml - C++ UML diagram generator based on Clang") +set(CPACK_PACKAGE_VERSION "${GIT_VERSION}") +set(CPACK_PACKAGE_VERSION_MAJOR "${GIT_VERSION_MAJOR}") +set(CPACK_PACKAGE_VERSION_MINOR "${GIT_VERSION_MINOR}") +set(CPACK_PACKAGE_VERSION_PATCH "${GIT_VERSION_PATCH}") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "clang-uml") +set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md) + +if(MSVC) + set(CPACK_GENERATOR "NSIS") + set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON) + set(CPACK_NSIS_DISPLAY_NAME "clang-uml") + set(CPACK_NSIS_HELP_LINK "https://github.com/bkryza/clang-uml") + set(CPACK_NSIS_URL_INFO_ABOUT "https://github.com/bkryza/clang-uml") + set(CPACK_NSIS_CONTACT "Bartek Kryza ") + set(CPACK_NSIS_MODIFY_PATH ON) + set(CPACK_SOURCE_GENERATOR "ZIP") +endif(MSVC) + +include(CPack) + # # Enable testing via CTest # diff --git a/LICENSE.md b/LICENSE.md index 84a5a44c..f594bdeb 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -179,7 +179,7 @@ recommend that a file or class name and description of purpose be included on the same “printed page” as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2021-2023 Bartek Kryza Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/packaging/README.md b/packaging/README.md index 5747277b..438e7cc5 100644 --- a/packaging/README.md +++ b/packaging/README.md @@ -38,4 +38,14 @@ docker run --rm -v $PWD:$PWD continuumio/miniconda3 bash conda install conda-build make cd packaging make CONDA_TOKEN= conda +``` + +## Windows + +First build release configuration using `cmake` and `msbuild` according +to the [documentation](../docs/installation.md#visual-studio-native-build). + +```bash +cd +cpack -C "Release" -G NSIS64 ``` \ No newline at end of file