diff --git a/CMakeLists.txt b/CMakeLists.txt index fcf70d9aa9..362c68984e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,7 +75,9 @@ idf_get_git_revision() idf_check_config_target() ## get PROJECT_VER -app_get_revision("${CMAKE_SOURCE_DIR}") +if(NOT BOOTLOADER_BUILD) + app_get_revision("${CMAKE_SOURCE_DIR}") +endif() # Add some idf-wide definitions idf_set_global_compile_options() diff --git a/components/app_update/component.mk b/components/app_update/component.mk index 28125e242b..4d4097f267 100644 --- a/components/app_update/component.mk +++ b/components/app_update/component.mk @@ -11,11 +11,13 @@ ifndef IS_BOOTLOADER_BUILD GET_PROJECT_VER ?= ifeq ("${PROJECT_VER}", "") ifeq ("$(wildcard ${PROJECT_PATH}/version.txt)","") -GET_PROJECT_VER := $(shell cd ${PROJECT_PATH} && git describe --always --tags --dirty || echo "Not found git repo") -ifeq ("${GET_PROJECT_VER}", "Not found git repo") -$(info Project do not have git repo, it needs to get PROJECT_VER from `git describe` command.) -GET_PROJECT_VER := "" + +GET_PROJECT_VER := $(shell cd ${PROJECT_PATH} && git describe --always --tags --dirty 2> /dev/null) +ifeq ("${GET_PROJECT_VER}", "") +GET_PROJECT_VER := "1" +$(info Project is not inside a git repository, will not use 'git describe' to determine PROJECT_VER.) endif + else # read from version.txt GET_PROJECT_VER := $(shell cat ${PROJECT_PATH}/version.txt) @@ -24,7 +26,7 @@ endif # If ``PROJECT_VER`` variable set in project Makefile file, its value will be used. # Else, if the ``$PROJECT_PATH/version.txt`` exists, its contents will be used as ``PROJECT_VER``. # Else, if the project is located inside a Git repository, the output of git describe will be used. -# Otherwise, ``PROJECT_VER`` will be empty. +# Otherwise, ``PROJECT_VER`` will be "1". ifeq ("${PROJECT_VER}", "") PROJECT_VER:= $(GET_PROJECT_VER) diff --git a/docs/en/api-guides/build-system-cmake.rst b/docs/en/api-guides/build-system-cmake.rst index e142b2a71e..24f8b651fe 100644 --- a/docs/en/api-guides/build-system-cmake.rst +++ b/docs/en/api-guides/build-system-cmake.rst @@ -330,7 +330,7 @@ The following variables are set at the project level, but available for use in c * If ``PROJECT_VER`` variable set in project CMakeLists.txt file, its value will be used. * Else, if the ``$PROJECT_PATH/version.txt`` exists, its contents will be used as ``PROJECT_VER``. * Else, if the project is located inside a Git repository, the output of git describe will be used. -* Otherwise, ``PROJECT_VER`` will be empty. +* Otherwise, ``PROJECT_VER`` will be "1". If you modify any of these variables inside ``CMakeLists.txt`` then this will not prevent other components from building but it may make your component hard to build and/or debug. diff --git a/docs/en/api-guides/build-system.rst b/docs/en/api-guides/build-system.rst index f52143cc8c..a489d5e456 100644 --- a/docs/en/api-guides/build-system.rst +++ b/docs/en/api-guides/build-system.rst @@ -192,7 +192,7 @@ The following variables are set at the project level, but exported for use in th * If ``PROJECT_VER`` variable set in project Makefile file, its value will be used. * Else, if the ``$PROJECT_PATH/version.txt`` exists, its contents will be used as ``PROJECT_VER``. * Else, if the project is located inside a Git repository, the output of git describe will be used. -* Otherwise, ``PROJECT_VER`` will be empty. +* Otherwise, ``PROJECT_VER`` will be "1". If you modify any of these variables inside ``component.mk`` then this will not prevent other components from building but it may make your component hard to build and/or debug. diff --git a/tools/cmake/idf_functions.cmake b/tools/cmake/idf_functions.cmake index a06aa81298..230ac96a48 100644 --- a/tools/cmake/idf_functions.cmake +++ b/tools/cmake/idf_functions.cmake @@ -227,19 +227,24 @@ endfunction() # If PROJECT_VER variable set in project CMakeLists.txt file, its value will be used. # Else, if the _project_path/version.txt exists, its contents will be used as PROJECT_VER. # Else, if the project is located inside a Git repository, the output of git describe will be used. -# Otherwise, PROJECT_VER will be empty. +# Otherwise, PROJECT_VER will be "1". function(app_get_revision _project_path) - git_describe(PROJECT_VER_GIT "${_project_path}") if(NOT DEFINED PROJECT_VER) if(EXISTS "${_project_path}/version.txt") file(STRINGS "${_project_path}/version.txt" PROJECT_VER) set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${_project_path}/version.txt") else() - set(PROJECT_VER ${PROJECT_VER_GIT}) + git_describe(PROJECT_VER_GIT "${_project_path}") + if(PROJECT_VER_GIT) + set(PROJECT_VER ${PROJECT_VER_GIT}) + else() + message(STATUS "Project is not inside a git repository, \ + will not use 'git describe' to determine PROJECT_VER.") + set(PROJECT_VER "1") + endif() endif() endif() message(STATUS "Project version: ${PROJECT_VER}") - git_submodule_check("${_project_path}") set(PROJECT_VER ${PROJECT_VER} PARENT_SCOPE) endfunction()