From fff178304644a93f72e9c280b52a8c4d9a7ef828 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Tue, 14 Aug 2018 13:01:07 +0300 Subject: [PATCH] Switch to isolated build flags per framework (#1748) --- tools/platformio-build.py | 76 +++++++++++++++++++++++++++------------ 1 file changed, 53 insertions(+), 23 deletions(-) diff --git a/tools/platformio-build.py b/tools/platformio-build.py index f48abbd94..171445bc1 100644 --- a/tools/platformio-build.py +++ b/tools/platformio-build.py @@ -34,17 +34,25 @@ platform = env.PioPlatform() FRAMEWORK_DIR = platform.get_package_dir("framework-arduinoespressif32") assert isdir(FRAMEWORK_DIR) -env.Prepend( - CPPDEFINES=[ - ("ARDUINO", 10805), - "ARDUINO_ARCH_ESP32", - ("ARDUINO_VARIANT", '\\"%s\\"' % env.BoardConfig().get("build.variant").replace('"', "")), - ("ARDUINO_BOARD", '\\"%s\\"' % env.BoardConfig().get("name").replace('"', "")) - ], +env.Append( + ASFLAGS=["-x", "assembler-with-cpp"], - CFLAGS=["-Wno-old-style-declaration"], + CFLAGS=[ + "-std=gnu99", + "-Wno-old-style-declaration" + ], CCFLAGS=[ + "-Os", + "-Wall", + "-nostdlib", + "-Wpointer-arith", + "-Wno-error=unused-but-set-variable", + "-Wno-error=unused-variable", + "-mlongcalls", + "-ffunction-sections", + "-fdata-sections", + "-fstrict-volatile-bitfields", "-Wno-error=deprecated-declarations", "-Wno-error=unused-function", "-Wno-unused-parameter", @@ -53,6 +61,40 @@ env.Prepend( "-fexceptions" ], + CXXFLAGS=[ + "-fno-rtti", + "-fno-exceptions", + "-std=gnu++11" + ], + + LINKFLAGS=[ + "-nostdlib", + "-Wl,-static", + "-u", "call_user_start_cpu0", + "-Wl,--undefined=uxTopUsedPriority", + "-Wl,--gc-sections", + "-Wl,-EL", + "-T", "esp32.common.ld", + "-T", "esp32.rom.ld", + "-T", "esp32.peripherals.ld", + "-T", "esp32.rom.spiram_incompatible_fns.ld", + "-u", "ld_include_panic_highint_hdl", + "-u", "__cxa_guard_dummy", + "-u", "__cxx_fatal_exception" + ], + + CPPDEFINES=[ + "ESP32", + "ESP_PLATFORM", + ("F_CPU", "$BOARD_F_CPU"), + "HAVE_CONFIG_H", + ("MBEDTLS_CONFIG_FILE", '\\"mbedtls/esp_config.h\\"'), + ("ARDUINO", 10805), + "ARDUINO_ARCH_ESP32", + ("ARDUINO_VARIANT", '\\"%s\\"' % env.BoardConfig().get("build.variant").replace('"', "")), + ("ARDUINO_BOARD", '\\"%s\\"' % env.BoardConfig().get("name").replace('"', "")) + ], + CPPPATH=[ join(FRAMEWORK_DIR, "tools", "sdk", "include", "config"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "bluedroid"), @@ -98,32 +140,20 @@ env.Prepend( join(FRAMEWORK_DIR, "tools", "sdk", "include", "wpa_supplicant"), join(FRAMEWORK_DIR, "cores", env.BoardConfig().get("build.core")) ], + LIBPATH=[ join(FRAMEWORK_DIR, "tools", "sdk", "lib"), join(FRAMEWORK_DIR, "tools", "sdk", "ld") ], + LIBS=[ "gcc", "openssl", "btdm_app", "fatfs", "wps", "coexist", "wear_levelling", "esp_http_client", "hal", "newlib", "driver", "bootloader_support", "pp", "mesh", "smartconfig", "jsmn", "wpa", "ethernet", "phy", "app_trace", "console", "ulp", "wpa_supplicant", "freertos", "bt", "micro-ecc", "cxx", "xtensa-debug-module", "mdns", "vfs", "soc", "core", "sdmmc", "coap", "tcpip_adapter", "c_nano", "esp-tls", "rtc", "spi_flash", "wpa2", "esp32", "app_update", "nghttp", "spiffs", "espnow", "nvs_flash", "esp_adc_cal", "log", "smartconfig_ack", "expat", "m", "c", "heap", "mbedtls", "lwip", "net80211", "pthread", "json", "stdc++" - ] -) - + ], -env.Append( LIBSOURCE_DIRS=[ join(FRAMEWORK_DIR, "libraries") ], - LINKFLAGS=[ - "-Wl,-EL", - "-T", "esp32.common.ld", - "-T", "esp32.rom.ld", - "-T", "esp32.peripherals.ld", - "-T", "esp32.rom.spiram_incompatible_fns.ld", - "-u", "ld_include_panic_highint_hdl", - "-u", "__cxa_guard_dummy", - "-u", "__cxx_fatal_exception" - ], - FLASH_EXTRA_IMAGES=[ ("0x1000", join(FRAMEWORK_DIR, "tools", "sdk", "bin", "bootloader_${BOARD_FLASH_MODE}_${__get_board_f_flash(__env__)}.bin")), ("0x8000", join(env.subst("$BUILD_DIR"), "partitions.bin")), -- GitLab