Remove platform dependent code, update travis to attempt precompiled builds for all platforms

This commit is contained in:
Noah Laptop 2020-02-21 11:45:14 -08:00
parent f7c1f61cbf
commit bdca75cd87
4 changed files with 16 additions and 74 deletions

View file

@ -10,16 +10,10 @@ cache:
- ~/.arduino15/packages/ - ~/.arduino15/packages/
jobs: jobs:
include: include:
- env: - stage: "Feather M0"
- ARCH="cortex-m0plus" env: BOARD_NAME="FeatherM0" ARCH="cortex-m0plus" CORE="adafruit:samd" BOARD="adafruit:samd:adafruit_feather_m0"
- CORE="adafruit:samd" - stage: "Arduino Zero"
- BOARD="adafruit:samd:adafruit_feather_m0" env: BOARD_NAME="ArduinoZero" ARCH="cortex-m0plus" CORE="arduino:samd" BOARD="arduino:samd:mzero_bl"
- DEPLOY=1
- env:
- ARCH="cortex-m0plus"
- CORE="arduino:samd"
- BOARD="arduino:samd:mzero_bl"
- DEPLOY=0
before_install: before_install:
- curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=/usr/bin sudo sh - curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=/usr/bin sudo sh
@ -27,9 +21,11 @@ before_install:
- arduino-cli core install arduino:samd -v - arduino-cli core install arduino:samd -v
- arduino-cli core install adafruit:samd -v --additional-urls $ADDITIONAL_URLS - arduino-cli core install adafruit:samd -v --additional-urls $ADDITIONAL_URLS
- mkdir -p $HOME/Arduino/libraries - mkdir -p $HOME/Arduino/libraries
- rm -rf $HOME/Arduino/libraries/EthernetLarge
- git clone https://github.com/OPEnSLab-OSU/EthernetLarge.git $HOME/Arduino/libraries/EthernetLarge - git clone https://github.com/OPEnSLab-OSU/EthernetLarge.git $HOME/Arduino/libraries/EthernetLarge
install: install:
- ln -s $PWD $HOME/Arduino/libraries/. - ln -s $PWD $HOME/Arduino/libraries/.
- echo "dot_a_linkage=true" >> library.properties
script: script:
- arduino-cli compile --verbose --warnings all --fqbn $BOARD $PWD/examples/EthernetHTTPS - arduino-cli compile --verbose --warnings all --fqbn $BOARD $PWD/examples/EthernetHTTPS
- arduino-cli compile --verbose --warnings all --fqbn $BOARD $PWD/examples/EthernetMultiHTTPS - arduino-cli compile --verbose --warnings all --fqbn $BOARD $PWD/examples/EthernetMultiHTTPS
@ -40,13 +36,14 @@ before_deploy:
- rm -rf .git - rm -rf .git
- find src/ -iname "*.c" -delete - find src/ -iname "*.c" -delete
- find src/ -iname "*.cpp" -delete - find src/ -iname "*.cpp" -delete
- zip -r SSLClient.zip . - zip -r SSLClient-$BOARD_NAME.zip .
deploy: deploy:
provider: releases provider: releases
api_key: $GITHUB_TOKEN api_key: $GITHUB_TOKEN
file: "SSLClient.zip" file: "SSLClient-$BOARD_NAME.zip"
skip_cleanup: true skip_cleanup: true
on: draft: true
tags: true overwrite: true
branch: master # on:
condition: $DEPLOY = 1 # tags: true
# branch: master

View file

@ -8,4 +8,3 @@ category=Communication
url=https://github.com/OPEnSLab-OSU/SSLClient url=https://github.com/OPEnSLab-OSU/SSLClient
architectures=samd,tivac architectures=samd,tivac
includes=SSLClient.h includes=SSLClient.h
dot_a_linkage=true

View file

