184 lines
4.1 KiB
Makefile
184 lines
4.1 KiB
Makefile
# ESP32 Tang Server Makefile
|
|
# Convenient shortcuts for ESP-IDF development tasks
|
|
|
|
.DEFAULT_GOAL := help
|
|
|
|
# Configuration variables
|
|
PORT ?= /dev/ttyUSB0
|
|
BAUD ?= 115200
|
|
TARGET ?= esp32
|
|
|
|
# Help target
|
|
.PHONY: help
|
|
help:
|
|
@echo "ESP32 Tang Server Development Commands"
|
|
@echo "====================================="
|
|
@echo ""
|
|
@echo "Setup:"
|
|
@echo " setup-target Set ESP32 as build target"
|
|
@echo " menuconfig Open configuration menu"
|
|
@echo ""
|
|
@echo "Build:"
|
|
@echo " build Build the project"
|
|
@echo " clean Clean build files"
|
|
@echo " fullclean Full clean (including config)"
|
|
@echo ""
|
|
@echo "Flash & Monitor:"
|
|
@echo " flash Flash to device"
|
|
@echo " monitor Open serial monitor"
|
|
@echo " flash-monitor Flash and immediately monitor"
|
|
@echo ""
|
|
@echo "Development:"
|
|
@echo " size Show binary size analysis"
|
|
@echo " erase Erase flash completely"
|
|
@echo " bootloader Flash bootloader only"
|
|
@echo ""
|
|
@echo "Board Management:"
|
|
@echo " list-boards List connected boards"
|
|
@echo " detect-port Detect serial ports"
|
|
@echo " board-info Show board information"
|
|
@echo ""
|
|
@echo "Environment variables:"
|
|
@echo " PORT=/dev/ttyUSB0 (default serial port)"
|
|
@echo " BAUD=115200 (default baud rate)"
|
|
@echo " TARGET=esp32 (default target)"
|
|
|
|
# Setup commands
|
|
.PHONY: setup-target
|
|
setup-target:
|
|
idf.py set-target $(TARGET)
|
|
|
|
.PHONY: menuconfig
|
|
menuconfig:
|
|
idf.py menuconfig
|
|
|
|
# Build commands
|
|
.PHONY: build
|
|
build:
|
|
idf.py build
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
idf.py clean
|
|
|
|
.PHONY: fullclean
|
|
fullclean:
|
|
idf.py fullclean
|
|
|
|
# Flash and monitor commands
|
|
.PHONY: flash
|
|
flash:
|
|
idf.py -p $(PORT) -b $(BAUD) flash
|
|
|
|
.PHONY: monitor
|
|
monitor:
|
|
idf.py -p $(PORT) -b $(BAUD) monitor
|
|
|
|
.PHONY: flash-monitor
|
|
flash-monitor:
|
|
idf.py -p $(PORT) -b $(BAUD) flash monitor
|
|
|
|
# Development utilities
|
|
.PHONY: size
|
|
size:
|
|
idf.py size
|
|
|
|
.PHONY: size-components
|
|
size-components:
|
|
idf.py size-components
|
|
|
|
.PHONY: size-files
|
|
size-files:
|
|
idf.py size-files
|
|
|
|
.PHONY: erase
|
|
erase:
|
|
idf.py -p $(PORT) erase-flash
|
|
|
|
.PHONY: bootloader
|
|
bootloader:
|
|
idf.py -p $(PORT) bootloader-flash
|
|
|
|
# Show partition table
|
|
.PHONY: partition-table
|
|
partition-table:
|
|
idf.py partition-table
|
|
|
|
# Generate compilation database for IDE support
|
|
.PHONY: compile-commands
|
|
compile-commands:
|
|
idf.py build --cmake-args="-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
|
|
|
|
# Development shortcuts
|
|
.PHONY: dev
|
|
dev: build flash-monitor
|
|
|
|
.PHONY: quick
|
|
quick: build flash
|
|
|
|
# Board management
|
|
.PHONY: list-boards
|
|
list-boards:
|
|
idf.py -p $(PORT) board_info || echo "Connect board to $(PORT)"
|
|
|
|
.PHONY: detect-port
|
|
detect-port:
|
|
@echo "Scanning for ESP32 devices..."
|
|
@if ls /dev/ttyUSB* >/dev/null 2>&1; then \
|
|
echo "Found USB serial devices:"; \
|
|
ls -la /dev/ttyUSB* | head -5; \
|
|
elif ls /dev/ttyACM* >/dev/null 2>&1; then \
|
|
echo "Found ACM serial devices:"; \
|
|
ls -la /dev/ttyACM* | head -5; \
|
|
else \
|
|
echo "No serial devices found. Make sure ESP32 is connected."; \
|
|
fi
|
|
|
|
.PHONY: board-info
|
|
board-info:
|
|
@echo "Board Information:"
|
|
@echo "=================="
|
|
@echo "Target: $(TARGET)"
|
|
@echo "Port: $(PORT)"
|
|
@echo "Baud: $(BAUD)"
|
|
@echo ""
|
|
@echo "ESP-IDF Version:"
|
|
@idf.py --version
|
|
@echo ""
|
|
@echo "Project status:"
|
|
@idf.py show-port-info -p $(PORT) 2>/dev/null || echo "No device connected to $(PORT)"
|
|
|
|
# Show ESP-IDF version and tools
|
|
.PHONY: version
|
|
version:
|
|
@echo "ESP-IDF Version Information:"
|
|
@idf.py --version
|
|
@echo ""
|
|
@echo "Toolchain versions:"
|
|
@xtensa-esp32-elf-gcc --version | head -1 || echo "Toolchain not found"
|
|
@python3 --version
|
|
@cmake --version | head -1
|
|
|
|
# Validate project structure
|
|
.PHONY: validate
|
|
validate:
|
|
@echo "Validating ESP-IDF project structure..."
|
|
@if [ ! -f "CMakeLists.txt" ]; then \
|
|
echo "Error: CMakeLists.txt not found"; \
|
|
exit 1; \
|
|
fi
|
|
@if [ ! -d "main" ]; then \
|
|
echo "Error: main directory not found"; \
|
|
exit 1; \
|
|
fi
|
|
@echo "Project validation passed!"
|
|
|
|
# Full development cycle
|
|
.PHONY: full-setup
|
|
full-setup: setup-target menuconfig build
|
|
@echo ""
|
|
@echo "Full setup complete! You can now:"
|
|
@echo " make flash # Flash to device"
|
|
@echo " make monitor # View serial output"
|
|
@echo " make dev # Flash and monitor"
|