cmake handle git submodule depdencies

This commit is contained in:
Daniel Agar 2017-11-21 20:22:48 -05:00
parent cea2c36000
commit d1a4c2dcd0
11 changed files with 79 additions and 66 deletions

View File

@ -99,12 +99,9 @@
#
#=============================================================================
# check submodules before we do anything
execute_process(COMMAND Tools/check_submodules.sh WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
# Warning: Changing this modifies CMake's internal workings
# and leads to wrong toolchain detection
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
cmake_minimum_required(VERSION 3.2 FATAL_ERROR)
set(PX4_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
set(PX4_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
@ -187,23 +184,24 @@ execute_process(
)
px4_add_git_submodule(TARGET git_cmake_hexagon PATH "cmake/cmake_hexagon")
px4_add_git_submodule(TARGET git_driverframework PATH "src/lib/DriverFramework")
px4_add_git_submodule(TARGET git_uavcan_board_ident PATH "cmake/configs/uavcan_board_ident")
px4_add_git_submodule(TARGET git_ecl PATH "src/lib/ecl")
px4_add_git_submodule(TARGET git_gazebo PATH "Tools/sitl_gazebo")
px4_add_git_submodule(TARGET git_gazebo_flow PATH "Tools/sitl_gazebo/external/OpticalFlow")
px4_add_git_submodule(TARGET git_gazebo_klt PATH "Tools/sitl_gazebo/external/OpticalFlow/external/klt_feature_tracker")
px4_add_git_submodule(TARGET git_gps_devices PATH "src/drivers/gps/devices")
px4_add_git_submodule(TARGET git_jmavsim PATH "Tools/jMAVSim")
px4_add_git_submodule(TARGET git_matrix PATH "src/lib/matrix")
px4_add_git_submodule(TARGET git_mavlink PATH "mavlink/include/mavlink/v1.0")
px4_add_git_submodule(TARGET git_mavlink2 PATH "mavlink/include/mavlink/v2.0")
px4_add_git_submodule(TARGET git_nuttx PATH "platforms/nuttx/NuttX/nuttx")
px4_add_git_submodule(TARGET git_uavcan PATH "src/modules/uavcan/libuavcan")
#=============================================================================
message(STATUS "PX4 VERSION: ${git_tag}")
message(STATUS "CONFIG: ${target_name}")
message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
#=============================================================================
# project definition
#
project(px4 CXX C ASM)
set(package-contact "px4users@googlegroups.com")
#=============================================================================
# The URL for the elf file for crash logging
if (DEFINED ENV{BUILD_URI})
@ -214,14 +212,19 @@ endif()
add_definitions(-DBUILD_URI=${BUILD_URI})
# Define GNU standard installation directories
include(GNUInstallDirs)
# Setup install paths
if (${OS} STREQUAL "posix")
# Define GNU standard installation directories
include(GNUInstallDirs)
if (NOT CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "Install path prefix" FORCE)
endif()
# cmake testing only on posix
enable_testing()
include(CTest)
endif()
#=============================================================================
@ -256,13 +259,6 @@ if (CCACHE AND CCACHE_PROGRAM)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
endif()
#=============================================================================
# project definition
#
project(px4 CXX C ASM)
set(package-contact "px4users@googlegroups.com")
#=============================================================================
# find programs and packages
#
@ -281,12 +277,6 @@ endif()
find_package(PythonInterp REQUIRED)
px4_find_python_module(jinja2 REQUIRED)
#=============================================================================
# cmake testing
#
enable_testing()
include(CTest)
#=============================================================================
# generate compile command database
#
@ -368,6 +358,8 @@ px4_generate_airframes_xml(BOARD ${BOARD})
# DriverFramework
#
px4_add_git_submodule(TARGET git_driverframework PATH "src/lib/DriverFramework")
# List the DriverFramework drivers
if (DEFINED config_df_driver_list)
message("DF Drivers: ${config_df_driver_list}")

View File

@ -34,8 +34,8 @@ then
echo "Continuing build with manually overridden submodule.."
elif [ "$user_cmd" == "u" ]
then
git submodule sync --recursive
git submodule update --init --recursive
git submodule sync --recursive -- $1
git submodule update --init --recursive -- $1
echo "Submodule fixed, continuing build.."
else
echo "Build aborted."
@ -43,10 +43,9 @@ then
fi
fi
else
echo "REINITIALIZING GIT SUBMODULES"
echo "no git repo found in $1/.git"
echo "REINITIALIZING GIT SUBMODULE $1"
git submodule sync --recursive -- $1;
git submodule update --init --recursive $1;
git submodule update --init --recursive -- $1;
fi
}
@ -54,15 +53,14 @@ fi
# If called with a path then respect $GIT_SUBMODULES_ARE_EVIL but do normal processing
if [ "$#" != "0" ];
then
# called with a path then process only that path but respect $GIT_SUBMODULES_ARE_EVIL
# called with a path then process only that path but respect $GIT_SUBMODULES_ARE_EVIL
[ -n "$GIT_SUBMODULES_ARE_EVIL" ] && {
# GIT_SUBMODULES_ARE_EVIL is set, meaning user doesn't want submodules updated
echo "GIT_SUBMODULES_ARE_EVIL is defined - Skipping submodules $1 update."
exit 0
}
git submodule update --recursive $1
git submodule update --init --recursive -- $1
else
@ -79,4 +77,5 @@ else
done
fi
exit 0
exit 0

View File

@ -68,6 +68,10 @@ function(px4_add_git_submodule)
REQUIRED TARGET PATH
ARGN ${ARGN})
execute_process(COMMAND ${PX4_SOURCE_DIR}/Tools/check_submodules.sh ${PATH}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
string(REPLACE "/" "_" NAME ${PATH})
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/git_init_${NAME}.stamp

View File

@ -1,5 +1,8 @@
cmake_minimum_required(VERSION 3.2)
px4_add_git_submodule(TARGET git_nuttx PATH "nuttx")
px4_add_git_submodule(TARGET git_nuttx_apps PATH "apps")
if(NOT BOARD)
message(FATAL_ERROR "BOARD must be set (eg px4fmu-v2)")
endif()
@ -40,7 +43,7 @@ file(RELATIVE_PATH CP_SRC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR
add_custom_command(OUTPUT nuttx_copy.stamp
COMMAND ${cp_cmd} ${cp_opts} ${CP_SRC} .
COMMAND cmake -E touch nuttx_copy.stamp
DEPENDS ${copy_nuttx_files}
DEPENDS ${copy_nuttx_files} git_nuttx
COMMENT "Copying NuttX/nuttx to ${CMAKE_CURRENT_BINARY_DIR}"
)
@ -52,7 +55,7 @@ file(RELATIVE_PATH CP_SRC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR
add_custom_command(OUTPUT apps_copy.stamp
COMMAND ${cp_cmd} ${cp_opts} ${CMAKE_CURRENT_SOURCE_DIR}/apps .
COMMAND cmake -E touch apps_copy.stamp
DEPENDS ${copy_apps_files}
DEPENDS ${copy_apps_files} git_nuttx_apps
COMMENT "Copying NuttX/apps to ${CMAKE_CURRENT_BINARY_DIR}"
)
set(APPS_DIR ${PX4_BINARY_DIR}/NuttX/apps)

View File

@ -30,11 +30,13 @@
# POSSIBILITY OF SUCH DAMAGE.
#
############################################################################
px4_add_git_submodule(TARGET git_gps_devices PATH "devices")
px4_add_module(
MODULE drivers__gps
MAIN gps
STACK_MAIN 1200
COMPILE_FLAGS
SRCS
gps.cpp
devices/src/gps_helper.cpp
@ -43,5 +45,5 @@ px4_add_module(
devices/src/ubx.cpp
DEPENDS
platforms__common
git_gps_devices
)
# vim: set noet ft=cmake fenc=utf-8 ff=unix :

View File

@ -107,7 +107,9 @@ elseif ("${BOARD}" STREQUAL "bebop")
elseif ("${BOARD}" STREQUAL "sitl")
include(./sitl_target.cmake)
include(./sitl_tests.cmake)
if(BUILD_TESTING)
include(./sitl_tests.cmake)
endif()
else()

View File

@ -1,6 +1,6 @@
function(px4_add_sitl_app)
px4_parse_function_args(NAME px4_add_sitl_app
px4_parse_function_args(NAME px4_add_sitl_app
ONE_VALUE APP_NAME MAIN_SRC UPLOAD_NAME
REQUIRED APP_NAME MAIN_SRC
ARGN ${ARGN}
@ -56,11 +56,14 @@ add_custom_target(run_config
${config_sitl_model}
${PX4_SOURCE_DIR}
${PX4_BINARY_DIR}
WORKING_DIRECTORY ${SITL_WORKING_DIR}
USES_TERMINAL
WORKING_DIRECTORY ${SITL_WORKING_DIR}
USES_TERMINAL
DEPENDS px4 logs_symlink
)
px4_add_git_submodule(TARGET git_gazebo PATH "${PX4_SOURCE_DIR}/Tools/sitl_gazebo")
px4_add_git_submodule(TARGET git_jmavsim PATH "${PX4_SOURCE_DIR}/Tools/jMAVSim")
# Add support for external project building
include(ExternalProject)
@ -70,13 +73,16 @@ ExternalProject_Add(sitl_gazebo
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
BINARY_DIR ${PX4_BINARY_DIR}/build_gazebo
INSTALL_COMMAND ""
DEPENDS
git_gazebo
)
set_target_properties(sitl_gazebo PROPERTIES EXCLUDE_FROM_ALL TRUE)
ExternalProject_Add_Step(sitl_gazebo forceconfigure
DEPENDEES update
DEPENDERS configure
ALWAYS 1)
ALWAYS 1
)
# create targets for each viewer/model/debugger combination
set(viewers none jmavsim gazebo replay)
@ -123,9 +129,10 @@ foreach(viewer ${viewers})
${model}
${PX4_SOURCE_DIR}
${PX4_BINARY_DIR}
WORKING_DIRECTORY ${SITL_WORKING_DIR}
USES_TERMINAL
DEPENDS logs_symlink
WORKING_DIRECTORY ${SITL_WORKING_DIR}
USES_TERMINAL
DEPENDS
logs_symlink
)
list(APPEND all_posix_vmd_make_targets ${_targ_name})
if (viewer STREQUAL "gazebo")
@ -133,6 +140,8 @@ foreach(viewer ${viewers})
if (viewer STREQUAL "gazebo")
add_dependencies(${_targ_name} px4_${model})
endif()
elseif(viewer STREQUAL "jmavsim")
add_dependencies(${_targ_name} git_jmavsim)
endif()
endforeach()
endforeach()

View File

@ -43,4 +43,3 @@ px4_add_module(
platforms__common
git_ecl
)
# vim: set noet ft=cmake fenc=utf-8 ff=unix :

View File

@ -31,7 +31,8 @@
#
############################################################################
include_directories(${PX4_SOURCE_DIR}/mavlink/include/mavlink)
px4_add_git_submodule(TARGET git_mavlink PATH "${PX4_SOURCE_DIR}/mavlink/include/mavlink/v1.0")
px4_add_git_submodule(TARGET git_mavlink2 PATH "${PX4_SOURCE_DIR}/mavlink/include/mavlink/v2.0")
px4_add_module(
MODULE modules__mavlink
@ -41,6 +42,8 @@ px4_add_module(
COMPILE_FLAGS
-Wno-extra-semi
-Wno-sign-compare # TODO: fix all sign-compare
INCLUDES
${PX4_SOURCE_DIR}/mavlink/include/mavlink
SRCS
mavlink.c
mavlink_command_sender.cpp
@ -58,5 +61,6 @@ px4_add_module(
mavlink_ulog.cpp
DEPENDS
platforms__common
git_mavlink
git_mavlink2
)
# vim: set noet ft=cmake fenc=utf-8 ff=unix :

View File

@ -63,8 +63,4 @@ px4_add_module(
${SIMULATOR_SRCS}
DEPENDS
platforms__common
git_jmavsim
git_gazebo
)
# vim: set noet ft=cmake fenc=utf-8 ff=unix :

View File

@ -31,6 +31,8 @@
#
############################################################################
px4_add_git_submodule(TARGET git_uavcan PATH "libuavcan")
set(UAVCAN_USE_CPP03 ON CACHE BOOL "uavcan cpp03")
set(UAVCAN_PLATFORM stm32 CACHE STRING "uavcan platform")
@ -50,20 +52,19 @@ add_definitions(
)
add_subdirectory(libuavcan EXCLUDE_FROM_ALL)
add_dependencies(uavcan platforms__nuttx)
include_directories(${PX4_SOURCE_DIR}/mavlink/include/mavlink)
include_directories(libuavcan/libuavcan/include)
include_directories(libuavcan/libuavcan/include/dsdlc_generated)
include_directories(libuavcan/libuavcan_drivers/posix/include)
include_directories(libuavcan/libuavcan_drivers/stm32/driver/include)
add_dependencies(uavcan prebuild_targets)
px4_add_module(
MODULE modules__uavcan
MAIN uavcan
STACK_MAIN 3200
STACK_MAX 1500
COMPILE_FLAGS
INCLUDES
${PX4_SOURCE_DIR}/mavlink/include/mavlink
libuavcan/libuavcan/include
libuavcan/libuavcan/include/dsdlc_generated
libuavcan/libuavcan_drivers/posix/include
libuavcan/libuavcan_drivers/stm32/driver/include
SRCS
# Main
uavcan_main.cpp
@ -81,8 +82,10 @@ px4_add_module(
sensors/baro.cpp
DEPENDS
git_uavcan
platforms__common
uavcan
uavcan_stm32_driver
)
target_link_libraries(modules__uavcan uavcan uavcan_stm32_driver)