-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
74 lines (55 loc) · 1.83 KB
/
Makefile
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
ESP32-NONOS:= /media/DATA/Espressif_project/esp32-nonos
include $(ESP32-NONOS)/Header.mk
LD_DIR:= $(ESP32-NONOS)/ld
CC:= $(XTENSA)/bin/xtensa-esp32-elf-gcc
LD:= $(XTENSA)/bin/xtensa-esp32-elf-ld
SIZE:=$(XTENSA)/bin/xtensa-esp32-elf-size
ESP32_OBJ:= $(wildcard $(ESP32-NONOS)/builds/*.o)
NAME:= $(shell basename `pwd`)
DIR_SRC:= $(shell find -type d -not -path './.*')
SRC:= $(shell find -name '*.S' -o -name '*.c' -o -name '*.cpp')
OBJ:= $(addprefix $(OBJ_DIR)/, $(addsuffix .o, $(shell basename -a $(SRC))))
LD_FILES:= $(wildcard $(LD_DIR:=/*.ld))
ESP32_DIR_SRC:= $(shell find $(ESP32-NONOS) -type d -not -path './.*')
# Add include of ESP32-NONOS
CFLAG:= $(addprefix -I, $(ESP32_DIR_SRC) './')
LDFLAGS:= $(addprefix -T, $(LD_FILES)) \
-L$(XTENSA)/xtensa-esp32-elf/lib \
-L$(XTENSA)/lib/gcc/xtensa-esp32-elf/8.2.0
VPATH:= $(DIR_SRC)
build : $(NAME).bin
@$(SIZE) -B -d $(NAME).elf
@echo
upload :
@# ESP32-PICO-D4
@esptool.py -c esp32 write_flash -sc 6,17,8,11,16 0x1000 $(NAME).bin
@# ESP32
@#@esptool.py -c esp32 write_flash 0x1000 $(NAME).bin
$(NAME).bin : $(NAME).elf
@esptool.py -c esp32 elf2image -ff 80m -fm dio -fs 4MB $< #ESP32
@#esptool.py -c esp32 elf2image -ff 80m -fm dio -fs 4MB -sc 6,17,8,11,16 $< #ESP32-PICO-D4
@echo 'Binary "$(NAME).bin" created !'
@echo
$(NAME).elf : ESP32-NONOS $(OBJ_DIR) $(OBJ)
@$(LD) $(LDFLAGS) $(ESP32_OBJ) $(OBJ) -o $(NAME).elf \
-lm -lgcc -lc -lsupc++
@echo
@echo $(NAME) 'compiled !'
@echo
ESP32-NONOS :
@$(MAKE) --directory=$(ESP32-NONOS) build
$(OBJ_DIR) :
@mkdir $(OBJ_DIR)
@echo
@echo '$(NAME) "$(OBJ_DIR)" folder created !'
@echo
# Rules for each type of sources
$(OBJ_DIR)/%.c.o : %.c
@$(CC) $(CFLAG) -o $@ -c $<
@echo $< '-->' $@
$(OBJ_DIR)/%.cpp.o : %.cpp
@$(CC) $(CFLAG) -o $@ -c $<
@echo $< '-->' $@
$(OBJ_DIR)/%.S.o : %.S
@$(CC) $(CFLAG) -o $@ -c $<
@echo $< '-->' $@