diff --git a/CMakeLists.txt b/CMakeLists.txt index 9397b87c99e02e51fce04e9496838b6ebfdb5da4..498b6ba7d881610b937ba4febfa485a05dfd9df7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -121,6 +121,14 @@ # and leads to wrong toolchain detection cmake_minimum_required(VERSION 2.8 FATAL_ERROR) +set(PX4_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") +set(PX4_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}") + +execute_process( + COMMAND Tools/check_submodules.sh + WORKING_DIRECTORY ${PX4_SOURCE_DIR} + ) + # Use clang #SET (CMAKE_C_COMPILER /usr/bin/clang-3.6) #SET (CMAKE_CXX_COMPILER /usr/bin/clang++-3.6) @@ -155,6 +163,9 @@ message(STATUS "${target_name}") # Define GNU standard installation directories include(GNUInstallDirs) +# Add support for external project building +include(ExternalProject) + # Setup install paths if(NOT CMAKE_INSTALL_PREFIX) if (${OS} STREQUAL "posix") @@ -163,12 +174,8 @@ if(NOT CMAKE_INSTALL_PREFIX) endif() message(STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}") -# switch to ros CMake file if building ros -if (${OS} STREQUAL "ros") - include("cmake/ros-CMakeLists.txt") -else() # otherwise use the rest of this file - -list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) +list(APPEND CMAKE_MODULE_PATH "${PX4_SOURCE_DIR}/cmake") +message(STATUS "cmake module path: ${CMAKE_MODULE_PATH}") set(config_module "configs/${CONFIG}") include(${config_module}) @@ -199,6 +206,9 @@ if(DEFINED config_df_driver_list) message("DF Drivers: ${config_df_driver_list}") endif() +# force static lib build +set(BUILD_SHARED_LIBS OFF) + #============================================================================= # project definition # @@ -219,8 +229,22 @@ set(version "${version_major}.${version_minor}.${version_patch}") set(package-contact "px4users@googlegroups.com") #============================================================================= -# programs +# find programs and packages # + +# see if catkin was invoked to build this +if (CATKIN_DEVEL_PREFIX) + message(STATUS "catkin ENABLED") + find_package(catkin REQUIRED) + if (catkin_FOUND) + catkin_package() + else() + message(FATAL_ERROR "catkin not found") + endif() +else() + message(STATUS "catkin DISABLED") +endif() + find_package(PythonInterp REQUIRED) #============================================================================= @@ -257,7 +281,7 @@ px4_add_git_submodule(TARGET git_matrix PATH "src/lib/matrix") px4_add_git_submodule(TARGET git_cmake_hexagon PATH "cmake/cmake_hexagon") add_custom_target(submodule_clean - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${PX4_SOURCE_DIR} COMMAND git submodule deinit -f . COMMAND rm -rf .git/modules/* ) @@ -267,12 +291,12 @@ add_custom_target(submodule_clean # add_custom_target(check_format COMMAND Tools/check_code_style.sh - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${PX4_SOURCE_DIR} ) add_custom_target(config COMMAND cmake-gui . - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${PX4_BINARY_DIR} ) #============================================================================= @@ -321,7 +345,7 @@ add_custom_target(xml_gen # external projects # -set(ep_base ${CMAKE_BINARY_DIR}/external) +set(ep_base ${PX4_BINARY_DIR}/external) set_property(DIRECTORY PROPERTY EP_BASE ${ep_base}) # add external project install folders to build @@ -350,7 +374,7 @@ foreach(module ${config_module_list}) if(external_module) STRING(REGEX REPLACE "//" "/" EXT_MODULE ${module}) STRING(REGEX REPLACE "/" "__" EXT_MODULE_PREFIX ${EXT_MODULE}) - add_subdirectory(${module} ${CMAKE_BINARY_DIR}/${EXT_MODULE_PREFIX}) + add_subdirectory(${module} ${PX4_BINARY_DIR}/${EXT_MODULE_PREFIX}) else() add_subdirectory(src/${module}) endif() @@ -375,7 +399,7 @@ endif() #============================================================================= # generate git version # -px4_create_git_hash_header(HEADER ${CMAKE_BINARY_DIR}/build_git_version.h) +px4_create_git_hash_header(HEADER ${PX4_BINARY_DIR}/build_git_version.h) #============================================================================= # packaging @@ -394,17 +418,14 @@ set(CPACK_GENERATOR "ZIP") set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${CONFIG}-${version}") set(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${version}") set(CPACK_SOURCE_GENERATOR "ZIP;TBZ2") +set(CPACK_PACKAGING_INSTALL_PREFIX "/usr") +set(CPACK_SET_DESTDIR "OFF") if ("${CMAKE_SYSTEM}" MATCHES "Linux") - find_program(DPKG_PROGRAM dpkg) - if (EXISTS ${DPKG_PROGRAM}) - list (APPEND CPACK_GENERATOR "DEB") - endif() -endif() -if (${OS} STREQUAL "posix") - set(CPACK_SET_DESTDIR "ON") + find_program(DPKG_PROGRAM dpkg) + if (EXISTS ${DPKG_PROGRAM}) + list (APPEND CPACK_GENERATOR "DEB") + endif() endif() include(CPack) -endif() # ros alternative endif - # vim: set noet fenc=utf-8 ff=unix ft=cmake : diff --git a/Makefile b/Makefile index f80a24399cf19e430f39e9b6e07030d4d9089af0..b4a02f8d8ce2442b9c3467f874be51aa54b9c073 100644 --- a/Makefile +++ b/Makefile @@ -111,20 +111,23 @@ else BUILD_DIR_SUFFIX := endif +SRC_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) + # Functions # -------------------------------------------------------------------- # describe how to build a cmake config define cmake-build -+@if [ $(PX4_CMAKE_GENERATOR) = "Ninja" ] && [ -e ./build_$@$(BUILD_DIR_SUFFIX)/Makefile ]; then rm -rf ./build_$@$(BUILD_DIR_SUFFIX); fi -+@if [ ! -e ./build_$@$(BUILD_DIR_SUFFIX)/CMakeCache.txt ]; then Tools/check_submodules.sh && mkdir -p ./build_$@$(BUILD_DIR_SUFFIX) && cd ./build_$@$(BUILD_DIR_SUFFIX) && cmake .. -G$(PX4_CMAKE_GENERATOR) -DCONFIG=$(1) || (cd .. && rm -rf ./build_$@$(BUILD_DIR_SUFFIX)); fi -+@Tools/check_submodules.sh -+@(echo "PX4 CONFIG: $@$(BUILD_DIR_SUFFIX)" && cd ./build_$@$(BUILD_DIR_SUFFIX) && $(PX4_MAKE) $(PX4_MAKE_ARGS) $(ARGS)) ++@$(eval BUILD_DIR = $(SRC_DIR)/build_$@$(BUILD_DIR_SUFFIX)) ++@if [ $(PX4_CMAKE_GENERATOR) = "Ninja" ] && [ -e $(BUILD_DIR)/Makefile ]; then rm -rf $(BUILD_DIR); fi ++@if [ ! -e $(BUILD_DIR)/CMakeCache.txt ]; then mkdir -p $(BUILD_DIR) && cd $(BUILD_DIR) && cmake .. -G$(PX4_CMAKE_GENERATOR) -DCONFIG=$(1) || (cd .. && rm -rf $(BUILD_DIR)); fi ++@(echo "PX4 CONFIG: $(BUILD_DIR)" && cd $(BUILD_DIR) && $(PX4_MAKE) $(PX4_MAKE_ARGS) $(ARGS)) endef define cmake-build-other -+@if [ $(PX4_CMAKE_GENERATOR) = "Ninja" ] && [ -e ./build_$@/Makefile ]; then rm -rf ./build_$@; fi -+@if [ ! -e ./build_$@/CMakeCache.txt ]; then Tools/check_submodules.sh && mkdir -p ./build_$@ && cd ./build_$@ && cmake $(2) -G$(PX4_CMAKE_GENERATOR) || (cd .. && rm -rf ./build_$@); fi -+@(cd ./build_$@ && $(PX4_MAKE) $(PX4_MAKE_ARGS) $(ARGS)) ++@$(eval BUILD_DIR = $(SRC_DIR)/build_$@$(BUILD_DIR_SUFFIX)) ++@if [ $(PX4_CMAKE_GENERATOR) = "Ninja" ] && [ -e $(BUILD_DIR)/Makefile ]; then rm -rf $(BUILD_DIR); fi ++@if [ ! -e $(BUILD_DIR)/CMakeCache.txt ]; then mkdir -p $(BUILD_DIR) && cd $(BUILD_DIR) && cmake $(2) -G$(PX4_CMAKE_GENERATOR) -DCONFIG=$(1) || (cd .. && rm -rf $(BUILD_DIR)); fi ++@(cd $(BUILD_DIR) && $(PX4_MAKE) $(PX4_MAKE_ARGS) $(ARGS)) endef # create empty targets to avoid msgs for targets passed to cmake @@ -233,14 +236,8 @@ run_sitl_ros: sitl_deprecation # Other targets # -------------------------------------------------------------------- -.PHONY: gazebo_build uavcan_firmware check check_format unittest tests qgc_firmware package_firmware clean submodulesclean distclean -.NOTPARALLEL: gazebo_build uavcan_firmware check check_format unittest tests qgc_firmware package_firmware clean submodulesclean distclean - -gazebo_build: - @mkdir -p build_gazebo - @if [ ! -e ./build_gazebo/CMakeCache.txt ];then cd build_gazebo && cmake -Wno-dev -G$(PX4_CMAKE_GENERATOR) ../Tools/sitl_gazebo; fi - @cd build_gazebo && $(PX4_MAKE) $(PX4_MAKE_ARGS) - @cd build_gazebo && $(PX4_MAKE) $(PX4_MAKE_ARGS) sdf +.PHONY: uavcan_firmware check check_format unittest tests qgc_firmware package_firmware clean submodulesclean distclean +.NOTPARALLEL: uavcan_firmware check check_format unittest tests qgc_firmware package_firmware clean submodulesclean distclean uavcan_firmware: ifeq ($(VECTORCONTROL),1) @@ -302,11 +299,7 @@ unittest: posix_sitl_default @(cd build_unittest && ctest -j2 --output-on-failure) run_tests_posix: posix_sitl_default - @mkdir -p build_posix_sitl_default/src/firmware/posix/rootfs/fs/microsd - @mkdir -p build_posix_sitl_default/src/firmware/posix/rootfs/eeprom - @touch build_posix_sitl_default/src/firmware/posix/rootfs/eeprom/parameters - @(cd build_posix_sitl_default/src/firmware/posix && ./px4 -d ../../../../posix-configs/SITL/init/rcS_tests | tee test_output) - @(cd build_posix_sitl_default/src/firmware/posix && grep --color=always "All tests passed" test_output) + @(cd build_posix_sitl_default/ && ctest -V) tests: check_unittest run_tests_posix diff --git a/Tools/sitl_gazebo b/Tools/sitl_gazebo index 00dcabb1c2c001b40713903da1a4a7f71d01ef27..9486c331a758fcadfaa314f6e9e44c36af5f243b 160000 --- a/Tools/sitl_gazebo +++ b/Tools/sitl_gazebo @@ -1 +1 @@ -Subproject commit 00dcabb1c2c001b40713903da1a4a7f71d01ef27 +Subproject commit 9486c331a758fcadfaa314f6e9e44c36af5f243b diff --git a/Tools/sitl_run.sh b/Tools/sitl_run.sh index 6e467c31fd934b919eab1cd83504b3a3afe2496a..8dfa2a62c63975dd107d2d8eaf159797d64df9ba 100755 --- a/Tools/sitl_run.sh +++ b/Tools/sitl_run.sh @@ -1,22 +1,29 @@ #!/bin/bash -rc_script=$1 -debugger=$2 -program=$3 -model=$4 -build_path=$5 -curr_dir=`pwd` +set -e + +echo args: $@ + +sitl_bin=$1 +rc_script=$2 +debugger=$3 +program=$4 +model=$5 +src_path=$6 +build_path=$7 echo SITL ARGS + +echo sitl_bin: $sitl_bin echo rc_script: $rc_script echo debugger: $debugger echo program: $program echo model: $model +echo src_path: $src_path echo build_path: $build_path -mkdir -p $build_path/src/firmware/posix/rootfs/fs/microsd -mkdir -p $build_path/src/firmware/posix/rootfs/eeprom -touch $build_path/src/firmware/posix/rootfs/eeprom/parameters +working_dir=`pwd` +sitl_bin=$build_path/src/firmware/posix/px4 if [ "$chroot" == "1" ] then @@ -35,32 +42,36 @@ fi if [ "$#" -lt 5 ] then - echo usage: sitl_run.sh rc_script debugger program model build_path + echo usage: sitl_run.sh rc_script debugger program model devel_path echo "" exit 1 fi +command_exists () { + type "$1" &> /dev/null ; +} + # kill process names that might stil # be running from last time -pkill gazebo -pkill px4 -jmavsim_pid=`jps | grep Simulator | cut -d" " -f1` -if [ -n "$jmavsim_pid" ] +pgrep gazebo && pkill gazebo +pgrep px4 && pkill px4 +if command_exists jps then - kill $jmavsim_pid + jmavsim_pid=`jps | grep Simulator | cut -d" " -f1` + if [ -n "$jmavsim_pid" ] + then + kill $jmavsim_pid + fi fi -set -e - -cd $build_path/.. -cp Tools/posix_lldbinit $build_path/src/firmware/posix/.lldbinit -cp Tools/posix.gdbinit $build_path/src/firmware/posix/.gdbinit +cp $src_path/Tools/posix_lldbinit $working_dir/.lldbinit +cp $src_path/Tools/posix.gdbinit $working_dir/.gdbinit SIM_PID=0 if [ "$program" == "jmavsim" ] && [ ! -n "$no_sim" ] then - cd Tools/jMAVSim + cd $src_path/Tools/jMAVSim ant create_run_jar copy_res cd out/production java -Djava.ext.dirs= -jar jmavsim_run.jar -udp 127.0.0.1:14560 & @@ -71,15 +82,9 @@ then if [ -x "$(command -v gazebo)" ] then # Set the plugin path so Gazebo finds our model and sim - export GAZEBO_PLUGIN_PATH=$curr_dir/build_gazebo:${GAZEBO_PLUGIN_PATH} - # Set the model path so Gazebo finds the airframes - export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:$curr_dir/Tools/sitl_gazebo/models - # The next line would disable online model lookup, can be commented in, in case of unstable behaviour. - # export GAZEBO_MODEL_DATABASE_URI="" - export SITL_GAZEBO_PATH=$curr_dir/Tools/sitl_gazebo - make --no-print-directory gazebo_build - - gzserver --verbose $curr_dir/Tools/sitl_gazebo/worlds/${model}.world & + source /usr/share/gazebo/setup.sh + source $src_path/integrationtests/setup_gazebo_ros.bash ${src_path} ${build_path} + gzserver --verbose worlds/${model}.world & SIM_PID=`echo $!` if [[ -n "$HEADLESS" ]]; then @@ -98,17 +103,17 @@ then # This is not a simulator, but a log file to replay # Check if we need to creat a param file to allow user to change parameters - if ! [ -f "${build_path}/src/firmware/posix/rootfs/replay_params.txt" ] + if ! [ -f "$rootfs/replay_params.txt" ] then - touch ${build_path}/src/firmware/posix/rootfs/replay_params.txt + touch $rootfs/replay_params.txt fi fi -cd $build_path/src/firmware/posix +cd $working_dir if [ "$logfile" != "" ] then - cp $logfile rootfs/replay.px4log + cp $logfile $rootfs/replay.px4log fi # Do not exit on failure now from here on because we want the complete cleanup @@ -117,18 +122,18 @@ set +e # Start Java simulator if [ "$debugger" == "lldb" ] then - lldb -- px4 ../../../../${rc_script}_${program}_${model} + lldb -- $sitl_bin $src_path $src_path/${rc_script}_${program}_${model} elif [ "$debugger" == "gdb" ] then - gdb --args px4 ../../../../${rc_script}_${program}_${model} + gdb --args $sitl_bin $src_path $src_path/${rc_script}_${program}_${model} elif [ "$debugger" == "ddd" ] then - ddd --debugger gdb --args px4 ../../../../${rc_script}_${program}_${model} + ddd --debugger gdb --args px4 $src_path $src_path/${rc_script}_${program}_${model} elif [ "$debugger" == "valgrind" ] then - valgrind ./px4 ../../../../${rc_script}_${program}_${model} + valgrind $sitl_bin $src_path $src_path/${rc_script}_${program}_${model} else - $sudo_enabled ./px4 $chroot_enabled ../../../../${rc_script}_${program}_${model} + $sudo_enabled $sitl_bin $chroot_enabled $src_path $src_path/${rc_script}_${program}_${model} fi if [ "$program" == "jmavsim" ] diff --git a/cmake/common/px4_base.cmake b/cmake/common/px4_base.cmake index ef05520375fa78f5ac71747c03ea75ae1742111d..88f1e57f98fa4921fac515f5e4ff0f89db5be8f1 100644 --- a/cmake/common/px4_base.cmake +++ b/cmake/common/px4_base.cmake @@ -136,14 +136,14 @@ function(px4_add_git_submodule) REQUIRED TARGET PATH ARGN ${ARGN}) string(REPLACE "/" "_" NAME ${PATH}) - add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/git_init_${NAME}.stamp - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMAND touch ${CMAKE_BINARY_DIR}/git_init_${NAME}.stamp - DEPENDS ${CMAKE_SOURCE_DIR}/.gitmodules + add_custom_command(OUTPUT ${PX4_BINARY_DIR}/git_init_${NAME}.stamp + WORKING_DIRECTORY ${PX4_SOURCE_DIR} + COMMAND touch ${PX4_BINARY_DIR}/git_init_${NAME}.stamp + DEPENDS ${PX4_SOURCE_DIR}/.gitmodules ) add_custom_target(${TARGET} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - DEPENDS ${CMAKE_BINARY_DIR}/git_init_${NAME}.stamp + WORKING_DIRECTORY ${PX4_SOURCE_DIR} + DEPENDS ${PX4_BINARY_DIR}/git_init_${NAME}.stamp ) endfunction() @@ -371,7 +371,7 @@ function(px4_generate_messages) endif() # headers - set(msg_out_path ${CMAKE_BINARY_DIR}/src/modules/uORB/topics) + set(msg_out_path ${PX4_BINARY_DIR}/src/modules/uORB/topics) set(msg_list) foreach(msg_file ${MSG_FILES}) get_filename_component(msg ${msg_file} NAME_WE) @@ -389,15 +389,15 @@ function(px4_generate_messages) -d msg -o ${msg_out_path} -e msg/templates/uorb - -t ${CMAKE_BINARY_DIR}/topics_temporary_header + -t ${PX4_BINARY_DIR}/topics_temporary_header DEPENDS ${DEPENDS} ${MSG_FILES} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${PX4_SOURCE_DIR} COMMENT "Generating uORB topic headers" VERBATIM ) # !sources - set(msg_source_out_path ${CMAKE_BINARY_DIR}/topics_sources) + set(msg_source_out_path ${PX4_BINARY_DIR}/topics_sources) set(msg_source_files_out ${msg_source_out_path}/uORBTopics.cpp) foreach(msg ${msg_list}) list(APPEND msg_source_files_out ${msg_source_out_path}/${msg}.cpp) @@ -410,9 +410,9 @@ function(px4_generate_messages) -d msg -o ${msg_source_out_path} -e msg/templates/uorb - -t ${CMAKE_BINARY_DIR}/topics_temporary_sources + -t ${PX4_BINARY_DIR}/topics_temporary_sources DEPENDS ${DEPENDS} ${MSG_FILES} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${PX4_SOURCE_DIR} COMMENT "Generating uORB topic sources" VERBATIM ) @@ -427,7 +427,7 @@ function(px4_generate_messages) # multi messages for target OS set(msg_multi_out_path - ${CMAKE_BINARY_DIR}/src/platforms/${OS}/px4_messages) + ${PX4_BINARY_DIR}/src/platforms/${OS}/px4_messages) set(msg_multi_files_out) foreach(msg ${msg_list}) list(APPEND msg_multi_files_out ${msg_multi_out_path}/px4_${msg}.h) @@ -440,10 +440,10 @@ function(px4_generate_messages) -d msg -o ${msg_multi_out_path} -e msg/templates/px4/uorb - -t ${CMAKE_BINARY_DIR}/multi_topics_temporary/${OS} + -t ${PX4_BINARY_DIR}/multi_topics_temporary/${OS} -p "px4_" DEPENDS ${DEPENDS} ${MSG_FILES} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${PX4_SOURCE_DIR} COMMENT "Generating uORB topic multi headers for ${OS}" VERBATIM ) @@ -504,9 +504,9 @@ function(px4_add_upload) px4_join(OUT serial_ports LIST "${serial_ports}" GLUE ",") add_custom_target(${OUT} COMMAND ${PYTHON_EXECUTABLE} - ${CMAKE_SOURCE_DIR}/Tools/px_uploader.py --port ${serial_ports} ${BUNDLE} + ${PX4_SOURCE_DIR}/Tools/px_uploader.py --port ${serial_ports} ${BUNDLE} DEPENDS ${BUNDLE} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${PX4_BINARY_DIR} COMMENT "uploading ${BUNDLE}" VERBATIM USES_TERMINAL @@ -523,9 +523,9 @@ function(px4_add_adb_push) ARGN ${ARGN}) add_custom_target(${OUT} - COMMAND ${CMAKE_SOURCE_DIR}/Tools/adb_upload.sh ${FILES} ${DEST} + COMMAND ${PX4_SOURCE_DIR}/Tools/adb_upload.sh ${FILES} ${DEST} DEPENDS ${DEPENDS} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${PX4_BINARY_DIR} COMMENT "uploading ${BUNDLE}" VERBATIM USES_TERMINAL @@ -541,9 +541,9 @@ function(px4_add_adb_push_to_bebop) ARGN ${ARGN}) add_custom_target(${OUT} - COMMAND ${CMAKE_SOURCE_DIR}/Tools/adb_upload_to_bebop.sh ${FILES} ${DEST} + COMMAND ${PX4_SOURCE_DIR}/Tools/adb_upload_to_bebop.sh ${FILES} ${DEST} DEPENDS ${DEPENDS} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${PX4_BINARY_DIR} COMMENT "uploading ${BUNDLE}" VERBATIM USES_TERMINAL @@ -559,9 +559,9 @@ function(px4_add_scp_push) ARGN ${ARGN}) add_custom_target(${OUT} - COMMAND ${CMAKE_SOURCE_DIR}/Tools/scp_upload.sh ${FILES} ${DEST} + COMMAND ${PX4_SOURCE_DIR}/Tools/scp_upload.sh ${FILES} ${DEST} DEPENDS ${DEPENDS} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${PX4_BINARY_DIR} COMMENT "uploading ${BUNDLE}" VERBATIM USES_TERMINAL @@ -761,21 +761,21 @@ function(px4_add_common_flags) ) set(added_include_dirs - ${CMAKE_SOURCE_DIR}/src - ${CMAKE_BINARY_DIR} - ${CMAKE_BINARY_DIR}/src - ${CMAKE_SOURCE_DIR}/src/modules - ${CMAKE_SOURCE_DIR}/src/include - ${CMAKE_SOURCE_DIR}/src/lib - ${CMAKE_SOURCE_DIR}/src/platforms + ${PX4_SOURCE_DIR}/src + ${PX4_BINARY_DIR} + ${PX4_BINARY_DIR}/src + ${PX4_SOURCE_DIR}/src/modules + ${PX4_SOURCE_DIR}/src/include + ${PX4_SOURCE_DIR}/src/lib + ${PX4_SOURCE_DIR}/src/platforms # TODO Build/versioning was in Makefile, # do we need this, how does it work with cmake - ${CMAKE_SOURCE_DIR}/src/drivers/boards/${BOARD} - ${CMAKE_BINARY_DIR} - ${CMAKE_BINARY_DIR}/src/modules/px4_messages - ${CMAKE_BINARY_DIR}/src/modules - ${CMAKE_SOURCE_DIR}/mavlink/include/mavlink - ${CMAKE_SOURCE_DIR}/src/lib/DriverFramework/framework/include + ${PX4_SOURCE_DIR}/src/drivers/boards/${BOARD} + ${PX4_BINARY_DIR} + ${PX4_BINARY_DIR}/src/modules/px4_messages + ${PX4_BINARY_DIR}/src/modules + ${PX4_SOURCE_DIR}/mavlink/include/mavlink + ${PX4_SOURCE_DIR}/src/lib/DriverFramework/framework/include ) list(APPEND added_include_dirs @@ -858,19 +858,19 @@ function(px4_create_git_hash_header) COMMAND git describe --always --tags OUTPUT_VARIABLE git_tag OUTPUT_STRIP_TRAILING_WHITESPACE - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${PX4_SOURCE_DIR} ) message(STATUS "GIT_TAG = ${git_tag}") execute_process( COMMAND git rev-parse --verify HEAD OUTPUT_VARIABLE git_version OUTPUT_STRIP_TRAILING_WHITESPACE - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${PX4_SOURCE_DIR} ) #message(STATUS "GIT_VERSION = ${git_version}") set(git_version_short) string(SUBSTRING ${git_version} 1 16 git_version_short) - configure_file(${CMAKE_SOURCE_DIR}/cmake/templates/build_git_version.h.in ${HEADER} @ONLY) + configure_file(${PX4_SOURCE_DIR}/cmake/templates/build_git_version.h.in ${HEADER} @ONLY) endfunction() #============================================================================= @@ -897,12 +897,12 @@ function(px4_generate_parameters_xml) ONE_VALUE OUT BOARD REQUIRED OUT BOARD ARGN ${ARGN}) - set(path ${CMAKE_SOURCE_DIR}/src) + set(path ${PX4_SOURCE_DIR}/src) file(GLOB_RECURSE param_src_files - ${CMAKE_SOURCE_DIR}/src/*params.c + ${PX4_SOURCE_DIR}/src/*params.c ) add_custom_command(OUTPUT ${OUT} - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/px_process_params.py + COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/px_process_params.py -s ${path} --board CONFIG_ARCH_${BOARD} --xml --inject-xml DEPENDS ${param_src_files} ) @@ -944,7 +944,7 @@ function(px4_generate_parameters_source) set(SCOPE "") endif() add_custom_command(OUTPUT ${generated_files} - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/px_generate_params.py ${XML} ${SCOPE} + COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/px_generate_params.py ${XML} ${SCOPE} DEPENDS ${XML} ${DEPS} ${SCOPE} ) set(${OUT} ${generated_files} PARENT_SCOPE) @@ -975,10 +975,10 @@ function(px4_generate_airframes_xml) ONE_VALUE OUT BOARD REQUIRED OUT BOARD ARGN ${ARGN}) - set(process_airframes ${CMAKE_SOURCE_DIR}/Tools/px_process_airframes.py) + set(process_airframes ${PX4_SOURCE_DIR}/Tools/px_process_airframes.py) add_custom_command(OUTPUT ${OUT} COMMAND ${PYTHON_EXECUTABLE} ${process_airframes} - -a ${CMAKE_SOURCE_DIR}/ROMFS/px4fmu_common/init.d + -a ${PX4_SOURCE_DIR}/ROMFS/px4fmu_common/init.d --board CONFIG_ARCH_BOARD_${BOARD} --xml ) set(${OUT} ${${OUT}} PARENT_SCOPE) diff --git a/cmake/configs/nuttx_mindpx-v2_default.cmake b/cmake/configs/nuttx_mindpx-v2_default.cmake index 41c9d32df8a52fecc7fcaefb0e7f128ccc048f01..32bbf050fdeb8833ec9c278fa170d975df76e9af 100644 --- a/cmake/configs/nuttx_mindpx-v2_default.cmake +++ b/cmake/configs/nuttx_mindpx-v2_default.cmake @@ -1,6 +1,6 @@ include(nuttx/px4_impl_nuttx) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) set(config_uavcan_num_ifaces 2) diff --git a/cmake/configs/nuttx_px4-stm32f4discovery_default.cmake b/cmake/configs/nuttx_px4-stm32f4discovery_default.cmake index c71db2fc31847137a6daa55d00774f569ac275b7..377a90f335137c726309c99d9bf05b95e61b2ee2 100644 --- a/cmake/configs/nuttx_px4-stm32f4discovery_default.cmake +++ b/cmake/configs/nuttx_px4-stm32f4discovery_default.cmake @@ -1,6 +1,6 @@ include(nuttx/px4_impl_nuttx) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) set(config_module_list # diff --git a/cmake/configs/nuttx_px4fmu-v1_default.cmake b/cmake/configs/nuttx_px4fmu-v1_default.cmake index 75f8d054ed5a91a9ba7c94426dbb6095acc2fa84..2c0a5f73152fc52a351a2b298d5dd3b2a75e0315 100644 --- a/cmake/configs/nuttx_px4fmu-v1_default.cmake +++ b/cmake/configs/nuttx_px4fmu-v1_default.cmake @@ -1,6 +1,6 @@ include(nuttx/px4_impl_nuttx) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) set(config_module_list # diff --git a/cmake/configs/nuttx_px4fmu-v2_default.cmake b/cmake/configs/nuttx_px4fmu-v2_default.cmake index c38d726702076f92d5213018088c3c47b6da6329..13d02e6d28650e2a8f8f10d34e5658551e7f1d32 100644 --- a/cmake/configs/nuttx_px4fmu-v2_default.cmake +++ b/cmake/configs/nuttx_px4fmu-v2_default.cmake @@ -1,6 +1,6 @@ include(nuttx/px4_impl_nuttx) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) set(config_uavcan_num_ifaces 2) diff --git a/cmake/configs/nuttx_px4fmu-v2_ekf2.cmake b/cmake/configs/nuttx_px4fmu-v2_ekf2.cmake index f43b7820455f5892ed520385def244efb8bcb0c5..e500752214e968549a62e887d089bec72e1697ab 100644 --- a/cmake/configs/nuttx_px4fmu-v2_ekf2.cmake +++ b/cmake/configs/nuttx_px4fmu-v2_ekf2.cmake @@ -1,6 +1,6 @@ include(nuttx/px4_impl_nuttx) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) set(config_uavcan_num_ifaces 2) diff --git a/cmake/configs/nuttx_px4fmu-v2_test.cmake b/cmake/configs/nuttx_px4fmu-v2_test.cmake index b72c5a819059f0b53db52165978d8877207c4389..1839d8689d50dc3c6828a062a035ae41bfaa741f 100644 --- a/cmake/configs/nuttx_px4fmu-v2_test.cmake +++ b/cmake/configs/nuttx_px4fmu-v2_test.cmake @@ -1,6 +1,6 @@ include(nuttx/px4_impl_nuttx) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) set(config_uavcan_num_ifaces 2) diff --git a/cmake/configs/nuttx_px4fmu-v4_default.cmake b/cmake/configs/nuttx_px4fmu-v4_default.cmake index 866e19dc0d5b23cf68a3f772f51619969ad9e2d9..ad746ee426f2db2fbe6c8496dafbfa0ded4cda50 100644 --- a/cmake/configs/nuttx_px4fmu-v4_default.cmake +++ b/cmake/configs/nuttx_px4fmu-v4_default.cmake @@ -1,6 +1,6 @@ include(nuttx/px4_impl_nuttx) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) set(config_uavcan_num_ifaces 1) diff --git a/cmake/configs/nuttx_tap-v1_default.cmake b/cmake/configs/nuttx_tap-v1_default.cmake index 2dad82490191e67bf0354ea7f2f6b4fbe8d1dd68..8a5b8187fbeeb83727d01242e49e1fe7a735634b 100644 --- a/cmake/configs/nuttx_tap-v1_default.cmake +++ b/cmake/configs/nuttx_tap-v1_default.cmake @@ -1,6 +1,6 @@ include(nuttx/px4_impl_nuttx) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake) set(config_module_list # diff --git a/cmake/configs/posix_bebop_default.cmake b/cmake/configs/posix_bebop_default.cmake index 5538ffe35a6ec34044f566dfb2e25ed07f680a0b..72e945db0f344406eb8e73ffae4eaf2bd0922f24 100644 --- a/cmake/configs/posix_bebop_default.cmake +++ b/cmake/configs/posix_bebop_default.cmake @@ -1,6 +1,6 @@ include(posix/px4_impl_posix) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf-raspbian.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf-raspbian.cmake) add_definitions( -D__PX4_POSIX_BEBOP diff --git a/cmake/configs/posix_eagle_default.cmake b/cmake/configs/posix_eagle_default.cmake index 3a6dd22755b9ff298387725deaca6647a7d52022..be819614250c581cbd105083921eca64e0f0718b 100644 --- a/cmake/configs/posix_eagle_default.cmake +++ b/cmake/configs/posix_eagle_default.cmake @@ -4,9 +4,9 @@ # on the Linux side of the Snapdragon. include(configs/posix_sdflight_default) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-arm-linux-gnueabihf.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-arm-linux-gnueabihf.cmake) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") set(CONFIG_SHMEM "1") diff --git a/cmake/configs/posix_eagle_hil.cmake b/cmake/configs/posix_eagle_hil.cmake index 909bdeecb1ed695450d3ecf3ac9fa513261eb5c6..d38da131bdd4e9c42f159c42a6d524935d197184 100644 --- a/cmake/configs/posix_eagle_hil.cmake +++ b/cmake/configs/posix_eagle_hil.cmake @@ -1,13 +1,13 @@ include(posix/px4_impl_posix) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") # Use build stubs unless explicitly set not to if("${DSPAL_STUBS_ENABLE}" STREQUAL "") set(DSPAL_STUBS_ENABLE "1") endif() -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake) set(config_generate_parameters_scope ALL) diff --git a/cmake/configs/posix_eagle_legacy_driver_default.cmake b/cmake/configs/posix_eagle_legacy_driver_default.cmake index ec172e7602fdfde2e89a5d8420e3276da7bc8a5f..534d327f7e0ce4fec2f4e81a7d5bf47ff36aa91c 100644 --- a/cmake/configs/posix_eagle_legacy_driver_default.cmake +++ b/cmake/configs/posix_eagle_legacy_driver_default.cmake @@ -1,8 +1,8 @@ include(posix/px4_impl_posix) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-arm-linux-gnueabihf.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-arm-linux-gnueabihf.cmake) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") set(config_generate_parameters_scope ALL) diff --git a/cmake/configs/posix_eagle_muorb.cmake b/cmake/configs/posix_eagle_muorb.cmake index 95a5c59bebe4c6432cbb409e852a4e980cedb874..f47c421dce624529d107fc90d08045e4907be73a 100644 --- a/cmake/configs/posix_eagle_muorb.cmake +++ b/cmake/configs/posix_eagle_muorb.cmake @@ -1,8 +1,8 @@ include(posix/px4_impl_posix) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") set(config_generate_parameters_scope ALL) diff --git a/cmake/configs/posix_rpi_cross.cmake b/cmake/configs/posix_rpi_cross.cmake index 46243fc361e83a3fcf78f7120c53dcf4f88c2fc7..72896086c65b9368c31190e0f7aacaa36ccbc7d1 100644 --- a/cmake/configs/posix_rpi_cross.cmake +++ b/cmake/configs/posix_rpi_cross.cmake @@ -1,6 +1,6 @@ include(configs/posix_rpi_common) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf-raspbian.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf-raspbian.cmake) set(CMAKE_PROGRAM_PATH "${RPI_TOOLCHAIN_DIR}/gcc-linaro-arm-linux-gnueabihf-raspbian/bin" diff --git a/cmake/configs/posix_rpi_native.cmake b/cmake/configs/posix_rpi_native.cmake index e58f37028227b2855640e368e2a79467705f58f7..b2a54c4f6532d075c72e6244a9dd063f0cb6f906 100644 --- a/cmake/configs/posix_rpi_native.cmake +++ b/cmake/configs/posix_rpi_native.cmake @@ -1,3 +1,3 @@ include(configs/posix_rpi_common) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake) diff --git a/cmake/configs/posix_sdflight_default.cmake b/cmake/configs/posix_sdflight_default.cmake index c43e51974c99312b7cc81ad3b5d2b50aa21aa283..fc66327184916f048d54e82673e8f09e60387283 100644 --- a/cmake/configs/posix_sdflight_default.cmake +++ b/cmake/configs/posix_sdflight_default.cmake @@ -1,8 +1,8 @@ include(posix/px4_impl_posix) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") set(config_generate_parameters_scope ALL) diff --git a/cmake/configs/posix_sitl_broadcast.cmake b/cmake/configs/posix_sitl_broadcast.cmake index 9a9029f1c0c70dae170ca998d659a72a580e76c0..0c7bf4b0a2f4e61e522ea8fcea3bb82277e1e37e 100644 --- a/cmake/configs/posix_sitl_broadcast.cmake +++ b/cmake/configs/posix_sitl_broadcast.cmake @@ -1,6 +1,6 @@ include(posix/px4_impl_posix) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake) set(config_module_list drivers/device diff --git a/cmake/configs/posix_sitl_default.cmake b/cmake/configs/posix_sitl_default.cmake index 6fa6d9c0b7c04eb237cc70ebf22141de925c03cb..62caa65e725df30413d93616b62e788bb7d1d678 100644 --- a/cmake/configs/posix_sitl_default.cmake +++ b/cmake/configs/posix_sitl_default.cmake @@ -1,6 +1,6 @@ include(posix/px4_impl_posix) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake) set(config_module_list drivers/boards/sitl diff --git a/cmake/configs/posix_sitl_replay.cmake b/cmake/configs/posix_sitl_replay.cmake index 3c99cba7a77505394c270bab213a08ac784d3a8e..a20a2d8cfe076c08c1cf7e8cd6a4881bcc6be8f0 100644 --- a/cmake/configs/posix_sitl_replay.cmake +++ b/cmake/configs/posix_sitl_replay.cmake @@ -1,6 +1,6 @@ include(posix/px4_impl_posix) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake) set(config_module_list drivers/device diff --git a/cmake/configs/qurt_eagle_hello.cmake b/cmake/configs/qurt_eagle_hello.cmake index e1a66ea82702f37009f3d03983a5faf19b54700f..db16c17d2a5439a7fc987c1931bed6cc50cb1b3f 100644 --- a/cmake/configs/qurt_eagle_hello.cmake +++ b/cmake/configs/qurt_eagle_hello.cmake @@ -6,9 +6,9 @@ else() set(HEXAGON_SDK_ROOT $ENV{HEXAGON_SDK_ROOT}) endif() -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") set(config_generate_parameters_scope ALL) diff --git a/cmake/configs/qurt_eagle_hil.cmake b/cmake/configs/qurt_eagle_hil.cmake index 469432818fc7bf4da0839002ef0f58e491c9cd42..9eba5dea83cfc9587a555f4e677f6340ef26f3bd 100644 --- a/cmake/configs/qurt_eagle_hil.cmake +++ b/cmake/configs/qurt_eagle_hil.cmake @@ -6,9 +6,9 @@ else() set(HEXAGON_SDK_ROOT $ENV{HEXAGON_SDK_ROOT}) endif() -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") set(config_generate_parameters_scope ALL) diff --git a/cmake/configs/qurt_eagle_legacy_driver_default.cmake b/cmake/configs/qurt_eagle_legacy_driver_default.cmake index f0fdb2dee5c8d8392cd00e4ed5f59bf171bffc3d..852fe55b1f7c037195af9f3d0c3dc1db84568c6b 100644 --- a/cmake/configs/qurt_eagle_legacy_driver_default.cmake +++ b/cmake/configs/qurt_eagle_legacy_driver_default.cmake @@ -10,9 +10,9 @@ set(CONFIG_SHMEM "1") set(config_generate_parameters_scope ALL) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") add_definitions( -D__USING_SNAPDRAGON_LEGACY_DRIVER diff --git a/cmake/configs/qurt_eagle_muorb.cmake b/cmake/configs/qurt_eagle_muorb.cmake index 505ffd00cd13033896c9aa62ee7fe8ff7f14d7e3..2af8ebdfb2e5e410f16b0474013cac5ae4d32215 100644 --- a/cmake/configs/qurt_eagle_muorb.cmake +++ b/cmake/configs/qurt_eagle_muorb.cmake @@ -6,9 +6,9 @@ else() set(HEXAGON_SDK_ROOT $ENV{HEXAGON_SDK_ROOT}) endif() -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") set(config_generate_parameters_scope ALL) diff --git a/cmake/configs/qurt_eagle_test.cmake b/cmake/configs/qurt_eagle_test.cmake index 9170b3da47a503f7881b1bd3b3bda548af130a43..91314785770ca1cc0b2d63d3f1e351a82a7b2cb2 100644 --- a/cmake/configs/qurt_eagle_test.cmake +++ b/cmake/configs/qurt_eagle_test.cmake @@ -6,8 +6,8 @@ else() set(HEXAGON_SDK_ROOT $ENV{HEXAGON_SDK_ROOT}) endif() -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake) +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") set(config_generate_parameters_scope ALL) diff --git a/cmake/configs/qurt_eagle_travis.cmake b/cmake/configs/qurt_eagle_travis.cmake index 16aa788edc2a28165455432554cc554f8d45720c..505635b8bd6e1eb51523c3ce5fba4802ca391e53 100644 --- a/cmake/configs/qurt_eagle_travis.cmake +++ b/cmake/configs/qurt_eagle_travis.cmake @@ -5,9 +5,9 @@ set(CONFIG_SHMEM "1") # Run a full link with build stubs to make sure qurt target isn't broken set(QURT_ENABLE_STUBS "1") -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") include(hexagon_sdk) if ("$ENV{HEXAGON_SDK_ROOT}" STREQUAL "") diff --git a/cmake/configs/qurt_sdflight_default.cmake b/cmake/configs/qurt_sdflight_default.cmake index 195219f7af040bc5ba15b37ad2f9bbe85129db18..1d30699014b9fb5c030986b4e24875f8f20b2a40 100644 --- a/cmake/configs/qurt_sdflight_default.cmake +++ b/cmake/configs/qurt_sdflight_default.cmake @@ -10,9 +10,9 @@ set(CONFIG_SHMEM "1") set(config_generate_parameters_scope ALL) -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake) +set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-qurt.cmake) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") set(config_module_list # diff --git a/cmake/nuttx/px4_impl_nuttx.cmake b/cmake/nuttx/px4_impl_nuttx.cmake index c969263be10de4d1315fe50eb746de799355a2df..9a54b6277ec2b966b8acdd9df8a557acdf5a4157 100644 --- a/cmake/nuttx/px4_impl_nuttx.cmake +++ b/cmake/nuttx/px4_impl_nuttx.cmake @@ -95,9 +95,9 @@ function(px4_nuttx_add_firmware) add_custom_command(OUTPUT ${OUT} COMMAND ${OBJCOPY} -O binary ${EXE} ${EXE}.bin - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/px_mkfw.py - --prototype ${CMAKE_SOURCE_DIR}/Images/${BOARD}.prototype - --git_identity ${CMAKE_SOURCE_DIR} + COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/px_mkfw.py + --prototype ${PX4_SOURCE_DIR}/Images/${BOARD}.prototype + --git_identity ${PX4_SOURCE_DIR} ${extra_args} --image ${EXE}.bin > ${OUT} DEPENDS ${EXE} @@ -148,7 +148,7 @@ function(px4_nuttx_generate_builtin_commands) math(EXPR command_count "${command_count}+1") endif() endforeach() - configure_file(${CMAKE_SOURCE_DIR}/cmake/nuttx/builtin_commands.c.in + configure_file(${PX4_SOURCE_DIR}/cmake/nuttx/builtin_commands.c.in ${OUT}) endfunction() @@ -183,17 +183,17 @@ function(px4_nuttx_add_export) REQUIRED OUT CONFIG THREADS ARGN ${ARGN}) - set(nuttx_src ${CMAKE_BINARY_DIR}/${CONFIG}/NuttX) + set(nuttx_src ${PX4_BINARY_DIR}/${CONFIG}/NuttX) # patch add_custom_target(__nuttx_patch_${CONFIG}) - file(GLOB nuttx_patches RELATIVE ${CMAKE_SOURCE_DIR} - ${CMAKE_SOURCE_DIR}/nuttx-patches/*.patch) + file(GLOB nuttx_patches RELATIVE ${PX4_SOURCE_DIR} + ${PX4_SOURCE_DIR}/nuttx-patches/*.patch) foreach(patch ${nuttx_patches}) string(REPLACE "/" "_" patch_name "${patch}-${CONFIG}") message(STATUS "nuttx-patch: ${patch}") add_custom_command(OUTPUT nuttx_patch_${patch_name}.stamp - COMMAND ${PATCH} -p0 -N < ${CMAKE_SOURCE_DIR}/${patch} + COMMAND ${PATCH} -p0 -N < ${PX4_SOURCE_DIR}/${patch} COMMAND ${TOUCH} nuttx_patch_${patch_name}.stamp DEPENDS ${DEPENDS} ) @@ -204,7 +204,7 @@ function(px4_nuttx_add_export) # Read defconfig to see if CONFIG_ARMV7M_STACKCHECK is yes # note: CONFIG will be BOARD in the future evaluation of ${hw_stack_check_${CONFIG} - file(STRINGS "${CMAKE_SOURCE_DIR}/nuttx-configs/${CONFIG}/nsh/defconfig" + file(STRINGS "${PX4_SOURCE_DIR}/nuttx-configs/${CONFIG}/nsh/defconfig" hw_stack_check_${CONFIG} REGEX "CONFIG_ARMV7M_STACKCHECK=y" ) @@ -213,29 +213,29 @@ function(px4_nuttx_add_export) endif() # copy and export - file(RELATIVE_PATH nuttx_cp_src ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/NuttX) - file(GLOB_RECURSE config_files ${CMAKE_SOURCE_DIR}/nuttx-configs/${CONFIG}/*) - add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${CONFIG}.export + file(RELATIVE_PATH nuttx_cp_src ${PX4_BINARY_DIR} ${PX4_SOURCE_DIR}/NuttX) + file(GLOB_RECURSE config_files ${PX4_SOURCE_DIR}/nuttx-configs/${CONFIG}/*) + add_custom_command(OUTPUT ${PX4_BINARY_DIR}/${CONFIG}.export COMMAND ${MKDIR} -p ${nuttx_src} COMMAND rsync -a --delete --exclude=.git ${nuttx_cp_src}/ ${CONFIG}/NuttX/ #COMMAND ${ECHO} Configuring NuttX for ${CONFIG} COMMAND ${MAKE} --no-print-directory -C${nuttx_src}/nuttx -r --quiet distclean - COMMAND ${CP} -r ${CMAKE_SOURCE_DIR}/nuttx-configs/PX4_Warnings.mk ${nuttx_src}/nuttx/ - COMMAND ${CP} -r ${CMAKE_SOURCE_DIR}/nuttx-configs/${CONFIG} ${nuttx_src}/nuttx/configs + COMMAND ${CP} -r ${PX4_SOURCE_DIR}/nuttx-configs/PX4_Warnings.mk ${nuttx_src}/nuttx/ + COMMAND ${CP} -r ${PX4_SOURCE_DIR}/nuttx-configs/${CONFIG} ${nuttx_src}/nuttx/configs COMMAND cd ${nuttx_src}/nuttx/tools && ./configure.sh ${CONFIG}/nsh && cd .. #COMMAND ${ECHO} Exporting NuttX for ${CONFIG} COMMAND ${MAKE} --no-print-directory --quiet -C ${nuttx_src}/nuttx -j${THREADS} -r CONFIG_ARCH_BOARD=${CONFIG} export > nuttx_build.log - COMMAND ${CP} -r ${nuttx_src}/nuttx/nuttx-export.zip ${CMAKE_BINARY_DIR}/${CONFIG}.export + COMMAND ${CP} -r ${nuttx_src}/nuttx/nuttx-export.zip ${PX4_BINARY_DIR}/${CONFIG}.export DEPENDS ${config_files} ${DEPENDS} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${PX4_BINARY_DIR} COMMENT "Building NuttX for ${CONFIG}") # extract add_custom_command(OUTPUT nuttx_export_${CONFIG}.stamp COMMAND ${RM} -rf ${nuttx_src}/nuttx-export - COMMAND ${UNZIP} -q ${CMAKE_BINARY_DIR}/${CONFIG}.export -d ${nuttx_src} + COMMAND ${UNZIP} -q ${PX4_BINARY_DIR}/${CONFIG}.export -d ${nuttx_src} COMMAND ${TOUCH} nuttx_export_${CONFIG}.stamp - DEPENDS ${DEPENDS} ${CMAKE_BINARY_DIR}/${CONFIG}.export) + DEPENDS ${DEPENDS} ${PX4_BINARY_DIR}/${CONFIG}.export) add_custom_target(${OUT} DEPENDS nuttx_export_${CONFIG}.stamp) @@ -308,16 +308,16 @@ function(px4_nuttx_add_romfs) REQUIRED OUT ROOT ARGN ${ARGN}) - set(romfs_temp_dir ${CMAKE_BINARY_DIR}/tmp/${ROOT}) - set(romfs_src_dir ${CMAKE_SOURCE_DIR}/${ROOT}) - set(romfs_autostart ${CMAKE_SOURCE_DIR}/Tools/px_process_airframes.py) - set(romfs_pruner ${CMAKE_SOURCE_DIR}/Tools/px_romfs_pruner.py) - set(bin_to_obj ${CMAKE_SOURCE_DIR}/cmake/nuttx/bin_to_obj.py) + set(romfs_temp_dir ${PX4_BINARY_DIR}/tmp/${ROOT}) + set(romfs_src_dir ${PX4_SOURCE_DIR}/${ROOT}) + set(romfs_autostart ${PX4_SOURCE_DIR}/Tools/px_process_airframes.py) + set(romfs_pruner ${PX4_SOURCE_DIR}/Tools/px_romfs_pruner.py) + set(bin_to_obj ${PX4_SOURCE_DIR}/cmake/nuttx/bin_to_obj.py) set(extras_dir ${CMAKE_CURRENT_BINARY_DIR}/extras) file(GLOB_RECURSE romfs_src_files ${romfs_src_dir} ${romfs_src_dir}/*) - set(cmake_test ${CMAKE_SOURCE_DIR}/cmake/test/cmake_tester.py) + set(cmake_test ${PX4_SOURCE_DIR}/cmake/test/cmake_tester.py) set(extras) @@ -346,7 +346,7 @@ function(px4_nuttx_add_romfs) #COMMAND cmake -E remove_directory ${romfs_temp_dir} COMMAND ${PYTHON_EXECUTABLE} ${bin_to_obj} --ld ${LD} --c_flags ${CMAKE_C_FLAGS} - --include_path "${CMAKE_SOURCE_DIR}/src/include" + --include_path "${PX4_SOURCE_DIR}/src/include" --c_compiler ${CMAKE_C_COMPILER} --nm ${NM} --objcopy ${OBJCOPY} --obj romfs.o @@ -414,7 +414,7 @@ function(px4_os_add_flags) LINK_DIRS ${LINK_DIRS} DEFINITIONS ${DEFINITIONS}) - set(nuttx_export_dir ${CMAKE_BINARY_DIR}/${BOARD}/NuttX/nuttx-export) + set(nuttx_export_dir ${PX4_BINARY_DIR}/${BOARD}/NuttX/nuttx-export) set(added_include_dirs ${nuttx_export_dir}/include ${nuttx_export_dir}/include/cxx diff --git a/cmake/posix/px4_impl_posix.cmake b/cmake/posix/px4_impl_posix.cmake index d661bfa5ebe69050a00f3bb4390cbc8777c0c2a5..7786097c4c01c960527105b92ef8df6cb09eef82 100644 --- a/cmake/posix/px4_impl_posix.cmake +++ b/cmake/posix/px4_impl_posix.cmake @@ -49,7 +49,7 @@ # include(common/px4_base) -list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/posix) +list(APPEND CMAKE_MODULE_PATH ${PX4_SOURCE_DIR}/cmake/posix) #============================================================================= # @@ -101,7 +101,7 @@ function(px4_posix_generate_builtin_commands) math(EXPR command_count "${command_count}+1") endif() endforeach() - configure_file(${CMAKE_SOURCE_DIR}/cmake/posix/apps.h_in + configure_file(${PX4_SOURCE_DIR}/cmake/posix/apps.h_in ${OUT}) endfunction() diff --git a/cmake/qurt/px4_impl_qurt.cmake b/cmake/qurt/px4_impl_qurt.cmake index efb1135d7be4bb094c54090447a4b455a75517a1..f5387c515e6e2bb8d50e9dc4ccff9cbf7b97a617 100644 --- a/cmake/qurt/px4_impl_qurt.cmake +++ b/cmake/qurt/px4_impl_qurt.cmake @@ -50,7 +50,7 @@ # include(common/px4_base) -list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/qurt) +list(APPEND CMAKE_MODULE_PATH ${PX4_SOURCE_DIR}/cmake/qurt) #============================================================================= # @@ -95,7 +95,7 @@ function(px4_qurt_generate_builtin_commands) math(EXPR command_count "${command_count}+1") endif() endforeach() - configure_file(${CMAKE_SOURCE_DIR}/cmake/qurt/apps.h_in ${OUT}) + configure_file(${PX4_SOURCE_DIR}/cmake/qurt/apps.h_in ${OUT}) endfunction() #============================================================================= diff --git a/cmake/ros-CMakeLists.txt b/cmake/ros-CMakeLists.txt deleted file mode 100644 index 67870b1e2cb9896765ce98427f687772a56b47f4..0000000000000000000000000000000000000000 --- a/cmake/ros-CMakeLists.txt +++ /dev/null @@ -1,334 +0,0 @@ -cmake_minimum_required(VERSION 2.8.3) -project(px4) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") -add_definitions(-D__PX4_ROS) -add_definitions(-D__EXPORT=) -add_definitions(-DMAVLINK_DIALECT=common) - -## Find catkin macros and libraries -## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) -## is used, also find other catkin packages -find_package(catkin REQUIRED COMPONENTS - roscpp - rospy - std_msgs - geometry_msgs - message_generation - cmake_modules - gazebo_msgs - sensor_msgs - mav_msgs - libmavconn - tf -) -find_package(Eigen REQUIRED) - -## System dependencies are found with CMake's conventions -# find_package(Boost REQUIRED COMPONENTS system) - - -## Uncomment this if the package has a setup.py. This macro ensures -## modules and global scripts declared therein get installed -## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html -# catkin_python_setup() - -################################################ -## Declare ROS messages, services and actions ## -################################################ - -## To declare and build messages, services or actions from within this -## package, follow these steps: -## * Let MSG_DEP_SET be the set of packages whose message types you use in -## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). -## * In the file package.xml: -## * add a build_depend and a run_depend tag for each package in MSG_DEP_SET -## * If MSG_DEP_SET isn't empty the following dependencies might have been -## pulled in transitively but can be declared for certainty nonetheless: -## * add a build_depend tag for "message_generation" -## * add a run_depend tag for "message_runtime" -## * In this file (CMakeLists.txt): -## * add "message_generation" and every package in MSG_DEP_SET to -## find_package(catkin REQUIRED COMPONENTS ...) -## * add "message_runtime" and every package in MSG_DEP_SET to -## catkin_package(CATKIN_DEPENDS ...) -## * uncomment the add_*_files sections below as needed -## and list every .msg/.srv/.action file to be processed -## * uncomment the generate_messages entry below -## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) - -## Generate messages in the 'msg' folder -add_message_files( - FILES - actuator_armed.msg - actuator_controls.msg - commander_state.msg - control_state.msg - distance_sensor.msg - manual_control_setpoint.msg - mc_virtual_rates_setpoint.msg - offboard_control_mode.msg - parameter_update.msg - position_setpoint.msg - position_setpoint_triplet.msg - rc_channels.msg - ros/actuator_controls_0.msg - ros/actuator_controls_virtual_mc.msg - vehicle_attitude.msg - vehicle_attitude_setpoint.msg - vehicle_control_mode.msg - vehicle_force_setpoint.msg - vehicle_global_velocity_setpoint.msg - vehicle_local_position.msg - vehicle_local_position_setpoint.msg - vehicle_rates_setpoint.msg - vehicle_status.msg -) - -## Generate services in the 'srv' folder -# add_service_files( -# FILES -# Service1.srv -# Service2.srv -# ) - -## Generate actions in the 'action' folder -# add_action_files( -# FILES -# Action1.action -# Action2.action -# ) - -## Generate added messages and services with any dependencies listed here -generate_messages( - DEPENDENCIES - std_msgs - gazebo_msgs -) - -################################### -## catkin specific configuration ## -################################### -## The catkin_package macro generates cmake config files for your package -## Declare things to be passed to dependent projects -## INCLUDE_DIRS: uncomment this if you package contains header files -## LIBRARIES: libraries you create in this project that dependent projects also need -## CATKIN_DEPENDS: catkin_packages dependent projects also need -## DEPENDS: system dependencies of this project that dependent projects also need -catkin_package( - INCLUDE_DIRS src/include - LIBRARIES px4 - CATKIN_DEPENDS message_runtime roscpp rospy std_msgs libmavconn - DEPENDS system_lib -) - -########### -## Build ## -########### - -## Specify additional locations of header files -## Your package locations should be listed before other locations -include_directories( - ${catkin_INCLUDE_DIRS} - src/platforms - src/platforms/ros/px4_messages - src/include - src/modules - ${CMAKE_BINARY_DIR}/src/modules - src/ - src/lib - src/lib/matrix - ${EIGEN_INCLUDE_DIRS} - integrationtests -) - -## generate multiplatform wrapper headers -## note that the message header files are generated as in any ROS project with generate_messages() -set(MULTIPLATFORM_HEADER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/platforms/ros/px4_messages) -set(MULTIPLATFORM_TEMPLATE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/msg/templates/px4/ros) -set(TOPICHEADER_TEMP_DIR ${CMAKE_BINARY_DIR}/topics_temporary) -set(MULTIPLATFORM_PREFIX px4_) -add_custom_target(multiplatform_message_headers ALL ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/Tools/px_generate_uorb_topic_files.py - --headers -d ${CMAKE_CURRENT_SOURCE_DIR}/msg -o ${MULTIPLATFORM_HEADER_DIR} -e ${MULTIPLATFORM_TEMPLATE_DIR} - -t ${TOPICHEADER_TEMP_DIR} -p ${MULTIPLATFORM_PREFIX}) - -## Declare a cpp library -add_library(px4 - src/platforms/ros/px4_ros_impl.cpp - src/platforms/ros/perf_counter.cpp - src/platforms/ros/geo.cpp - src/lib/mathlib/math/Limits.cpp - src/modules/systemlib/circuit_breaker.cpp -) -add_dependencies(px4 ${PROJECT_NAME}_generate_messages_cpp multiplatform_message_headers) - -target_link_libraries(px4 - ${catkin_LIBRARIES} -) - -## Declare a test publisher -add_executable(publisher - src/examples/publisher/publisher_main.cpp - src/examples/publisher/publisher_example.cpp) -add_dependencies(publisher ${PROJECT_NAME}_generate_messages_cpp multiplatform_message_headers) -target_link_libraries(publisher - ${catkin_LIBRARIES} - px4 -) - -## Declare a test subscriber -add_executable(subscriber - src/examples/subscriber/subscriber_main.cpp - src/examples/subscriber/subscriber_example.cpp) -add_dependencies(subscriber ${PROJECT_NAME}_generate_messages_cpp multiplatform_message_headers) -target_link_libraries(subscriber - ${catkin_LIBRARIES} - px4 -) - -## MC Attitude Control -add_executable(mc_att_control - src/modules/mc_att_control_multiplatform/mc_att_control_main.cpp - src/modules/mc_att_control_multiplatform/mc_att_control.cpp - src/modules/mc_att_control_multiplatform/mc_att_control_base.cpp) -add_dependencies(mc_att_control ${PROJECT_NAME}_generate_messages_cpp_cpp) -target_link_libraries(mc_att_control - ${catkin_LIBRARIES} - px4 -) - -## MC Position Control -add_executable(mc_pos_control - src/modules/mc_pos_control_multiplatform/mc_pos_control_main.cpp - src/modules/mc_pos_control_multiplatform/mc_pos_control.cpp) -add_dependencies(mc_pos_control ${PROJECT_NAME}_generate_messages_cpp_cpp) -target_link_libraries(mc_pos_control - ${catkin_LIBRARIES} - px4 -) - -## Attitude Estimator dummy -add_executable(attitude_estimator - src/platforms/ros/nodes/attitude_estimator/attitude_estimator.cpp) -add_dependencies(attitude_estimator ${PROJECT_NAME}_generate_messages_cpp_cpp) -target_link_libraries(attitude_estimator - ${catkin_LIBRARIES} - px4 -) - -## Position Estimator dummy -add_executable(position_estimator - src/platforms/ros/nodes/position_estimator/position_estimator.cpp) -add_dependencies(position_estimator ${PROJECT_NAME}_generate_messages_cpp_cpp) -target_link_libraries(position_estimator - ${catkin_LIBRARIES} - px4 -) - -## Manual input -add_executable(manual_input - src/platforms/ros/nodes/manual_input/manual_input.cpp) -add_dependencies(manual_input ${PROJECT_NAME}_generate_messages_cpp_cpp) -target_link_libraries(manual_input - ${catkin_LIBRARIES} - px4 -) - -## Multicopter Mixer dummy -add_executable(mc_mixer - src/platforms/ros/nodes/mc_mixer/mc_mixer.cpp) -add_dependencies(mc_mixer ${PROJECT_NAME}_generate_messages_cpp_cpp) -target_link_libraries(mc_mixer - ${catkin_LIBRARIES} - px4 -) - -## Commander dummy -add_executable(commander - src/platforms/ros/nodes/commander/commander.cpp) -add_dependencies(commander ${PROJECT_NAME}_generate_messages_cpp_cpp) -target_link_libraries(commander - ${catkin_LIBRARIES} - px4 -) - -## Mavlink dummy -add_executable(mavlink - src/platforms/ros/nodes/mavlink/mavlink.cpp) -add_dependencies(mavlink ${PROJECT_NAME}_generate_messages_cpp_cpp) -target_link_libraries(mavlink - ${catkin_LIBRARIES} - px4 -) - -## Offboard Position Setpoint Demo -add_executable(demo_offboard_position_setpoints - src/platforms/ros/nodes/demo_offboard_position_setpoints/demo_offboard_position_setpoints.cpp) -add_dependencies(demo_offboard_position_setpoints ${PROJECT_NAME}_generate_messages_cpp_cpp) -target_link_libraries(demo_offboard_position_setpoints - ${catkin_LIBRARIES} - px4 -) - -## Offboard Attitude Setpoint Demo -add_executable(demo_offboard_attitude_setpoints - src/platforms/ros/nodes/demo_offboard_attitude_setpoints/demo_offboard_attitude_setpoints.cpp) -add_dependencies(demo_offboard_attitude_setpoints ${PROJECT_NAME}_generate_messages_cpp_cpp) -target_link_libraries(demo_offboard_attitude_setpoints - ${catkin_LIBRARIES} - px4 -) - -############# -## Install ## -############# - -# all install targets should use catkin DESTINATION variables -# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html - -## Mark executable scripts (Python etc.) for installation -## in contrast to setup.py, you can choose the destination -# install(PROGRAMS -# scripts/my_python_script -# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} -# ) - -## Mark executables and/or libraries for installation -install(TARGETS ${PROJECT_NAME} - ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} -) - -## Mark cpp header files for installation -# install(DIRECTORY include/${PROJECT_NAME}/ -# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} -# FILES_MATCHING PATTERN "*.h" -# PATTERN ".svn" EXCLUDE -# ) - -## Mark other files for installation (e.g. launch and bag files, etc.) -# install(FILES -# # myfile1 -# # myfile2 -# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} -# ) - -############# -## Testing ## -############# - -## Add gtest based cpp test target and link libraries -# catkin_add_gtest(${PROJECT_NAME}-test test/test_px4test.cpp) -# if(TARGET ${PROJECT_NAME}-test) -# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) -# endif() - -## Add folders to be run by python nosetests -# catkin_add_nosetests(test) - -## Tests on multiplatform SITL (deprecated) have been moved to POSIX SITL -#if(CATKIN_ENABLE_TESTING) -# find_package(rostest REQUIRED) -# add_rostest(integrationtests/demo_tests/direct_tests.launch) -# add_rostest(integrationtests/demo_tests/mavros_tests.launch) -#endif() diff --git a/integrationtests/run_tests.bash b/integrationtests/run_tests.bash index 2a3a4c2a0ddfa08778abcf65099f1040aad84943..61569a1a731defe2343abf3e944b76681bf74441 100755 --- a/integrationtests/run_tests.bash +++ b/integrationtests/run_tests.bash @@ -5,26 +5,27 @@ # License: according to LICENSE.md in the root directory of the PX4 Firmware repository set -e -if [ "$#" -lt 1 ] +# handle cleaning command +do_clean=true +if [ "$1" = "-o" ] then - echo usage: run_tests.bash firmware_src_dir - echo "" - exit 1 + echo not cleaning + do_clean=false fi -SRC_DIR=$1 -JOB_DIR=$SRC_DIR/.. -BUILD=posix_sitl_default -# TODO -ROS_TEST_RESULT_DIR=/root/.ros/test_results/px4 -ROS_LOG_DIR=/root/.ros/log -PX4_LOG_DIR=${SRC_DIR}/build_${BUILD}/src/firmware/posix/rootfs/fs/microsd/log -TEST_RESULT_TARGET_DIR=$JOB_DIR/test_results -# BAGS=/root/.ros -# CHARTS=/root/.ros/charts -# EXPORT_CHARTS=/sitl/testing/export_charts.py +# determine the directory of the source given the directory of this script +pushd `dirname $0` > /dev/null +SCRIPTPATH=`pwd` +popd > /dev/null +ORIG_SRC=$(dirname $SCRIPTPATH) -# source ROS env +# set paths +JOB_DIR=$(dirname $ORIG_SRC) +CATKIN_DIR=$JOB_DIR/catkin +BUILD_DIR=$CATKIN_DIR/build/px4 +SRC_DIR=${CATKIN_DIR}/src/px4 + +echo setting up ROS paths if [ -f /opt/ros/indigo/setup.bash ] then source /opt/ros/indigo/setup.bash @@ -35,26 +36,57 @@ else echo "could not find /opt/ros/{ros-distro}/setup.bash" exit 1 fi -source $SRC_DIR/integrationtests/setup_gazebo_ros.bash $SRC_DIR +export ROS_HOME=$JOB_DIR/.ros +export ROS_LOG_DIR=$ROS_HOME/log +export ROS_TEST_RESULT_DIR=$ROS_HOME/test_results/px4 -echo "deleting previous test results ($TEST_RESULT_TARGET_DIR)" -if [ -d ${TEST_RESULT_TARGET_DIR} ]; then - rm -r ${TEST_RESULT_TARGET_DIR} -fi +PX4_LOG_DIR=$ROS_HOME/rootfs/fs/microsd/log +TEST_RESULT_TARGET_DIR=$JOB_DIR/test_results + +# TODO +# BAGS=$ROS_HOME +# CHARTS=$ROS_HOME/charts +# EXPORT_CHARTS=/sitl/testing/export_charts.py -# FIXME: Firmware compilation seems to CD into this directory (/root/Firmware) -# when run from "run_container.bash". Why? -if [ -d /root/Firmware ]; then - rm /root/Firmware +echo setting up gazebo paths +source /usr/share/gazebo/setup.sh +source $SCRIPTPATH/setup_gazebo_ros.bash ${SRC_DIR} ${BUILD_DIR} + +if $do_clean +then + echo cleaning + rm -rf $CATKIN_DIR + rm -rf $ROS_HOME + rm -rf $TEST_RESULT_TARGET_DIR +else + echo skipping clean step fi -ln -s ${SRC_DIR} /root/Firmware echo "=====> compile ($SRC_DIR)" -cd $SRC_DIR -make ${BUILD} -make --no-print-directory gazebo_build +mkdir -p $ROS_HOME +mkdir -p $CATKIN_DIR/src +mkdir -p $TEST_RESULT_TARGET_DIR +if ! [ -d $SRC_DIR ] +then + ln -s $ORIG_SRC $SRC_DIR + ln -s $ORIG_SRC/Tools/sitl_gazebo ${CATKIN_DIR}/src/mavlink_sitl_gazebo +fi +cd $CATKIN_DIR +catkin_make +. ./devel/setup.bash echo "<=====" +# print paths to user +echo -e "JOB_DIR\t\t: $JOB_DIR" +echo -e "ROS_HOME\t: $ROS_HOME" +echo -e "CATKIN_DIR\t: $CATKIN_DIR" +echo -e "BUILD_DIR\t: $BUILD_DIR" +echo -e "SRC_DIR\t\t: $SRC_DIR" +echo -e "ROS_TEST_RESULT_DIR\t: $ROS_TEST_RESULT_DIR" +echo -e "ROS_LOG_DIR\t\t: $ROS_LOG_DIR" +echo -e "PX4_LOG_DIR\t\t: $PX4_LOG_DIR" +echo -e "TEST_RESULT_TARGET_DIR\t: $TEST_RESULT_TARGET_DIR" + # don't exit on error anymore from here on (because single tests or exports might fail) set +e echo "=====> run tests" @@ -73,7 +105,6 @@ echo "=====> process test results" # done echo "copy build test results to job directory" -mkdir -p ${TEST_RESULT_TARGET_DIR} cp -r $ROS_TEST_RESULT_DIR/* ${TEST_RESULT_TARGET_DIR} cp -r $ROS_LOG_DIR/* ${TEST_RESULT_TARGET_DIR} cp -r $PX4_LOG_DIR/* ${TEST_RESULT_TARGET_DIR} diff --git a/integrationtests/setup_gazebo_ros.bash b/integrationtests/setup_gazebo_ros.bash index 6c22bbe192dcb4247dd03119919db544aa89fc23..8cc4a5c58b77fb72178a5575d32623255403e1b8 100755 --- a/integrationtests/setup_gazebo_ros.bash +++ b/integrationtests/setup_gazebo_ros.bash @@ -4,19 +4,24 @@ # # License: according to LICENSE.md in the root directory of the PX4 Firmware repository -if [ "$#" -lt 1 ] +if [ "$#" != 2 ] then - echo usage: source setup_gazebo_ros.bash firmware_src_dir + echo usage: source setup_gazebo_ros.bash src_dir build_dir echo "" return 1 fi SRC_DIR=$1 +BUILD_DIR=$2 # setup Gazebo env and update package path -export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:${SRC_DIR}/Tools/sitl_gazebo/models -export GAZEBO_PLUGIN_PATH=${SRC_DIR}/build_gazebo:${GAZEBO_PLUGIN_PATH} -export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${SRC_DIR}/Tools/sitl_gazebo/Build/msgs/ -export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:${SRC_DIR} +export GAZEBO_RESOURCE_PATH=${SRC_DIR}/Tools/sitl_gazebo:${GAZEBO_RESOURCE_PATH} +export GAZEBO_MODEL_PATH=${SRC_DIR}/Tools/sitl_gazebo/models:${GAZEBO_MODEL_PATH} +export GAZEBO_PLUGIN_PATH=${BUILD_DIR}/build_gazebo:${GAZEBO_PLUGIN_PATH} +export LD_LIBRARY_PATH=${SRC_DIR}/Tools/sitl_gazebo/Build/msgs/:${BUILD_DIR}/build_gazebo:${LD_LIBRARY_PATH}: export GAZEBO_MODEL_DATABASE_URI="" -export SITL_GAZEBO_PATH=$SRC_DIR/Tools/sitl_gazebo + +echo -e "GAZEBO_RESOURCE_PATH $GAZEBO_RESOURCE_PATH" +echo -e "GAZEBO_MODEL_PATH $GAZEBO_MODEL_PATH" +echo -e "GAZEBO_PLUGIN_PATH $GAZEBO_PLUGIN_PATH" +echo -e "LD_LIBRARY_PATH $LD_LIBRARY_PATH" diff --git a/launch/mavros_posix_sitl.launch b/launch/mavros_posix_sitl.launch index 558f3bbadb714a98af2eca57ca24b230204f3e60..29793e10f8f6e3b4b28b022500eb3f352202f100 100644 --- a/launch/mavros_posix_sitl.launch +++ b/launch/mavros_posix_sitl.launch @@ -1,18 +1,25 @@ <launch> + <!-- MAVROS posix SITL environment launch script --> + <arg name="vehicle" default="iris"/> + <arg name="world" default="$(find mavlink_sitl_gazebo)/worlds/empty.world"/> + <arg name="sdf" default="$(find mavlink_sitl_gazebo)/models/$(arg vehicle)/$(arg vehicle).sdf"/> + <arg name="rcS" default="$(find px4)/posix-configs/SITL/init/rcS_gazebo_$(arg vehicle)"/> + <arg name="headless" default="false"/> <arg name="gui" default="true"/> <arg name="ns" default="/"/> - <arg name="world" default="iris"/> <arg name="build" default="posix_sitl_default"/> <arg name="fcu_url" default="udp://:14540@localhost:14557"/> <include file="$(find px4)/launch/posix_sitl.launch"> + <arg name="world" value="$(arg world)"/> + <arg name="vehicle" value="$(arg vehicle)"/> + <arg name="rcS" value="$(arg rcS)"/> <arg name="headless" value="$(arg headless)"/> <arg name="gui" value="$(arg gui)"/> <arg name="ns" value="$(arg ns)"/> - <arg name="world" value="$(arg world)"/> <arg name="build" value="$(arg build)"/> </include> @@ -22,3 +29,5 @@ <arg name="fcu_url" value="$(arg fcu_url)"/> </include> </launch> + +<!-- vim: set et ft=xml fenc=utf-8 ff=unix sts=0 sw=4 ts=4 : --> diff --git a/launch/mavros_posix_tests_iris.launch b/launch/mavros_posix_tests_iris.launch index 235acda6f2fe4bc05183c8c17fa164605e24adf9..8112f6f1f654c9555dbbe15ae37682296d87cec8 100644 --- a/launch/mavros_posix_tests_iris.launch +++ b/launch/mavros_posix_tests_iris.launch @@ -9,6 +9,7 @@ <arg name="ns" value="$(arg ns)"/> <arg name="headless" value="$(arg headless)"/> <arg name="gui" value="$(arg gui)"/> + <arg name="vehicle" value="iris"/> </include> <group ns="$(arg ns)"> diff --git a/launch/mavros_posix_tests_standard_vtol.launch b/launch/mavros_posix_tests_standard_vtol.launch index d5aa9e285eb1975b87c1bf124a798d2eb043b28c..b20f4801c44f2639fee20caadaf17db63780d934 100644 --- a/launch/mavros_posix_tests_standard_vtol.launch +++ b/launch/mavros_posix_tests_standard_vtol.launch @@ -9,7 +9,7 @@ <arg name="ns" value="$(arg ns)"/> <arg name="headless" value="$(arg headless)"/> <arg name="gui" value="$(arg gui)"/> - <arg name="world" value="standard_vtol"/> + <arg name="vehicle" value="standard_vtol"/> </include> <group ns="$(arg ns)"> diff --git a/launch/posix_sitl.launch b/launch/posix_sitl.launch index 9895ee9d43948615fe01abc8357c101165a6403f..6c2d2da64946896ca69d45a51b071dc57f4d960c 100644 --- a/launch/posix_sitl.launch +++ b/launch/posix_sitl.launch @@ -1,19 +1,31 @@ <launch> + <!-- Posix SITL environment launch script --> + <arg name="vehicle" default="iris"/> + <arg name="world" default="$(find mavlink_sitl_gazebo)/worlds/empty.world"/> + <arg name="sdf" default="$(find mavlink_sitl_gazebo)/models/$(arg vehicle)/$(arg vehicle).sdf"/> + <arg name="rcS" default="$(find px4)/posix-configs/SITL/init/rcS_gazebo_$(arg vehicle)"/> + <arg name="headless" default="false"/> <arg name="gui" default="true"/> <arg name="ns" default="/"/> - <arg name="world" default="iris"/> <arg name="build" default="posix_sitl_default"/> - <node pkg="px4" type="sitl_run.sh" name="simulator" args="posix-configs/SITL/init/rcS none gazebo $(arg world) $(find px4)/build_$(arg build)"> - <env name="no_sim" value="1" /> + <node name="sitl" pkg="px4" type="px4" output="screen" + args="$(find px4) $(arg rcS)"> </node> <include file="$(find gazebo_ros)/launch/empty_world.launch"> <arg name="headless" value="$(arg headless)"/> <arg name="gui" value="$(arg gui)"/> - <arg name="world_name" value="$(find px4)/Tools/sitl_gazebo/worlds/$(arg world).world" /> + <arg name="world_name" value="$(arg world)" /> </include> + + <node name="$(anon vehicle_spawn)" output="screen" pkg="gazebo_ros" type="spawn_model" + args="-sdf -file $(arg sdf) -model $(arg vehicle)"/> + + </launch> + +<!-- vim: set et ft=xml fenc=utf-8 ff=unix sts=0 sw=4 ts=4 : --> diff --git a/posix-configs/SITL/README.md b/posix-configs/SITL/README.md index 2588c4b09bd5df5bcb6a8d91e4b540948cec5a1d..a98a6515faefb64572193ae31c3ed38950965458 100644 --- a/posix-configs/SITL/README.md +++ b/posix-configs/SITL/README.md @@ -105,5 +105,5 @@ param set RC_MAP_POSCTL_SW 7 param set RC_MAP_RETURN_SW 8 param set MC_PITCHRATE_P 0.05 param set MC_ROLLRATE_P 0.05 -mixer load /dev/pwm_output0 ../../ROMFS/px4fmu_common/mixers/quad_x.main.mix +mixer load /dev/pwm_output0 ROMFS/px4fmu_common/mixers/quad_x.main.mix ``` diff --git a/posix-configs/SITL/init/rcS_gazebo_iris b/posix-configs/SITL/init/rcS_gazebo_iris index d985929601b400d5130c33d33362515100660507..6b93b86c2e0fcc116eee3418c499f9e43088005b 100644 --- a/posix-configs/SITL/init/rcS_gazebo_iris +++ b/posix-configs/SITL/init/rcS_gazebo_iris @@ -60,7 +60,7 @@ navigator start ekf2 start mc_pos_control start mc_att_control start -mixer load /dev/pwm_output0 ../../../../ROMFS/px4fmu_common/mixers/quad_w.main.mix +mixer load /dev/pwm_output0 ROMFS/px4fmu_common/mixers/quad_w.main.mix mavlink start -u 14556 -r 4000000 mavlink start -u 14557 -r 4000000 -m onboard -o 14540 mavlink stream -r 50 -s POSITION_TARGET_LOCAL_NED -u 14556 diff --git a/posix-configs/SITL/init/rcS_gazebo_iris_opt_flow b/posix-configs/SITL/init/rcS_gazebo_iris_opt_flow index 2be4900b811e5bf582fa217d36b5329d49b544dd..44060e1b5239317c7697216bd1d951eb392156c7 100644 --- a/posix-configs/SITL/init/rcS_gazebo_iris_opt_flow +++ b/posix-configs/SITL/init/rcS_gazebo_iris_opt_flow @@ -59,7 +59,7 @@ attitude_estimator_q start position_estimator_inav start mc_pos_control start mc_att_control start -mixer load /dev/pwm_output0 ../../../../ROMFS/px4fmu_common/mixers/quad_w.main.mix +mixer load /dev/pwm_output0 ROMFS/px4fmu_common/mixers/quad_w.main.mix mavlink start -u 14556 -r 2000000 mavlink start -u 14557 -r 2000000 -m onboard -o 14540 mavlink stream -r 80 -s POSITION_TARGET_LOCAL_NED -u 14556 diff --git a/posix-configs/SITL/init/rcS_gazebo_plane b/posix-configs/SITL/init/rcS_gazebo_plane index b4f40ce2ddf545eb829c5436a913ed14c8c63ee9..bc837d2acdab42da36aeb40173ff7c5169f3fad7 100644 --- a/posix-configs/SITL/init/rcS_gazebo_plane +++ b/posix-configs/SITL/init/rcS_gazebo_plane @@ -47,7 +47,7 @@ ekf2 start fw_pos_control_l1 start fw_att_control start land_detector start fixedwing -mixer load /dev/pwm_output0 ../../../../ROMFS/sitl/mixers/plane_sitl.main.mix +mixer load /dev/pwm_output0 ROMFS/sitl/mixers/plane_sitl.main.mix mavlink start -u 14556 -r 2000000 mavlink start -u 14557 -r 2000000 -m onboard -o 14540 mavlink stream -r 80 -s POSITION_TARGET_LOCAL_NED -u 14556 diff --git a/posix-configs/SITL/init/rcS_gazebo_solo b/posix-configs/SITL/init/rcS_gazebo_solo index 008261b6ec873a9df4b58bc77d63322a79acb8fb..8701609064e04ffbb06aef0fe3cbd6225c8b9316 100644 --- a/posix-configs/SITL/init/rcS_gazebo_solo +++ b/posix-configs/SITL/init/rcS_gazebo_solo @@ -57,7 +57,7 @@ navigator start ekf2 start mc_pos_control start mc_att_control start -mixer load /dev/pwm_output0 ../../../../ROMFS/px4fmu_common/mixers/quad_x.main.mix +mixer load /dev/pwm_output0 ROMFS/px4fmu_common/mixers/quad_x.main.mix mavlink start -u 14556 -r 4000000 mavlink start -u 14557 -r 4000000 -m onboard -o 14540 mavlink stream -r 50 -s POSITION_TARGET_LOCAL_NED -u 14556 diff --git a/posix-configs/SITL/init/rcS_gazebo_standard_vtol b/posix-configs/SITL/init/rcS_gazebo_standard_vtol index a1f448bb581afcb8b7f7f702af7aaa74c79f23b6..d90ddfa89168d4de66987032bf4d93f12bb3cfd7 100644 --- a/posix-configs/SITL/init/rcS_gazebo_standard_vtol +++ b/posix-configs/SITL/init/rcS_gazebo_standard_vtol @@ -69,7 +69,7 @@ mc_pos_control start mc_att_control start fw_pos_control_l1 start fw_att_control start -mixer load /dev/pwm_output0 ../../../../ROMFS/sitl/mixers/standard_vtol_sitl.main.mix +mixer load /dev/pwm_output0 ROMFS/sitl/mixers/standard_vtol_sitl.main.mix mavlink start -u 14556 -r 2000000 mavlink start -u 14557 -r 2000000 -m onboard -o 14540 mavlink stream -r 80 -s POSITION_TARGET_LOCAL_NED -u 14556 diff --git a/posix-configs/SITL/init/rcS_gazebo_tailsitter b/posix-configs/SITL/init/rcS_gazebo_tailsitter index 2ba72c5b8c0cfb16ce6da097e5c0f23764b97427..04d3a2b2f292d235de87dc9214ede080f9a47f0a 100644 --- a/posix-configs/SITL/init/rcS_gazebo_tailsitter +++ b/posix-configs/SITL/init/rcS_gazebo_tailsitter @@ -60,7 +60,7 @@ mc_pos_control start mc_att_control start fw_pos_control_l1 start fw_att_control start -mixer load /dev/pwm_output0 ../../../../ROMFS/px4fmu_common/mixers/quad_x_vtol.main.mix +mixer load /dev/pwm_output0 ROMFS/px4fmu_common/mixers/quad_x_vtol.main.mix mavlink start -u 14556 -r 2000000 mavlink start -u 14557 -r 2000000 -m onboard -o 14540 mavlink stream -r 80 -s POSITION_TARGET_LOCAL_NED -u 14556 diff --git a/posix-configs/SITL/init/rcS_gazebo_typhoon_h480 b/posix-configs/SITL/init/rcS_gazebo_typhoon_h480 index 87c620c750c9545690c2b98971883e6605a6e85e..8713c62f741e47b4bc8d4019f0b05405b4e92e45 100644 --- a/posix-configs/SITL/init/rcS_gazebo_typhoon_h480 +++ b/posix-configs/SITL/init/rcS_gazebo_typhoon_h480 @@ -59,7 +59,7 @@ navigator start ekf2 start mc_pos_control start mc_att_control start -mixer load /dev/pwm_output0 ../../../../ROMFS/px4fmu_common/mixers/hexa_x.main.mix +mixer load /dev/pwm_output0 ROMFS/px4fmu_common/mixers/hexa_x.main.mix mavlink start -u 14556 -r 4000000 mavlink start -u 14557 -r 4000000 -m onboard -o 14540 mavlink stream -r 50 -s POSITION_TARGET_LOCAL_NED -u 14556 diff --git a/posix-configs/SITL/init/rcS_jmavsim_iris b/posix-configs/SITL/init/rcS_jmavsim_iris index 26db22d8f0b1c2cbc9928207fa03dd08188fd9a2..64cf0a19a1486c887959c8284155aa613679478c 100644 --- a/posix-configs/SITL/init/rcS_jmavsim_iris +++ b/posix-configs/SITL/init/rcS_jmavsim_iris @@ -61,7 +61,7 @@ navigator start ekf2 start mc_pos_control start mc_att_control start -mixer load /dev/pwm_output0 ../../../../ROMFS/px4fmu_common/mixers/quad_x.main.mix +mixer load /dev/pwm_output0 ROMFS/px4fmu_common/mixers/quad_x.main.mix mavlink start -u 14556 -r 2000000 mavlink start -u 14557 -r 2000000 -m onboard -o 14540 mavlink stream -r 80 -s POSITION_TARGET_LOCAL_NED -u 14556 diff --git a/posix-configs/SITL/init/rcS_lpe_gazebo_iris b/posix-configs/SITL/init/rcS_lpe_gazebo_iris index 9c84018e98dbfd184795eb6d68a714d438044878..59b11d1c5e746e25c651baea5a2f3392cba7ddae 100644 --- a/posix-configs/SITL/init/rcS_lpe_gazebo_iris +++ b/posix-configs/SITL/init/rcS_lpe_gazebo_iris @@ -60,7 +60,7 @@ attitude_estimator_q start local_position_estimator start mc_pos_control start mc_att_control start -mixer load /dev/pwm_output0 /usr/share/px4/ROMFS/px4fmu_common/mixers/quad_w.main.mix +mixer load /dev/pwm_output0 ROMFS/px4fmu_common/mixers/quad_w.main.mix mavlink start -u 14556 -r 4000000 mavlink start -u 14557 -r 4000000 -m onboard -o 14540 mavlink stream -r 50 -s POSITION_TARGET_LOCAL_NED -u 14556 diff --git a/posix-configs/SITL/init/rcS_lpe_gazebo_iris_opt_flow b/posix-configs/SITL/init/rcS_lpe_gazebo_iris_opt_flow index c1a6a2eae5cebe370b0708a9e486f36a3921aa9b..759831595a47dd887a7cf004be0ea43a644372c4 100644 --- a/posix-configs/SITL/init/rcS_lpe_gazebo_iris_opt_flow +++ b/posix-configs/SITL/init/rcS_lpe_gazebo_iris_opt_flow @@ -69,7 +69,7 @@ attitude_estimator_q start local_position_estimator start mc_pos_control start mc_att_control start -mixer load /dev/pwm_output0 /usr/share/px4/ROMFS/px4fmu_common/mixers/quad_w.main.mix +mixer load /dev/pwm_output0 ROMFS/px4fmu_common/mixers/quad_w.main.mix mavlink start -u 14556 -r 2000000 mavlink start -u 14557 -r 2000000 -m onboard -o 14540 mavlink stream -r 80 -s POSITION_TARGET_LOCAL_NED -u 14556 diff --git a/posix-configs/SITL/init/rcS_lpe_jmavsim_iris b/posix-configs/SITL/init/rcS_lpe_jmavsim_iris index 106d03227587d9bcdb41782702fedb110475d6f3..286cb13f9c19e74a876398278a7592ed97c40271 100644 --- a/posix-configs/SITL/init/rcS_lpe_jmavsim_iris +++ b/posix-configs/SITL/init/rcS_lpe_jmavsim_iris @@ -61,7 +61,7 @@ attitude_estimator_q start local_position_estimator start mc_pos_control start mc_att_control start -mixer load /dev/pwm_output0 /usr/share/px4/ROMFS/px4fmu_common/mixers/quad_x.main.mix +mixer load /dev/pwm_output0 ROMFS/px4fmu_common/mixers/quad_x.main.mix mavlink start -u 14556 -r 2000000 mavlink start -u 14557 -r 2000000 -m onboard -o 14540 mavlink stream -r 80 -s POSITION_TARGET_LOCAL_NED -u 14556 diff --git a/posix-configs/SITL/init/rcS_tests b/posix-configs/SITL/init/rcS_tests_none_iris similarity index 100% rename from posix-configs/SITL/init/rcS_tests rename to posix-configs/SITL/init/rcS_tests_none_iris diff --git a/posix-configs/SITL/init/rc_iris_ros b/posix-configs/SITL/init/rc_iris_ros index ca1cf0961e026487dcdb34b9bc9c2af8c7c3b836..2aa41cdbc8a26411f303aeec4d1666579c64631a 100644 --- a/posix-configs/SITL/init/rc_iris_ros +++ b/posix-configs/SITL/init/rc_iris_ros @@ -60,7 +60,7 @@ attitude_estimator_q start position_estimator_inav start mc_pos_control_m start mc_att_control_m start -mixer load /dev/pwm_output0 ../../../../ROMFS/px4fmu_common/mixers/quad_x.main.mix +mixer load /dev/pwm_output0 ROMFS/px4fmu_common/mixers/quad_x.main.mix mavlink start -u 14556 -r 2000000 mavlink stream -r 80 -s POSITION_TARGET_LOCAL_NED -u 14556 mavlink stream -r 80 -s LOCAL_POSITION_NED -u 14556 diff --git a/src/firmware/nuttx/CMakeLists.txt b/src/firmware/nuttx/CMakeLists.txt index 53988b43cf5bc26d550825bae7cb4a62e6b4b186..4d27d2758b76f10ae6ce970bd3bc9cc5b576d6dc 100644 --- a/src/firmware/nuttx/CMakeLists.txt +++ b/src/firmware/nuttx/CMakeLists.txt @@ -10,7 +10,7 @@ add_executable(firmware_nuttx builtin_commands.c) -set(nuttx_export_dir ${CMAKE_BINARY_DIR}/${BOARD}/NuttX/nuttx-export) +set(nuttx_export_dir ${PX4_BINARY_DIR}/${BOARD}/NuttX/nuttx-export) set(link_libs romfs apps nuttx m gcc @@ -20,7 +20,7 @@ if(NOT ${BOARD} STREQUAL "sim") list(APPEND link_libs nosys) set(main_link_flags "-T${nuttx_export_dir}/build/ld.script" - "-Wl,-Map=${CMAKE_BINARY_DIR}/${BOARD}/main.map" + "-Wl,-Map=${PX4_BINARY_DIR}/${BOARD}/main.map" ) px4_join(OUT main_link_flags LIST ${main_link_flags} GLUE " ") set_target_properties(firmware_nuttx PROPERTIES LINK_FLAGS ${main_link_flags}) @@ -43,12 +43,12 @@ add_custom_target(check_weak if(NOT ${BOARD} STREQUAL "sim") if (config_io_board) - set(extras "${CMAKE_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board}.bin") + set(extras "${PX4_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board}.bin") endif() set(romfs_dir "ROMFS/px4fmu_common") if (${BOARD} STREQUAL "tap-v1") - set(romfs_dir "ROMFS/tap_common") + set(romfs_dir "ROMFS/tap_common") endif() if (${BOARD} STREQUAL "px4fmu-v2" AND ${LABEL} STREQUAL "test") set(romfs_dir "ROMFS/px4fmu_test") @@ -68,8 +68,8 @@ if(NOT ${BOARD} STREQUAL "sim") px4_nuttx_add_firmware(OUT ${fw_file} BOARD ${BOARD} EXE ${CMAKE_CURRENT_BINARY_DIR}/firmware_nuttx - PARAM_XML ${CMAKE_BINARY_DIR}/parameters.xml - AIRFRAMES_XML ${CMAKE_BINARY_DIR}/airframes.xml + PARAM_XML ${PX4_BINARY_DIR}/parameters.xml + AIRFRAMES_XML ${PX4_BINARY_DIR}/airframes.xml ) configure_file(gdbinit.in .gdbinit) @@ -94,21 +94,21 @@ if(NOT ${BOARD} STREQUAL "sim") add_custom_target(debug_io COMMAND ${GDB} - ${CMAKE_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board} + ${PX4_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board} DEPENDS firmware_nuttx ${CMAKE_CURRENT_BINARY_DIR}/.gdbinit ) add_custom_target(debug_io_tui COMMAND ${GDBTUI} - ${CMAKE_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board} + ${PX4_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board} DEPENDS firmware_nuttx ${CMAKE_CURRENT_BINARY_DIR}/.gdbinit ) add_custom_target(debug_io_ddd COMMAND ${DDD} --debugger ${GDB} - ${CMAKE_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board} + ${PX4_BINARY_DIR}/src/modules/px4iofirmware/${config_io_board} DEPENDS firmware_nuttx ${CMAKE_CURRENT_BINARY_DIR}/.gdbinit ) diff --git a/src/firmware/nuttx/gdbinit.in b/src/firmware/nuttx/gdbinit.in index e820673b216ac39775583c44ec7c885e05039508..fd1b1c451effef5f0416c20e8da9fdab7cccb5b3 100644 --- a/src/firmware/nuttx/gdbinit.in +++ b/src/firmware/nuttx/gdbinit.in @@ -4,4 +4,4 @@ attach 1 monitor vector_catch disable hard set mem inaccessible-by-default off set print pretty -source ${CMAKE_SOURCE_DIR}/Debug/PX4 +source ${PX4_SOURCE_DIR}/Debug/PX4 diff --git a/src/firmware/posix/CMakeLists.txt b/src/firmware/posix/CMakeLists.txt index 3e8e8b52270c8065b682958f76176174488ab6b2..58ab449b5a8fc9cabee1a42f47c7b3c9f2777fa5 100644 --- a/src/firmware/posix/CMakeLists.txt +++ b/src/firmware/posix/CMakeLists.txt @@ -18,7 +18,7 @@ if ("${BOARD}" STREQUAL "eagle" OR ("${BOARD}" STREQUAL "excelsior")) APPS_DEST "/home/linaro" SOURCES px4muorb_stub.c - ${CMAKE_SOURCE_DIR}/src/platforms/posix/main.cpp + ${PX4_SOURCE_DIR}/src/platforms/posix/main.cpp apps.h LINK_LIBS -Wl,--start-group @@ -33,14 +33,14 @@ if ("${BOARD}" STREQUAL "eagle" OR ("${BOARD}" STREQUAL "excelsior")) OS ${OS} BOARD ${BOARD} FILES ${CMAKE_CURRENT_BINARY_DIR}/px4 - ${CMAKE_SOURCE_DIR}/posix-configs/eagle/flight/mainapp.config + ${PX4_SOURCE_DIR}/posix-configs/eagle/flight/mainapp.config DEPENDS px4 DEST /home/linaro) elseif ("${BOARD}" STREQUAL "rpi") add_executable(px4 - ${CMAKE_SOURCE_DIR}/src/platforms/posix/main.cpp + ${PX4_SOURCE_DIR}/src/platforms/posix/main.cpp apps.h ) @@ -57,7 +57,7 @@ elseif ("${BOARD}" STREQUAL "rpi") OS ${OS} BOARD ${BOARD} FILES ${CMAKE_CURRENT_BINARY_DIR}/px4 - ${CMAKE_SOURCE_DIR}/posix-configs/rpi/px4.config + ${PX4_SOURCE_DIR}/posix-configs/rpi/px4.config DEPENDS px4 DEST /home/pi) @@ -67,7 +67,7 @@ elseif ("${BOARD}" STREQUAL "bebop") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static") add_executable(px4 - ${CMAKE_SOURCE_DIR}/src/platforms/posix/main.cpp + ${PX4_SOURCE_DIR}/src/platforms/posix/main.cpp apps.h ) @@ -91,14 +91,14 @@ elseif ("${BOARD}" STREQUAL "bebop") OS ${OS} BOARD ${BOARD} FILES ${CMAKE_CURRENT_BINARY_DIR}/px4 - ${CMAKE_SOURCE_DIR}/posix-configs/bebop/px4.config + ${PX4_SOURCE_DIR}/posix-configs/bebop/px4.config DEPENDS px4 DEST /usr/bin) else() add_executable(px4 - ${CMAKE_SOURCE_DIR}/src/platforms/posix/main.cpp + ${PX4_SOURCE_DIR}/src/platforms/posix/main.cpp apps.h ) if (NOT APPLE) @@ -118,17 +118,43 @@ else() endif() endif() +#============================================================================= +# sitl run targets +# + +set(SITL_WORKING_DIR ${PX4_BINARY_DIR}/tmp) +file(MAKE_DIRECTORY ${SITL_WORKING_DIR}) + add_custom_target(run_config - COMMAND Tools/sitl_run.sh "${config_sitl_rcS}" "${config_sitl_debugger}" - "${config_sitl_viewer}" "${config_sitl_model}" "${CMAKE_BINARY_DIR}" - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMAND Tools/sitl_run.sh + "$<TARGET_FILE:px4>" + "${config_sitl_rcS}" + "${config_sitl_debugger}" + "${config_sitl_viewer}" + "${config_sitl_model}" + "${PX4_SOURCE_DIR}" + "${PX4_BINARY_DIR}" + WORKING_DIRECTORY ${SITL_WORKING_DIR} USES_TERMINAL ) add_dependencies(run_config px4) -foreach(viewer none jmavsim gazebo replay) - foreach(debugger none gdb lldb ddd valgrind) - foreach(model none iris iris_opt_flow tailsitter standard_vtol plane solo typhoon_h480) +# project to build sitl_gazebo if necessary +ExternalProject_Add(sitl_gazebo + SOURCE_DIR ${PX4_SOURCE_DIR}/Tools/sitl_gazebo + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} + BINARY_DIR ${PX4_BINARY_DIR}/build_gazebo + INSTALL_COMMAND "" + ) +set_target_properties(sitl_gazebo PROPERTIES EXCLUDE_FROM_ALL TRUE) + +# create targets for each viewer/model/debugger combination +set(viewers none jmavsim gazebo replay) +set(debuggers none gdb lldb ddd valgrind) +set(models none iris iris_opt_flow tailsitter standard_vtol plane solo typhoon_h480) +foreach(viewer ${viewers}) + foreach(debugger ${debuggers}) + foreach(model ${models}) if (debugger STREQUAL "none") if (model STREQUAL "none") set(_targ_name "${viewer}") @@ -143,13 +169,20 @@ foreach(viewer none jmavsim gazebo replay) endif() endif() add_custom_target(${_targ_name} - COMMAND Tools/sitl_run.sh "${config_sitl_rcS}" - "${debugger}" - "${viewer}" "${model}" "${CMAKE_BINARY_DIR}" - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMAND ${PX4_SOURCE_DIR}/Tools/sitl_run.sh + $<TARGET_FILE:px4> + ${config_sitl_rcS} + ${debugger} + ${viewer} + ${model} + ${PX4_SOURCE_DIR} + ${PX4_BINARY_DIR} + WORKING_DIRECTORY ${SITL_WORKING_DIR} USES_TERMINAL ) - add_dependencies(${_targ_name} px4) + if (viewer STREQUAL "gazebo") + add_dependencies(${_targ_name} sitl_gazebo) + endif() endforeach() endforeach() endforeach() @@ -158,8 +191,25 @@ endforeach() # install # -install(TARGETS px4 DESTINATION bin) +install(TARGETS px4 DESTINATION ${CMAKE_INSTALL_BINDIR}) install(DIRECTORY ${PROJECT_SOURCE_DIR}/ROMFS DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}) install(DIRECTORY ${PROJECT_SOURCE_DIR}/posix-configs DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}) +#============================================================================= +# tests +# + +add_test(NAME rcS_tests + COMMAND ${PX4_SOURCE_DIR}/Tools/sitl_run.sh + $<TARGET_FILE:px4> + posix-configs/SITL/init/rcS_tests + none + none + none + ${PX4_SOURCE_DIR} + ${PX4_BINARY_DIR} + WORKING_DIRECTORY ${SITL_WORKING_DIR}) +set_tests_properties(rcS_tests PROPERTIES + PASS_REGULAR_EXPRESSION "All tests passed") + # vim: set noet ft=cmake fenc=utf-8 ff=unix : diff --git a/src/firmware/qurt/CMakeLists.txt b/src/firmware/qurt/CMakeLists.txt index 81be14afc5af50a8affc65b6b2afbf24acf59ba6..2e30c6aa8d1f426bad8efd8b3fd15d6bd5bece09 100644 --- a/src/firmware/qurt/CMakeLists.txt +++ b/src/firmware/qurt/CMakeLists.txt @@ -1,4 +1,4 @@ -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") include(fastrpc) include(qurt_lib) @@ -7,7 +7,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-prototypes") px4_qurt_generate_builtin_commands( - OUT ${CMAKE_BINARY_DIR}/apps.h + OUT ${PX4_BINARY_DIR}/apps.h MODULE_LIST ${module_libraries}) FASTRPC_STUB_GEN(px4muorb.idl) @@ -20,8 +20,8 @@ if ("${QURT_ENABLE_STUBS}" STREQUAL "1") ${FASTRPC_DSP_INCLUDES} ) add_executable(px4 - ${CMAKE_BINARY_DIR}/src/firmware/qurt/px4muorb_skel.c - ${CMAKE_BINARY_DIR}/apps.h) + ${PX4_BINARY_DIR}/src/firmware/qurt/px4muorb_skel.c + ${PX4_BINARY_DIR}/apps.h) target_link_libraries(px4 -Wl,--start-group @@ -40,7 +40,7 @@ else() QURT_LIB(LIB_NAME px4 IDL_NAME px4muorb SOURCES - ${CMAKE_BINARY_DIR}/apps.h + ${PX4_BINARY_DIR}/apps.h LINK_LIBS ${module_libraries} ${target_libraries} @@ -54,7 +54,7 @@ else() BOARD ${BOARD} FILES ${CMAKE_CURRENT_BINARY_DIR}/libpx4.so ${CMAKE_CURRENT_BINARY_DIR}/libpx4muorb_skel.so - ${CMAKE_SOURCE_DIR}/posix-configs/eagle/flight/px4.config + ${PX4_SOURCE_DIR}/posix-configs/eagle/flight/px4.config DEPENDS px4 px4muorb_skel DEST /usr/share/data/adsp) endif() diff --git a/src/lib/rc/rc_tests/CMakeLists.txt b/src/lib/rc/rc_tests/CMakeLists.txt index 42a5a1b1bafe40e3a7d2aa0f26c4c88f14b3d971..8a5be79ec2cbc18b4810f2e0e9a91c52c13b1c5a 100644 --- a/src/lib/rc/rc_tests/CMakeLists.txt +++ b/src/lib/rc/rc_tests/CMakeLists.txt @@ -40,4 +40,5 @@ px4_add_module( DEPENDS platforms__common ) + # vim: set noet ft=cmake fenc=utf-8 ff=unix : diff --git a/src/lib/rc/rc_tests/RCTest.cpp b/src/lib/rc/rc_tests/RCTest.cpp index d7a834d5c815fb95a255ffae04bf4895d9e37b57..14119835f5869661df707a45bd5ff219c7eb25fc 100644 --- a/src/lib/rc/rc_tests/RCTest.cpp +++ b/src/lib/rc/rc_tests/RCTest.cpp @@ -16,7 +16,7 @@ #if !defined(CONFIG_ARCH_BOARD_SITL) #define TEST_DATA_PATH "/fs/microsd" #else -#define TEST_DATA_PATH "../../../../src/lib/rc/rc_tests/test_data/" +#define TEST_DATA_PATH "./src/lib/rc/rc_tests/test_data/" #endif extern "C" __EXPORT int rc_tests_main(int argc, char *argv[]); @@ -51,8 +51,8 @@ bool RCTest::dsmTest(void) FILE *fp; fp = fopen(filepath, "rt"); + warnx("loading data from: %s", filepath); ut_test(fp != nullptr); - //warnx("loading data from: %s", filepath); float f; unsigned x; diff --git a/src/modules/muorb/krait/CMakeLists.txt b/src/modules/muorb/krait/CMakeLists.txt index b9e054e3e78d5de6f693c2625d29ffdd91948b67..ad0549202659d1e3214a8f67405e2aaf0fdeb3bc 100644 --- a/src/modules/muorb/krait/CMakeLists.txt +++ b/src/modules/muorb/krait/CMakeLists.txt @@ -30,10 +30,10 @@ # POSSIBILITY OF SUCH DAMAGE. # ############################################################################ -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") include(hexagon_sdk) -include_directories(${CMAKE_BINARY_DIR}/src/firmware/posix) +include_directories(${PX4_BINARY_DIR}/src/firmware/posix) include_directories(${HEXAGON_SDK_INCLUDES}) px4_add_module( diff --git a/src/modules/param/CMakeLists.txt b/src/modules/param/CMakeLists.txt index b3148baab1d369868c99d7876c0b7660c610a18e..3f64a9826c9a5f9c2bfccc23f37f09ba13fcd741 100644 --- a/src/modules/param/CMakeLists.txt +++ b/src/modules/param/CMakeLists.txt @@ -34,8 +34,8 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) px4_generate_parameters_source(OUT param_files - XML ${CMAKE_BINARY_DIR}/parameters.xml - SCOPE ${CMAKE_SOURCE_DIR}/cmake/configs/${OS}_${BOARD}_${LABEL}.cmake + XML ${PX4_BINARY_DIR}/parameters.xml + SCOPE ${PX4_SOURCE_DIR}/cmake/configs/${OS}_${BOARD}_${LABEL}.cmake DEPS xml_gen ) diff --git a/src/modules/px4iofirmware/CMakeLists.txt b/src/modules/px4iofirmware/CMakeLists.txt index ab2778711cc19780dc1d67b139f3494353d45f29..67183999eb5130d8640ca434091bbef2e9ccd83c 100644 --- a/src/modules/px4iofirmware/CMakeLists.txt +++ b/src/modules/px4iofirmware/CMakeLists.txt @@ -63,7 +63,7 @@ px4_join(OUT CMAKE_CXX_FLAGS LIST "${cxx_flags}" GLUE " ") include_directories( ${include_dirs} - ${CMAKE_BINARY_DIR}/src/modules/systemlib/mixer + ${PX4_BINARY_DIR}/src/modules/systemlib/mixer . ) link_directories(${link_dirs}) @@ -117,10 +117,10 @@ add_dependencies(${fw_io_name} mixer_gen ) -set(nuttx_export_dir ${CMAKE_BINARY_DIR}/${config_io_board}/NuttX/nuttx-export) +set(nuttx_export_dir ${PX4_BINARY_DIR}/${config_io_board}/NuttX/nuttx-export) set(main_link_flags "-T${nuttx_export_dir}/build/ld.script" - "-Wl,-Map=${CMAKE_BINARY_DIR}/${config_io_board}/main.map" + "-Wl,-Map=${PX4_BINARY_DIR}/${config_io_board}/main.map" ) px4_join(OUT main_link_flags LIST ${main_link_flags} GLUE " ") set_target_properties(${fw_io_name} PROPERTIES LINK_FLAGS ${main_link_flags}) diff --git a/src/modules/systemlib/CMakeLists.txt b/src/modules/systemlib/CMakeLists.txt index 7277ee3ca1c43f01760f71b30e1f414b53ae1ad9..91f405d605d6f6755a432dfff31b167a38a7bf0b 100644 --- a/src/modules/systemlib/CMakeLists.txt +++ b/src/modules/systemlib/CMakeLists.txt @@ -32,7 +32,7 @@ ############################################################################ # for generated files -include_directories(${CMAKE_BINARY_DIR}/src/modules/param) +include_directories(${PX4_BINARY_DIR}/src/modules/param) set(SRCS perf_counter.c diff --git a/src/modules/uavcan/uavcan_servers.hpp b/src/modules/uavcan/uavcan_servers.hpp index 17e94cd311417bc4d100402b0a42267ccd960a6e..47131f2ec6b74a5ebf8b5c21b65393cf8e48051a 100644 --- a/src/modules/uavcan/uavcan_servers.hpp +++ b/src/modules/uavcan/uavcan_servers.hpp @@ -70,7 +70,7 @@ /** * A UAVCAN Server Sub node. */ -class UavcanServers +class __EXPORT UavcanServers { static constexpr unsigned NumIfaces = 1; // UAVCAN_STM32_NUM_IFACES diff --git a/src/platforms/posix/main.cpp b/src/platforms/posix/main.cpp index 646b94610fc159e9ec1915f7f3f468e316e3155c..ac0520c8585a3a959e1760c6787485854bb5bb2a 100644 --- a/src/platforms/posix/main.cpp +++ b/src/platforms/posix/main.cpp @@ -50,6 +50,7 @@ #include "px4_middleware.h" #include "DriverFramework.hpp" #include <termios.h> +#include <sys/stat.h> namespace px4 { @@ -62,6 +63,12 @@ typedef int (*px4_main_t)(int argc, char *argv[]); #define CMD_BUFF_SIZE 100 +#ifdef PATH_MAX +const unsigned path_max_len = PATH_MAX; +#else +const unsigned path_max_len = 1024; +#endif + static bool _ExitFlag = false; static struct termios orig_term; @@ -85,6 +92,96 @@ extern "C" { } } +static inline bool fileExists(const string &name) +{ + struct stat buffer; + return (stat(name.c_str(), &buffer) == 0); +} + +static inline bool dirExists(const string &path) +{ + struct stat info; + + if (stat(path.c_str(), &info) != 0) { + return false; + + } else if (info.st_mode & S_IFDIR) { + return true; + + } else { + return false; + } +} + +static inline void touch(const string &name) +{ + fstream fs; + fs.open(name, ios::out); + fs.close(); +} + +static int mkpath(const char *path, mode_t mode); + +static int do_mkdir(const char *path, mode_t mode) +{ + struct stat st; + int status = 0; + + if (stat(path, &st) != 0) { + /* Directory does not exist. EEXIST for race condition */ + if (mkdir(path, mode) != 0 && errno != EEXIST) { + status = -1; + } + + } else if (!S_ISDIR(st.st_mode)) { + errno = ENOTDIR; + status = -1; + } + + return (status); +} + +/** +** mkpath - ensure all directories in path exist +** Algorithm takes the pessimistic view and works top-down to ensure +** each directory in path exists, rather than optimistically creating +** the last element and working backwards. +*/ +static int mkpath(const char *path, mode_t mode) +{ + char *pp; + char *sp; + int status; + char *copypath = strdup(path); + + status = 0; + pp = copypath; + + while (status == 0 && (sp = strchr(pp, '/')) != 0) { + if (sp != pp) { + /* Neither root nor double slash in path */ + *sp = '\0'; + status = do_mkdir(copypath, mode); + *sp = '/'; + } + + pp = sp + 1; + } + + if (status == 0) { + status = do_mkdir(path, mode); + } + + free(copypath); + return (status); +} + +static string pwd() +{ + char temp[path_max_len]; + return (getcwd(temp, path_max_len) ? string(temp) : string("")); +} + static void print_prompt() { cout.flush(); @@ -134,12 +231,13 @@ static void run_cmd(const vector<string> &appargs, bool exit_on_fail, bool silen static void usage() { - cout << "./px4 [-d] [startup_config] -h" << std::endl; + cout << "./px4 [-d] data_directory startup_config [-h]" << endl; cout << " -d - Optional flag to run the app in daemon mode and does not listen for user input." << - std::endl; - cout << " This is needed if px4 is intended to be run as a upstart job on linux" << std::endl; - cout << "<startup_config> - config file for starting/stopping px4 modules" << std::endl; - cout << " -h - help/usage information" << std::endl; + endl; + cout << " This is needed if px4 is intended to be run as a upstart job on linux" << endl; + cout << "<data_directory> - directory where romfs and posix-configs are located" << endl; + cout << "<startup_config> - config file for starting/stopping px4 modules" << endl; + cout << " -h - help/usage information" << endl; } static void process_line(string &line, bool exit_on_fail) @@ -202,52 +300,131 @@ int main(int argc, char **argv) set_cpu_scaling(); int index = 1; - char *commands_file = nullptr; + string commands_file = ""; + int positional_arg_count = 0; + string data_path = ""; + string node_name = ""; + // parse arguments while (index < argc) { + //cout << "arg: " << index << " : " << argv[index] << endl; + if (argv[index][0] == '-') { // the arg starts with - - if (strcmp(argv[index], "-d") == 0) { + if (strncmp(argv[index], "-d", 2) == 0) { daemon_mode = true; - } else if (strcmp(argv[index], "-h") == 0) { + } else if (strncmp(argv[index], "-h", 2) == 0) { usage(); return 0; - } else if (strcmp(argv[index], "-c") == 0) { + } else if (strncmp(argv[index], "-c", 2) == 0) { chroot_on = true; } else { - PX4_WARN("Unknown/unhandled parameter: %s", argv[index]); + PX4_ERR("Unknown/unhandled parameter: %s", argv[index]); return 1; } + } else if (!strncmp(argv[index], "__", 2)) { + //cout << "ros argument" << endl; + + // ros arguments + if (!strncmp(argv[index], "__name:=", 8)) { + string name_arg = argv[index]; + node_name = name_arg.substr(8); + cout << "node name: " << node_name << endl; + } + } else { - // this is an argument that does not have '-' prefix; treat it like a file name - ifstream infile(argv[index]); + //cout << "positional argument" << endl; - if (infile.good()) { - infile.close(); - commands_file = argv[index]; + positional_arg_count += 1; - } else { - PX4_WARN("Error opening file: %s", argv[index]); - return -1; + if (positional_arg_count == 1) { + data_path = argv[index]; + cout << "data path: " << data_path << endl; + + } else if (positional_arg_count == 2) { + commands_file = argv[index]; + cout << "commands file: " << commands_file << endl; } } ++index; } + if (positional_arg_count != 2) { + PX4_ERR("Error expected 2 position arguments, got %d", positional_arg_count); + usage(); + return -1; + } + + if (commands_file.size() < 1) { + PX4_ERR("Error commands file not specified"); + return -1; + } + + if (!fileExists(commands_file)) { + PX4_ERR("Error opening commands file, does not exist: %s", commands_file.c_str()); + return -1; + } + + // create sym-links + vector<string> path_sym_links; + path_sym_links.push_back("ROMFS"); + path_sym_links.push_back("posix-configs"); + path_sym_links.push_back("src"); + + for (int i = 0; i < path_sym_links.size(); i++) { + string path_sym_link = path_sym_links[i]; + //cout << "path sym link: " << path_sym_link << endl; + string src_path = data_path + "/" + path_sym_link; + string dest_path = pwd() + "/" + path_sym_link; + + PX4_DEBUG("Creating symlink %s -> %s", src_path.c_str(), dest_path.c_str()); + + if (dirExists(path_sym_link)) { continue; } + + // create sym-links + int ret = symlink(src_path.c_str(), dest_path.c_str()); + + if (ret != 0) { + PX4_ERR("Error creating symlink %s -> %s", + src_path.c_str(), dest_path.c_str()); + return ret; + + } else { + PX4_DEBUG("Successfully created symlink %s -> %s", + src_path.c_str(), dest_path.c_str()); + } + } + + // setup rootfs + const string eeprom_path = "./rootfs/eeprom/"; + const string microsd_path = "./rootfs/fs/microsd/"; + if (!fileExists(eeprom_path + "parameters")) { + cout << "creating new parameters file" << endl; + mkpath(eeprom_path.c_str(), S_IRUSR | S_IWUSR | S_IXUSR); + touch(eeprom_path + "parameters"); + } + + if (!fileExists(microsd_path + "dataman")) { + cout << "creating new dataman file" << endl; + mkpath(microsd_path.c_str(), S_IRUSR | S_IWUSR | S_IXUSR); + touch(microsd_path + "dataman"); + } + + // initialize DriverFramework::Framework::initialize(); px4::init_once(); px4::init(argc, argv, "px4"); // if commandfile is present, process the commands from the file - if (commands_file != nullptr) { - ifstream infile(commands_file); + if (commands_file.size() != 0) { + ifstream infile(commands_file.c_str()); if (infile.is_open()) { for (string line; getline(infile, line, '\n');) { @@ -261,7 +438,7 @@ int main(int argc, char **argv) } } else { - PX4_WARN("Error opening file: %s", commands_file); + PX4_ERR("Error opening commands file: %s", commands_file.c_str()); } } @@ -270,12 +447,6 @@ int main(int argc, char **argv) // this is not an attempt to secure the environment, // rather, to replicate a deployed file system. -#ifdef PATH_MAX - const unsigned path_max_len = PATH_MAX; -#else - const unsigned path_max_len = 1024; -#endif - char pwd_path[path_max_len]; const char *folderpath = "/rootfs/"; @@ -419,3 +590,5 @@ int main(int argc, char **argv) return OK; } + +/* vim: set noet fenc=utf-8 ff=unix sts=0 sw=4 ts=4 : */ diff --git a/src/platforms/posix/px4_layer/CMakeLists.txt b/src/platforms/posix/px4_layer/CMakeLists.txt index 344621c694d0f8eafeb6cf1f3f6241aa4f1e6b1d..fa1eed4ffccdd026f2961db3324aa26fb3d4d603 100644 --- a/src/platforms/posix/px4_layer/CMakeLists.txt +++ b/src/platforms/posix/px4_layer/CMakeLists.txt @@ -32,10 +32,10 @@ ############################################################################ if("${CONFIG_SHMEM}" STREQUAL "1") - set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") include(hexagon_sdk) - include_directories(${CMAKE_BINARY_DIR}/src/firmware/posix) + include_directories(${PX4_BINARY_DIR}/src/firmware/posix) include_directories(${HEXAGON_SDK_INCLUDES}) list(APPEND SHMEM_SRCS shmem_posix.c diff --git a/src/platforms/qurt/px4_layer/CMakeLists.txt b/src/platforms/qurt/px4_layer/CMakeLists.txt index 38dbd8a46f93436e73b9d2abdae815b9972b18a2..ed6e56790aeec99294cd673038fa9e87876f5db6 100644 --- a/src/platforms/qurt/px4_layer/CMakeLists.txt +++ b/src/platforms/qurt/px4_layer/CMakeLists.txt @@ -30,7 +30,7 @@ # POSSIBILITY OF SUCH DAMAGE. # ############################################################################ -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/cmake_hexagon") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon") include(hexagon_sdk) include_directories(${HEXAGON_8074_INCLUDES}) diff --git a/src/systemcmds/tests/test_mixer.cpp b/src/systemcmds/tests/test_mixer.cpp index 88c37d6e9ca4fa610220dd8350172c85d982c780..da2cff5d5a40fb3463e0cb7c2c304a906306a545 100644 --- a/src/systemcmds/tests/test_mixer.cpp +++ b/src/systemcmds/tests/test_mixer.cpp @@ -90,7 +90,7 @@ int test_mixer(int argc, char *argv[]) #if !defined(CONFIG_ARCH_BOARD_SITL) const char *filename = "/etc/mixers/IO_pass.mix"; #else - const char *filename = "../../../../ROMFS/px4fmu_test/mixers/IO_pass.mix"; + const char *filename = "ROMFS/px4fmu_test/mixers/IO_pass.mix"; #endif //PX4_INFO("loading: %s", filename); @@ -400,7 +400,7 @@ int test_mixer(int argc, char *argv[]) #if !defined(CONFIG_ARCH_BOARD_SITL) filename = "/etc/mixers/quad_test.mix"; #else - filename = "../../../../ROMFS/px4fmu_test/mixers/quad_test.mix"; + filename = "ROMFS/px4fmu_test/mixers/quad_test.mix"; #endif load_mixer_file(filename, &buf[0], sizeof(buf)); diff --git a/src/systemcmds/topic_listener/CMakeLists.txt b/src/systemcmds/topic_listener/CMakeLists.txt index 0984e546e3b7dab29fd08d667463a531795e59b5..bb955490bc78cb64013b71b86cc14a50c0f397d4 100644 --- a/src/systemcmds/topic_listener/CMakeLists.txt +++ b/src/systemcmds/topic_listener/CMakeLists.txt @@ -32,14 +32,14 @@ ############################################################################ add_custom_command(OUTPUT topic_listener.cpp - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/generate_listener.py ${CMAKE_SOURCE_DIR} > topic_listener.cpp + COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/generate_listener.py ${PX4_SOURCE_DIR} > topic_listener.cpp DEPENDS msg_gen ) add_custom_target(generate_topic_listener DEPENDS topic_listener.cpp - ${CMAKE_SOURCE_DIR}/Tools/generate_listener.py) + ${PX4_SOURCE_DIR}/Tools/generate_listener.py) px4_add_module( MODULE systemcmds__topic_listener diff --git a/unittests/CMakeLists.txt b/unittests/CMakeLists.txt index 9df3adcce332fd03b36f6c9bcb0d041505b402a9..b6664b26e8035703802e6a08c6d6db5872c00cd5 100644 --- a/unittests/CMakeLists.txt +++ b/unittests/CMakeLists.txt @@ -13,15 +13,19 @@ enable_testing() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -std=gnu99 -g") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -std=c++11 -g -fno-exceptions -fno-rtti -fno-threadsafe-statics") +if (NOT PX4_SOURCE_DIR) + set(PX4_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..") +endif() + -set(GTEST_DIR ${CMAKE_SOURCE_DIR}/googletest) +set(GTEST_DIR ${PX4_SOURCE_DIR}/unittests/googletest) add_subdirectory(${GTEST_DIR}) include_directories(${GTEST_DIR}/include) -set(PX4_SRC ${CMAKE_SOURCE_DIR}/../src) +set(PX4_SRC ${PX4_SOURCE_DIR}/src) set(PX4_SITL_BUILD ${PX4_SRC}/../build_posix_sitl_default) -include_directories(${CMAKE_SOURCE_DIR}) +include_directories(${PX4_SOURCE_DIR}) include_directories(${PX4_SITL_BUILD}/src) include_directories(${PX4_SITL_BUILD}/src/modules) include_directories(${PX4_SITL_BUILD}/src/modules/param) @@ -94,7 +98,7 @@ target_include_directories(px4_platform PUBLIC ${PX4_SRC}/platforms/posix/work_q # check add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} -j2 --output-on-failure - WORKING_DIR ${CMAKE_BINARY_DIR} + WORKING_DIR ${PX4_BINARY_DIR} USES_TERMINAL) # add_gtest @@ -105,7 +109,7 @@ function(add_gtest) else() target_link_libraries(${test_name} gtest_main pthread rt px4_platform) endif() - add_test(NAME ${test_name} COMMAND ${test_name} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) + add_test(NAME ${test_name} COMMAND ${test_name} WORKING_DIRECTORY ${PX4_SOURCE_DIR}) add_dependencies(check ${test_name}) endforeach() endfunction()