SPIFFS not working with custom Makefile

Hi I'm trying a very simple SPIFFS example:

#include "FS.h"

void setup() 
{
  Serial.begin(115200);
  Serial.println("\nVery basic Spiffs example, writing 10 lines to SPIFFS filesystem, and then read them back");
  SPIFFS.begin();
  // Next lines have to be done ONLY ONCE!!!!!When SPIFFS is formatted ONCE you can comment these lines out!!
  Serial.println("Please wait 30 secs for SPIFFS to be formatted");
  SPIFFS.format();
  Serial.println("Spiffs formatted");

}

void loop() 
{
  // open file for writing
  File f = SPIFFS.open("/f.txt", "w");
  if (!f) {
      Serial.println("file open failed");
  }
  Serial.println("====== Writing to SPIFFS file =========");
  // write 10 strings to file
  for (int i=1; i<=10; i++){
    f.print("Millis() : ");
    f.println(millis());
    Serial.println(millis());
  }
  f.close();
  f = SPIFFS.open("/f.txt", "r");
  if (!f) {
      Serial.println("file open failed");
  }  Serial.println("====== Reading from SPIFFS file =======");
  // write 10 strings to file
  for (int i=1; i<=10; i++){
    String s=f.readStringUntil('\n');
    Serial.print(i);
    Serial.print(":");
    Serial.println(s);
  }

  // wait a few seconds before doing it all over again
  delay(15000);
}

which works fine on my Sonoff R2, however I extracted a custom Makefile starting from the output of the Arduino console to compile outside of the Arduino IDE.
It compiles and works correctly except SPIFFS cannot open files, are there specific options which are passed to the compiler in order to let SPIFFS work correctly?
The Makefile I made is the following:

#
# Simple Arduino Makefile
#
# Author: Nick Gammon
# Date: 18th March 2015

# where you installed the Arduino app
ARDUINO_DIR = /home/lions/.arduino15/packages/esp8266/
CURRENT_DIR = /media/lions/Data/myhdata/Projects/Arduino/sonoff_r2_mytest/
# various programs
CC = "$(ARDUINO_DIR)tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/xtensa-lx106-elf-gcc"
CPP = "$(ARDUINO_DIR)tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/xtensa-lx106-elf-g++"
AR = "$(ARDUINO_DIR)tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/xtensa-lx106-elf-ar"
OBJ_COPY = "$(ARDUINO_DIR)hardware/tools/avr/bin/avr-objcopy"


MAIN_SKETCH = sonoff_r2_mytest.cpp

# compile flags for g++ and gcc

# may need to change these
F_CPU = 80000000
MCU = esp8266 #atmega328p
ARDUVER = 10813
ARDUINO_BOARD=\"ESP8266_SONOFF_BASIC\"
FLASH_MODE="dout"
FLASH_MODE_ACRONYM="FLASHMODE_DOUT"
FLASH_SIZE=1M
DEVICE=/dev/ttyUSB0
DEVICEIP="172.16.1.33"
BAUD=115200
VARIANTS=itead

# compile flags
CPP_FLAGS = -c -w -Os -g -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++11 -MMD -ffunction-sections -fdata-sections -fno-exceptions -DNONOSDK22x_190703=1 -DF_CPU=$(F_CPU)L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=$(ARDUVER) -DARDUINO_$(ARDUINO_BOARD) -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"$(ARDUINO_BOARD)\"" -D$(FLASH_MODE_ACRONYM) -DESP8266 -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/cores/esp8266 -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS)

