From 8290f592475313474c3f210fe3bc5086146d9b17 Mon Sep 17 00:00:00 2001
From: Daniel Agar <daniel@agar.ca>
Date: Sun, 17 Apr 2016 17:18:26 -0400
Subject: [PATCH] travis-ci use make check

---
 .travis.yml | 21 +++++----------------
 Makefile    | 48 ++++++++++++++++++++++++++++++++----------------
 2 files changed, 37 insertions(+), 32 deletions(-)

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"
-- 
GitLab