From 7abd5862ed6abf1804a24dc466bdf3564328a4b6 Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Sun, 24 Jun 2018 22:59:16 +1000 Subject: [PATCH] Add component CMakeLists.txt file for use with CMake-based build system (#1508) Includes verification script (for Travis) that CMakeLists.txt contents match repo & submodule source files --- CMakeLists.txt | 191 ++++++++++++++++++++++++++++++++++++++ tools/check_cmakelists.sh | 26 ++++++ 2 files changed, 217 insertions(+) create mode 100644 CMakeLists.txt create mode 100755 tools/check_cmakelists.sh diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..83199303 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,191 @@ +set(CORE_SRCS + cores/esp32/base64.cpp + cores/esp32/cbuf.cpp + cores/esp32/esp32-hal-adc.c + cores/esp32/esp32-hal-bt.c + cores/esp32/esp32-hal-dac.c + cores/esp32/esp32-hal-gpio.c + cores/esp32/esp32-hal-i2c.c + cores/esp32/esp32-hal-ledc.c + cores/esp32/esp32-hal-matrix.c + cores/esp32/esp32-hal-misc.c + cores/esp32/esp32-hal-sigmadelta.c + cores/esp32/esp32-hal-spi.c + cores/esp32/esp32-hal-time.c + cores/esp32/esp32-hal-timer.c + cores/esp32/esp32-hal-touch.c + cores/esp32/esp32-hal-uart.c + cores/esp32/Esp.cpp + cores/esp32/HardwareSerial.cpp + cores/esp32/IPAddress.cpp + cores/esp32/IPv6Address.cpp + cores/esp32/libb64/cdecode.c + cores/esp32/libb64/cencode.c + cores/esp32/MD5Builder.cpp + cores/esp32/Print.cpp + cores/esp32/stdlib_noniso.c + cores/esp32/Stream.cpp + cores/esp32/StreamString.cpp + cores/esp32/wiring_pulse.c + cores/esp32/wiring_shift.c + cores/esp32/WMath.cpp + cores/esp32/WString.cpp + ) + +set(LIBRARY_SRCS + libraries/ArduinoOTA/src/ArduinoOTA.cpp + libraries/BluetoothSerial/src/BluetoothSerial.cpp + libraries/DNSServer/src/DNSServer.cpp + libraries/EEPROM/EEPROM.cpp + libraries/ESPmDNS/src/ESPmDNS.cpp + libraries/FS/src/FS.cpp + libraries/FS/src/vfs_api.cpp + libraries/HTTPClient/src/HTTPClient.cpp + libraries/Preferences/src/Preferences.cpp + libraries/SD_MMC/src/SD_MMC.cpp + libraries/SD/src/SD.cpp + libraries/SD/src/sd_diskio.cpp + libraries/SD/src/sd_diskio_crc.c + libraries/SimpleBLE/src/SimpleBLE.cpp + libraries/SPIFFS/src/SPIFFS.cpp + libraries/SPI/src/SPI.cpp + libraries/Ticker/src/Ticker.cpp + libraries/Update/src/Updater.cpp + libraries/WiFiClientSecure/src/ssl_client.cpp + libraries/WiFiClientSecure/src/WiFiClientSecure.cpp + libraries/WiFi/src/ETH.cpp + libraries/WiFi/src/WiFiAP.cpp + libraries/WiFi/src/WiFiClient.cpp + libraries/WiFi/src/WiFi.cpp + libraries/WiFi/src/WiFiGeneric.cpp + libraries/WiFi/src/WiFiMulti.cpp + libraries/WiFi/src/WiFiScan.cpp + libraries/WiFi/src/WiFiServer.cpp + libraries/WiFi/src/WiFiSTA.cpp + libraries/WiFi/src/WiFiUdp.cpp + libraries/Wire/src/Wire.cpp + ) + +set(AZURE_SRCS + libraries/AzureIoT/src/az_iot/azureiotcerts.c + libraries/AzureIoT/src/az_iot/c-utility/pal/agenttime.c + libraries/AzureIoT/src/az_iot/c-utility/pal/dns_async.c + libraries/AzureIoT/src/az_iot/c-utility/pal/freertos/lock.c + libraries/AzureIoT/src/az_iot/c-utility/pal/freertos/threadapi.c + libraries/AzureIoT/src/az_iot/c-utility/pal/freertos/tickcounter.c + libraries/AzureIoT/src/az_iot/c-utility/pal/lwip/sntp_lwip.c + libraries/AzureIoT/src/az_iot/c-utility/pal/socket_async.c + libraries/AzureIoT/src/az_iot/c-utility/pal/src/platform_openssl_compact.c + libraries/AzureIoT/src/az_iot/c-utility/pal/src/tlsio_openssl_compact.c + libraries/AzureIoT/src/az_iot/c-utility/pal/tlsio_options.c + libraries/AzureIoT/src/az_iot/c-utility/src/base64.c + libraries/AzureIoT/src/az_iot/c-utility/src/buffer.c + libraries/AzureIoT/src/az_iot/c-utility/src/connection_string_parser.c + libraries/AzureIoT/src/az_iot/c-utility/src/consolelogger.c + libraries/AzureIoT/src/az_iot/c-utility/src/constbuffer.c + libraries/AzureIoT/src/az_iot/c-utility/src/constmap.c + libraries/AzureIoT/src/az_iot/c-utility/src/crt_abstractions.c + libraries/AzureIoT/src/az_iot/c-utility/src/doublylinkedlist.c + libraries/AzureIoT/src/az_iot/c-utility/src/gballoc.c + libraries/AzureIoT/src/az_iot/c-utility/src/gb_stdio.c + libraries/AzureIoT/src/az_iot/c-utility/src/gb_time.c + libraries/AzureIoT/src/az_iot/c-utility/src/hmac.c + libraries/AzureIoT/src/az_iot/c-utility/src/hmacsha256.c + libraries/AzureIoT/src/az_iot/c-utility/src/httpapiex.c + libraries/AzureIoT/src/az_iot/c-utility/src/httpapiexsas.c + libraries/AzureIoT/src/az_iot/c-utility/src/httpheaders.c + libraries/AzureIoT/src/az_iot/c-utility/src/http_proxy_io.c + libraries/AzureIoT/src/az_iot/c-utility/src/map.c + libraries/AzureIoT/src/az_iot/c-utility/src/optionhandler.c + libraries/AzureIoT/src/az_iot/c-utility/src/sastoken.c + libraries/AzureIoT/src/az_iot/c-utility/src/sha1.c + libraries/AzureIoT/src/az_iot/c-utility/src/sha224.c + libraries/AzureIoT/src/az_iot/c-utility/src/sha384-512.c + libraries/AzureIoT/src/az_iot/c-utility/src/singlylinkedlist.c + libraries/AzureIoT/src/az_iot/c-utility/src/strings.c + libraries/AzureIoT/src/az_iot/c-utility/src/string_tokenizer.c + libraries/AzureIoT/src/az_iot/c-utility/src/urlencode.c + libraries/AzureIoT/src/az_iot/c-utility/src/usha.c + libraries/AzureIoT/src/az_iot/c-utility/src/vector.c + libraries/AzureIoT/src/az_iot/c-utility/src/xio.c + libraries/AzureIoT/src/az_iot/c-utility/src/xlogging.c + libraries/AzureIoT/src/az_iot/iothub_client/src/blob.c + libraries/AzureIoT/src/az_iot/iothub_client/src/iothub_client_authorization.c + libraries/AzureIoT/src/az_iot/iothub_client/src/iothub_client.c + libraries/AzureIoT/src/az_iot/iothub_client/src/iothub_client_ll.c + libraries/AzureIoT/src/az_iot/iothub_client/src/iothub_client_retry_control.c + libraries/AzureIoT/src/az_iot/iothub_client/src/iothub_message.c + libraries/AzureIoT/src/az_iot/iothub_client/src/iothubtransport.c + libraries/AzureIoT/src/az_iot/iothub_client/src/iothubtransportmqtt.c + libraries/AzureIoT/src/az_iot/iothub_client/src/iothubtransport_mqtt_common.c + libraries/AzureIoT/src/az_iot/iothub_client/src/version.c + libraries/AzureIoT/src/az_iot/umqtt/src/mqtt_client.c + libraries/AzureIoT/src/az_iot/umqtt/src/mqtt_codec.c + libraries/AzureIoT/src/az_iot/umqtt/src/mqtt_message.c + libraries/AzureIoT/src/AzureIotHub.cpp + libraries/AzureIoT/src/Esp32MQTTClient.cpp + ) + +set(BLE_SRCS + libraries/BLE/src/BLE2902.cpp + libraries/BLE/src/BLE2904.cpp + libraries/BLE/src/BLEAddress.cpp + libraries/BLE/src/BLEAdvertisedDevice.cpp + libraries/BLE/src/BLEAdvertising.cpp + libraries/BLE/src/BLEBeacon.cpp + libraries/BLE/src/BLECharacteristic.cpp + libraries/BLE/src/BLECharacteristicMap.cpp + libraries/BLE/src/BLEClient.cpp + libraries/BLE/src/BLEDescriptor.cpp + libraries/BLE/src/BLEDescriptorMap.cpp + libraries/BLE/src/BLEDevice.cpp + libraries/BLE/src/BLEExceptions.cpp + libraries/BLE/src/BLEHIDDevice.cpp + libraries/BLE/src/BLERemoteCharacteristic.cpp + libraries/BLE/src/BLERemoteDescriptor.cpp + libraries/BLE/src/BLERemoteService.cpp + libraries/BLE/src/BLEScan.cpp + libraries/BLE/src/BLESecurity.cpp + libraries/BLE/src/BLEServer.cpp + libraries/BLE/src/BLEService.cpp + libraries/BLE/src/BLEServiceMap.cpp + libraries/BLE/src/BLEUtils.cpp + libraries/BLE/src/BLEUUID.cpp + libraries/BLE/src/BLEValue.cpp + libraries/BLE/src/FreeRTOS.cpp + libraries/BLE/src/GeneralUtils.cpp + ) + +set(COMPONENT_SRCS ${CORE_SRCS} ${LIBRARY_SRCS} ${AZURE_SRCS} ${BLE_SRCS}) + +set(COMPONENT_ADD_INCLUDEDIRS + variants/esp32/ + cores/esp32/ + libraries/ArduinoOTA/src + libraries/AzureIoT/src + libraries/BLE/src + libraries/BluetoothSerial/src + libraries/DNSServer/src + libraries/ESP32/src + libraries/ESPmDNS/src + libraries/FS/src + libraries/HTTPClient/src + libraries/Preferences/src + libraries/SD_MMC/src + libraries/SD/src + libraries/SimpleBLE/src + libraries/SPIFFS/src + libraries/SPI/src + libraries/Ticker/src + libraries/Update/src + libraries/WiFiClientSecure/src + libraries/WiFi/src + libraries/Wire/src + ) + +set(COMPONENT_PRIV_INCLUDEDIRS cores/esp32/libb64) + +set(COMPONENT_REQUIRES spi_flash mbedtls mdns ethernet) +set(COMPONENT_PRIV_REQUIRES fatfs nvs_flash app_update spiffs bootloader_support openssl) + +register_component() diff --git a/tools/check_cmakelists.sh b/tools/check_cmakelists.sh new file mode 100755 index 00000000..aa28c5be --- /dev/null +++ b/tools/check_cmakelists.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# +# This script is for Travis. It checks all non-examples source files in libraries/ and cores/ are listed in +# CMakeLists.txt for the cmake-based IDF component +# +# If you see an error running this script, edit CMakeLists.txt and add any new source files into your PR +# + +set -e + +cd "`dirname $0`/.." # cd to arduino-esp32 root + +# find all source files in repo +REPO_SRCS=`find cores/esp32/ libraries/ -name 'examples' -prune -o -name 'main.cpp' -prune -o -name '*.c' -print -o -name '*.cpp' -print | sort` + +# find all source files named in CMakeLists.txt COMPONENT_SRCS +CMAKE_SRCS=`cmake --trace-expand -C CMakeLists.txt 2>&1 | grep COMPONENT_SRCS | sed 's/.\+COMPONENT_SRCS //' | sed 's/ )//' | tr ' ;' '\n' | sort` + +if ! diff -u0 --label "Repo Files" --label "COMPONENT_SRCS" <(echo "$REPO_SRCS") <(echo "$CMAKE_SRCS"); then + echo "Source files in repo (-) and source files in CMakeLists.txt (+) don't match" + echo "Edit CMakeLists.txt as appropriate to add/remove source files from COMPONENT_SRCS" + exit 1 +fi + +echo "CMakeLists.txt and repo source files match" +exit 0