forked from ranzbak/c64-konsool
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
117 lines (87 loc) · 2.66 KB
/
Copy pathMakefile
File metadata and controls
117 lines (87 loc) · 2.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
PORT ?= /dev/ttyACM0
IDF_PATH ?= $(shell cat .IDF_PATH 2>/dev/null || echo `pwd`/esp-idf)
IDF_TOOLS_PATH ?= $(shell cat .IDF_TOOLS_PATH 2>/dev/null || echo `pwd`/esp-idf-tools)
IDF_BRANCH ?= v5.5.1
IDF_EXPORT_QUIET ?= 1
IDF_GITHUB_ASSETS ?= dl.espressif.com/github_assets
MAKEFLAGS += --silent
SHELL := /usr/bin/env bash
DEVICE ?= tanmatsu # Default target device
export IDF_TOOLS_PATH
export IDF_GITHUB_ASSETS
# General targets
.PHONY: all
all: build flash
.PHONY: install
install: flash
# Preparation
.PHONY: prepare
prepare: sdk
.PHONY: sdk
sdk:
if test -d "$(IDF_PATH)"; then echo -e "ESP-IDF target folder exists!\r\nPlease remove the folder or un-set the environment variable."; exit 1; fi
if test -d "$(IDF_TOOLS_PATH)"; then echo -e "ESP-IDF tools target folder exists!\r\nPlease remove the folder or un-set the environment variable."; exit 1; fi
git clone --recursive --branch "$(IDF_BRANCH)" https://github.com/espressif/esp-idf.git "$(IDF_PATH)" --depth=1 --shallow-submodules
cd "$(IDF_PATH)"; git submodule update --init --recursive
cd "$(IDF_PATH)"; bash install.sh all
.PHONY: removesdk
removesdk:
rm -rf "$(IDF_PATH)"
rm -rf "$(IDF_TOOLS_PATH)"
.PHONY: refreshsdk
refreshsdk: removesdk sdk
.PHONY: menuconfig
menuconfig:
source "$(IDF_PATH)/export.sh" && idf.py menuconfig -DDEVICE=$(DEVICE)
# Cleaning
.PHONY: clean
clean:
rm -rf "build"
.PHONY: fullclean
fullclean: clean
rm -rf sdkconfig
rm -rf sdkconfig.old
rm -rf sdkconfig.ci
rm -rf sdkconfig.defaults
.PHONY: distclean
distclean: fullclean
rm -rf $(IDF_PATH)
rm -rf $(IDF_TOOLS_PATH)
rm -rf managed_components
rm -rf dependencies.lock
rm -rf .cache
# Check if build environment is set up correctly
.PHONY: checkbuildenv
checkbuildenv:
if [ -z "$(IDF_PATH)" ]; then echo "IDF_PATH is not set!"; exit 1; fi
if [ -z "$(IDF_TOOLS_PATH)" ]; then echo "IDF_TOOLS_PATH is not set!"; exit 1; fi
# Building
.PHONY: build
build: checkbuildenv
source "$(IDF_PATH)/export.sh" >/dev/null && idf.py build -DDEVICE=$(DEVICE)
# Tools
.PHONY: size
size:
source "$(IDF_PATH)/export.sh" && idf.py size
.PHONY: size-components
size-components:
source "$(IDF_PATH)/export.sh" && idf.py size-components
.PHONY: size-files
size-files:
source "$(IDF_PATH)/export.sh" && idf.py size-files
# Formatting
.PHONY: format
format:
find main/ -iname '*.h' -o -iname '*.c' -o -iname '*.cpp' | xargs clang-format -i
# Flash directly to the badge
.PHONY: flash
flash: build
source "$(IDF_PATH)/export.sh" && \
idf.py flash -p $(PORT)
.PHONY: flashmonitor
flashmonitor: build
source "$(IDF_PATH)/export.sh" && \
idf.py flash -p $(PORT) monitor
.PHONY: monitor
monitor:
source "$(IDF_PATH)/export.sh" && idf.py monitor -p $(PORT)