[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