summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManuel Bentele2020-10-27 13:59:34 +0100
committerManuel Bentele2020-10-27 13:59:34 +0100
commit9ec84ae28cd04b43e82e22870d709dbb187e3338 (patch)
tree22398287249e9630043186c8247a1cb999b1484c
parent[BUILD] remove the build requirement for an unused C++ compiler (diff)
downloaddnbd3-9ec84ae28cd04b43e82e22870d709dbb187e3338.tar.gz
dnbd3-9ec84ae28cd04b43e82e22870d709dbb187e3338.tar.xz
dnbd3-9ec84ae28cd04b43e82e22870d709dbb187e3338.zip
[BUILD] fix broken version header packaging for source packages
-rw-r--r--CMakeLists.txt35
-rw-r--r--cmake/PostVersionPackaging.cmake9
-rw-r--r--cmake/PreVersionPackaging.cmake11
3 files changed, 44 insertions, 11 deletions
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 <development@manuel-bentele.de>
+#
+
+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 <development@manuel-bentele.de>
+#
+
+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})