Files
2026-06-13 17:33:00 -06:00

113 lines
4.2 KiB
Makefile

STANDALONE_ENV ?= rsdeck_915
RNODE_DIR ?= vendor/rnode_firmware
LAUNCHER_DIR ?= launcher
BUILD_DIR ?= build
DIST_DIR ?= dist
PARTITION_CSV := partitions/rsdeck_16mb_dual.csv
PARTITIONS_BIN := $(BUILD_DIR)/rsdeck_16mb_dual_partitions.bin
FULL_NAME := rsdeck-full
STANDALONE_NAME := rsdeck-standalone
RNODE_ONLY_NAME := rsdeck-rnode
M5LAUNCHER_STANDALONE_NAME := rsdeck-standalone-m5launcher
M5LAUNCHER_RNODE_NAME := rsdeck-rnode-m5launcher
FULL_BIN := $(BUILD_DIR)/$(FULL_NAME).bin
STANDALONE_BIN := $(BUILD_DIR)/$(STANDALONE_NAME).bin
RNODE_ONLY_BIN := $(BUILD_DIR)/$(RNODE_ONLY_NAME).bin
LAUNCHER_BIN := $(LAUNCHER_DIR)/.pio/build/tdeck_launcher/firmware.bin
STANDALONE_APP_BIN := .pio/build/$(STANDALONE_ENV)/firmware.bin
STANDALONE_FACTORY_BIN := rsdeck-merged.bin
RNODE_OUTPUT := $(RNODE_DIR)/build/tdeck.esp32.esp32s3
RNODE_BIN := $(RNODE_OUTPUT)/RNode_Firmware.ino.bin
RNODE_BOOTLOADER_BIN := $(RNODE_OUTPUT)/RNode_Firmware.ino.bootloader.bin
RNODE_PARTITIONS_BIN := $(RNODE_OUTPUT)/RNode_Firmware.ino.partitions.bin
BOOTLOADER_BIN := .pio/build/$(STANDALONE_ENV)/bootloader.bin
PLATFORMIO_ARDUINO ?= $(HOME)/.platformio/packages/framework-arduinoespressif32
ARDUINO15_ESP32 ?= $(HOME)/Library/Arduino15/packages/esp32/hardware/esp32/2.0.17
GEN_ESPPART ?= $(if $(wildcard $(PLATFORMIO_ARDUINO)/tools/gen_esp32part.py),$(PLATFORMIO_ARDUINO)/tools/gen_esp32part.py,$(ARDUINO15_ESP32)/tools/gen_esp32part.py)
BOOT_APP0_BIN ?= $(if $(wildcard $(PLATFORMIO_ARDUINO)/tools/partitions/boot_app0.bin),$(PLATFORMIO_ARDUINO)/tools/partitions/boot_app0.bin,$(ARDUINO15_ESP32)/tools/partitions/boot_app0.bin)
PORT ?= $(port)
ifeq ($(PORT),)
PORT := /dev/ttyACM0
endif
.PHONY: all build prep-tdeck build-standalone build-launcher build-rnode check bundle full-image standalone-image rnode-only-image package release flash clean
all: bundle
build: package
prep-tdeck:
$(MAKE) -C $(RNODE_DIR) prep-esp32
build-standalone:
python3 -m platformio run -e $(STANDALONE_ENV)
build-launcher:
python3 -m platformio run -d $(LAUNCHER_DIR) -e tdeck_launcher
build-rnode:
$(MAKE) -C $(RNODE_DIR) firmware-tdeck
$(PARTITIONS_BIN): $(PARTITION_CSV)
mkdir -p $(BUILD_DIR)
python3 $(GEN_ESPPART) $(PARTITION_CSV) $(PARTITIONS_BIN)
check: build-launcher build-standalone build-rnode
python3 tools/check_image_fit.py --launcher $(LAUNCHER_BIN) --standalone $(STANDALONE_APP_BIN) --rnode $(RNODE_BIN)
full-image: check $(PARTITIONS_BIN)
python3 tools/make_dual_image.py \
--bootloader $(BOOTLOADER_BIN) \
--partitions $(PARTITIONS_BIN) \
--boot-app0 $(BOOT_APP0_BIN) \
--launcher $(LAUNCHER_BIN) \
--standalone $(STANDALONE_APP_BIN) \
--rnode $(RNODE_BIN) \
--output $(FULL_BIN)
standalone-image: build-standalone
mkdir -p $(BUILD_DIR)
cp $(STANDALONE_FACTORY_BIN) $(STANDALONE_BIN)
rnode-only-image: build-rnode
mkdir -p $(BUILD_DIR)
python3 -m esptool --chip esp32s3 merge-bin \
--flash-mode dio --flash-size 16MB \
--output $(RNODE_ONLY_BIN) \
0x0000 $(RNODE_BOOTLOADER_BIN) \
0x8000 $(RNODE_PARTITIONS_BIN) \
0xe000 $(BOOT_APP0_BIN) \
0x10000 $(RNODE_BIN)
bundle: full-image
package: full-image standalone-image rnode-only-image
mkdir -p $(DIST_DIR)
rm -f $(DIST_DIR)/$(FULL_NAME).zip \
$(DIST_DIR)/$(STANDALONE_NAME).zip \
$(DIST_DIR)/$(RNODE_ONLY_NAME).zip \
$(DIST_DIR)/$(M5LAUNCHER_STANDALONE_NAME).bin \
$(DIST_DIR)/$(M5LAUNCHER_RNODE_NAME).bin \
$(DIST_DIR)/rsdeck-standalone-app.bin \
$(DIST_DIR)/rsdeck-rnode-app.bin
python3 tools/package_merged_zip.py --image $(FULL_BIN) --name $(FULL_NAME) --output $(DIST_DIR)/$(FULL_NAME).zip
python3 tools/package_merged_zip.py --image $(STANDALONE_BIN) --name $(STANDALONE_NAME) --output $(DIST_DIR)/$(STANDALONE_NAME).zip
python3 tools/package_merged_zip.py --image $(RNODE_ONLY_BIN) --name $(RNODE_ONLY_NAME) --output $(DIST_DIR)/$(RNODE_ONLY_NAME).zip
cp $(STANDALONE_APP_BIN) $(DIST_DIR)/$(M5LAUNCHER_STANDALONE_NAME).bin
cp $(RNODE_BIN) $(DIST_DIR)/$(M5LAUNCHER_RNODE_NAME).bin
release: package
flash: bundle
python3 -m esptool --chip esp32s3 --port $(PORT) --baud 460800 --before default_reset --after hard_reset write-flash 0x0 $(FULL_BIN)
clean:
rm -rf $(BUILD_DIR) $(DIST_DIR) $(STANDALONE_FACTORY_BIN)