summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
author童宗振 <[email protected]>2024-04-12 09:05:44 +0000
committer童宗振 <[email protected]>2024-04-12 09:05:44 +0000
commit21522870f7a4dea01db7a024038e4a8f1f75b9e7 (patch)
treec14cc4a1e0301a0a86b894a2e9adf6eea1cfde41 /cmake
parent97284a9b278838a8e84beb54ce18653d3ed42c4d (diff)
Add packet
Diffstat (limited to 'cmake')
-rw-r--r--cmake/Package.cmake32
-rw-r--r--cmake/Version.cmake49
2 files changed, 81 insertions, 0 deletions
diff --git a/cmake/Package.cmake b/cmake/Package.cmake
new file mode 100644
index 0000000..beb9894
--- /dev/null
+++ b/cmake/Package.cmake
@@ -0,0 +1,32 @@
+if(CMAKE_BUILD_TYPE STREQUAL "Debug")
+ set(CPACK_PACKAGE_NAME "${PROJECT_NAME}-debug")
+else()
+ set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
+endif()
+
+message(STATUS "Package: ${CPACK_PACKAGE_NAME}")
+
+set(CPACK_PACKAGE_VECDOR "Mesasoft")
+set(CPACK_PACKAGE_VERSION_MAJOR "${DP_TRACE_VERSION_MAJOR}")
+set(CPACK_PACKAGE_VERSION_MINOR "${DP_TRACE_VERSION_MINOR}")
+set(CPACK_PACKAGE_VERSION_PATCH "${DP_TRACE_VERSION_PATCH}.${DP_TRACE_COMMIT_HASH}")
+set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/tsg/dp_trace_telemetry")
+
+# RPM Build
+set(CPACK_GENERATOR "RPM")
+set(CPACK_RPM_AUTO_GENERATED_FILE_NAME ON)
+set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
+set(CPACK_RPM_PACKAGE_AUTOREQPROV "no")
+set(CPACK_RPM_PACKAGE_RELEASE_DIST on)
+set(CPACK_RPM_DEBUGINFO_PACKAGE on)
+
+set(CPACK_RPM_PACKAGE_REQUIRES "wireshark")
+
+# Must uninstall the debug package before install release package
+if(CMAKE_BUILD_TYPE STREQUAL "Debug")
+ set(CPACK_RPM_PACKAGE_CONFLICTS "${PROJECT_NAME}")
+else()
+ set(CPACK_RPM_PACKAGE_CONFLICTS "${PROJECT_NAME}-debug")
+endif()
+
+include(CPack)
diff --git a/cmake/Version.cmake b/cmake/Version.cmake
new file mode 100644
index 0000000..3522855
--- /dev/null
+++ b/cmake/Version.cmake
@@ -0,0 +1,49 @@
+# Using autorevision.sh to generate version information
+
+set(__SOURCE_AUTORESIVISION ${CMAKE_SOURCE_DIR}/autorevision.sh)
+set(__AUTORESIVISION ${CMAKE_BINARY_DIR}/autorevision.sh)
+set(__VERSION_CACHE ${CMAKE_BINARY_DIR}/version.txt)
+set(__VERSION_CONFIG ${CMAKE_BINARY_DIR}/version.cmake)
+set(__VERSION_CONFIG_C_IN ${CMAKE_SOURCE_DIR}/template/dp_trace_version.h.in)
+set(__VERSION_CONFIG_C_OUT ${CMAKE_BINARY_DIR}/include/dp_trace_version.h)
+
+file(COPY ${__SOURCE_AUTORESIVISION} DESTINATION ${CMAKE_BINARY_DIR}
+ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
+ WORLD_READ WORLD_EXECUTE)
+
+# execute autorevision.sh to generate version information
+execute_process(COMMAND ${__AUTORESIVISION} -t cmake -o ${__VERSION_CACHE}
+ OUTPUT_FILE ${__VERSION_CONFIG} ERROR_QUIET)
+include(${__VERSION_CONFIG})
+
+set(DP_TRACE_COMMIT_HASH "${VCS_SHORT_HASH}")
+
+# extract major, minor, patch version from git tag
+string(REGEX REPLACE "^v([0-9]+)\\..*" "\\1" DP_TRACE_VERSION_MAJOR "${VCS_TAG}")
+string(REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" DP_TRACE_VERSION_MINOR "${VCS_TAG}")
+string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" DP_TRACE_VERSION_PATCH "${VCS_TAG}")
+
+if(NOT DP_TRACE_VERSION_MAJOR)
+ set(DP_TRACE_VERSION_MAJOR 0)
+endif()
+
+if(NOT DP_TRACE_VERSION_MINOR)
+ set(DP_TRACE_VERSION_MINOR 1)
+endif()
+
+if(NOT DP_TRACE_VERSION_PATCH)
+ set(DP_TRACE_VERSION_PATCH 0)
+endif()
+
+set(DP_TRACE_VERSION "${DP_TRACE_VERSION_MAJOR}.${DP_TRACE_VERSION_MINOR}.${DP_TRACE_VERSION_PATCH}")
+
+# system information
+execute_process(COMMAND uname -r OUTPUT_VARIABLE DP_TRACE_VERSION_KERNEL)
+
+# generate c header file
+configure_file(${__VERSION_CONFIG_C_IN} ${__VERSION_CONFIG_C_OUT} @ONLY)
+add_definitions(-include ${__VERSION_CONFIG_C_OUT})
+
+# print information
+message(STATUS "DP trace Version: ${DP_TRACE_VERSION}")
+message(STATUS "Kernel Version: ${DP_TRACE_VERSION_KERNEL}") \ No newline at end of file