-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile.proj
More file actions
84 lines (70 loc) · 2.53 KB
/
Makefile.proj
File metadata and controls
84 lines (70 loc) · 2.53 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
include $(MAKEFILE).config
include Makefile.config
DEFS+=$(EDEFS) PROOT='"$(realpath .)"'
LIBS :=$(addprefix -l,$(LIBS))
DEFS :=$(addprefix -D,$(DEFS))
C_SRCS :=$(shell find $(SDIR) -name '*.c' )
CXX_SRCS:=$(shell find $(SDIR) -name '*.cpp')
ASM_SRCS:=$(shell find $(SDIR) -name '*.S' )
C_OBJS :=$(patsubst $(SDIR)/%.c, $(ODIR)/%.o,$(C_SRCS) )
CXX_OBJS:=$(patsubst $(SDIR)/%.cpp,$(ODIR)/%.o,$(CXX_SRCS))
ASM_OBJS:=$(patsubst $(SDIR)/%.S, $(ODIR)/%.o,$(ASM_SRCS))
OBJS :=$(C_OBJS) $(CXX_OBJS) $(ASM_OBJS)
INC:=$(addprefix -I,$(IDIRS) $(LIDIR))
CCFLAGS :=$(WARNING) $(OPTIMIZATION) $(INC) $(DEFS)
CXXFLAGS:=$(WARNING) $(OPTIMIZATION) $(INC) $(DEFS) -std=c++14
ASMFLAGS:=$(WARNING) $(OPTIMIZATION) $(INC) $(DEFS)
LDFLAGS :=$(WARNING) $(OPTIMIZATION) -L$(LADIR) -Wl,--gc-sections
.SECONDARY: $(OBJS)
.PHONY: all
all: $(ELF)
@echo "> BULDING"
$(OBJCOPY) -j .data -j .text -O ihex $(ELF) $(HEX)
$(OBJCOPY) -j .data -j .text -O binary $(ELF) $(BIN)
$(OBJDUMP) -DCz $(ELF) > $(ASM)
$(SIZE) $(HEX) | sed -e 's/^/* /'
@echo "< BUILDING DONE"
$(ELF): $(OBJS)
@echo "> LINKING"
$(LD) $(LDFLAGS) $^ $(LIBS) -o $@
@echo "< LINKING DONE"
$(ODIR)/%.o: $(SDIR)/%.c
@echo "> COMPILING: $<"
$(CC) $(CCFLAGS) -c $< -o $@
@echo "< COMPILING: $< DONE"
$(ODIR)/%.o: $(SDIR)/%.cpp
@echo "> COMPILING: $<"
$(CXX) $(CXXFLAGS) -c $< -o $@
@echo "< COMPILING: $< DONE"
$(ODIR)/%.o: $(SDIR)/%.S
@echo "> COMPILING: $<"
$(ASMC) $(ASMFLAGS) -c $< -o $@
@echo "< COMPILING: $< DONE"
$(DDIR)/%.d: $(SDIR)/%.c
@echo "> BUILDING DEPENDENCY: $<"
$(CC) $(INC) -MM $< -MT '$(patsubst $(DDIR)/%.d,$(ODIR)/%.o,$@)' > $@
@echo "< BUILDING DEPENDENCY: $< DONE"
$(DDIR)/%.d: $(SDIR)/%.cpp
@echo "> BUILDING DEPENDENCY: $<"
$(CXX) $(INC) -MM $< -MT '$(patsubst $(DDIR)/%.d,$(ODIR)/%.o,$@)' > $@
@echo "< BUILDING DEPENDENCY: $< DONE"
$(DDIR)/%.d: $(SDIR)/%.S
@echo "> BUILDING DEPENDENCY: $<"
$(ASMC) $(INC) -MM $< -MT '$(patsubst $(DDIR)/%.d,$(ODIR)/%.o,$@)' > $@
@echo "< BUILDING DEPENDENCY: $< DONE"
.PHONY: setup
setup:
@echo "> MAKING DIRECTORIES"
mkdir -p $(BDIR) $(ODIR) $(DDIR) $(IDIRS) $(SDIR)
touch $(BDIR)/.empty $(ODIR)/.empty $(DDIR)/.empty
@echo "< MAKING DIRECTORIES DONE"
.PHONY: clean
clean:
@echo "> CLEANING"
-rm -vfr ./$(ODIR)/* ./$(DDIR)/* $(ELF) $(HEX) $(BIN) $(ASM) | sed -e 's/^/* /'
@echo "< CLEANING DONE"
ifeq ($(NODEP),)
-include $(patsubst $(SDIR)/%.c, $(DDIR)/%.d,$(C_SRCS) )
-include $(patsubst $(SDIR)/%.cpp,$(DDIR)/%.d,$(CXX_SRCS))
-include $(patsubst $(SDIR)/%.S, $(DDIR)/%.d,$(ASM_SRCS))
endif