From 10ebac202604f33de2fd35139e4a06ac57164889 Mon Sep 17 00:00:00 2001 From: James Goppert Date: Sat, 8 Apr 2017 23:47:38 -0400 Subject: [PATCH] Fix build when px4 is a submodule (#7006) * Fix build when px4 is a submodule * Check if submodule directory exists. * Fix submodule directory reading --- cmake/common/px4_base.cmake | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/cmake/common/px4_base.cmake b/cmake/common/px4_base.cmake index 647a552203..2088e299c1 100644 --- a/cmake/common/px4_base.cmake +++ b/cmake/common/px4_base.cmake @@ -986,10 +986,34 @@ function(px4_create_git_hash_header) set(px4_git_ver_header ${PX4_BINARY_DIR}/build_git_version.h) + # check if px4 source is a git repo + if(EXISTS ${PX4_SOURCE_DIR}/.git) + if (IS_DIRECTORY ${PX4_SOURCE_DIR}/.git) + # standard git repo + set(git_dir_path ${PX4_SOURCE_DIR}/.git) + else() + # git submodule + file(READ ${PX4_SOURCE_DIR}/.git git_dir_path) + string(STRIP ${git_dir_path} git_dir_path) + string(REPLACE "gitdir: " "" git_dir_path ${git_dir_path}) + get_filename_component(git_dir_path ${git_dir_path} ABSOLUTE) + endif() + else() + message(FATAL_ERROR "is not a git repository") + endif() + if(NOT IS_DIRECTORY "${git_dir_path}") + message(FATAL_ERROR "${git_dir_path} is not a directory") + endif() + + set(deps + ${PX4_SOURCE_DIR}/Tools/px_update_git_header.py + ${git_dir_path}/index + ${git_dir_path}/HEAD) + add_custom_command( OUTPUT ${px4_git_ver_header} COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/px_update_git_header.py ${px4_git_ver_header} > ${PX4_BINARY_DIR}/git_header.log - DEPENDS ${PX4_SOURCE_DIR}/Tools/px_update_git_header.py ${PX4_SOURCE_DIR}/.git/index ${PX4_SOURCE_DIR}/.git/HEAD + DEPENDS ${deps} WORKING_DIRECTORY ${PX4_SOURCE_DIR} COMMENT "Generating git hash header" )