summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CPackConfig.txt14
-rw-r--r--cmake/modules/Dist.cmake11
2 files changed, 23 insertions, 2 deletions
diff --git a/CPackConfig.txt b/CPackConfig.txt
index 3aa95bca33..934a86a4b2 100644
--- a/CPackConfig.txt
+++ b/CPackConfig.txt
@@ -34,8 +34,18 @@ else()
set(CPACK_PACKAGE_NAME wireshark)
endif()
-set(CPACK_SOURCE_IGNORE_FILES "build" "/.git/")
-add_custom_target(dist DEPENDS package_source)
+# Directory to copy sources to
+set(WS_SOURCE_DIR "${CMAKE_BINARY_DIR}/source_dir")
+set(CPACK_SOURCE_INSTALLED_DIRECTORIES "${WS_SOURCE_DIR}/;/")
+# dist target that prepares source dir
+add_custom_target(dist
+ COMMAND "${CMAKE_COMMAND}"
+ -DPROJECT_SOURCE_DIR="${PROJECT_SOURCE_DIR}"
+ -DGIT_EXECUTABLE="${GIT_EXECUTABLE}"
+ -DWS_SOURCE_DIR="${WS_SOURCE_DIR}"
+ -P "${CMAKE_SOURCE_DIR}/cmake/modules/Dist.cmake"
+ COMMAND "${CMAKE_MAKE_PROGRAM}" package_source
+)
set(CPACK_PACKAGE_DESCRIPTION "A set of command line and gui tools to capture and decode traffic")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Packet capturing and decoding")
diff --git a/cmake/modules/Dist.cmake b/cmake/modules/Dist.cmake
new file mode 100644
index 0000000000..7c0b3bb105
--- /dev/null
+++ b/cmake/modules/Dist.cmake
@@ -0,0 +1,11 @@
+message("Copying source files from ${PROJECT_SOURCE_DIR} to ${WS_SOURCE_DIR}")
+
+# create destination dir
+file(MAKE_DIRECTORY "${WS_SOURCE_DIR}")
+
+# Copy all files in the state *as known by git*, respecting export-ignore in .gitattributes
+execute_process(COMMAND "${GIT_EXECUTABLE}" checkout-index -a -f --prefix "${WS_SOURCE_DIR}/" WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
+
+# Generate the version.conf and put it in brand new source dir
+execute_process(COMMAND "${GIT_EXECUTABLE}" describe WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" OUTPUT_VARIABLE GIT_DESCRIBE)
+file(WRITE "${WS_SOURCE_DIR}/version.conf" "git_description=${GIT_DESCRIBE}")