From 93fee9df3ff1565196de5c4c8ab7926804b6d8c5 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 3 Mar 2016 10:59:21 +0300 Subject: [PATCH] Add Makefile and run tests on Travis --- .travis.yml | 4 +++ tests/host/Makefile | 79 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 tests/host/Makefile diff --git a/.travis.yml b/.travis.yml index 5a510a112..b15b9501b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,10 @@ os: - linux script: + - set -e + - pushd $TRAVIS_BUILD_DIR/tests/host + - make + - popd - wget -O arduino.tar.xz https://www.arduino.cc/download.php?f=/arduino-nightly-linux64.tar.xz - tar xf arduino.tar.xz - mv arduino-nightly $HOME/arduino_ide diff --git a/tests/host/Makefile b/tests/host/Makefile new file mode 100644 index 000000000..2d6a1a723 --- /dev/null +++ b/tests/host/Makefile @@ -0,0 +1,79 @@ +OBJECT_DIRECTORY := obj +BINARY_DIRECTORY := bin +OUTPUT_BINARY := $(BINARY_DIRECTORY)/host_tests +CORE_PATH := ../../cores/esp8266 + +CORE_CPP_FILES := $(addprefix $(CORE_PATH)/,\ + StreamString.cpp \ + Stream.cpp \ + WString.cpp \ + Print.cpp \ + FS.cpp \ + spiffs_api.cpp \ +) + +CORE_C_FILES := $(addprefix $(CORE_PATH)/,\ + core_esp8266_noniso.c \ + spiffs/spiffs_cache.c \ + spiffs/spiffs_check.c \ + spiffs/spiffs_gc.c \ + spiffs/spiffs_hydrogen.c \ + spiffs/spiffs_nucleus.c \ +) + +MOCK_CPP_FILES := $(addprefix common/,\ + Arduino.cpp \ + spiffs_mock.cpp \ + WMath.cpp \ +) + +INC_PATHS += $(addprefix -I, \ + common \ + $(CORE_PATH) \ +) + +TEST_CPP_FILES := \ + fs/test_fs.cpp \ + +CXXFLAGS += -std=c++11 -Wall +CFLAGS += -std=c99 -Wall + +remduplicates = $(strip $(if $1,$(firstword $1) $(call remduplicates,$(filter-out $(firstword $1),$1)))) + +C_SOURCE_FILES = $(CORE_C_FILES) +CPP_SOURCE_FILES = $(MOCK_CPP_FILES) $(CORE_CPP_FILES) $(TEST_CPP_FILES) +C_SOURCE_FILE_NAMES = $(notdir $(C_SOURCE_FILES)) +C_PATHS = $(call remduplicates, $(dir $(C_SOURCE_FILES) ) ) +C_OBJECTS = $(addprefix $(OBJECT_DIRECTORY)/, $(C_SOURCE_FILE_NAMES:.c=.c.o) ) + +CPP_SOURCE_FILE_NAMES = $(notdir $(CPP_SOURCE_FILES)) +CPP_PATHS = $(call remduplicates, $(dir $(CPP_SOURCE_FILES) )) +CPP_OBJECTS = $(addprefix $(OBJECT_DIRECTORY)/, $(CPP_SOURCE_FILE_NAMES:.cpp=.cpp.o) ) + +$(warning $(call remduplicates, $(dir $(CPP_SOURCE_FILES) ))) +vpath %.c $(C_PATHS) +vpath %.cpp $(CPP_PATHS) + +OBJECTS = $(C_OBJECTS) $(CPP_OBJECTS) + +all: $(OUTPUT_BINARY) test + +test: $(OUTPUT_BINARY) + $(OUTPUT_BINARY) + +$(OBJECT_DIRECTORY): + mkdir -p $@ + +$(BINARY_DIRECTORY): + mkdir -p $@ + +$(C_OBJECTS): $(OBJECT_DIRECTORY)/%.c.o: %.c + $(CC) $(CFLAGS) $(INC_PATHS) -c -o $@ $< + +$(CPP_OBJECTS): $(OBJECT_DIRECTORY)/%.cpp.o: %.cpp + $(CXX) $(CXXFLAGS) $(INC_PATHS) -c -o $@ $< + + +# Link +$(OUTPUT_BINARY): $(BINARY_DIRECTORY) $(OBJECT_DIRECTORY) $(OBJECTS) + $(CXX) $(LDFLAGS) $(OBJECTS) $(LIBS) -o $(OUTPUT_BINARY)