Make, .clangd, .clang-format, readme

This commit is contained in:
Imbus 2025-07-06 13:14:48 +02:00
parent e83579e442
commit 7f8d9307a1
4 changed files with 123 additions and 0 deletions

16
.clang-format Normal file
View file

@ -0,0 +1,16 @@
BasedOnStyle: LLVM
IndentWidth: 4 # Use 4 spaces for indentation
TabWidth: 4 # Tab width is also 4 spaces
UseTab: Never # Always use spaces instead of tabs
ColumnLimit: 120 # Wrap lines after 80 characters
AllowShortLoopsOnASingleLine: true
AlwaysBreakTemplateDeclarations: true
BreakConstructorInitializers: BeforeComma
AlignConsecutiveDeclarations:
Enabled: true
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: false
AlignConsecutiveMacros: true

14
.clangd Normal file
View file

@ -0,0 +1,14 @@
CompileFlags:
CompilationDatabase: build
Add:
- -ferror-limit=0
Remove:
- -mlong-calls
- -mlongcalls
- -fstrict-volatile-bitfields
- -fno-shrink-wrap
- -fno-tree-switch-conversion
Diagnostics:
Suppress:
- unknown_argument
- pp_file_not_found

60
Makefile Normal file
View file

@ -0,0 +1,60 @@
# === Configuration ===
PORT ?= /dev/ttyUSB0
BAUD ?= 460800
TARGET ?= esp32
PROJECT := $(shell basename $(CURDIR))
BUILD_DIR := build
RELEASE_DIR := release
# === Tool Selection ===
ifeq ($(PODMAN),1)
IDF := podman run --rm -v $(PWD):/project:Z -w /project docker.io/espressif/idf:latest idf.py
ESPTOOL := podman run --rm -v $(PWD):/project:Z -w /project docker.io/espressif/idf:latest esptool.py
else
IDF := idf.py
ESPTOOL := esptool.py
endif
ifeq ($(origin IDF_PATH), undefined)
ifeq ($(origin PODMAN), undefined)
$(shell printf "\033[1;31mIDF_PATH is not set. Did you forget to source the ESP-IDF environment?\033[0m\n" 1>&2)
$(shell printf '\033[1;31mSource the ESP-IDF environment by: "$$ source ~/esp/esp-idf/export.sh"\033[0m\n' 1>&2)
endif
endif
help:
@echo -e "Makefile for IDFHack\n"
@echo -e "Use 'make <target> PODMAN=1' to run in podman.\n"
@echo "Available targets:"
@echo " build - Build the binary"
@echo " menuconfig - Start the idf configuration tui"
@echo " release - Assemble release artifacts"
@echo " clean - Clean the tree"
@echo " nuke - Really clean the tree"
@echo " help - Show this help message"
@echo -e ""
menuconfig:
$(IDF) menuconfig
build:
$(IDF) build
flash:
$(IDF) flash
qemu:
$(IDF) qemu
clean:
$(IDF) clean
rm -rf release
issues:
bash ./scripts/find_issues.sh ./main
nuke: clean
rm -rf build
rm -rf .cache
.PHONY: build clean nuke help

33
README.md Normal file
View file

@ -0,0 +1,33 @@
# Building
1. Install the ESP-IDF toolchain (See: [Toolchain section](#toolchain]))
2. Source the environment `source ~/esp/esp-idf/export.sh` (yes i know)
3. idf.py build
4. idf.py flash
A makefile is provided to somewhat remedy this madness.
## Toolchain
See: [Standard Toolchain Setup for Linux](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/get-started/linux-macos-setup.html)
From the official docs, essentially:
```sh
mkdir -p ~/esp
cd ~/esp
git clone -b v5.4.2 --recursive https://github.com/espressif/esp-idf.git
cd ~/esp/esp-idf
./install.sh esp32 # This is the arch for our mcu (esp-wroom-32)
```
For qemu: (The environment needs to be sourced)
```sh
python $IDF_PATH/tools/idf_tools.py install qemu-xtensa
```
## Help and Resources
- Espressif docs on the ESP-IDF build system: [Build System](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/build-system.html)
- Dependencies found here: [ESP Registry](https://components.espressif.com/)
- Custon FreeRTOS to better facilitate the ESP: [ESP-IDF FreeRTOS](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/freertos.html)
- Vanilla FreeRTOS docs [FreeRTOS Documentation](https://www.freertos.org/Documentation/00-Overview)