From 3228a31db5c7d0a180a9e51c9046923e678105f3 Mon Sep 17 00:00:00 2001
From: Pierre Aubert <aubertp7@gmail.com>
Date: Tue, 16 Feb 2021 09:58:01 +0100
Subject: [PATCH] Add version generator

---
 cmake/create_version.cmake       | 45 ++++++++++++++++++++++++++++++++
 cmake/phoenix_base_project.cmake |  2 ++
 2 files changed, 47 insertions(+)
 create mode 100644 cmake/create_version.cmake

diff --git a/cmake/create_version.cmake b/cmake/create_version.cmake
new file mode 100644
index 0000000..8984a27
--- /dev/null
+++ b/cmake/create_version.cmake
@@ -0,0 +1,45 @@
+
+# Create the version header of the given program
+#	projectName : name of the project
+#	projectVersion : version of the project
+function(create_version projectName projectVersion)
+	message(STATUS "Program ${projectName} version ${projectVersion}")
+	string(REPLACE "." ";" VERSION_STR_LIST ${projectVersion})
+	
+	set(VERSION_LIST ${VERSION_STR_LIST})
+	list(LENGTH VERSION_LIST listLength)
+	
+	list(GET VERSION_LIST 0 MAJOR_PROG_VERSION)
+	list(GET VERSION_LIST 1 MINOR_PROG_VERSION)
+	list(GET VERSION_LIST 2 PATCH_PROG_VERSION)
+	
+	string(TOUPPER ${projectName} PROGRAM_UPPER_NAME)
+	string(TOLOWER ${projectName} PROGRAM_LOWER_NAME)
+	set(OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${PROGRAM_LOWER_NAME}_version.h)
+	
+	set(DEFINE_MACRO_HEADER "__${PROGRAM_UPPER_NAME}_VERSION_H__")
+	file(WRITE ${OUTPUT_FILE} "\n")
+	file(APPEND ${OUTPUT_FILE} "/***************************************\n")
+	file(APPEND ${OUTPUT_FILE} "	Auteur : Pierre Aubert\n")
+	file(APPEND ${OUTPUT_FILE} "	Mail : aubertp7@gmail.com\n")
+	file(APPEND ${OUTPUT_FILE} "	Licence : CeCILL-C\n")
+	file(APPEND ${OUTPUT_FILE} "****************************************/\n")
+	file(APPEND ${OUTPUT_FILE} "\n")
+	file(APPEND ${OUTPUT_FILE} "#ifndef ${DEFINE_MACRO_HEADER}\n")
+	file(APPEND ${OUTPUT_FILE} "#define ${DEFINE_MACRO_HEADER}\n\n")
+	
+	file(APPEND ${OUTPUT_FILE} "#define ${PROGRAM_UPPER_NAME}_VERSION_MAJOR ${MAJOR_PROG_VERSION}\n")
+	file(APPEND ${OUTPUT_FILE} "#define ${PROGRAM_UPPER_NAME}_VERSION_MINOR ${MINOR_PROG_VERSION}\n")
+	file(APPEND ${OUTPUT_FILE} "#define ${PROGRAM_UPPER_NAME}_VERSION_PATCH ${PATCH_PROG_VERSION}\n\n")
+
+	file(APPEND ${OUTPUT_FILE} "#define ${PROGRAM_UPPER_NAME}_MAKE_VERSION(major, minor, patch) ((major) *10000 + (minor) *100 + (patch))\n\n")
+	file(APPEND ${OUTPUT_FILE} "#define ${PROGRAM_UPPER_NAME}_VERSION ${PROGRAM_UPPER_NAME}_MAKE_VERSION (${PROGRAM_UPPER_NAME}_VERSION_MAJOR, ${PROGRAM_UPPER_NAME}_VERSION_MINOR, ${PROGRAM_UPPER_NAME}_VERSION_PATCH)\n\n")
+	
+	file(APPEND ${OUTPUT_FILE} "#endif\n\n")
+	
+	install(FILES ${OUTPUT_FILE} DESTINATION include/${projectName})
+endfunction(create_version)
+
+
+
+
diff --git a/cmake/phoenix_base_project.cmake b/cmake/phoenix_base_project.cmake
index 23917ee..f67bcc6 100644
--- a/cmake/phoenix_base_project.cmake
+++ b/cmake/phoenix_base_project.cmake
@@ -1,4 +1,5 @@
 
+include(create_version.cmake)
 
 # Define the base of a Phoenix project
 # 	programName : name of the program/library
@@ -6,6 +7,7 @@
 # 	programDescritpion : description of the program/library
 # 	programHomePage : home page of the program/library
 function(phoenix_base_project programName programVersion programDescritpion programHomePage)
+	create_version("${programName}" "${programVersion}")
 	if(NOT MODULE_MODE)
 		set(PROGRAM_NAME "${programName}" CACHE STRING "name of the current project" FORCE)
 		set(PROGRAM_VERSION "${programVersion}" CACHE STRING "version of the current project" FORCE)
-- 
GitLab