diff --git a/.travis.yml b/.travis.yml index 71fb61e26a..486abb2f29 100644 --- a/.travis.yml +++ b/.travis.yml @@ -98,34 +98,23 @@ env: script: - git submodule update --quiet --init --recursive - - echo 'Building POSIX Firmware..' && make posix_sitl_default - - echo 'Running Tests..' && make posix_sitl_default test - - build_configs="px4fmu-v1_default px4fmu-v2_default px4fmu-v2_lpe mindpx-v2_default px4-stm32f4discovery_default uavcan_firmware px4fmu-v4_default" - if [ "${TRAVIS_OS_NAME}" = "linux" ]; then - cd ${TRAVIS_BUILD_DIR} - && make check_format - && arm-none-eabi-gcc --version - && for config in $build_configs; do echo && echo "Building NuttX ${config} Firmware" && make $config && echo; done - && echo 'Running Tests..' && make tests - ; + arm-none-eabi-gcc --version && make check VECTORCONTROL=1; + elif [ "${TRAVIS_OS_NAME}" = "osx" ]; then + make check_posix_sitl_default; fi after_success: - if [[ "${TRAVIS_OS_NAME}" = "linux" && "${GCC_VER}" = "4.8" ]]; then make package_firmware - && cp build_px4fmu-v1_default/src/firmware/nuttx/nuttx-px4fmu-v1-default.px4 px4fmu-v1_default.px4 - && cp build_px4fmu-v2_default/src/firmware/nuttx/nuttx-px4fmu-v2-default.px4 px4fmu-v2_default.px4 - && cp build_px4fmu-v2_lpe/src/firmware/nuttx/nuttx-px4fmu-v2-lpe.px4 px4fmu-v2_lpe.px4 - && cp build_px4fmu-v4_default/src/firmware/nuttx/nuttx-px4fmu-v4-default.px4 px4fmu-v4_default.px4 - && cp build_px4-stm32f4discovery_default/src/firmware/nuttx/nuttx-px4-stm32f4discovery-default.px4 px4-stm32f4discovery-default.px4 + && find . -name \*.px4 -exec cp "{}" . \; && ./CI-Tools/s3cmd-put px4fmu-v1_default.px4 px4fmu-v2_default.px4 px4fmu-v2_lpe.px4 px4fmu-v4_default.px4 px4-stm32f4discovery-default.px4 build_px4fmu-v2_default/parameters.xml build_px4fmu-v2_default/airframes.xml CI-Tools/directory/index.html Firmware/$TRAVIS_BRANCH/ && ./CI-Tools/s3cmd-put Firmware.zip archives/Firmware/$TRAVIS_BRANCH/$TRAVIS_BUILD_ID/ && ./CI-Tools/s3cmd-put CI-Tools/directory/index.html archives/Firmware/$TRAVIS_BRANCH/ && ./CI-Tools/s3cmd-put CI-Tools/index.html index.html && ./CI-Tools/s3cmd-put CI-Tools/timestamp.html timestamp.html && echo "" - && echo "Binaries have been posted to:" - && echo https://px4-travis.s3.amazonaws.com/archives/Firmware/$TRAVIS_BRANCH/$TRAVIS_BUILD_ID/Firmware.zip + && echo "Binaries have been posted to:" https://px4-travis.s3.amazonaws.com/archives/Firmware/$TRAVIS_BRANCH/$TRAVIS_BUILD_ID/Firmware.zip ; fi diff --git a/Makefile b/Makefile index ac1c5568f8..577ebf3838 100644 --- a/Makefile +++ b/Makefile @@ -111,7 +111,7 @@ define cmake-build +@if [ $(PX4_CMAKE_GENERATOR) = "Ninja" ] && [ -e $(PWD)/build_$@/Makefile ]; then rm -rf $(PWD)/build_$@; fi +@if [ ! -e $(PWD)/build_$@/CMakeCache.txt ]; then Tools/check_submodules.sh && mkdir -p $(PWD)/build_$@ && cd $(PWD)/build_$@ && cmake .. -G$(PX4_CMAKE_GENERATOR) -DCONFIG=$(1) || (cd .. && rm -rf $(PWD)/build_$@); fi +@Tools/check_submodules.sh -+@(echo PX4 CONFIG: $@ && cd $(PWD)/build_$@ && $(PX4_MAKE) $(PX4_MAKE_ARGS) $(ARGS)) ++@(echo "PX4 CONFIG: $@" && cd $(PWD)/build_$@ && $(PX4_MAKE) $(PX4_MAKE_ARGS) $(ARGS)) endef # create empty targets to avoid msgs for targets passed to cmake @@ -121,6 +121,12 @@ $(1): .PHONY: $(1) endef +define colorecho + @tput setaf 6 + @echo $1 + @tput sgr0 +endef + # ADD CONFIGS HERE # -------------------------------------------------------------------- # Do not put any spaces between function arguments. @@ -202,21 +208,39 @@ run_sitl_ros: sitl_deprecation # Other targets # -------------------------------------------------------------------- +.PHONY: uavcan_firmware check check_format unittest tests package_firmware clean submodulesclean distclean +.NOTPARALLEL: uavcan_firmware check check_format unittest tests package_firmware clean submodulesclean distclean + uavcan_firmware: - @(rm -rf vectorcontrol && git clone -q https://github.com/thiemar/vectorcontrol && cd vectorcontrol && BOARD=s2740vc_1_0 make --silent --no-print-directory && BOARD=px4esc_1_6 make --silent --no-print-directory && ../Tools/uavcan_copy.sh) +ifeq ($(VECTORCONTROL),1) + $(call colorecho,"Downloading and building Vector control (FOC) firmware for the S2740VC and PX4ESC 1.6") + @(rm -rf vectorcontrol && git clone --quiet --depth 1 https://github.com/thiemar/vectorcontrol.git && cd vectorcontrol && BOARD=s2740vc_1_0 make --silent --no-print-directory && BOARD=px4esc_1_6 make --silent --no-print-directory && ../Tools/uavcan_copy.sh) +endif + +check: check_px4fmu-v1_default check_px4fmu-v2_default check_px4fmu-v4_default_and_uavcan check_mindpx-v2_default check_px4-stm32f4discovery_default check_posix_sitl_default check_unittest check_format check_format: + $(call colorecho,"Checking formatting with astyle") @./Tools/fix_code_style.sh @./Tools/check_code_style.sh -check: px4fmu-v1_default px4fmu-v2_default px4fmu-v4_default mindpx-v2_default px4-stm32f4discovery_default check_format tests +check_%: + @echo + $(call colorecho,"Building" $(subst check_,,$@)) + @$(MAKE) --no-print-directory $(subst check_,,$@) + @echo + +check_px4fmu-v4_default: uavcan_firmware +check_px4fmu-v4_default_and_uavcan: check_px4fmu-v4_default + @echo +ifeq ($(VECTORCONTROL),1) + @echo "Cleaning up vectorcontrol firmware" + @rm -rf vectorcontrol + @rm -rf ROMFS/px4fmu_common/uavcan +endif unittest: posix_sitl_default - @(cd unittests && cmake -G$(PX4_CMAKE_GENERATOR) && $(PX4_MAKE) $(PX4_MAKE_ARGS) && ctest) - -tests: unittest - @make --no-print-directory px4fmu-v2_default test - @make --no-print-directory posix_sitl_default test + @(cd unittests && cmake -G$(PX4_CMAKE_GENERATOR) && $(PX4_MAKE) $(PX4_MAKE_ARGS) && ctest -j2 --output-on-failure) package_firmware: @zip --junk-paths Firmware.zip `find . -name \*.px4` @@ -244,14 +268,6 @@ $(foreach targ,$(cmake_targets),$(eval $(call cmake-targ,$(targ)))) CONFIGS:=$(shell ls cmake/configs | sed -e "s~.*/~~" | sed -e "s~\..*~~") -# Future: -#$(CONFIGS): -## @cd Build/$@ && cmake ../.. -DCONFIG=$@ -# @cd Build/$@ && make -# -#clean-all: -# @rm -rf Build/* -# #help: # @echo # @echo "Type 'make ' and hit the tab key twice to see a list of the available"