[Pkg-voip-commits] [bctoolbox] 38/60: Add CMake macro in BcToolboxCMakeUtils to share the generation of gitversion.h for all the projects.

Bernhard Schmidt berni at moszumanska.debian.org
Sun Oct 15 22:42:26 UTC 2017


This is an automated email from the git hooks/post-receive script.

berni pushed a commit to branch debian/sid
in repository bctoolbox.

commit c3801b3a74d8c28d834b49d3789a8bf68975b931
Author: Ghislain MARY <ghislain.mary at belledonne-communications.com>
Date:   Tue May 16 11:22:57 2017 +0200

    Add CMake macro in BcToolboxCMakeUtils to share the generation of gitversion.h for all the projects.
---
 CMakeLists.txt                  |  2 ++
 cmake/BcGitVersion.cmake        | 54 +++++++++++++++++++++++++++++++++++++++++
 cmake/BcToolboxCMakeUtils.cmake | 20 ++++++---------
 cmake/gitversion.h.in           | 21 ++++++++++++++++
 4 files changed, 84 insertions(+), 13 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a8a5ad8..344461e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -215,5 +215,7 @@ install(FILES
 	"${CMAKE_CURRENT_BINARY_DIR}/BcToolboxConfig.cmake"
 	"${CMAKE_CURRENT_BINARY_DIR}/BcToolboxConfigVersion.cmake"
 	"${CMAKE_CURRENT_BINARY_DIR}/BcToolboxCMakeUtils.cmake"
+	"${CMAKE_CURRENT_SOURCE_DIR}/cmake/BcGitVersion.cmake"
+	"${CMAKE_CURRENT_SOURCE_DIR}/cmake/gitversion.h.in"
 	DESTINATION ${CONFIG_PACKAGE_LOCATION}
 )
diff --git a/cmake/BcGitVersion.cmake b/cmake/BcGitVersion.cmake
new file mode 100644
index 0000000..f9e23c0
--- /dev/null
+++ b/cmake/BcGitVersion.cmake
@@ -0,0 +1,54 @@
+############################################################################
+# BcGitVersion.cmake
+# Copyright (C) 2017  Belledonne Communications, Grenoble France
+#
+############################################################################
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+#
+############################################################################
+
+if(GIT_EXECUTABLE)
+	macro(GIT_COMMAND OUTPUT_VAR)
+		set(GIT_ARGS ${ARGN})
+		execute_process(
+			COMMAND ${GIT_EXECUTABLE} ${ARGN}
+			WORKING_DIRECTORY ${WORK_DIR}
+			OUTPUT_VARIABLE ${OUTPUT_VAR}
+			OUTPUT_STRIP_TRAILING_WHITESPACE
+		)
+	endmacro()
+
+	GIT_COMMAND(GIT_DESCRIBE describe --always)
+	GIT_COMMAND(GIT_TAG describe --abbrev=0)
+	GIT_COMMAND(GIT_REVISION rev-parse HEAD)
+endif()
+
+string(TOUPPER "${PROJECT_NAME}" PREFIX_GIT_VERSION)
+string(REPLACE "-" "_" PREFIX_GIT_VERSION "${PREFIX_GIT_VERSION}")
+if(GIT_DESCRIBE)
+	if(NOT GIT_TAG STREQUAL PROJECT_VERSION)
+		message(FATAL_ERROR "Project version (${PROJECT_VERSION}) and git tag (${GIT_TAG}) differ. Please put them identical")
+	endif()
+	set(PROJECT_GIT_VERSION "${GIT_DESCRIBE}")
+	configure_file("${TEMPLATE_DIR}/gitversion.h.in" "${OUTPUT_DIR}/gitversion.h" @ONLY)
+elseif(GIT_REVISION)
+	set(PROJECT_GIT_VERSION "${LINPHONE_VERSION}_${GIT_REVISION}")
+	configure_file("${TEMPLATE_DIR}/gitversion.h.in" "${OUTPUT_DIR}/gitversion.h" @ONLY)
+else()
+	if(NOT EXISTS "${OUTPUT_DIR}/gitversion.h")
+		execute_process(COMMAND ${CMAKE_COMMAND} -E touch "${OUTPUT_DIR}/gitversion.h")
+	endif()
+endif()
diff --git a/cmake/BcToolboxCMakeUtils.cmake b/cmake/BcToolboxCMakeUtils.cmake
index 1223280..2114f9f 100644
--- a/cmake/BcToolboxCMakeUtils.cmake
+++ b/cmake/BcToolboxCMakeUtils.cmake
@@ -20,6 +20,7 @@
 #
 ############################################################################
 
+set(BCTOOLBOX_CMAKE_UTILS_DIR "${CMAKE_CURRENT_LIST_DIR}")
 
 macro(bc_apply_compile_flags SOURCE_FILES)
 	if(${SOURCE_FILES})
@@ -36,17 +37,10 @@ macro(bc_apply_compile_flags SOURCE_FILES)
 	endif()
 endmacro()
 
-macro(bc_set_libraries_from_static_target LIBRARIES TARGET_NAME)
-	if(TARGET ${TARGET_NAME})
-		if(LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS)
-			set(${LIBRARIES} ${TARGET_NAME})
-		else()
-			get_target_property(${LIBRARIES} ${TARGET_NAME} LOCATION)
-		endif()
-		get_target_property(_link_libraries ${TARGET_NAME} INTERFACE_LINK_LIBRARIES)
-		if(_link_libraries)
-			list(APPEND ${LIBRARIES} ${_link_libraries})
-		endif()
-	endif()
+macro(bc_git_version PROJECT_NAME PROJECT_VERSION)
+	find_package(Git)
+	add_custom_target(${PROJECT_NAME}-git-version
+		COMMAND ${CMAKE_COMMAND} -DGIT_EXECUTABLE=${GIT_EXECUTABLE} -DPROJECT_NAME=${PROJECT_NAME} -DPROJECT_VERSION=${PROJECT_VERSION} -DWORK_DIR=${CMAKE_CURRENT_SOURCE_DIR} -DTEMPLATE_DIR=${BCTOOLBOX_CMAKE_UTILS_DIR} -DOUTPUT_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${BCTOOLBOX_CMAKE_UTILS_DIR}/BcGitVersion.cmake
+		BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/gitversion.h"
+	)
 endmacro()
-
diff --git a/cmake/gitversion.h.in b/cmake/gitversion.h.in
new file mode 100644
index 0000000..d907664
--- /dev/null
+++ b/cmake/gitversion.h.in
@@ -0,0 +1,21 @@
+/*
+linphone
+Copyright (C) 2010-2017  Belledonne Communications SARL
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+*/
+
+
+#define @PREFIX_GIT_VERSION at _GIT_VERSION "@PROJECT_GIT_VERSION@"
\ No newline at end of file

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-voip/bctoolbox.git



More information about the Pkg-voip-commits mailing list