mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
Until now, the ESP8266 target used a non-tagged git hash revision of the RTOS SDK (from Oct 2017). Moreover, the compiler was also a custom-built gcc. This commit sets the RTOS SDK version to v2.1.0, released Oct 2018, which is the latest old-style SDK for ESP. The commit also changes the used gcc to an Espressif-provided pre-built toolchain, which is tagged for the (latest) v3.0.1 SDK release. (The SDK bump is not to the latest SDK version because the new v3.x line of the SDK is "ESP-IDF style", which is incompatible with the current target code base. On the other hand, the toolchain comes from the latest SDK release because the v2.x line had no pre-built toolchain suggestions -- but it builds v2.x sources correctly.) JerryScript-DCO-1.0-Signed-off-by: Akos Kiss akiss@inf.u-szeged.hu
87 lines
2.6 KiB
Makefile
87 lines
2.6 KiB
Makefile
# Copyright JS Foundation and other contributors, http://js.foundation
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
CURDIR = `pwd`
|
|
ESP_LIB = $(SDK_PATH)/lib
|
|
BUILD_DIR = build/obj-esp8266
|
|
COPYTARGET = targets/esp8266/libs
|
|
USBDEVICE ?= /dev/ttyUSB0
|
|
JERRYHEAP ?= 20
|
|
ESPTOOL ?= $(ESPTOOL_PATH)/esptool.py
|
|
|
|
# compile flags
|
|
ESP_CFLAGS := -D__TARGET_ESP8266 -D__attr_always_inline___=
|
|
|
|
MFORCE32 = $(shell xtensa-lx106-elf-gcc --help=target | grep mforce-l32)
|
|
|
|
ifneq ($(MFORCE32),)
|
|
# Your compiler supports the -mforce-l32 flag which means that
|
|
# constants can be placed in ROM to free additional RAM
|
|
ESP_CFLAGS += -DJERRY_CONST_DATA="__attribute__((aligned(4))) __attribute__((section(\".irom.text\")))"
|
|
ESP_CFLAGS += -mforce-l32
|
|
endif
|
|
|
|
ESP_CFLAGS += -Wl,-EL -fno-inline-functions
|
|
ESP_CFLAGS += -ffunction-sections -fdata-sections
|
|
ESP_CFLAGS += -mlongcalls -mtext-section-literals -mno-serialize-volatile
|
|
|
|
.PHONY: jerry js2c mkbin check-env flash clean
|
|
|
|
all: check-env jerry js2c mkbin
|
|
|
|
jerry:
|
|
mkdir -p $(BUILD_DIR)
|
|
mkdir -p $(COPYTARGET)
|
|
cmake -B$(BUILD_DIR) -H./ \
|
|
-DCMAKE_SYSTEM_NAME=MCU \
|
|
-DCMAKE_SYSTEM_PROCESSOR=xtensia-lx106 \
|
|
-DCMAKE_C_COMPILER=xtensa-lx106-elf-gcc \
|
|
-DCMAKE_C_COMPILER_WORKS=TRUE \
|
|
-DENABLE_LTO=OFF \
|
|
-DENABLE_ALL_IN_ONE=ON \
|
|
-DJERRY_CMDLINE=OFF \
|
|
-DEXTERNAL_COMPILE_FLAGS="$(ESP_CFLAGS)" \
|
|
-DMEM_HEAP_SIZE_KB=$(JERRYHEAP)
|
|
|
|
make -C$(BUILD_DIR) jerry-core jerry-libm
|
|
cp $(BUILD_DIR)/lib/libjerry-core.a $(COPYTARGET)/
|
|
cp $(BUILD_DIR)/lib/libjerry-libm.a $(COPYTARGET)/
|
|
|
|
js2c:
|
|
tools/js2c.py --dest targets/esp8266/include --js-source targets/esp8266/js
|
|
|
|
mkbin:
|
|
make -Ctargets/esp8266 clean
|
|
make -Ctargets/esp8266 BOOT=new APP=0 SPI_SPEED=40 SPI_MODE=DIO SPI_SIZE_MAP=4
|
|
|
|
check-env:
|
|
ifndef SDK_PATH
|
|
$(error SDK_PATH is undefined for ESP8266)
|
|
endif
|
|
ifndef BIN_PATH
|
|
$(error BIN_PATH is undefined for ESP8266)
|
|
endif
|
|
|
|
flash:
|
|
$(ESPTOOL) --port $(USBDEVICE) write_flash \
|
|
0x00000 $(BIN_PATH)/eagle.flash.bin \
|
|
0x20000 $(BIN_PATH)/eagle.irom0text.bin \
|
|
0x3FC000 $(SDK_PATH)/bin/esp_init_data_default.bin
|
|
|
|
erase_flash:
|
|
$(ESPTOOL) --port $(USBDEVICE) erase_flash
|
|
|
|
clean:
|
|
rm -rf $(BUILD_DIR)
|