diff --git a/CMakeLists.txt b/CMakeLists.txt index 9397b87c99..498b6ba7d8 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 f80a24399c..b4a02f8d8c 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 00dcabb1c2..9486c331a7 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 6e467c31fd..8dfa2a62c6 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 ef05520375..88f1e57f98 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 41c9d32df8..32bbf050fd 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 c71db2fc31..377a90f335 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 75f8d054ed..2c0a5f7315 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 c38d726702..13d02e6d28 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 f43b782045..e500752214 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 b72c5a8190..1839d8689d 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 866e19dc0d..ad746ee426 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 2dad824901..8a5b8187fb 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 5538ffe35a..72e945db0f 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 3a6dd22755..be81961425 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 909bdeecb1..d38da131bd 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 ec172e7602..534d327f7e 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 95a5c59beb..f47c421dce 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 46243fc361..72896086c6 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 e58f370282..b2a54c4f65 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 c43e51974c..fc66327184 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 9a9029f1c0..0c7bf4b0a2 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 6fa6d9c0b7..62caa65e72 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 3c99cba7a7..a20a2d8cfe 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 e1a66ea827..db16c17d2a 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 469432818f..9eba5dea83 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 f0fdb2dee5..852fe55b1f 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 505ffd00cd..2af8ebdfb2 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 9170b3da47..9131478577 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 16aa788edc..505635b8bd 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 195219f7af..1d30699014 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 c969263be1..9a54b6277e 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 d661bfa5eb..7786097c4c 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 efb1135d7b..f5387c515e 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 67870b1e2c..0000000000 --- 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 2a3a4c2a0d..61569a1a73 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 -# 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 +# TODO +# BAGS=$ROS_HOME +# CHARTS=$ROS_HOME/charts +# EXPORT_CHARTS=/sitl/testing/export_charts.py + +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 6c22bbe192..8cc4a5c58b 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 558f3bbadb..29793e10f8 100644 --- a/launch/mavros_posix_sitl.launch +++ b/launch/mavros_posix_sitl.launch @@ -1,18 +1,25 @@ + + + + + + - + + + - @@ -22,3 +29,5 @@ + + diff --git a/launch/mavros_posix_tests_iris.launch b/launch/mavros_posix_tests_iris.launch index 235acda6f2..8112f6f1f6 100644 --- a/launch/mavros_posix_tests_iris.launch +++ b/launch/mavros_posix_tests_iris.launch @@ -9,6 +9,7 @@ + diff --git a/launch/mavros_posix_tests_standard_vtol.launch b/launch/mavros_posix_tests_standard_vtol.launch index d5aa9e285e..b20f4801c4 100644 --- a/launch/mavros_posix_tests_standard_vtol.launch +++ b/launch/mavros_posix_tests_standard_vtol.launch @@ -9,7 +9,7 @@ - + diff --git a/launch/posix_sitl.launch b/launch/posix_sitl.launch index 9895ee9d43..6c2d2da649 100644 --- a/launch/posix_sitl.launch +++ b/launch/posix_sitl.launch @@ -1,19 +1,31 @@ + + + + + + - - - + - + + + + + + + diff --git a/posix-configs/SITL/README.md b/posix-configs/SITL/README.md index 2588c4b09b..a98a6515fa 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 d985929601..6b93b86c2e 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 2be4900b81..44060e1b52 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 b4f40ce2dd..bc837d2acd 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 008261b6ec..8701609064 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 a1f448bb58..d90ddfa891 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 2ba72c5b8c..04d3a2b2f2 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 87c620c750..8713c62f74 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 26db22d8f0..64cf0a19a1 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 9c84018e98..59b11d1c5e 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 c1a6a2eae5..759831595a 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 106d032275..286cb13f9c 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 ca1cf0961e..2aa41cdbc8 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 53988b43cf..4d27d2758b 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 e820673b21..fd1b1c451e 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 3e8e8b5227..58ab449b5a 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 + "$" + "${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 + $ + ${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 + $ + 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 81be14afc5..2e30c6aa8d 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 42a5a1b1ba..8a5be79ec2 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 d7a834d5c8..14119835f5 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 b9e054e3e7..ad05492026 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 b3148baab1..3f64a9826c 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 ab2778711c..67183999eb 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 7277ee3ca1..91f405d605 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 17e94cd311..47131f2ec6 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 646b94610f..ac0520c858 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 +#include 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 &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 << " - 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 << " - directory where romfs and posix-configs are located" << endl; + cout << " - 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(); + positional_arg_count += 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]; - - } else { - PX4_WARN("Error opening file: %s", argv[index]); - return -1; + 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 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 344621c694..fa1eed4ffc 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 38dbd8a46f..ed6e56790a 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 88c37d6e9c..da2cff5d5a 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 0984e546e3..bb955490bc 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 9df3adcce3..b6664b26e8 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()