CC_FLAGS = -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -c -g -x assembler-with-cpp -MMD -mlongcalls -DNONOSDK22x_190703=1 -DF_CPU=$(F_CPU)L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=$(ARDUVER) -DARDUINO_$(ARDUINO_BOARD) -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"$(ARDUINO_BOARD)\"" -D$(FLASH_MODE_ACRONYM) -DESP8266 
CC_FLAGS2  = -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -c -w -Os -g -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions=4 -MMD -std=gnu99 -ffunction-sections -fdata-sections -fno-exceptions -DNONOSDK22x_190703=1 -DF_CPU=$(F_CPU)L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=$(ARDUVER) -DARDUINO_$(ARDUINO_BOARD) -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"$(ARDUINO_BOARD)\"" -D$(FLASH_MODE_ACRONYM) -DESP8266

# location of include files
INCLUDE_FILES_CPP = -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/sdk/include -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/sdk/lwip2/include -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/sdk/libc/xtensa-lx106-elf/include -I$(CURRENT_DIR)core
INCLUDE_FILES_CPP += -I$(CURRENT_DIR)../libraries/ArduinoMqttClient/src/ -I$(CURRENT_DIR)../libraries/ESP8266HTTPClient/src/ -I$(CURRENT_DIR)../libraries/ESP8266WiFi/src/ -I$(CURRENT_DIR)../libraries/ESP8266WebServer/src/ -I$(CURRENT_DIR)../libraries/ESP8266mDNS/src/
INCLUDE_FILES_CPP += -I$(CURRENT_DIR)../libraries/EEPROM/ -I$(CURRENT_DIR)../libraries/ArduinoOTA/ -I$(CURRENT_DIR)../libraries/Hash/src -I$(CURRENT_DIR)../libraries/Ticker/src -I$(CURRENT_DIR)../libraries/RemoteDebug/src -I$(CURRENT_DIR)../Utils/ -I$(CURRENT_DIR)../WifiAutoconfig/
INCLUDE_FILES = -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/sdk/include -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/sdk/lwip2/include -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/sdk/libc/xtensa-lx106-elf/include
INCLUDE_FILES += -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/cores/esp8266 -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) -I$(CURRENT_DIR)

# library sources
LIBRARY_DIR = "$(ARDUINO_DIR)hardware/esp8266/2.7.4/cores/esp8266/"

.PHONY:	clean upload ota_upload

all: clean build

