-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
121 lines (92 loc) · 4.27 KB
/
Makefile
File metadata and controls
121 lines (92 loc) · 4.27 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
118
119
120
121
#
# Makefile
#
COPTS ?= -mcpu=arm926ej-s -Os -fno-caller-saves -pipe -funit-at-a-time -msoft-float -fno-plt -fno-unwind-tables -fno-asynchronous-unwind-tables
CC = arm-linux-gnueabi-gcc
CXX = arm-linux-gnueabi-g++
AR = arm-linux-gnueabi-ar
LD = arm-linux-gnueabi-ld
BIN = omc
BUILD_DIR ?= build
BUILD_OBJ_DIR = $(BUILD_DIR)/obj
BUILD_BIN_DIR = $(BUILD_DIR)
prefix ?= /usr
bindir ?= $(prefix)/bin
LIB_DIR ?= lib
LIB_EXT_DIR ?= lib_ext
LVGL_DIR ?= $(LIB_EXT_DIR)/lvgl
GLAZE_DIR ?= $(LIB_EXT_DIR)/glaze/include
LIBARTNET_DIR ?= $(LIB_EXT_DIR)/libartnet
WARNINGS := -Wall -Wshadow -Wundef -Wextra -Wno-unused-function -Wno-error=strict-prototypes -Wpointer-arith \
-fno-strict-aliasing -Wno-error=cpp -Wuninitialized -Wmaybe-uninitialized -Wno-unused-parameter -Wno-missing-field-initializers -Wtype-limits \
-Wsizeof-pointer-memaccess -Wno-format-nonliteral -Wno-cast-qual -Wunreachable-code -Wno-switch-default -Wreturn-type -Wmultichar -Wformat-security \
-Wno-ignored-qualifiers -Wno-error=pedantic -Wno-sign-compare -Wno-error=missing-prototypes -Wdouble-promotion -Wclobbered -Wdeprecated -Wempty-body \
-Wshift-negative-value -Wstack-usage=2048 -Wno-unused-value
DEPFLAGS = -MMD -MP -D=TARGET_XM32
# normal build
CFLAGS ?= -std=c11 -flto=auto $(COPTS) -g0 -D_GNU_SOURCE -I$(LIB_DIR)/ -I$(LVGL_DIR)/ -I$(GLAZE_DIR)/ -I$(LIBARTNET_DIR)/ $(WARNINGS) $(DEPFLAGS)
CXXFLAGS ?= -std=c++23 -flto=auto $(COPTS) -g0 -D_GNU_SOURCE -I$(LIB_DIR)/ -I$(LVGL_DIR)/ -I$(GLAZE_DIR)/ -I$(LIBARTNET_DIR)/ $(WARNINGS) $(DEPFLAGS)
# debug build
#CFLAGS ?= -std=c11 -g -D_GNU_SOURCE -I$(LVGL_DIR)/ -I$(GLAZE_DIR)/ -I$(LIBARTNET_DIR)/ $(WARNINGS) $(DEPFLAGS)
#CXXFLAGS ?= -std=c++23 -D_GNU_SOURCE -g -I$(LVGL_DIR)/ -I$(GLAZE_DIR)/ -I$(LIBARTNET_DIR)/ $(WARNINGS) $(DEPFLAGS)
LDFLAGS ?= -flto=auto -lm -lrt -lpthread -lartnet
# Collect source files recursively
CSRCS := $(shell find src -type f -name '*.c' -print) \
$(shell find $(LIB_DIR) -type f -name '*.c' -print) \
$(shell find $(LVGL_DIR)/src -type f -name '*.c' -print) \
$(shell find $(LIBARTNET_DIR)/artnet -type f -name '*.c' -print)
CXXSRCS := $(shell find src -type f -name '*.cpp' -print) \
$(shell find $(LIB_DIR) -type f -name '*.cpp' -print) \
$(shell find $(LVGL_DIR)/src -type f -name '*.cpp' -print) \
$(shell find $(LIBARTNET_DIR)/artnet -type f -name '*.cpp' -print)
all: copy default
test:
@echo $(CSRCS)
# Include LVGL sources
#include $(LVGL_DIR)/lvgl.mk
OBJEXT ?= .o
COBJS = $(CSRCS:.c=$(OBJEXT))
CXXOBJS = $(CXXSRCS:.cpp=$(OBJEXT))
AOBJS = $(ASRCS:.S=$(OBJEXT))
SRCS = $(ASRCS) $(CSRCS) $(CXXSRCS)
OBJS = $(AOBJS) $(COBJS) $(CXXOBJS)
TARGET = $(addprefix $(BUILD_OBJ_DIR)/, $(patsubst ./%, %, $(OBJS)))
DEPS = $(TARGET:.o=.d)
$(BUILD_OBJ_DIR)/%.o: %.c
@mkdir -p $(dir $@)
@$(CC) $(CFLAGS) -c $< -o $@
@echo "CC $<"
$(BUILD_OBJ_DIR)/%.o: %.cpp
@mkdir -p $(dir $@)
@$(CXX) $(CXXFLAGS) -c $< -o $@
@echo "CXX $<"
$(BUILD_OBJ_DIR)/%.o: %.S
@mkdir -p $(dir $@)
@$(CC) $(CFLAGS) -c $< -o $@
@echo "AS $<"
copy:
cp files/Makefile.lvgl $(LVGL_DIR)/Makefile
@if ! diff -q files/lv_conf.h $(LVGL_DIR)/lv_conf.h >/dev/null 2>&1; then \
cp files/lv_conf.h $(LVGL_DIR)/lv_conf.h; \
echo "Update $(LVGL_DIR)/lv_conf.h (changed content)"; \
else \
echo "$(LVGL_DIR)/lv_conf.h is up to date."; \
fi
# @if ! diff -q files/lv_conf.h src/lv_conf.h >/dev/null 2>&1; then \
# cp files/lv_conf.h src/lv_conf.h; \
# echo "Update src/lv_conf.h (changed content)"; \
# else \
# echo "src/lv_conf.h is up to date."; \
# fi
@if ! diff -q files/libartnet_network.c $(LIBARTNET_DIR)/artnet/network.c >/dev/null 2>&1; then \
cp files/libartnet_network.c $(LIBARTNET_DIR)/artnet/network.c; \
echo "Update $(LIBARTNET_DIR)/artnet/network.c (changed content)"; \
else \
echo "$(LIBARTNET_DIR)/artnet/network.c is up to date."; \
fi
default: $(TARGET)
@mkdir -p $(dir $(BUILD_BIN_DIR)/)
$(CXX) -o $(BUILD_BIN_DIR)/$(BIN) $(TARGET) $(LDFLAGS)
-include $(DEPS)
clean:
rm -rf $(BUILD_DIR)