@ -20,37 +20,6 @@
#include "SSLClient.h" #include "SSLClient.h"
#if defined(ARDUINO_ARCH_SAMD)
// system reset definitions
static constexpr auto SYSRESETREQ = (1<<2);
static constexpr auto VECTKEY = (0x05fa0000UL);
static constexpr auto VECTKEY_MASK = (0x0000ffffUL);
/** Trigger a software reset. Only use if in unrecoverable state */
[[ noreturn ]] static void RESET() {
(*(uint32_t*)0xe000ed0cUL)=((*(uint32_t*)0xe000ed0cUL)&VECTKEY_MASK)|VECTKEY|SYSRESETREQ;
while(1) { }
}
#ifdef __arm__
// should use uinstd.h to define sbrk but Due causes a conflict
extern "C" char* sbrk(int incr);
#else // __ARM__
extern char *__brkval;
#endif // __arm__
/** Get the free memory availible in bytes (stack - heap) */
static int freeMemory() {
char top;
#ifdef __arm__
return &top - reinterpret_cast<char*>(sbrk(0));
#elif defined(CORE_TEENSY) || (ARDUINO > 103 && ARDUINO != 151)
return &top - __brkval;
#else // __arm__
return __brkval ? &top - __brkval : &top - __malloc_heap_start;
#endif // __arm__
}
#endif // ARDUINO_ARCH_SAMD
/* see SSLClient.h */ /* see SSLClient.h */
SSLClient::SSLClient( Client& client, SSLClient::SSLClient( Client& client,
const br_x509_trust_anchor *trust_anchors, const br_x509_trust_anchor *trust_anchors,
@ -567,31 +536,6 @@ unsigned SSLClient::m_update_engine() {
// do we have the record you're looking for? // do we have the record you're looking for?
const auto avail = get_arduino_client().available(); const auto avail = get_arduino_client().available();
if (avail > 0) { if (avail > 0) {
#if defined(ARDUINO_ARCH_SAMD)
int mem = freeMemory();
// check for a stack overflow
// if the stack overflows we basically have to crash, and
// hope the user is ok with that
// since all memory is garbage we can't trust the cpu to
// execute anything properly
if (mem > 32 * 1024) {
// software reset
RESET();
}
// debug info
m_info("Memory: ", func_name);
m_info(mem, func_name);
// free memory check
// BearSSL takes up so much memory on the stack it tends
// to overflow if there isn't at least 7000 bytes available
// when it starts
if(mem < 7000) {
m_error("Out of memory! Decrease the number of sessions or the size of m_iobuf", func_name);
setWriteError(SSL_OUT_OF_MEMORY);
stop();
return 0;
}
#endif
// I suppose so! // I suppose so!
int rlen = get_arduino_client().read(buf, avail < len ? avail : len); int rlen = get_arduino_client().read(buf, avail < len ? avail : len);
if (rlen <= 0) { if (rlen <= 0) {

View file

@ -47,8 +47,8 @@
* substantially more efficient than 32-bit multiplications that yield * substantially more efficient than 32-bit multiplications that yield
* 64-bit results. This is typically the case on low-end ARM Cortex M * 64-bit results. This is typically the case on low-end ARM Cortex M
* systems (M0, M0+, M1, and arguably M3 and M4 as well). * systems (M0, M0+, M1, and arguably M3 and M4 as well).
*/
#define BR_LOMUL 1 #define BR_LOMUL 1
*/
/* /*
* When BR_SLOW_MUL is enabled, multiplications are assumed to be * When BR_SLOW_MUL is enabled, multiplications are assumed to be
@ -177,7 +177,9 @@
* Note: if BR_LOMUL is not explicitly enabled or disabled, then * Note: if BR_LOMUL is not explicitly enabled or disabled, then
* enabling BR_ARMEL_CORTEXM_GCC also enables BR_LOMUL. * enabling BR_ARMEL_CORTEXM_GCC also enables BR_LOMUL.
*/ */
#if defined(__arm__) && defined(__thumb__)
#define BR_ARMEL_CORTEXM_GCC 1 #define BR_ARMEL_CORTEXM_GCC 1
#endif
/* /*
* When BR_AES_X86NI is enabled, the AES implementation using the x86 "NI" * When BR_AES_X86NI is enabled, the AES implementation using the x86 "NI"