Commit c3801b3a authored by Ghislain MARY's avatar Ghislain MARY

Add CMake macro in BcToolboxCMakeUtils to share the generation of gitversion.h...

Add CMake macro in BcToolboxCMakeUtils to share the generation of gitversion.h for all the projects.
parent a7e432bd
......@@ -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}
)
############################################################################
# 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()
......@@ -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()
/*
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@_GIT_VERSION "@PROJECT_GIT_VERSION@"
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment