From 29691ba182e19bbd5c35312cb58362a5429b4bca Mon Sep 17 00:00:00 2001 From: Diego Lopez <2109094@upy.edu.mx> Date: Wed, 25 Mar 2026 15:44:25 -0600 Subject: [PATCH] add ESP32 build system with xtensa-esp-elf toolchain --- build/esp32/Makefile | 11 ++++++++--- build/esp32/bin/{spider => }/main_esp32.o | Bin build/esp32/gen_makefile.py | 11 ++++++++--- {src/spider => build/esp32}/main_esp32.cpp | 2 +- build/esp32/out/spider_esp32.elf | Bin 6576752 -> 6576752 bytes 5 files changed, 17 insertions(+), 7 deletions(-) rename build/esp32/bin/{spider => }/main_esp32.o (100%) rename {src/spider => build/esp32}/main_esp32.cpp (83%) diff --git a/build/esp32/Makefile b/build/esp32/Makefile index a81821d..75cce14 100644 --- a/build/esp32/Makefile +++ b/build/esp32/Makefile @@ -22,11 +22,11 @@ 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 +# ESP32 specific entry point (local to this build folder) +EXTRA := ./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))) +OBJECTS := $(patsubst ./%,$(BUILDDIR)/%,$(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.$(OBJEXT)))) all: directories $(TARGET) @echo "Build complete: $(TARGETDIR)/$(TARGET)" @@ -53,4 +53,9 @@ $(BUILDDIR)/%.$(OBJEXT): $(SRCDIR)/%.$(SRCEXT) @echo "Compiling $<..." $(CC) $(CFLAGS) $(INC) -c -o $@ $< +$(BUILDDIR)/%.$(OBJEXT): ./%.$(SRCEXT) + @mkdir -p $(dir $@) + @echo "Compiling $<..." + $(CC) $(CFLAGS) $(INC) -c -o $@ $< + .PHONY: all remake clean cleaner diff --git a/build/esp32/bin/spider/main_esp32.o b/build/esp32/bin/main_esp32.o similarity index 100% rename from build/esp32/bin/spider/main_esp32.o rename to build/esp32/bin/main_esp32.o diff --git a/build/esp32/gen_makefile.py b/build/esp32/gen_makefile.py index a29d28c..7f7c5b4 100644 --- a/build/esp32/gen_makefile.py +++ b/build/esp32/gen_makefile.py @@ -25,11 +25,11 @@ 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 +# ESP32 specific entry point (local to this build folder) +EXTRA := ./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))) +OBJECTS := {dollar}(patsubst ./%,{dollar}(BUILDDIR)/%,{dollar}(patsubst {dollar}(SRCDIR)/%,{dollar}(BUILDDIR)/%,{dollar}(SOURCES:.{dollar}(SRCEXT)=.{dollar}(OBJEXT)))) all: directories {dollar}(TARGET) {tab}@echo "Build complete: {dollar}(TARGETDIR)/{dollar}(TARGET)" @@ -56,6 +56,11 @@ cleaner: clean {tab}@echo "Compiling {dollar}<..." {tab}{dollar}(CC) {dollar}(CFLAGS) {dollar}(INC) -c -o {dollar}@ {dollar}< +{dollar}(BUILDDIR)/%.{dollar}(OBJEXT): ./%.{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 """ diff --git a/src/spider/main_esp32.cpp b/build/esp32/main_esp32.cpp similarity index 83% rename from src/spider/main_esp32.cpp rename to build/esp32/main_esp32.cpp index 024b35f..8925e2e 100644 --- a/src/spider/main_esp32.cpp +++ b/build/esp32/main_esp32.cpp @@ -1,6 +1,6 @@ // ESP32 entry point for Spider Runtime // This replaces SpiderRuntime.cpp for microcontroller builds -#include "SpiderRuntime.hpp" +#include int main() { // TODO: initialize Spider runtime for ESP32 diff --git a/build/esp32/out/spider_esp32.elf b/build/esp32/out/spider_esp32.elf index a101fde3705fa71c4696265d7e8ec2fd0bf75349..c76484920fee5f9ec1b4336a5dff8f3e5faf434a 100644 GIT binary patch delta 5981 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 p!R*ez#FU0$YH4f&1iH$9MLn{6FN*GeiIY delta 5994 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