From 9ec84ae28cd04b43e82e22870d709dbb187e3338 Mon Sep 17 00:00:00 2001 From: Manuel Bentele Date: Tue, 27 Oct 2020 13:59:34 +0100 Subject: [BUILD] fix broken version header packaging for source packages --- CMakeLists.txt | 35 ++++++++++++++++++++++++----------- cmake/PostVersionPackaging.cmake | 9 +++++++++ cmake/PreVersionPackaging.cmake | 11 +++++++++++ 3 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 cmake/PostVersionPackaging.cmake create mode 100644 cmake/PreVersionPackaging.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 8a74307..738ca9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -171,24 +171,37 @@ if(CMAKE_BUILD_TYPE MATCHES Release) # configure source packaging set(CPACK_SOURCE_GENERATOR "TGZ;ZIP") set(CPACK_SOURCE_INSTALLED_DIRECTORIES "${CMAKE_SOURCE_DIR}" "/" - "${PROJECT_GEN_DIR}" "/") - set(CPACK_SOURCE_IGNORE_FILES "/build/;/.git/;.gitignore$;.*~;version.h.in$") - - # generate install script for CPack to install generated files - configure_file(${PROJECT_MODULES_DIR}/InstallVersionFile.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/package/InstallVersionFile.cmake) - - # set CPack install script - set(CPACK_INSTALL_SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/package/InstallVersionFile.cmake) + "${PROJECT_GEN_DIR}" "/") + set(CPACK_SOURCE_IGNORE_FILES "/build/" + "/.git/" + ".gitignore" + "version.h.in") # include CPack functionality include(CPack) - # create custom target to build package source - add_custom_target(source + # prepare source packaging + add_custom_command(OUTPUT ${INCLUDE_VERSION_HEADER} + COMMAND ${CMAKE_COMMAND} -D VERSION_HEADER_INPUT_FILE=${INCLUDE_VERSION_HEADER_GENERATE} + -D VERSION_HEADER_OUTPUT_FILE=${INCLUDE_VERSION_HEADER} + -P ${PROJECT_MODULES_DIR}/PreVersionPackaging.cmake + COMMENT "Prepare version.h" + DEPENDS dnbd3-generate-version) + + # main source packaging + add_custom_target(package_source_main COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target package_source - DEPENDS dnbd3-generate-version + DEPENDS ${INCLUDE_VERSION_HEADER} VERBATIM USES_TERMINAL) + + # post source packaging and exported target to build source packages + add_custom_target(source + COMMAND ${CMAKE_COMMAND} -D VERSION_HEADER_INPUT_FILE=${INCLUDE_VERSION_HEADER_GENERATE} + -D VERSION_HEADER_OUTPUT_FILE=${INCLUDE_VERSION_HEADER} + -P ${PROJECT_MODULES_DIR}/PostVersionPackaging.cmake + COMMENT "Cleanup version.h" + DEPENDS package_source_main) endif(CMAKE_BUILD_TYPE MATCHES Release) # add all dnbd3 related projects from the source code directory diff --git a/cmake/PostVersionPackaging.cmake b/cmake/PostVersionPackaging.cmake new file mode 100644 index 0000000..877cd12 --- /dev/null +++ b/cmake/PostVersionPackaging.cmake @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright (C) 2020 Manuel Bentele +# + +if(EXISTS ${VERSION_HEADER_INPUT_FILE}) + # remove version.h if generated version.h is available from a Git build + file(REMOVE ${VERSION_HEADER_OUTPUT_FILE}) +endif(EXISTS ${VERSION_HEADER_INPUT_FILE}) diff --git a/cmake/PreVersionPackaging.cmake b/cmake/PreVersionPackaging.cmake new file mode 100644 index 0000000..e960155 --- /dev/null +++ b/cmake/PreVersionPackaging.cmake @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright (C) 2020 Manuel Bentele +# + +if(EXISTS ${VERSION_HEADER_INPUT_FILE}) + # copy generated version.h into the source repository for packaging purposes + get_filename_component(VERSION_HEADER_OUTPUT_FILE_PATH ${VERSION_HEADER_OUTPUT_FILE} PATH) + file(COPY ${VERSION_HEADER_INPUT_FILE} + DESTINATION ${VERSION_HEADER_OUTPUT_FILE_PATH}) +endif(EXISTS ${VERSION_HEADER_INPUT_FILE}) -- cgit v1.2.3-55-g7522