diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6829bf61..c8c4c890 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -125,6 +125,42 @@ jobs: env: UBSAN_OPTIONS: print_stacktrace=1 + conf_test: + name: Test configuration on Linux + needs: [gcc, clang] + runs-on: ubuntu-20.04 + steps: + - name: Install + run: sudo apt-get install -y g++-multilib + - name: Checkout + uses: actions/checkout@v2 + - name: GCC 32-bit + run: g++ -std=c++11 -m32 -Isrc extras/conf_test/x86-linux.cpp + - name: GCC 64-bit + run: g++ -std=c++11 -m64 -Isrc extras/conf_test/x64.cpp + - name: Clang 32-bit + run: clang++ -std=c++11 -m32 -Isrc extras/conf_test/x86-linux.cpp + - name: Clang 64-bit + run: clang++ -std=c++11 -m64 -Isrc extras/conf_test/x64.cpp + + conf_test_windows: + name: Test configuration on Windows + runs-on: windows-2019 + needs: [gcc, clang] + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: 32-bit + run: | + call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars32.bat" + cl /Isrc extras/conf_test/x86-windows.cpp + shell: cmd + - name: 64-bit + run: | + call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + cl /Isrc extras/conf_test/x64.cpp + shell: cmd + xcode: name: XCode needs: clang @@ -203,29 +239,36 @@ jobs: libraries: - SD - Ethernet + conf_test: avr - platform: espressif8266 board: huzzah + conf_test: esp8266 - platform: espressif32 board: esp32dev libraries: - Ethernet + conf_test: esp8266 - platform: atmelsam board: mkr1000USB libraries: - SD - Ethernet + conf_test: esp8266 - platform: teensy board: teensy31 + conf_test: esp8266 - platform: ststm32 board: adafruit_feather_f405 libraries: - SD - Ethernet + conf_test: esp8266 - platform: nordicnrf52 board: adafruit_feather_nrf52840 libraries: - SD - Ethernet + conf_test: esp8266 steps: - name: Checkout uses: actions/checkout@v2 @@ -256,6 +299,9 @@ jobs: - name: Install libraries if: ${{ matrix.libraries }} run: platformio lib install arduino-libraries/${{ join(matrix.libraries, ' arduino-libraries/') }} + - name: Test configuration + run: platformio ci "extras/conf_test/${{ matrix.conf_test }}.cpp" -l '.' -b ${{ matrix.board }} + if: ${{ matrix.conf_test }} - name: Build JsonConfigFile run: platformio ci "examples/JsonConfigFile/JsonConfigFile.ino" -l '.' -b ${{ matrix.board }} - name: Build JsonFilterExample diff --git a/extras/conf_test/avr.cpp b/extras/conf_test/avr.cpp new file mode 100644 index 00000000..aca62eff --- /dev/null +++ b/extras/conf_test/avr.cpp @@ -0,0 +1,16 @@ +#include + +static_assert(ARDUINOJSON_USE_LONG_LONG == 0, "ARDUINOJSON_USE_LONG_LONG"); + +static_assert(ARDUINOJSON_SLOT_OFFSET_SIZE == 1, + "ARDUINOJSON_SLOT_OFFSET_SIZE"); + +static_assert(ARDUINOJSON_LITTLE_ENDIAN == 1, "ARDUINOJSON_LITTLE_ENDIAN"); + +static_assert(ARDUINOJSON_USE_DOUBLE == 0, "ARDUINOJSON_USE_DOUBLE"); + +static_assert(sizeof(ARDUINOJSON_NAMESPACE::VariantSlot) == 8, + "sizeof(VariantSlot)"); + +void setup() {} +void loop() {} diff --git a/extras/conf_test/esp8266.cpp b/extras/conf_test/esp8266.cpp new file mode 100644 index 00000000..a2a6241f --- /dev/null +++ b/extras/conf_test/esp8266.cpp @@ -0,0 +1,16 @@ +#include + +static_assert(ARDUINOJSON_USE_LONG_LONG == 0, "ARDUINOJSON_USE_LONG_LONG"); + +static_assert(ARDUINOJSON_SLOT_OFFSET_SIZE == 2, + "ARDUINOJSON_SLOT_OFFSET_SIZE"); + +static_assert(ARDUINOJSON_LITTLE_ENDIAN == 1, "ARDUINOJSON_LITTLE_ENDIAN"); + +static_assert(ARDUINOJSON_USE_DOUBLE == 0, "ARDUINOJSON_USE_DOUBLE"); + +static_assert(sizeof(ARDUINOJSON_NAMESPACE::VariantSlot) == 16, + "sizeof(VariantSlot)"); + +void setup() {} +void loop() {} diff --git a/extras/conf_test/x64.cpp b/extras/conf_test/x64.cpp new file mode 100644 index 00000000..8cd6c06e --- /dev/null +++ b/extras/conf_test/x64.cpp @@ -0,0 +1,15 @@ +#include + +static_assert(ARDUINOJSON_USE_LONG_LONG == 1, "ARDUINOJSON_USE_LONG_LONG"); + +static_assert(ARDUINOJSON_SLOT_OFFSET_SIZE == 4, + "ARDUINOJSON_SLOT_OFFSET_SIZE"); + +static_assert(ARDUINOJSON_LITTLE_ENDIAN == 1, "ARDUINOJSON_LITTLE_ENDIAN"); + +static_assert(ARDUINOJSON_USE_DOUBLE == 1, "ARDUINOJSON_USE_DOUBLE"); + +static_assert(sizeof(ARDUINOJSON_NAMESPACE::VariantSlot) == 32, + "sizeof(VariantSlot)"); + +int main() {} diff --git a/extras/conf_test/x86-linux.cpp b/extras/conf_test/x86-linux.cpp new file mode 100644 index 00000000..78ab6cc0 --- /dev/null +++ b/extras/conf_test/x86-linux.cpp @@ -0,0 +1,15 @@ +#include + +static_assert(ARDUINOJSON_USE_LONG_LONG == 1, "ARDUINOJSON_USE_LONG_LONG"); + +static_assert(ARDUINOJSON_SLOT_OFFSET_SIZE == 4, + "ARDUINOJSON_SLOT_OFFSET_SIZE"); + +static_assert(ARDUINOJSON_LITTLE_ENDIAN == 1, "ARDUINOJSON_LITTLE_ENDIAN"); + +static_assert(ARDUINOJSON_USE_DOUBLE == 1, "ARDUINOJSON_USE_DOUBLE"); + +static_assert(sizeof(ARDUINOJSON_NAMESPACE::VariantSlot) == 20, + "sizeof(VariantSlot)"); + +int main() {} diff --git a/extras/conf_test/x86-windows.cpp b/extras/conf_test/x86-windows.cpp new file mode 100644 index 00000000..15360417 --- /dev/null +++ b/extras/conf_test/x86-windows.cpp @@ -0,0 +1,15 @@ +#include + +static_assert(ARDUINOJSON_USE_LONG_LONG == 1, "ARDUINOJSON_USE_LONG_LONG"); + +static_assert(ARDUINOJSON_SLOT_OFFSET_SIZE == 4, + "ARDUINOJSON_SLOT_OFFSET_SIZE"); + +static_assert(ARDUINOJSON_LITTLE_ENDIAN == 1, "ARDUINOJSON_LITTLE_ENDIAN"); + +static_assert(ARDUINOJSON_USE_DOUBLE == 1, "ARDUINOJSON_USE_DOUBLE"); + +static_assert(sizeof(ARDUINOJSON_NAMESPACE::VariantSlot) == 24, + "sizeof(VariantSlot)"); + +int main() {}