From 2c8ab3f18b2ed9fdc1742ec60b6e34248d04efe3 Mon Sep 17 00:00:00 2001 From: Chris Johnson Date: Tue, 4 Dec 2018 21:44:39 -0600 Subject: feat: Add initial support for PlatformIO and Arduino --- .travis.yml | 9 +++++++++ ci/build-platformio.sh | 2 ++ ci/install-platformio.sh | 5 +++++ googlemock/src/gmock_main.cc | 16 ++++++++++++++++ googletest/src/gtest_main.cc | 14 ++++++++++++++ platformio.ini | 31 +++++++++++++++++++++++++++++++ 6 files changed, 77 insertions(+) create mode 100644 ci/build-platformio.sh create mode 100644 ci/install-platformio.sh create mode 100644 platformio.ini diff --git a/.travis.yml b/.travis.yml index 2b0ac21..74e1b8f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,12 @@ language: cpp matrix: include: - os: linux + dist: trusty + sudo: required + group: deprecated-2017Q3 + install: ./ci/install-platformio.sh + script: ./ci/build-platformio.sh + - os: linux compiler: gcc sudo : true install: ./ci/install-linux.sh && ./ci/log-config.sh @@ -44,6 +50,9 @@ matrix: env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 if: type != pull_request +before_install: + - chmod -R +x ./ci/*.sh + # These are the install and build (script) phases for the most common entries in the matrix. They could be included # in each entry in the matrix, but that is just repetitive. install: diff --git a/ci/build-platformio.sh b/ci/build-platformio.sh new file mode 100644 index 0000000..1d7658d --- /dev/null +++ b/ci/build-platformio.sh @@ -0,0 +1,2 @@ +# run PlatformIO builds +platformio run diff --git a/ci/install-platformio.sh b/ci/install-platformio.sh new file mode 100644 index 0000000..4d7860a --- /dev/null +++ b/ci/install-platformio.sh @@ -0,0 +1,5 @@ +# install PlatformIO +sudo pip install -U platformio + +# update PlatformIO +platformio update diff --git a/googlemock/src/gmock_main.cc b/googlemock/src/gmock_main.cc index a3a271e..50d0b42 100644 --- a/googlemock/src/gmock_main.cc +++ b/googlemock/src/gmock_main.cc @@ -32,6 +32,20 @@ #include "gmock/gmock.h" #include "gtest/gtest.h" +#ifdef ARDUINO +void setup() { + int argc = 0; + char** argv = nullptr; + // Since Google Mock depends on Google Test, InitGoogleMock() is + // also responsible for initializing Google Test. Therefore there's + // no need for calling testing::InitGoogleTest() separately. + testing::InitGoogleMock(&argc, argv); +} +void loop() { + RUN_ALL_TESTS(); +} +#else + // MS C++ compiler/linker has a bug on Windows (not on Windows CE), which // causes a link error when _tmain is defined in a static library and UNICODE // is enabled. For this reason instead of _tmain, main function is used on @@ -52,3 +66,5 @@ GTEST_API_ int main(int argc, char** argv) { testing::InitGoogleMock(&argc, argv); return RUN_ALL_TESTS(); } +#endif + diff --git a/googletest/src/gtest_main.cc b/googletest/src/gtest_main.cc index 2113f62..0d343ba 100644 --- a/googletest/src/gtest_main.cc +++ b/googletest/src/gtest_main.cc @@ -30,8 +30,22 @@ #include #include "gtest/gtest.h" +#ifdef ARDUINO +void setup() { + int argc = 0; + char** argv = nullptr; + testing::InitGoogleTest(&argc, argv); +} + +void loop() { + RUN_ALL_TESTS(); +} + +#else + GTEST_API_ int main(int argc, char **argv) { printf("Running main() from %s\n", __FILE__); testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } +#endif diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..3910026 --- /dev/null +++ b/platformio.ini @@ -0,0 +1,31 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; http://docs.platformio.org/page/projectconf.html + + +[platformio] +#src_dir = ./googlemock +#src_dir = ./googletest +src_dir = . + +[env:googletest_esp32] +platform = espressif32 +board = esp32dev +framework = arduino +build_flags = -I./googletest/include -I./googletest +src_filter = +<*> -<.git/> - - - - - - + + +upload_speed = 921600 + +[env:googlemock_esp32] +platform = espressif32 +board = esp32dev +framework = arduino +build_flags = -I./googlemock/include -I./googletest/include -I./googletest -I./googlemock +src_filter = +<*> -<.git/> - - - + + + +upload_speed = 921600 -- cgit v0.12