build:
	$(info Advancing versions...)
	./advance_vernum.sh $(MAIN_SKETCH) $(ARDUINO_BOARD)

	$(info Compiling sketch...)

	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(MAIN_SKETCH) -o $(MAIN_SKETCH).o

	$(info Compiling libraries...)
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ArduinoMqttClient/src/MqttClient.cpp -o MqttClient.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp -o ESP8266HTTPClient.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266HTTPClient.a $(CURRENT_DIR)ESP8266HTTPClient.cpp.o

	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp -o ESP8266WiFiAP.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/ESP8266WiFiSTA-WPS.cpp -o ESP8266WiFiSTA-WPS.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/BearSSLHelpers.cpp -o BearSSLHelpers.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/CertStoreBearSSL.cpp -o CertStoreBearSSL.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp -o ESP8266WiFiGeneric.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/ESP8266WiFiGratuitous.cpp -o ESP8266WiFiGratuitous.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/ESP8266WiFi.cpp -o ESP8266WiFi.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp -o ESP8266WiFiMulti.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp -o ESP8266WiFiSTA.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp -o ESP8266WiFiScan.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/WiFiClient.cpp -o WiFiClient.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/WiFiClientSecureAxTLS.cpp -o WiFiClientSecureAxTLS.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/WiFiClientSecureBearSSL.cpp -o WiFiClientSecureBearSSL.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/WiFiServer.cpp -o WiFiServer.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/WiFiServerSecureAxTLS.cpp -o WiFiServerSecureAxTLS.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/WiFiServerSecureBearSSL.cpp -o WiFiServerSecureBearSSL.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) -I$(ARDUINO_DIR)hardware/esp8266/2.7.4/variants/$(VARIANTS) $(CURRENT_DIR)../libraries/ESP8266WiFi/src/WiFiUdp.cpp -o WiFiUdp.cpp.o

	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)BearSSLHelpers.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)CertStoreBearSSL.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)ESP8266WiFi.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)ESP8266WiFiAP.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)ESP8266WiFiGeneric.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)ESP8266WiFiGratuitous.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)ESP8266WiFiMulti.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)ESP8266WiFiSTA-WPS.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)ESP8266WiFiSTA.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)ESP8266WiFiScan.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)WiFiClient.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)WiFiClientSecureAxTLS.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)WiFiClientSecureBearSSL.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)WiFiServer.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)WiFiServerSecureAxTLS.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)WiFiServerSecureBearSSL.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WiFi.a $(CURRENT_DIR)WiFiUdp.cpp.o

	$(info Compiling library "Hash"...)
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/Hash/src/Hash.cpp -o Hash.cpp.o
	$(AR) cru $(CURRENT_DIR)Hash.a Hash.cpp.o

	$(info Compiling library "ESP8266WebServer"...)
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/ESP8266WebServer/src/detail/mimetable.cpp -o mimetable.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266WebServer.a mimetable.cpp.o

	$(info Compiling library "EEPROM"...)
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/EEPROM/EEPROM.cpp -o EEPROM.cpp.o
	
	$(info Compiling library "ArduinoOTA"...)
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/ArduinoOTA/ArduinoOTA.cpp -o ArduinoOTA.cpp.o
	
	$(info Compiling library "Ticker"...)
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/Ticker/src/Ticker.cpp -o Ticker.cpp.o
	$(AR) cru $(CURRENT_DIR)Ticker.a Ticker.cpp.o

	$(info Compiling library "RemoteDebug"...)
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/RemoteDebug/src/RemoteDebug.cpp -o RemoteDebug.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/RemoteDebug/src/RemoteDebugWS.cpp -o RemoteDebugWS.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/RemoteDebug/src/utility/WebSockets.cpp -o WebSockets.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/RemoteDebug/src/utility/WebSocketsServer.cpp -o WebSocketsServer.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/RemoteDebug/src/utility/WebSocketsClient.cpp -o WebSocketsClient.cpp.o

	$(info Compiling library "ESP8266mDNS"...)
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/ESP8266mDNS/src/LEAmDNS.cpp -o LEAmDNS.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/ESP8266mDNS/src/LEAmDNS_Control.cpp -o LEAmDNS_Control.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/ESP8266mDNS/src/ESP8266mDNS_Legacy.cpp -o ESP8266mDNS_Legacy.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/ESP8266mDNS/src/LEAmDNS_Helpers.cpp -o LEAmDNS_Helpers.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/ESP8266mDNS/src/LEAmDNS_Structs.cpp -o LEAmDNS_Structs.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/ESP8266mDNS/src/ESP8266mDNS.cpp -o ESP8266mDNS.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../libraries/ESP8266mDNS/src/LEAmDNS_Transfer.cpp -o LEAmDNS_Transfer.cpp.o

	$(info Compiling library "Utils"...)
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../Utils/utils.cpp -o utils.cpp.o

	$(info Compiling library "WifiAutoconfig"...)
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES_CPP) $(CPP_FLAGS) -I$(LIBRARY_DIR) $(CURRENT_DIR)../WifiAutoconfig/WifiAutoconfig.cpp -o WifiAutoconfig.cpp.o

	$(AR) cru $(CURRENT_DIR)ESP8266mDNS.a $(CURRENT_DIR)ESP8266mDNS.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266mDNS.a $(CURRENT_DIR)ESP8266mDNS_Legacy.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266mDNS.a $(CURRENT_DIR)LEAmDNS.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266mDNS.a $(CURRENT_DIR)LEAmDNS_Control.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266mDNS.a $(CURRENT_DIR)LEAmDNS_Helpers.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266mDNS.a $(CURRENT_DIR)LEAmDNS_Structs.cpp.o
	$(AR) cru $(CURRENT_DIR)ESP8266mDNS.a $(CURRENT_DIR)LEAmDNS_Transfer.cpp.o


	$(info Compiling core...)
	$(CC) $(CC_FLAGS) $(INCLUDE_FILES) $(LIBRARY_DIR)cont.S -o cont.S.o

	$(CC) $(CC_FLAGS2) $(INCLUDE_FILES) $(LIBRARY_DIR)umm_malloc/umm_info.c -o umm_malloc/umm_info.c.o
	$(CC) $(CC_FLAGS2) $(INCLUDE_FILES) $(LIBRARY_DIR)umm_malloc/umm_local.c -o umm_malloc/umm_local.c.o
	$(CC) $(CC_FLAGS2) $(INCLUDE_FILES) $(LIBRARY_DIR)umm_malloc/umm_integrity.c -o umm_malloc/umm_integrity.c.o
	$(CC) $(CC_FLAGS2) $(INCLUDE_FILES) $(LIBRARY_DIR)umm_malloc/umm_poison.c -o umm_malloc/umm_poison.c.o

	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)Esp-frag.cpp -o Esp-frag.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)Esp-version.cpp -o Esp-version.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)Crypto.cpp -o Crypto.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)HardwareSerial.cpp -o HardwareSerial.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)Esp.cpp -o Esp.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)FSnoop.cpp -o FSnoop.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)FS.cpp -o FS.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)FunctionalInterrupt.cpp -o FunctionalInterrupt.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)IPAddress.cpp -o IPAddress.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)MD5Builder.cpp -o MD5Builder.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)Schedule.cpp -o Schedule.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)Print.cpp -o Print.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)StackThunk.cpp -o StackThunk.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)Stream.cpp -o Stream.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)StreamString.cpp -o StreamString.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)Tone.cpp -o Tone.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)TypeConversion.cpp -o TypeConversion.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)Updater.cpp -o Updater.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)WMath.cpp -o WMath.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)WString.cpp -o WString.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)abi.cpp -o abi.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)base64.cpp -o base64.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)cbuf.cpp -o cbuf.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)cont_util.cpp -o cont_util.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_app_entry_noextra4k.cpp -o core_esp8266_app_entry_noextra4k.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_eboot_command.cpp -o core_esp8266_eboot_command.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_features.cpp -o core_esp8266_features.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_flash_quirks.cpp -o core_esp8266_flash_quirks.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_flash_utils.cpp -o core_esp8266_flash_utils.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_i2s.cpp -o core_esp8266_i2s.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_main.cpp -o core_esp8266_main.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_noniso.cpp -o core_esp8266_noniso.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_phy.cpp -o core_esp8266_phy.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_postmortem.cpp -o core_esp8266_postmortem.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_si2c.cpp -o core_esp8266_si2c.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_sigma_delta.cpp -o core_esp8266_sigma_delta.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_spi_utils.cpp -o core_esp8266_spi_utils.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_timer.cpp -o core_esp8266_timer.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_waveform.cpp -o core_esp8266_waveform.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_wiring.cpp -o core_esp8266_wiring.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_wiring_analog.cpp -o core_esp8266_wiring_analog.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_wiring_digital.cpp -o core_esp8266_wiring_digital.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_wiring_pulse.cpp -o core_esp8266_wiring_pulse.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_wiring_pwm.cpp -o core_esp8266_wiring_pwm.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)core_esp8266_wiring_shift.cpp -o core_esp8266_wiring_shift.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)crc32.cpp -o crc32.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)debug.cpp -o debug.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)flash_hal.cpp -o flash_hal.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)gdb_hooks.cpp -o gdb_hooks.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)heap.cpp -o heap.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)sntp-lwip2.cpp -o sntp-lwip2.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)libc_replacements.cpp -o libc_replacements.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)spiffs_api.cpp -o spiffs_api.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)sqrt32.cpp -o sqrt32.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)time.cpp -o time.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)uart.cpp -o uart.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)libb64/cdecode.cpp -o libb64/cdecode.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)libb64/cencode.cpp -o libb64/cencode.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)spiffs/spiffs_cache.cpp -o spiffs/spiffs_cache.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)spiffs/spiffs_check.cpp -o spiffs/spiffs_check.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)spiffs/spiffs_gc.cpp -o spiffs/spiffs_gc.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)spiffs/spiffs_hydrogen.cpp -o spiffs/spiffs_hydrogen.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)spiffs/spiffs_nucleus.cpp -o spiffs/spiffs_nucleus.cpp.o
	$(CPP) -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ $(INCLUDE_FILES) $(CPP_FLAGS) $(LIBRARY_DIR)umm_malloc/umm_malloc.cpp -o umm_malloc/umm_malloc.cpp.o


	#rm core.a
	$(AR) cru $(CURRENT_DIR)core/core.a cont.S.o
	$(AR) cru $(CURRENT_DIR)core/core.a umm_malloc/umm_info.c.o
	$(AR) cru $(CURRENT_DIR)core/core.a umm_malloc/umm_integrity.c.o
	$(AR) cru $(CURRENT_DIR)core/core.a umm_malloc/umm_local.c.o
	$(AR) cru $(CURRENT_DIR)core/core.a umm_malloc/umm_poison.c.o
	$(AR) cru $(CURRENT_DIR)core/core.a Crypto.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a Esp-frag.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a Esp-version.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a Esp.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a FS.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a FSnoop.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a FunctionalInterrupt.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a HardwareSerial.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a IPAddress.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a MD5Builder.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a Print.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a Schedule.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a StackThunk.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a Stream.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a StreamString.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a Tone.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a TypeConversion.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a Updater.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a WMath.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a WString.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a abi.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a base64.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a cbuf.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a cont_util.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_app_entry_noextra4k.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_eboot_command.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_features.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_flash_quirks.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_flash_utils.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_i2s.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_main.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_noniso.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_phy.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_postmortem.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_si2c.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_sigma_delta.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_spi_utils.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_timer.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_waveform.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_wiring.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_wiring_analog.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_wiring_digital.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_wiring_pulse.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_wiring_pwm.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a core_esp8266_wiring_shift.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a crc32.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a debug.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a flash_hal.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a gdb_hooks.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a heap.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a libb64/cdecode.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a libb64/cencode.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a libc_replacements.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a sntp-lwip2.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a spiffs/spiffs_cache.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a spiffs/spiffs_check.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a spiffs/spiffs_gc.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a spiffs/spiffs_hydrogen.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a spiffs/spiffs_nucleus.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a spiffs_api.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a sqrt32.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a time.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a uart.cpp.o
	$(AR) cru $(CURRENT_DIR)core/core.a umm_malloc/umm_malloc.cpp.o

	$(info Linking everything together...)
	$(CC) -CC -E -P -DVTABLES_IN_FLASH $(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/sdk/ld/eagle.app.v6.common.ld.h -o local.eagle.app.v6.common.ld

	$(CC) -fno-exceptions -Wl,-Map -Wl,./$(MAIN_SKETCH).map -g -w -Os -nostdlib -Wl,--no-check-sections -u app_entry -u _printf_float -u _scanf_float -Wl,-static -L$(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/sdk/lib -L$(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/sdk/lib/NONOSDK22x_190703 -L$(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/sdk/ld -L$(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/sdk/libc/xtensa-lx106-elf/lib -Teagle.flash.4m2m.ld -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read -o $(MAIN_SKETCH).elf -Wl,--start-group $(MAIN_SKETCH).o MqttClient.cpp.o ESP8266HTTPClient.a ESP8266WiFi.a ESP8266WebServer.a utils.cpp.o WifiAutoconfig.cpp.o EEPROM.cpp.o Ticker.a RemoteDebug.cpp.o RemoteDebugWS.cpp.o WebSockets.cpp.o WebSocketsServer.cpp.o WebSocketsClient.cpp.o ArduinoOTA.cpp.o ESP8266mDNS.a Hash.a core/core.a -lhal -lphy -lpp -lnet80211 -llwip2-536-feat -lwpa -lcrypto -lmain -lwps -lbearssl -laxtls -lespnow -lsmartconfig -lairkiss -lwpa2 -lstdc++ -lm -lc -lgcc -Wl,--end-group -L$(CURRENT_DIR)

	python3 $(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/elf2bin.py --eboot $(ARDUINO_DIR)hardware/esp8266/2.7.4/bootloaders/eboot/eboot.elf --app ./$(MAIN_SKETCH).elf --flash_mode $(FLASH_MODE) --flash_freq 40 --flash_size $(FLASH_SIZE) --path $(ARDUINO_DIR)tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin --out ./$(MAIN_SKETCH).bin

	$(info Creating BIN file...)

	python3 $(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/signing.py --mode sign --privatekey ./private.key --bin ./$(MAIN_SKETCH).bin --out ./$(MAIN_SKETCH).bin.signed --legacy ./$(MAIN_SKETCH).bin.legacy_sig

	$(ARDUINO_DIR)tools/python3/3.7.2-post1/python3 $(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/sizes.py --elf ./$(MAIN_SKETCH).elf --path $(ARDUINO_DIR)tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin

clean:
	rm -rf *.o
	rm -rf *.c.d
	rm -rf *.cpp.d
	rm -rf *.S.d
	rm -rf core/core.a
	rm -rf libb64/*
	rm -rf spiffs/*
	rm -rf umm_malloc/*
	rm -rf *.elf
	rm -rf *.hex
	rm -rf *.eep
	rm -rf *.map
	rm -rf *.ld
	rm -rf *.bin
	rm -rf *.a

upload:	
	$(info uploading...)
	python3 $(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/upload.py --chip esp8266 --port $(DEVICE) --baud $(BAUD) --before no_reset --after soft_reset write_flash 0x0 ./$(MAIN_SKETCH).bin 
ota_upload:
	python3 $(ARDUINO_DIR)hardware/esp8266/2.7.4/tools/espota.py -i $(DEVICEIP) -p 8266 --auth= -f ./$(MAIN_SKETCH).bin

Well what is the actual size of the chip ?

FLASH_SIZE=1M

and what do you reserve for SPIFFS ?

#include "FS.h"

I thought that was deprecated from core 2.6.1 ?

The flash size of the Sonoff R2 is 1MB and is correctly detected by Arduino, I don't reserve anything for SPIFFS I think it's some default I don't know, how can I check that?

I used "FS.h" because it was an easy example online, I see it works in Arduino but not via Makefile, I tried with a more recent example but It didn't change much, I cannot include it here because it consists of several classes but the logic and the result is the same.

Well if you select the board in the IDE, isn't one of the options the SPIFFS size as part of the Flash size ? Somehow your board isn't in my boards list, but i am using an old core. What does the IDE tell you (verbose output) when you compile ? When i compile an ESP8285 with 1M and 128KB SPIFFS it lists the Flashsize as

FlashSize=1M128

So i suggest you try adding the SPIFFS size to the FlashSize like that.

you might compare the .hex file outputs to make sure the binaries are the same and if not try to figure out what is different.

you may be able to get some symbol information from the .elf file

Your are my idol,
on Arduino the Flash size was set to "Flash Size: 1MB (FS:64KB OTA:~470KB)", this is translated to

arduino_builder ... eesz=1M64 ...

which turns into the compiler option:

xtensa-lx106-elf-gcc ... -Teagle.flash.1m64.ld ...

my Makefile had:

-Teagle.flash.4m2m.ld

which is obviously wrong and was for a bigger flash than I have right now.

Thank you

1 Like

thank you for your input, I will try it next time when I'll have a similar problem. Comparing hex files wasn't even on my radar before your input.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.