add ESP32 build system with xtensa-esp-elf toolchain
This commit is contained in:
@@ -0,0 +1,56 @@
|
|||||||
|
# ========================================================== #
|
||||||
|
# Spider Runtime - ESP32 Build System #
|
||||||
|
# Toolchain: Espressif ESP-IDF (xtensa-esp-elf-g++) #
|
||||||
|
# ========================================================== #
|
||||||
|
|
||||||
|
CC := xtensa-esp-elf-g++
|
||||||
|
TARGET := spider_esp32.elf
|
||||||
|
SRCDIR := ../../src
|
||||||
|
BUILDDIR := bin
|
||||||
|
TARGETDIR := out
|
||||||
|
SRCEXT := cpp
|
||||||
|
OBJEXT := o
|
||||||
|
|
||||||
|
ESP_FLAGS := -DESP32 -DSPIDER_DISTRO_MICRO -DSPIDER_OS_NONE -mlongcalls -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti
|
||||||
|
|
||||||
|
CFLAGS := -Wall -std=c++20 -DSPIDER_COMPILING $(ESP_FLAGS)
|
||||||
|
LFLAGS := -Wl,--gc-sections -mlongcalls
|
||||||
|
INC := -I../../src/
|
||||||
|
|
||||||
|
# Exclude desktop-only modules
|
||||||
|
EXCLUDE := $(SRCDIR)/spider/runtime/util/Terminal.cpp \
|
||||||
|
$(SRCDIR)/spider/runtime/debug/LiveDebug.cpp \
|
||||||
|
$(SRCDIR)/spider/SpiderRuntime.cpp
|
||||||
|
|
||||||
|
# ESP32 specific entry point
|
||||||
|
EXTRA := $(SRCDIR)/spider/main_esp32.cpp
|
||||||
|
|
||||||
|
SOURCES := $(filter-out $(EXCLUDE), $(shell find $(SRCDIR) -type f -name "*.$(SRCEXT)" 2>/dev/null)) $(EXTRA)
|
||||||
|
OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.$(OBJEXT)))
|
||||||
|
|
||||||
|
all: directories $(TARGET)
|
||||||
|
@echo "Build complete: $(TARGETDIR)/$(TARGET)"
|
||||||
|
|
||||||
|
remake: cleaner all
|
||||||
|
|
||||||
|
directories:
|
||||||
|
@mkdir -p $(TARGETDIR)
|
||||||
|
@mkdir -p $(BUILDDIR)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@$(RM) -rf $(BUILDDIR)
|
||||||
|
|
||||||
|
cleaner: clean
|
||||||
|
@$(RM) -rf $(TARGETDIR)
|
||||||
|
|
||||||
|
$(TARGET): $(OBJECTS)
|
||||||
|
@echo "Linking $(TARGET)..."
|
||||||
|
$(CC) $(LFLAGS) -o $(TARGETDIR)/$(TARGET) $^
|
||||||
|
@echo "Done!"
|
||||||
|
|
||||||
|
$(BUILDDIR)/%.$(OBJEXT): $(SRCDIR)/%.$(SRCEXT)
|
||||||
|
@mkdir -p $(dir $@)
|
||||||
|
@echo "Compiling $<..."
|
||||||
|
$(CC) $(CFLAGS) $(INC) -c -o $@ $<
|
||||||
|
|
||||||
|
.PHONY: all remake clean cleaner
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,64 @@
|
|||||||
|
tab = '\t'
|
||||||
|
dollar = '$'
|
||||||
|
|
||||||
|
content = f"""# ========================================================== #
|
||||||
|
# Spider Runtime - ESP32 Build System #
|
||||||
|
# Toolchain: Espressif ESP-IDF (xtensa-esp-elf-g++) #
|
||||||
|
# ========================================================== #
|
||||||
|
|
||||||
|
CC := xtensa-esp-elf-g++
|
||||||
|
TARGET := spider_esp32.elf
|
||||||
|
SRCDIR := ../../src
|
||||||
|
BUILDDIR := bin
|
||||||
|
TARGETDIR := out
|
||||||
|
SRCEXT := cpp
|
||||||
|
OBJEXT := o
|
||||||
|
|
||||||
|
ESP_FLAGS := -DESP32 -DSPIDER_DISTRO_MICRO -DSPIDER_OS_NONE -mlongcalls -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti
|
||||||
|
|
||||||
|
CFLAGS := -Wall -std=c++20 -DSPIDER_COMPILING {dollar}(ESP_FLAGS)
|
||||||
|
LFLAGS := -Wl,--gc-sections -mlongcalls
|
||||||
|
INC := -I../../src/
|
||||||
|
|
||||||
|
# Exclude desktop-only modules
|
||||||
|
EXCLUDE := {dollar}(SRCDIR)/spider/runtime/util/Terminal.cpp \\
|
||||||
|
{dollar}(SRCDIR)/spider/runtime/debug/LiveDebug.cpp \\
|
||||||
|
{dollar}(SRCDIR)/spider/SpiderRuntime.cpp
|
||||||
|
|
||||||
|
# ESP32 specific entry point
|
||||||
|
EXTRA := {dollar}(SRCDIR)/spider/main_esp32.cpp
|
||||||
|
|
||||||
|
SOURCES := {dollar}(filter-out {dollar}(EXCLUDE), {dollar}(shell find {dollar}(SRCDIR) -type f -name "*.{dollar}(SRCEXT)" 2>/dev/null)) {dollar}(EXTRA)
|
||||||
|
OBJECTS := {dollar}(patsubst {dollar}(SRCDIR)/%,{dollar}(BUILDDIR)/%,{dollar}(SOURCES:.{dollar}(SRCEXT)=.{dollar}(OBJEXT)))
|
||||||
|
|
||||||
|
all: directories {dollar}(TARGET)
|
||||||
|
{tab}@echo "Build complete: {dollar}(TARGETDIR)/{dollar}(TARGET)"
|
||||||
|
|
||||||
|
remake: cleaner all
|
||||||
|
|
||||||
|
directories:
|
||||||
|
{tab}@mkdir -p {dollar}(TARGETDIR)
|
||||||
|
{tab}@mkdir -p {dollar}(BUILDDIR)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
{tab}@{dollar}(RM) -rf {dollar}(BUILDDIR)
|
||||||
|
|
||||||
|
cleaner: clean
|
||||||
|
{tab}@{dollar}(RM) -rf {dollar}(TARGETDIR)
|
||||||
|
|
||||||
|
{dollar}(TARGET): {dollar}(OBJECTS)
|
||||||
|
{tab}@echo "Linking {dollar}(TARGET)..."
|
||||||
|
{tab}{dollar}(CC) {dollar}(LFLAGS) -o {dollar}(TARGETDIR)/{dollar}(TARGET) {dollar}^
|
||||||
|
{tab}@echo "Done!"
|
||||||
|
|
||||||
|
{dollar}(BUILDDIR)/%.{dollar}(OBJEXT): {dollar}(SRCDIR)/%.{dollar}(SRCEXT)
|
||||||
|
{tab}@mkdir -p {dollar}(dir {dollar}@)
|
||||||
|
{tab}@echo "Compiling {dollar}<..."
|
||||||
|
{tab}{dollar}(CC) {dollar}(CFLAGS) {dollar}(INC) -c -o {dollar}@ {dollar}<
|
||||||
|
|
||||||
|
.PHONY: all remake clean cleaner
|
||||||
|
"""
|
||||||
|
|
||||||
|
with open('Makefile', 'w', newline='\n') as f:
|
||||||
|
f.write(content)
|
||||||
|
print("Makefile generated successfully!")
|
||||||
Binary file not shown.
@@ -0,0 +1,8 @@
|
|||||||
|
// ESP32 entry point for Spider Runtime
|
||||||
|
// This replaces SpiderRuntime.cpp for microcontroller builds
|
||||||
|
#include "SpiderRuntime.hpp"
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
// TODO: initialize Spider runtime for ESP32
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
#define SPIDER_NO_ICU
|
#define SPIDER_NO_ICU
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if define(SPIDER_OS_NONE)
|
#if defined(SPIDER_OS_NONE)
|
||||||
#define SPIDER_OS_NAME "None"
|
#define SPIDER_OS_NAME "None"
|
||||||
#elif !defined(SPIDER_OS_MCU)
|
#elif !defined(SPIDER_OS_MCU)
|
||||||
#error "[Spider Distro] Unsupported MCU OS"
|
#error "[Spider Distro] Unsupported MCU OS"
|
||||||
|
|||||||
Reference in New Issue
Block a user